汇编语言:AL=max(AL,BL,CL)

Assembly language: AL=max(AL,BL,CL)

我必须使用寄存器从 3 个值中计算最大值,并将最大值存储在 AL 中。需要使用跳转和比较。
例如,我写了如何从 2 个数字中确定最大值,但我不能使用 3.

mov bl,1
mov cl,2
cmp bl,cl
jg label1   ;jump if greater
mov al,bl   ;al keeps the maximum
jmp stop

  label1: mov al,bl
  stop:nop;

我应该在这个模型之后做 AL=max(AL,BL,CL)

目前您的代码将始终报告 BL 为最大! mov al,bl ;al keeps the maximum 行应显示为 mov al, cl.

对于AL=max(AL,BL,CL),首先找到ALBL之间的最大值,并将其保存在AL中,无论如何都要修改,因为它将是结果。然后找到可能新的 ALCL 之间的最大值,得到最终的 AL:

  cmp al, bl
  jg  OK1
  mov al, bl
OK1:
  cmp al, cl
  jg  OK2
  mov al, cl
OK2:
  ; AL is max(AL,BL,CL)

这样寄存器 BLCL 不会被修改,如果这很重要的话。