问个汇编问题~
答案:2 悬赏:0 手机版
解决时间 2021-01-28 16:01
- 提问者网友:ミ烙印ゝ
- 2021-01-28 09:55
问个汇编问题~
最佳答案
- 五星知识达人网友:醉吻情书
- 2021-01-28 11:02
21h 中断的 02h 功能在返回时, 将刚才显示输出的字符返回在 al 寄存器里了
全部回答
- 1楼网友:我住北渡口
- 2021-01-28 11:21
这是由于cpu与外部设备的通信机制引起的。具体来说是:cpu与外部设备的通信是通过端口为媒介的,端口的物理存在是接口部件中的寄存器(不是cpu中的寄存器),而更关键的是cpu与bios端口通信是通过自身的累加器al或ax来实现的,则无论是从端口输入数据还是输出数据到端口,完成传输后累加器al或ax保存的是最后一个数据的值。明白这个机理后原因就不明而喻了,int 21 调用中断服务输出dl,则完成屏幕输出后,al将保留输出值dl。其实你的程序执行过程中al被更改了两次,第一次更改成0D,第二次更改成0A,当然,程序返回后,al保留的是最后一次更改结果。若果你把最后一次dl输出值改为其他值,相应地al就会保留相应的其他值,如mov dl,32h int 21h 则程序执行完成后al=32h。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯