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

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值