资讯详情

汇编 – SUB指令的目的是什么?

在2的补码世界中,整数的否定可以通过取1的补码(所有位反转)和加1来获得.比如八位世界:

A: 0x00000002 ; my number

~A: 0xFFFFFFFD ; 1's complement of my number

-A: 0xFFFFFFFE ; 2's complement of my number (negative A)

要减去A-B,我们肯定可以添加负数A(-B):

NOT B ; invert each bit in the 8-bit value, B

ADD B, 1 ; add 1, giving the 2's complement negated B

ADD A, B

当然,在我添加它之前,我必须修改它B(否定它).希望B保持完整怎么办?

PUSH B ; save B

NOT B ; invert each bit in the 8-bit value, B

INC A ; add 1, giving the 2's complement negated B

ADD A, B

POP B ; restore B

要么

NOT B ; invert each bit in the 8-bit value, B

INC A ; add 1, giving the 2's complement negated B

ADD A, B

NOT B ; restore B

这样才行.但是只有SUB指令会更容易吗?

SUB A, B

如果你在编写汇编语言来做很多算术,你更喜欢哪种方法?而且,在第一种情况下,我用了INC A指令.我可以INC离开,只用ADD A,但在许多微处理器上,ADD A,1要求我从指令存储器中取出更多执行,以获得立即的1值.因此,提供INC,因为这是如此常见.

当微处理器设计师确定其指令集时,他们会考虑最常用的操作类型.因此,减法很常见SUB指令很方便.因此,它几乎存在于你将找到的任何指令中.指令集中还有其他指令,原因不明显.例如,x86具有XLAT所有字符串指令,LODS,STOS等.当我能用的时候MOV和INC为什么它们在完成所有工作时都存在?因为有些人认为这些操作很常见,值得一个指令.

因此,与CPU许多其他指令都是一样的,SUB指令背后的目的是提供更快(执行时间)和更简单的方法来执行软件中最常见的操作,以及如何实现许多指令的实际限制.

标签: sub灯具电线连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台