You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DOS汇编中"mov ah, 0Bh"与"int 21h"指令的功能是什么?

嘿,我来给你掰扯清楚这俩指令的功能,再结合你贴的那段方波代码说说它们在这儿的作用~

mov ah, 0Bh + int 21h 的核心功能

这是DOS系统里的经典键盘状态检查调用:

  • mov ah, 0Bh:把功能编号0Bh装进ah寄存器,相当于告诉DOS:“接下来我要查下键盘有没有按键等着处理”
  • int 21h:触发DOS中断,让系统执行ah里指定的这个功能

执行完这俩指令后,al寄存器会给你返回状态:

  • 如果al = 0:当前没按键按下,键盘输入缓冲区是空的
  • 如果al ≠ 0:已经有按键被按下了,就等着程序去读取它
在你的方波生成代码里的实际作用

看你代码里紧接着的or al, al和jz ...:

  • or al, al:这是汇编里常用的小技巧,用来快速判断al是不是0(效果和cmp al, 0一样,但指令更短、执行更快)
  • jz ...:如果al是0(也就是没按键),就跳回方波循环的地方继续输出高低电平;要是al非0(有用户按键了),就不跳转,执行后续的退出或者其他逻辑

说白了,这段代码就是让方波一直往CRO输出,直到用户按任意键才停下来——这俩指令就是负责“监听”停止信号的。

顺带提一嘴你代码里的方波逻辑:通过往portb交替输出00h(低电平)和0ffh(高电平),再用cx的循环次数控制每个电平持续的时间,这样就能在CRO上生成稳定的方波啦。

内容的提问来源于stack exchange,提问作者user8437000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:31:10