Witam, mam do napisania program w tasm'ie, który wprowadzoną liczbę dziesiętną (maksymalnie 9999,min. 1000 czyli 4 znaki) zamieni na ósemkową. Aż do oddzielających myślników myślę,że program działa dobrze; po nich ciągle coś zmieniałem, więc może się dalej nie trzymać kupy. Chodzi mi o to,że tak, jak mam już liczbę dziesiętną w rejestrze ax do tych myślników (albo tak przynajmniej sądzę) nie wiem, jak zastosować algorytm: dziel przez 8, resztę zapamiętaj, a na koniec odczytaj od tyłu i pokaż. Starałem się używać div'ów ale nie do końca rozumiem co się dzieje, jak wpisuję np. 9999, a dzielę je przez 8.Tzn. gdybym wrzucił 8 do bl i zrobił div bl, to wynik idzie do al , a reszta do ah?Tylko że wynik ma wtedy więcej niż jeden bit. Pomóżcie proszę, jakiekolwiek fragmenty kodu mile widziane.
Poza tym, gdy używałem tego div'a, który jest pod koniec skomentowany, program nie chciał się zakończyć, jakby nie widział funkcji 4ch;
dane segment
napis1 db 'Podaj liczbe dziesietna$'
spacja db 10,'$'
b db 3
tablica dw 5 dup(0)
tab2 dw 5 dup(0)
tab3 dw 5 dup(0)
z1 dw 0
dane ends
sts segment
dw 512 dup(?)
sts ends
prog segment
assume cs:prog,ss:sts,ds:dane
start:
mov ax,seg dane
mov ds,ax
mov ah,9
mov dx,offset napis1
int 21h
mov ah,9
mov dx,offset spacja
int 21h
mov ah,1
int 21h
mov bx,ax
shl ax,3
add ax,bx
add ax,bx
xor bx,bx
mov ah,1
int 21h
mov bx,ax
shl ax,3
add ax,bx
add ax,bx
xor bx,bx
mov ah,1
int 21h
mov bx,ax
shl ax,3
add ax,bx
add ax,bx
xor bx,bx
mov ah,1
int 21h
;---------------------------------
xor bx,bx
mov bx,8
;div bx
mov ah,6
mov dx,ax
int 21h
dec ax
mov ah,6
mov dx,ax
int 21h
mov ah,4ch
int 21h
prog ends
end start