. : : Assembly Language : : .
|
首页
|
我提出的问题
|
我参与的问题
|
我的收藏
|
消息中心
|
游客 登录
|
刷新
|
提问
|
未解决
|
已解决
|
精华区
|
搜索
|
《汇编语言》论坛
->
寄存器(内存访问)
管理员:
assembly
[
回复本贴
]
[
收藏本贴
] [
管理本贴
] [
关闭窗口
]
主题 : :
用加法指令时结果超出寄存器范围怎么办?
[待解决]
回复[
4
次 ] 点击[
194
次 ]
cutebe
[帖 主]
[ 发表时间:2013-05-27 11:35 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:4
信誉值:0
注册日期:2010-01-27 19:28
用加法指令时结果超出寄存器范围怎么办?
P54
------
MOV AX,123BH
MOV DS,AX
MOV AL,0
ADD AL,[0] ;显然如果内存单元数据都是FFH
ADD AL,[1] ;加起来肯定超出寄存器AL大小
ADD AL,[2]
------
可以改成:
MOV AX,123BH
MOV DS,AX
MOV AX,0 ;临时存放数据
MOV BX,0 ;存放累加结果
MOV BL,[0]
MOV AL,[1]
ADD BX,AX
MOV AL,[2]
ADD BX,AX
------
可是问题3.5怎么办?没有比AX更大的寄存器了。
可能这里也需要知识屏蔽一下^_^
linyu0723
[第
1
楼]
[ 回复时间:2013-06-16 13:25 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2011-06-07 21:54
估计你还没有看后面的标志寄存器吧,这个是可以的,可以进位,CF会被设置成1,再说了,FF其实就是-1,加在一起,也不过是-2,装得下了。
linyu0723
[第
2
楼]
[ 回复时间:2013-06-16 13:26 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2011-06-07 21:54
补充一下:FF是-1的补码
linyu0723
[第
3
楼]
[ 回复时间:2013-06-16 13:43 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2011-06-07 21:54
你可能说的是(-128D)+(-128D)或者是127D+127D这种情况,这种情况会产生溢出,等你看了标志寄存器这章后,会有两个指令:adc和sbb,这两个指令可以解决你所但心的问题。
注:-128的十六进制是80H,127的十六进制是FEH
cutebe
[第
4
楼]
[ 回复时间:2013-06-19 10:01 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:4
信誉值:0
注册日期:2010-01-27 19:28
是按顺序看的,当时产生的疑问。
需要登录后才能回帖 -->>
请单击此处登录
Copyright © 2006-2024 ASMEDU.NET All Rights Reserved