32位汇编语言 在一段数组中找最大数 x86 汇编语言 asm文件 irvine32 intel 汇编语言

题目:

Create a procedure named FindLargest that receives two parameters: a pointer to a signed doubleword array, and a count of the array’s length. The procedure must return the value of the largest array member in EAX. Use the PROC directive with a parameter list when declaring the procedure. Preserve all registers(except EAX) that are modified by the procedure. Write a test program that calls FindLargest and passes three different arrays of different lengths. Besure to include negative values in your arrays. Create a PROTO declaration for FindLargest.
创建一个名为FindLargest的过程,该过程接收两个参数:指向有符号双字数组的指针和数组长度的计数。该过程必须返回EAX中最大数组成员的值。在声明过程时,将PROC指令与参数列表一起使用。保留由过程修改的所有寄存器(EAX除外)。编写一个测试程序,调用FindLargest并传递三个不同长度的数组。请确保在数组中包含负值。为FindLargest创建PROTO声明。

代码:

; author: BoPang 
; email: 1275189619@qq.com
; 2021/7/11
include Irvine32.inc 
 FIndLargest PROTO,  pArray: ptr SDWORD, 
   arrayLength: DWORD
 .data 
 Array SDWORD 5, 3, -2, 4, 8
 ;arrayLength DWORD 5
 .code 

 main PROC  
 INVOKE FindLargest, ADDR Array, lengthof Array-1
 call WriteDec
 exit
   main ENDP 

   FindLargest PROC,
   pArray: ptr SDWORD, 
   arrayLength: DWORD
   push esi
   push ecx
   ;dec arrayLength
   mov ecx, arrayLength
   mov esi, pArray
   mov eax, [esi]
   ADD esi,4
   L1:
   mov ebx,[esi]
   cmp eax, ebx;[esi]
   jge A1
   mov eax, ebx;[esi]
   A1:
   add esi,4
   loop L1
   pop ecx
   pop esi
   ret
   FindLargest ENDP
  END main 

初学汇编语言,如有错误请多指正!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖虎技安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值