Почему мой код распечатывает фрагмент сообщений .data, а не число? - PullRequest
0 голосов
/ 29 октября 2019

Вот код: 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:", и я не знаю, почему это происходит. Любая помощь?

...