小熊猫party 发表于 2012-1-15 00:38:17

如何判断 进位(借位)和溢出 无符号和有符号(加减乘除)

求助各位告诉说下,有什么方法知道两数运算时,进位(借位)和溢出 , 无符号和有符号数都说下!有符号数包括(加减乘除)

仰望天上的光 发表于 2012-1-15 10:28:21

运算后CF=1就表示进位或借位(只有无符号数才涉及进位和借位的概念)
运算后OF=1就表示溢出(只有带符号数才涉及溢出的概念)

小熊猫party 发表于 2012-1-15 17:26:21

二进制运算判断方法!

比如: 1001 1010+ 0011 0110=?判读cf of 的值是多少

最好加减乘除全部和我说下!

bafengao 发表于 2012-1-15 18:19:57

主要看标志寄存器

仰望天上的光 发表于 2012-1-15 20:34:21

1001 1010+ 0011 0110
若他们都是无符号数,相加结果为1101 0000不产生进位,所以CF=0
若它们是带符号数,则一正一负,相加不可能溢出(只有两个正数,或两个负数相加才可能溢出),所以OF=0

小熊猫party 发表于 2012-1-16 02:41:16

麻烦说下 无符号乘除法 和 有符号数乘除法吧!

957591782 发表于 2012-1-16 11:13:37

你好好看看指令 跟 标志寄存器吧.你肯定没仔细学

无符号数除法指令 DIV(DIVision)

格式: DIV OPRD
----

功能: 实现两个无符号二进制数除法运算.

带符号数除法指定 IDIV(Interger DIVision)

格式: IDIV OPRD
----

功能: 这实现两个带符号数的二进制除法运算.


无符号数乘法指令 MUL(MULtiply)

格式: MUL OPRD
----

功能: 乘法操作.


带符号数乘法指令 IMUL(Integer MULtiply)

格式: IMUL OPRD
----

功能: 完成两个带符号数的相乘

seuer126 发表于 2012-1-16 11:27:58

LZ写几个小程序试一下啊。

李星 发表于 2012-1-16 12:32:28

这个很简单吗    首先要保证没有溢出 因为溢出就没有其它什么可言   然后一步一步调试查找寄存器的变化
页: [1]
查看完整版本: 如何判断 进位(借位)和溢出 无符号和有符号(加减乘除)