请教ascii码的汇编问题

发布于 2022-09-26 13:32:48 字数 689 浏览 13 评论 0

我用16号中断的0号功能来得键盘的输入.然后根据al中的ascii码来判断是哪个键
mov ah, 0
int 16h
.IF al==38      ;如果是“向上”键
    doA
.ELSEIF al==40 ;如果是"向下"键
   doB
.ENDIF

问题是:1。我按下“向上”和“向下”键的时候,程序并没有去doA或doB
                 反而是按下"shift+&"和"shift+("的时候,程序去doA和doB
             2。程序去调用16号中断的时候,如果没有键盘输入,它是不是会一直阻在那里直到有输入才返回?

             为什么会出现问题1所描述的状况么.查过资料,说"向上"和"向下"键的ascii码确实是十进制的38和40啊,难道是因为我长的不够帅而影响到程序的执行???

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

来世叙缘 2022-10-03 13:32:49

谢谢各位朋友 ...

初懵 2022-10-03 13:32:48

原帖由 zhongfangqing 于 2007-9-28 17:17 发表
我用16号中断的0号功能来得键盘的输入.然后根据al中的ascii码来判断是哪个键
mov ah, 0
int 16h
.IF al==38      ;如果是“向上”键
    doA
.ELSEIF al==40 ;如果是"向下"键
   doB
.ENDIF

问题是: ...

不了解 int 16 的用法,LZ 要好好去了解,是返回键盘扫描码? 还是 ASCII 码?

迷爱 2022-10-03 13:32:48

返回值是ax,其中al是ascii码,ah是扫描码

×纯※雪 2022-10-03 13:32:48

推荐《PC奥秘》一书。

怼怹恏 2022-10-03 13:32:48

这个除了查手册和调试,没有别的手段。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文