在x86汇编程序中减去64位数字?

kon*_*kos 3 x86 assembly

如何使用386汇编程序减去64位数?

Nat*_*man 12

想法是使用SBB(sub with borrow)指令.例如,如果我有两个数字:

  1. edx:eax
  2. ecx:ebx

那么这将有所不同edx:eax:

sub eax, ebx
sbb edx, ecx
Run Code Online (Sandbox Code Playgroud)

这个想法是你可以单独减去每个部分,但你需要从MSB借用到LSB. SBB这样做:

SBB dest, src 手段:

dest <-- dest - src - EFLAGS.CF
Run Code Online (Sandbox Code Playgroud)

这很方便,因为:

SUB dest, src 手段:

dest <-- dest - src
EFLAGS.CF <-- borrow from subtraction
Run Code Online (Sandbox Code Playgroud)