x86 Assembly Language Programming Assignment FindLargest Pro

x86 Assembly Language Programming Assignment

FindLargest Procedure

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. Be sure to include negative values in your arrays. Create a PROTO declaration for FindLargest.

The calls need to be in the form:

invoke FindLargest, ADDR Ex1Array, LENGTHOF Ex1Array

Solution

INCLUDE Irvine32.inc

.data

numberrange DWORD 50, 100, -4, -5, 2, 5, 101, 34, 23, 45

numberrange1 DWORD 20, 30, 40, 50

numberrange2 DWORD - 2, -5, 2, 7, 3, 10, 15, 20, 5, 6, 21, 0, 4, -5, 31, 33

largernum DWORD 0

.code

Findlargest Proto, num:DWORD, num1 : DWORD, num2 : DWORD

main PROC

invoke FindLargest, ADDR numberrange, LENGTHOF numberrange, SIZEOF numberrange

invoke FindLargest, ADDR numberrange1, LENGTHOF numberrange1, SIZEOF numberrange1

invoke FindLargest, ADDR numberrange2, LENGTHOF numberrange2, SIZEOF numberrange2

exit

main ENDP

LargestMember PROC

mov largernum, [esi]

mov eax, [esi+4]

L1:

.if largernum < [esi]

mov largernum, [esi]

.endif

add esi, 4

inc ecx

loop l1

ret

LargestMember ENDP

END MAIN

INCLUDE Irvine32.inc

.data

numberrange DWORD 50, 100, -4, -5, 2, 5, 101, 34, 23, 45

numberrange1 DWORD 20, 30, 40, 50

numberrange2 DWORD - 2, -5, 2, 7, 3, 10, 15, 20, 5, 6, 21, 0, 4, -5, 31, 33

largernum DWORD 0

.code

Findlargest Proto, num:DWORD, num1 : DWORD, num2 : DWORD

main PROC

invoke FindLargest, ADDR numberrange, LENGTHOF numberrange, SIZEOF numberrange

invoke FindLargest, ADDR numberrange1, LENGTHOF numberrange1, SIZEOF numberrange1

invoke FindLargest, ADDR numberrange2, LENGTHOF numberrange2, SIZEOF numberrange2

exit

main ENDP

LargestMember PROC

mov largernum, [esi]

mov eax, [esi+4]

L1:

.if largernum < [esi]

mov largernum, [esi]

.endif

add esi, 4

inc ecx

loop l1

ret

LargestMember ENDP

END MAIN

x86 Assembly Language Programming Assignment FindLargest Procedure Create a procedure named FindLargest that receives two parameters: a pointer to a signed doub
x86 Assembly Language Programming Assignment FindLargest Procedure Create a procedure named FindLargest that receives two parameters: a pointer to a signed doub

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site