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

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 Databases Questions!