注册 登录
编程论坛 汇编论坛

求解 ,哪位能帮我一下!

az71566 发布于 2013-09-11 20:25, 627 次点击
mov ax,62627     AX=  F4A3H
mov ah,31H       AX=  31H
mov al,23H       AX=  23H
add ax,ax        AX=  3132H
mov bx,826CH     BX=  826CH   
mov cx,ax        CX=  3132H
mov ax,bx        AX=  826CH
add ax,bx        AX=  04D8H      结果是104D8 为什么这个1要去掉?
mov al,bh        AX=  0482H
mov ah,bl        AX=  6C82H
add ah,ah        AX=  D882H
add al,6         AX=  D888H
add al,al        AX=  D810H      结果是D8110H 中间的那个1为什么要去掉?
5 回复
#2
3037709572013-09-11 21:22
先说第一个吧:计算结果没问题是104D8H,由于寄存器存不下这么大数据所以溢出了,将最前面的1给丢掉了。
第二个问题和第一个问题类似,首先这是al的值是88H,计算88H+88H=110H,但是这是两个低八位寄存器的值相加计算的结果还放到al中但是放不下溢出了,就将1丢了,al=10H。此时ah还是D8,所以ax=D810H了。
#3
az715662013-09-11 23:21
为什么是1 被丢弃 可以是别的数字吗?
#4
hu9jj2013-09-12 07:30
二进制除了1就是0,前导0是无意义的,不存在溢出的问题,所以溢出的总是1。
#5
stop12042013-09-12 07:33
貌似存放在CF  标志寄存器中,, 那么你可以用 adc bx,0   相当于 bx+0+进位值
#6
az715662013-09-12 11:18
谢谢各位啦!
1