Witam, czy ktoś mógłby mi pomóc przeinaczyć ten kod na prostszy bez użycia funkcji stosb lodsb etc
tekst DB 'Podaj liczbe OCT',10,13,'$'
tekst2 DB 'Podaj bit znaku liczby (0 dla +, 1 dla -)',13,10,'$'
tekst3 db 'Liczba w systemie U2:',10,13,'$'
error_mes db 'Liczba z poza systemu OCT',10,13,'$'
nowa_linia DB 10,13,'$'
naglowek DB 11,0 ; bufor do wprowadzania
bufor DB 11 DUP (?) ; tekstu
wynik DB 31 DUP ('$') ; bufor na wynik
znak DB 2 DUP ('$') ;znak liczby
.CODE
Start:
MOV AX,@data ; ustawienie rejestrow
MOV DS,AX ; segmentowych
MOV ES,AX
MOV DX,OFFSET tekst2 ; wyswietlenie tekstu
MOV AH,09h
INT 21h
mov ah,01h
int 21h
mov znak,al
MOV DX,OFFSET nowa_linia ; wyswietlenie tekstu
MOV AH,09h ; "nowa linia"
INT 21h
MOV DX,OFFSET tekst ; wyswietlenie tekstu
MOV AH,09h
INT 21h
MOV DX,OFFSET naglowek ; odczyt tekstu
MOV AH,0Ah ; z klawiatury
INT 21h
MOV DX,OFFSET nowa_linia ; wyswietlenie tekstu
MOV AH,09h ; "nowa linia"
INT 21h
MOV SI,OFFSET bufor ; wskaznik znaku w buforze
MOV DI,OFFSET wynik
petla: ; wyznaczanie cyfr binarnych
; przez podzial cyfry OCT na 3 cyfry BIN
LODSB ; wczytanie znaku z bufora do AL
CMP AL,13 ; porownanie ze znakiem entera
JE Sign ; jesli enter to koniec petli
MOV DL,AL ; odczytany znak w DL
cmp dl,0
jb error
cmp dl,7
ja error
SUB DL,48 ; zamiana znaku na cyfre
SHL DL,6 ; przesuniecie o 6 bitow
SETC AL ; w AL najstarszy bit cyfry
ADD AL,48 ; zamiana cyfry na znak
STOSB ; zapis do wyniku
SHL DL,1 ; to samo z drugim bitem
SETC AL
ADD AL,48
STOSB
SHL DL,1 ; i z trzecim bitem
SETC AL
ADD AL,48
STOSB
JMP petla ; odczyt kolejnego znaku z bufora
po wykonaniu się pętli potrzebna jest zmienna wynik zawierajaca znaki ascii 0,1 dla zamienionych liczb.
Z góry dzięks