鱼C论坛

 找回密码
 立即注册
查看: 5420|回复: 5

[已解决]对于这一段代码,为什么ah是高四位,al是第四位?

[复制链接]
发表于 2021-2-13 23:09:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
mov ah,al
shr ah,1
shr ah,1
shr ah,1
shr ah,1
and al,00001111h
图为原完整程序
问题(1)对于这一段代码,为什么ah是高四位,al是第四位?
问题(2)不用这一小段程序本来ah不就是高四位,al是第四位吗
最佳答案
2021-2-14 04:08:00
本帖最后由 wtchou 于 2021-2-14 04:18 编辑

假设要显示16进制的BD, 那么al的值为0BDh
BD可看成二进制的 1011 1101
1. 将al的值复制到ah中, ah = 1011 1101
2. 将ah右移4位, ah = 0000 1011 = B, 也就是BD的高四位
3. al = 1011 1101, 将al和00001111做and运算, 得到al = 00001101 = D, 也就是BD的低四位





Y)P6~62IH6{W(Q9[P~STHHV.png
0{AW09OCL41CB1YF9GREY)I.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-14 00:50:16 | 显示全部楼层
SHR(右移)指令使目的操作数逻辑右移一位,最高位用 0 填充。最低位复制到进位标志位,而进位标志位中原来的数值被丢弃。
SHR 与《SHL指令》一节中介绍的 SHL 的指令格式相同。在下面的例子中,AL 中的最低位 0 被复制到进位标志位,而 AL 中的最高位用 0 填充:
mov al, 0D0h     ; AL = 11010000b
shr al, 1              ; AL = 01101000b, CF = 0

在多位移操作中,最后一个移出位 0(LSB)的数值进入进位标志位:
mov al, 00000010b
shr al, 2                    ; AL = 00000000b, CF = 1
出自这个帖子http://c.biancheng.net/view/3591.html
所以,16位寄存器,原来ah是高8位,al是低8位,现在右移4位,ah左边补位4个零,右边是高四位,al本来是8个0进去了低四位在左边。应该这么理解就行了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-14 00:52:09 | 显示全部楼层

回帖奖励 +1 鱼币

ax为16位寄存器
ah为高8位, al为低8位

一个字节的数据(8位)需要用2个16进制表示
也就是每4位用1个16进制表示
例如: 175以16进制表示为AF, A就是高四位, F就是低4位


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-14 01:25:52 | 显示全部楼层
wtchou 发表于 2021-2-14 00:52
ax为16位寄存器
ah为高8位, al为低8位

emmm你好像没有理解我的问题是什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-14 04:08:00 | 显示全部楼层    本楼为最佳答案   
本帖最后由 wtchou 于 2021-2-14 04:18 编辑

假设要显示16进制的BD, 那么al的值为0BDh
BD可看成二进制的 1011 1101
1. 将al的值复制到ah中, ah = 1011 1101
2. 将ah右移4位, ah = 0000 1011 = B, 也就是BD的高四位
3. al = 1011 1101, 将al和00001111做and运算, 得到al = 00001101 = D, 也就是BD的低四位





想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-14 11:58:58 | 显示全部楼层

回帖奖励 +1 鱼币

1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 15:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表