首页 > 解决方案 > 如何改进这个汇编语言代码,以便我可以包含 10 个数字?

问题描述

我编写了这段代码来从 3 个元素的数组中找到最大元素。你们会建议在代码中进行哪些更改,以便我可以包含 10 个元素?

我尝试了许多更改,但无法弄清楚如何获得 10 个元素的数组的最大元素。

[ORG 0x100]

jmp start
num: dw 10,20,30
max: dw 0

start: mov ax,[num]
   mov bx,0
   mov [max],ax

add bx,2
mov ax,[num+bx]
cmp ax,[max]
jl next
mov [max],ax


next: add bx,2
mov ax,[num+bx]
cmp ax,[max]
jl end
mov [max],ax

end: mov ax,0x4c00
int 0x21

标签: assemblybranchx86-16

解决方案


同意,我的评论不太及时,但要提供更多信息就是实际进行练习,所以它就在这里,它绝对不复杂。

    mov     si, Data
    xor     cx, cx
    mov     dx, Crunch

Crunch:
    lodsw
    test    ax, ax
    jz      Exit
    push    dx
    cmp     cx, ax
    ja      Exit
    mov     cx, ax
Exit:
    ret                  ;Either turns to another iteration or terminates

Data:   dw       4, 7, 21, 32, 208, 18, 44, 92, 244, 61, 108, 11, 0

这是动态的,所以它只会继续处理数据直到零。从技术上讲,这是一个循环,但至少不是传统意义上的循环,其中存在会强制代码向上移动的特定指令。


推荐阅读