So I recently started taking this class and i never learned assembly language so writing the program was very difficult. I have this project to do and this is part one.
The instructions are:
Part 1
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};
int lower = 3;
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 'e qualified for inclusion into the ' sum 'e and what the final value of the variable ' sum 'e was. (Hint: you may have to add another variable.)
This is the program I wrote.
TITLE Project 2 (main.asm)
INCLUDE Irvine32.inc
.data
Array DWORD 3,1,4,1,5,9,2,6,5,3,5,8,9,7,9,3,2,3,8,4
lower DWORD 3
upper DWORD 8
ArraySize = ($ - Array) / TYPE array
index DWORD 0
sum DWORD 0
.code
main PROC
mov eax, 0 ; sum
mov edx, lower
mov esi, 0 ; index
mov ebx, upper
mov ecx, ArraySize
L1: cmp esi,ecx
jl L2
jmp L5
L2: cmp array[esi], edx
cmp array[esi], ebx
jg L3
jmp L4
L3: add eax, array[esi]
L4: inc esi
jmp L1
L5: mov sum,eax
call array
call sum
exit
main ENDP
END main
I was successful in bulding the solution but when i ran it, it either showed nothing or it would go unresponsive. Can someone point out the problems in this code for me? I sent emails to my professor but she hasn't responded to me. Thank you.