首页 > 编程语言 >32位汇编语言实现求数组的最大值

32位汇编语言实现求数组的最大值

时间:2023-03-14 13:24:19浏览次数:43  
标签:arr 汇编语言 32 最大值 mov eax 数组 edx esi

INCLUDE Irvine32.inc
.data
    arr dd 99,2,3,1,22,188,7,77,54,10 ;定义数组
	len dd ($-arr)/4 ;用当前地址减去数组首元素地址除以4得到数组的长度
.code
main PROC
    mov edx,offset arr ;用edx数据寄存器存储数组首元素的地址,不要漏了offset
    mov ecx,len ;用ecx计数寄存器存储数组的长度
    call max_num
    call writeint

    exit
main ENDP

max_num PROC
    push esi ;将esi源地址寄存器压入栈保护
    mov esi,0 ;初始化esi
    mov eax,[arr] ;初始化eax,eax用来返回数组中的最大值
again:
    cmp esi,ecx ;比较esi和数组长的大小
    jge final ;若大于等于则结束遍历
    cmp eax,[edx+esi*4] ;比较eax和当前数组元素的大小
    jge next ;若大于等于则继续遍历
    mov eax,[edx+esi*4] ;若小于则将当前数组元素的值赋值给eax
next:
    add esi,1 ;每次遍历都将esi加1,否则死循环
    jmp again 
final:
    pop esi ;结束时将esi弹出栈
    ret
max_num ENDP
END main

标签:arr,汇编语言,32,最大值,mov,eax,数组,edx,esi
From: https://www.cnblogs.com/linhongyu0090/p/17214609.html

相关文章