汇编语言: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)
,首先找到AL
和BL
之间的最大值,并将其保存在AL
中,无论如何都要修改,因为它将是结果。然后找到可能新的 AL
和 CL
之间的最大值,得到最终的 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)
这样寄存器 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)
,首先找到AL
和BL
之间的最大值,并将其保存在AL
中,无论如何都要修改,因为它将是结果。然后找到可能新的 AL
和 CL
之间的最大值,得到最终的 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)
这样寄存器 BL
和 CL
不会被修改,如果这很重要的话。