在汇编中,如何判断是否溢出?

toann 2004-10-29 07:44:44
比如16位的AX和BX中分别有下列数据:

AX BX
147B 80DC
B568 54B7
42C8 608D
D023 9FD0
94B7 B568

分别执行:ADD AX,BX 和 SUB AX,BX。有没有简单的方法判断出结果是否溢出?请大虾指点。
...全文
1851 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamroc 2004-11-21
  • 打赏
  • 举报
回复
手算?累死你!
8位2进制表达,超过 -128 —— 127,16位2进制表达,超过 -32768 —— 32767就是溢出
CF为1不叫溢出,叫产生进位
AegeanSea1999 2004-11-19
  • 打赏
  • 举报
回复
 如果参与运算的数是无符号数,则判断进位标志CF:CF=1,表示有溢出;
 如果参与运算的数是有符号数,则判断进位标志OF:OF=1,表示有溢出。
uglystone 2004-11-01
  • 打赏
  • 举报
回复 2
上面都说得很对
csdsjkk 2004-11-01
  • 打赏
  • 举报
回复
运算结果超出有符号数表示的范围即为溢出,
8位:-128~~127
16位:-32768~~32767
rolinyang 2004-11-01
  • 打赏
  • 举报
回复
执行语句后.
看看PSW寄存器中的每个位的值就行啦!
toann 2004-10-31
  • 打赏
  • 举报
回复
手算,不是机算:)AX,BX内容分别如下:

AX BX
147B 80DC
B568 54B7
42C8 608D
D023 9FD0
94B7 B568

下列指令每次执行时的跳转:
ADD AX,BX
JNO L1 ;不溢出则跳转
JNC L2 ;无进位则跳转
SUB AX,BX
JNC L3
JNO L4
JMP SHORT L5

手算的题
xjp6688 2004-10-31
  • 打赏
  • 举报
回复
看标志位!
大熊猫侯佩 2004-10-31
  • 打赏
  • 举报
回复
OF 位用来表示带符号数溢出
CF 位用来表示无符号数溢出

当成有符号数:

add ax,bx
jo (带符号数)溢出

当成无符号数:
add ax,bx
jb (无符号数)溢出

toann 2004-10-31
  • 打赏
  • 举报
回复
zlkw(行云流水)说的是我想知道的方法,就是不借助机器自己判断。比如:
AX BX
147B 80DC
B568 54B7
42C8 608D
D023 9FD0
94B7 B568

分别执行:ADD AX,BX 和 SUB AX,BX

那位大虾能用以上的数据给个例子详细讲解一下?谢谢了。
koyer 2004-10-30
  • 打赏
  • 举报
回复
看的标志位晒,CF OF 等等。一个字节是0——255,-128——127一个字是0——65535
kokblack 2004-10-30
  • 打赏
  • 举报
回复
用debug可以看得很清楚!
zlkw 2004-10-30
  • 打赏
  • 举报
回复
溢出的可能性:
两数相反:
被减数-减数=差。如果差与减数相同,溢出!!
两数同号:
A+B=C 如果C与A和B 异号 溢出~~~~~~~~~
kenyle 2004-10-30
  • 打赏
  • 举报
回复
来晚了。
fanyaoxue 2004-10-29
  • 打赏
  • 举报
回复

在DEBUG调试的时候,查看OF或CF的值,OF=1:OV时溢出;OF=0:NV表示没有溢出 CF=1:CY表示有进位或有借位;CF=0:NC表示无进位或无借位
大熊猫侯佩 2004-10-29
  • 打赏
  • 举报
回复
OF 位用来表示带符号数溢出
CF 位用来表示无符号数溢出

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧