我的老师让我写了一个程序,该程序最多可以取100个数字并在用户按下ALT键时停止。
当用户按下ENTER键时,也会转到下一个数字。
但我可以弄清楚如何做到这一点,因为ALT键没有ASCII码,我必须使用 INT 16H
的其中一种服务。
但我怎么能用呢?
我写了一个我认为可能正确的代码,但回答是用户应该按两次键
请帮忙怎么解决?
.....
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 * ;*************************************************** ....
答案 0 :(得分:2)
这是一个完整的程序(在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