汇编小问题

[复制链接]
查看11 | 回复1 | 2008-7-19 07:57:16 | 显示全部楼层 |阅读模式
rol dx,1
rol dx,1
rol dx,1
rol dx,1
mov al,dl
call htoasc
;左移 是吧? 不是娶dx的高位吗? 为什么他传入的是dl?右边是低位,左边是高位, 那他这里的代码不是有错吗?
=====================================================
还有 xor dx,dx 不就是对dx清零吗? 书上怎么说 扩展被除数? 这个弯没转过来

回复

使用道具 举报

千问 | 2008-7-19 07:57:16 | 显示全部楼层
ROL DX,1是不带进位的循环左移(即数首尾成环左移位),也就是移出的最高位码,进入了空出的最低位中,这里四次ROL DX,1 后,结果是原16位码的最高四位,依次放到了最低4位上,也就是在低8位DL的低4位上,这4位正好是原DX的高4位,所以这样就取得了原DX的高4位。XOR DX,DX是DX自己异或,有DX清零的作用,在做除法时,32位被除数是高16放在DX中的,低16位放在AX中的,16位除数就放在BX中,试想当只有16位被除数时,是不是整个被除数都放到了AX里了,但计算机做除法运算,被除数总是32位的,那这时我们就需要将被除数的高16位补充零(即扩展被除数高16位,以适应计算机运算需要),所以XOR DX,DX对DX的清零的目的,就是扩展
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行