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



我正在编写一个古代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有更好的方法吗?

mov    ax,argument1
sub    ax,argument2
add    ax,-1
sbb    ax,ax
inc    ax
mov    bool,ax

最新更新