高手请进

tqrc 2003-08-22 04:16:46
.model small
.code
Start:
mov ah,0
int 16h
cmp al,'0'
jb Start
cmp al,'9'
ja Start

mov ah,02h
mov dl,al
int 21h
mov ah,4ch
int 21h
end Start
;程序大意是:
;用 int 16的 0号功能 接受 键盘输入
;如果是0-9就用int 21h输出
;我想问如果我按了那些字母不是数字
;就不会输出,那么那些字母还在键盘缓冲区吗
;过程是怎样的?
...全文
58 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ikao 2003-08-22
  • 打赏
  • 举报
回复
应该还在缓冲区的吧,可以直接取键盘缓冲区内容看看
结构和内存区域如下:
BUFF_HEAD DW ? ;0040:001AH
BUFF_TAIL DW ? ;0040:001CH
KB_BUFFER DW 16 DUP(?) ;0040:001EH TO 003DH
过程么,我是这样理解的(8086/8088):
首先调用了int 16h的0号功能,如果键盘缓冲区为空,则等待
一旦触发键盘发出外部中断信号,由中断控制器8259A接收到,如果满足一定的条件(好像是IF=1&&中断屏蔽寄存器没有将之屏蔽吧)就传此中断信号给CPU然后调用int 9将扫描码和ASCII码写入键盘缓冲区,然后int 16h的0号功能感知到有键可读,于是就把字符的扫描码传入AH,ASCII码传入AL

如果有问题请别怨我,指正一下,因为我也是初学者^_^
W32API 2003-08-22
  • 打赏
  • 举报
回复
那你该查 16H 的功能

21,453

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧