我必须使用寄存器从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)。
发布于 2021-11-07 17:00:35
目前,您的代码总是报告最大的BL!mov al,bl ;al keeps the maximum行应该读mov al, cl。
对于AL=max(AL,BL,CL),首先找到AL和BL之间的最大值,并将其保存在要修改的AL中,因为结果是这样的。然后在可能的新AL和生成最终AL的CL之间找到最大值
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,如果这很重要的话。
https://stackoverflow.com/questions/69864844
复制相似问题