如何判断 进位(借位)和溢出 无符号和有符号(加减乘除)
求助各位告诉说下,有什么方法知道两数运算时,进位(借位)和溢出 , 无符号和有符号数都说下!有符号数包括(加减乘除) 运算后CF=1就表示进位或借位(只有无符号数才涉及进位和借位的概念)运算后OF=1就表示溢出(只有带符号数才涉及溢出的概念)
二进制运算判断方法!
比如: 1001 1010+ 0011 0110=?判读cf of 的值是多少
最好加减乘除全部和我说下! 主要看标志寄存器 1001 1010+ 0011 0110
若他们都是无符号数,相加结果为1101 0000不产生进位,所以CF=0
若它们是带符号数,则一正一负,相加不可能溢出(只有两个正数,或两个负数相加才可能溢出),所以OF=0 麻烦说下 无符号乘除法 和 有符号数乘除法吧! 你好好看看指令 跟 标志寄存器吧.你肯定没仔细学
无符号数除法指令 DIV(DIVision)
格式: DIV OPRD
----
功能: 实现两个无符号二进制数除法运算.
带符号数除法指定 IDIV(Interger DIVision)
格式: IDIV OPRD
----
功能: 这实现两个带符号数的二进制除法运算.
无符号数乘法指令 MUL(MULtiply)
格式: MUL OPRD
----
功能: 乘法操作.
带符号数乘法指令 IMUL(Integer MULtiply)
格式: IMUL OPRD
----
功能: 完成两个带符号数的相乘 LZ写几个小程序试一下啊。 这个很简单吗 首先要保证没有溢出 因为溢出就没有其它什么可言 然后一步一步调试查找寄存器的变化
页:
[1]