Assembly 用汇编MASM求数组中的最小元素

Assembly 用汇编MASM求数组中的最小元素,assembly,masm,Assembly,Masm,我对汇编语言不熟悉,我正试图在数组中找到最小值。这就是我目前所拥有的。无论我做什么,它每次都跳到L2,即使我将JL更改为其他任何内容。我必须把最少的存储在AX中。我必须假设数组的第一项是最小值,并将其存储在AX中。谢谢 .model flat, stdcall .stack 4096 ExitProcess proto, dwExitCode:dword .data Array WORD 10,2,23,45,21,11 Minimum WORD ? .code main proc mo

我对汇编语言不熟悉,我正试图在数组中找到最小值。这就是我目前所拥有的。无论我做什么,它每次都跳到L2,即使我将JL更改为其他任何内容。我必须把最少的存储在AX中。我必须假设数组的第一项是最小值,并将其存储在AX中。谢谢

.model flat, stdcall
.stack 4096
ExitProcess proto, dwExitCode:dword

.data

Array WORD 10,2,23,45,21,11
Minimum WORD ?

.code
main proc

mov eax, 0
mov ebx, 0
mov ax,WORD PTR Array
mov Minimum, ax
mov edi,OFFSET Array
L1:
    mov bx, [edi]
    cmp bx, Minimum
    JL L2
    

    L2:
    mov Minimum, bx
    mov ax, Minimum

    add edi,TYPE Array
    loop L1


invoke ExitProcess, 0
main endp
end main

当然,您将在
L2
结束,因为在
JL
之后没有任何东西会使执行移动到任何其他地方。将
L2
标签移动到
add
之前,并将
JL
更改为
JGE
。在循环期间,您没有利用
ax
中的最小值。您可以将其一直保存在AX中,并且在完成后只存储到全局/静态存储。(如果您这样做是为了在AX中返回值,则根本不需要)