DL寄存器能否存储计算机按键的ASCII码?结合按键比对案例的疑问
关于DL寄存器与按键ASCII值的问题
- 首先明确:DL寄存器并不会自动存储按下按键的ASCII值。
- 你看到的代码里将DL与ASCII值43H(即'+'的十六进制ASCII码)比较,大概率是代码中先把真正存储按键ASCII的寄存器值转移到了DL中。
- 在DOS汇编环境下,读取键盘输入的标准方式是调用
INT 21H中断的相关功能(比如功能01H、07H、08H),这些功能执行后,按键的ASCII值会被返回在AL寄存器里。示例代码大概是这样:MOV AH, 01H ; 调用DOS带回显键盘输入功能 INT 21H ; 执行中断,AL中存入按键ASCII MOV DL, AL ; 将AL的内容转移到DL寄存器 CMP DL, 43H ; 比较DL是否等于'+'的ASCII值 JE ProcessPlusKey ; 相等则跳转到+键处理逻辑 - 总结:DL本身不负责存储按键ASCII,是代码主动把AL里的ASCII值移到DL后,才用来做比较判断的。
内容的提问来源于stack exchange,提问作者Nathan Francisco-Ribeiro
相关产品推荐
相关产品推荐

