我们知道,当我们按下键盘上的一个键时,它会生成一个“生成代码”并使INT 9将生成代码和ASCII代码发送到键盘缓冲区或设置相关的二进制位(如ctrl,shift和ALT)。
此外,当我们在键盘上释放一个键时,它会生成一个“中断代码”(有时为"break code" = "make code" + 80H
)。
所以,我想知道是否将中断代码发送到键盘缓冲区并编写了这段代码:
assume cs:code
code segment
start:
mov ax,stack
mov ss,ax
mov sp,64
mov ah,10H
int 16H
mov ah,10H
int 16H
mov ah,4CH
int 21H
code ends
end start
当我在Debug
中运行此代码时,从第二个INT 16H
开始,我按a并在AX中获得返回值1E61,似乎中断代码不在键盘缓冲区中
如果是这样,计算机如何知道我何时释放一个键(尤其是shift,ctrl)?或者它不需要知道?当我发布密钥时,中断代码在哪里?