.MODEL medium
.STACK ; Stack default size 1024 bytes
.DATA ; Data segment (for variables)
.CODE ; Run-able code goes in code segment
.STARTUP ; Handover code from OS call to typer.exe
nextc: mov ah,8 ; Call int21 with ah=8 returns with
int 021h ; al equal to the ASCII character pressed
mov dl,al ; dl is assigned value in al, dl=al
mov ah,02h ; Call int21 with ah=2 prints ASCII
int 021h
cmp dl,'q' ; compare dl with ASCII ‘q’=
jz qt ; if key pressed was not a ‘q’ go back
cmp dl,'/'
jnc skp
cmp dl,'9' ;;compair 9 to q. if there is a carry 9<q
jc skp
skp:
jmp nextc
qt:
.EXIT ; Terminate and return control to OS
END ; End of file (for compiler)
0
A
ответ
0
Просто используйте jl
(прыжок, если меньше) и jg
(переход, если больше) инструкции.
cmp dl,'0' ;compare to 0
jl skp ; if less then skip
cmp dl,'9' ;compare to 9
jg skp ;if greater than skip
success: ;yes we;ve found a digit.
.....
skp: ;no digit.
.....
Вот список всех условных переходов доступны: http://x86.renejeschke.de/html/file_module_x86_id_146.html
+0
С 8-битными кодами ASCII я бы скорее использовал 'ja' /' jb' (беззнаковое сравнение). Это уровень сложности Java для проверки значений байтов как подписанных. (хотя в этом конкретном случае он будет работать нормально) – Ped7g
Я довольно уверен, что моя логика в порядке, и что проблема находится где-то в тха печати даного – Aaron
Извините за плохое объяснение, но им пытаются получить он печатает числа 0-9 включительно и заканчивается на q. – Aaron
Я нахожусь на своем телефоне, но ваша попытка как-то в правильном направлении. Вам нужно проверить, что было введено. Но вы не проверяете все, начиная с 0-9. –