汇编语言中的加减法~~~~~~~~~困扰我很久了。。有高人吗

来源:百度知道 编辑:UC知道 时间:2024/05/31 15:11:56
汇编语言中的补码对我来说是个很难的问题。两个无符号数相加的过程中怎样判断CF,OF?
假如是两个有符号数相加。怎样判断CF,OF?并举例说明。
两个有符号数相减呢?减法的具体步骤是什么?求补之类的。

如果哪位高人能帮我解释下,实在感激不尽。。这个问题自从我学习汇编语言一来一直困扰着我,从来没有停息。

计算机中的任何内容都是以二进制形式存储的,本无任何意义。之所以有ASCII码、BCD码、有符号数、无符号数等等概念,都是人赋予它们的,要看具体情况来具体判断和理解(解释)。

汇编语言中的四则运算(加减乘除),是要区分有符号数和无符号数的,指令相近,但不完全相同。

无符号数的四则运算指令:
+:add
-:sub
*:mul
/:div

有符号数的四则运算指令:
+:adc
-:sbb
*:imul
/:idiv

相应的标志位的判断也不一样,在比较指令cmp之后,通常跟有条件转移指令,这个条件转移指令要根据有符号数运算和无符号数运算来区分使用,若使用错了,就不会得到预想的结果。对应有符号数的条件转移指令用G(大于)、E(等于)、L(小于),如JG、JGE、JL、JLE、JNG、JNL等;对应无符号数的条件转移指令用A(高于)、E(等于)、B(低于),如JA、JAE、JB、JBE、JNB、JNA等。主要是根据进位标志位(CF)来判断。若CF=1,用JC指令判断;若CF=0,用JNC判断。假发、减法所用判断指令是一样的。OF使用场合不多。

关于补码,请参见下方的参考资料。