我的老师要求我编写一个程序,该程序最多可以容纳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/

10-10 14:16