我的老师要求我编写一个程序,该程序最多可以容纳100个数字,每当用户按下ALT键时就停止。并且在每当按下ENTER键时也转到下一个数字。但是我可以弄清楚该怎么做,因为ALT键没有ASCII码,因此我必须使用 INT 16H
的服务之一。
但是我该怎么用呢?
我写了一个我认为可能是正确的代码,但响应是用户应按两次Twice键。
请帮忙怎么解决呢?
这是我的代码:
.....
next_digit:
mov AH,07H
int 21H
CMP AL,0DH ; check if the user pressed ENTER !
JNE check_digit ; goes to calculate the number !
CMP BH,6 ;if nothing entered !
JE next_digit
;***************************************************
;* I think here is the place to put this code : *
;* *
;* mov AH,02H *
;* int 16H *
;* CMP AL,00001000B *
;* JE END *
;***************************************************
....
最佳答案
这是一个完整的程序(使用NASM语法),该程序可以读取击键,将其回显到控制台,并在您按下Alt键后立即退出:
org 0x100
main:
mov ah,1
int 16h ; CHECK FOR KEYSTROKE
jnz got_keystroke
mov ah,2
int 16h ; GET SHIFT FLAGS
test al,8 ; Alt
jnz done
jmp main
got_keystroke:
mov ah,0 ; GET KEYSTROKE (to remove it from the buffer)
int 16h
; Echo to screen
mov dl,al
mov ah,2
int 21h
jmp main
done:
int 20h ; Exit to DOS
关于assembly - 如何在8086中使用ALT键结束循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20420386/