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
32位汇编语言实现求数组的最大值
最新推荐文章于 2023-03-19 23:37:52 发布