У меня есть следующий ассемблерный код (x86).
.input:
mov ah, 00h ; get key from keyboard buffer
int 16h ; interrupt 16h
mov dl, al ; move ASCII code into dl
mov ah, 02h ; function 02
int 21h ; interrupt 21h
mov ah, 0Eh ; tell the BIOS to print the character in the AL register
mov al, dl ; copy dl into al
int 10h ; print al
sub al,0Dh ; check if it's carriage return
jz 01h ; jump relative 1 (to skip newLine)
call newLine ; add CR LF
jmp .input ; loop
Однако инструкция перехода при нулевом значении не работает должным образом (надеялись), т. е. jz 01h.
Я хотел бы перейти на 1 относительную инструкцию (или добавить ее к IP), чтобы перепрыгнуть вызов подпрограммы newLine.
В настоящее время, когда я нажимаю клавишу ввода и вызывается инструкция jz, я полагаю, что программа совершает абсолютный скачок, поскольку фрагмент кода в начале программы запускается.
Есть идеи?
Спасибо, Стив