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