8086汇编程序:比较两个无符号整数并将AX设置为1(真)或0(假)

时间:2014-08-30 13:54:09

标签: assembly x86 x86-16

我正在编写一个古老的Turbo Pascal v.3 8086编译器的克隆。我想比较两个无符号整数,如果它们相等,则设置ax = 1(true),否则设置ax = 0(false)。

鉴于声明

bool:=1=2;

Turbo Pascal发出

  mov ax,1  ; argument 1    
  cmp ax,2  ; argument 2

  mov ax,1  ; 1 = true
  jz L1     ; arguments are equal, ax=1
  dec ax    ; arguments are not equal, ax=0
L1:
  mov bool,ax

是的,它有效,但看起来很笨拙和尴尬。 8086有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

mov    ax,argument1
sub    ax,argument2

add    ax,-1
sbb    ax,ax
inc    ax

mov    bool,ax