.data
nums dword 10, 20, 30, 40, 50, 60, 70, 80, 90, 100

.code
main PROC
    mov esi, OFFSET nums ; 将数组首地址存入 esi
    mov eax, [esi] ; 取出第一个元素,作为最大值的初始值
    mov ebx, [esi] ; 取出第一个元素,作为最小值的初始值
    mov ecx, 1 ; 计数器
    mov edx, OFFSET nums+4 ; 将数组第二个元素的地址存入 edx
    loop_start:
        cmp ecx, 10 ; 判断是否循环到最后一个元素
        jg loop_end
        
        mov ebx, [edx] ; 取出当前元素
        cmp eax, ebx ; 比较当前元素和最大值
        jle not_greater ; 如果当前元素不大于最大值,跳过下一条语句
        mov eax, ebx ; 如果当前元素大于最大值,将其赋值给最大值
        not_greater:
        cmp ebx, eax ; 比较当前元素和最小值
        jge not_less ; 如果当前元素不小于最小值,跳过下一条语句
        mov ebx, [edx] ; 如果当前元素小于最小值,将其赋值给最小值
        not_less:
        
        add edx, 4 ; 将 edx 加上 4,指向下一个元素
        inc ecx ; 计数器加 1
        jmp loop_start ; 跳回循环开始处
        
    loop_end:
        ; 最大值存放在 eax 中,最小值存放在 ebx 中
        ; 在此处添加显示最大值和最小值的代码
        mov eax, 0 ; 返回值设为 0
        ret
main ENDP
END main
已知在 DATA 开始的字单元中存放有 10 个无符号整数试编制程序挑选出其中的最大值和最小值并显示。

原文地址: http://www.cveoy.top/t/topic/bxSZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录