Вот код: https://pastebin.com/Fbjr4hKU Я пишу программу, которая превращает данное шестнадцатеричное число в номер корзины. Он работает, помещая первую цифру, введенную пользователем из строки, в AL, превращая ее в биты, используя SHL и ROL, затем обнуляет до конца AL, если это 1 или 0, и печатает соответственно. Тем не менее, моя программа печатает "latas yra:", и я не знаю, почему это так. Любая помощь?
Вот код: https://pastebin.com/Fbjr4hKU
.model small
.stack 100h
.data
start db "Iveskite ilga sesioliktaini skaiciu:", 10, 13, "$"
enteris db 10, 13, "$"
buferis db 255
nusk db ?
simb db 255 dup (?)
rezult db 10, 13, "Rezultatas yra: $"
.code
pradzia:
MOV ax, @data
MOV ds, ax
MOV ah, 9
MOV dx, offset start
INT 21h
MOV ah, 0Ah
MOV dx, offset buferis
INT 21h
MOV ah, 9
MOV dx, offset rezult
INT 21h
MOV bx, offset simb
MOV cl, nusk
MOV ch, 0 ;registre cl yra įvestų simbolių kiekis
CMP cx, 0
JE Pabaiga
PUSH cx
MOV SI, offset buffer+2;
ciklas:
CMP CL, 0
JE Pabaiga
MOV AL, [SI]
CMP AL, 3Ah
JB core
CMP AL, 47h
JNAE raide
skaicius:
JMP core
raide:
SUB AL, 55
core:
SHL AL, 4
rol AL,1
rol AL,1
rol AL,1
rol AL,1
MOV CX, 4
loop1:
rol AL,1
and AL, 1
CMP AL, 1h
ADD AL, 49
MOV DL, AL
MOV AL, 2
INT 21h
dec cx
jnz loop1
Pabaiga:
MOV ah, 4Ch
MOV al, 0
INT 21h
END pradzia
И все же моя программа печатает "latas yra:", и я не знаю, почему это происходит. Любая помощь?