Question
ASSEMBLY - need help to print out each value from an array in this code. Not sure why i'm getting error. Please help. .data applesSold
ASSEMBLY - need help to print out each value from an array in this code. Not sure why i'm getting error. Please help.
.data
applesSold SDWORD 8, 6, 7, 5, 3 ; initialized array - total value = 29 will be stored as EAX=0000001D
orangesSold SDWORD 1, 9, 4, 2 ; initialized array - total value = 16 will be stored as EBX=00000010
totalApplesSold SDWORD ? ; uninitialized
totalOrangesSold SDWORD ? ; uninitialized
totalFruitsSold SDWORD ? ; uninitialized
totalApplesString SBYTE 'Total apples sold: ', 0
totalOrangesString SBYTE 'Total oranges sold: ', 0
totalFruitSold SBYTE 'Fruit sold: ', 0
totalFruitString SBYTE 'Total fruit sold: ', 0
.code
main PROC
MOV EAX, 0 ; clear all regs by setting to 0
MOV EBX, 0
MOV ECX, 0
MOV EDI, 0
MOV EAX, totalApplesSold ; move source to destination
MOV EDI, OFFSET applesSold ; address of applesSold array
MOV ECX, LENGTHOF applesSold ; loop counter
MOV EAX,0 ; zero the accumulator
SUM_L1:
ADD EAX, [EDI] ; add an integer
ADD EDI, TYPE applesSold ; point to next integer
LOOP SUM_L1 ; repeat until EAX = 0
MOV EBX, totalOrangesSold ; move source to destination
MOV EDI, OFFSET orangesSold ; address of orangesSold array
MOV ECX, LENGTHOF orangesSold ; loop counter
MOV EBX,0 ; zero the accumulator
SUM_L2:
ADD EBX, [EDI] ; add an integer
ADD EDI, TYPE orangesSold ; point to next integer
LOOP SUM_L2 ; repeat until BX = 0
MOV ECX, totalFruitsSold ; store values of both arrays
ADD ECX, EAX ; add values of instruction operands of the same size from source to destination
ADD ECX, EBX ; add values of instruction operands of the same size from source to destination
;CALL dumpRegs ; calls dumpregs to display values of regs
CALL displayTotals
exit
main ENDP
displayTotals PROC uses eax edx
mov eax, totalApplesSold ; load eax with total apples to display
mov edx, offset totalApplesString ; load edx with address of total apple string
call writeString ; display "label"
call writeInt ; display total apples (showing sign)
call crlf ;
neg applesSold+4
mov eax, applesSold+4
mov eax, totalOrangesSold ; load eax with total oranges to display
mov edx, offset totalOrangesString ; load edx with address of total orange string
call writeString ; display "label"
call writeInt ; display total oranges (showing sign)
call crlf
mov eax, totalFruitSold ; load eax with total fruit to display
mov edx, offset totalFruitString ; load edx with address of total fruit string
call writeString ; display "label"
call writeInt ; display total fruit (showing sign)
call crlf
ret
displayTotals ENDP
END main
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started