|
主题 : : 执行前ax和bx数据都为8226H,add ax,bx后数据为1044ch,但是ax为什么是044cH而不是1044H? [待解决] |
回复[ 7次 ]
点击[ 407次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-06-02 08:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-06-01 18:22 |
执行前ax和bx数据都为8226H,add ax,bx后数据为1044ch,但是ax为什么是044cH而不是1044H?
谢谢!!! | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-06-02 12:15 ]
[引用]
[回复]
[ top ] | |
荣誉值:30
信誉值:0
注册日期:2009-04-09 10:05 |
超过FFFF的数据 最高位 会发生进位 你看的结果就是 最高位的 1没了
实际上 进位后的数到了 标志寄存器的 CF里去了
这里 你不要考虑那么多 你以后会学到了 你只要记住 最高位 发生进位 就可以了
1044ch 为什么最高位是1?
拿 10进制数字 1000来说 1是千位 所以他是最高位 也就是 越靠前的位数越高 | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-06-05 21:05 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-06-01 15:07 |
因为AX寄存器是16位的2个字节长的。1044CH是20位长的,16位的寄存器不能装到20位了,所以前面的高4位就舍弃了呵呵,其实书里面写的很详细啊,仔细侃侃啊 | | |
|
|
|
|
[第3楼]
[ 回复时间:2009-06-07 21:59 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-05-19 11:16 |
AX是16位寄存器。
也就是
这个寄存器有16个可以存东东的格:
如下:
!1 !2 !3 !4 !5 !6 !7 !8 !9 !10 !11 !12 !13 !14 !15 !16 !
每个格只能放一个二进制的数字 : 0或者1
上面AX=044CH 的原因不就是 : 16进制: 0 4 4 C 共4个数
把16进制转为2进制后: 0000 0100 0100 1100 共16个数
都有16个0或1的信息了,从小到大放进去后都放满了,放不下了呗。
想想:1044CH= 0001 0000 0100 0100 1100 那就有20位了,放不下。
所以把前面的1忽略了。 | | |
|
|
|
|
[第4楼]
[ 回复时间:2009-06-08 07:55 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-05-28 12:55 |
产生进位了 ax是十六位 只能放得下 4位十六进制数 | | |
|
|
|
|
[第5楼]
[ 回复时间:2009-06-08 11:01 ]
[引用]
[回复]
[ top ] | |
荣誉值:169
信誉值:0
注册日期:2008-08-19 16:07 |
在这里简单的理解为高位丢弃了就行了,好比一个杯子,只能放四个苹果,现在你想放了五个,当然要丢弃一个。(好比上面的最高位)
至于进位的知识,等学到第十一章标志寄存器再学习不迟。 | | |
|
|
|
|
[第6楼]
[ 回复时间:2009-06-10 15:57 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-06-06 16:46 |
那个AX本来最多只能放四位的16进制数,超过四位后,就把前面的挤没了. | | |
|
|
|
|
[第7楼]
[ 回复时间:2009-06-15 14:12 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-06-07 00:36 |
|