. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
主题 : :  用加法指令时结果超出寄存器范围怎么办?  [待解决] 回复[ 4次 ]   点击[ 194次 ]  
cutebe
[帖 主] [ 发表时间:2013-05-27 11:35 ] 
荣誉值: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
[第3楼] [ 回复时间:2013-06-16 13:43 ] 
荣誉值:0
信誉值:0
注册日期:2011-06-07 21:54
你可能说的是(-128D)+(-128D)或者是127D+127D这种情况,这种情况会产生溢出,等你看了标志寄存器这章后,会有两个指令:adc和sbb,这两个指令可以解决你所但心的问题。
注:-128的十六进制是80H,127的十六进制是FEH
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved