Question: Hello, I need help with this project: Implement the following C + + code fragment in assembly language. Use the block structured . IF and

Hello, I need help with this project: Implement the following C++ code fragment in assembly language. Use the block structured .IF and .WHILE directives. Assume that all variables are 32-bit integers.
int array[]={3,1,4,1,5,9,2,6,5,3,5,8,9,7,9,3,2,3,8,4,6,2,6,4};
int lower =4;
int upper =8;
int ArraySize = sizeof array / sizeof lower;
int index =0;
int sum =0;
while( index < ArraySize )
{
if( array[index]>= lower && array[index]<= upper )
{
sum += array[index];
}
index++;
}
Your assembly language program must also display as output the number of times a member of 'array' qualified for inclusion into the 'sum'(>= lower && <= upper) and what the final value of the variable 'sum' was. (Hint: you may have to add another variable.) You may use the author's procedures in the book's link library. Use only the procedures that have been covered in the textbook so far.
Sample output:
Qualified members: XX
Sum = XX. This is my work so far, but I wasn't sure if I was doing it right: INCLUDE Irvine32.inc
.386
.model flat, stdcall
.Stack 4096
Exit Process PROTO, dwExitCode: DWORD
.data
array DWORD 3,1,4,1,5,9,2,6,5,3,5,8,9,7,9,3,2,3,8,4,6,2,6,4
lower WORD 4
upper WORD 8
ArraySize =($ - Array)/ TYPE lower
index DWORD (?)
sum DWORD (?)
disIndex BYTE "Qualified members: ",0
disSum BYTE "Sum =",0
.code
main PROC
mov eax, 0
mov edx, lower
mov esi, 0
mov ecx, ArraySize
L1: cmp ecx, edx
jl L2
jmp L8
L2: cmp array [esi *4]
jg L3
L3: add eax, array[esi *4]
inc esi
jmp L1
L4: mov eax, 0
mov edx, upper
mov esi, 0
jl L5
L5: mov sum, eax
INVOKE ExitProcess, 0
main ENDP
END main

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!