Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

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

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Intelligent Databases Object Oriented Deductive Hypermedia Technologies

Authors: Kamran Parsaye, Mark Chignell, Setrag Khoshafian, Harry Wong

1st Edition

0471503452, 978-0471503453

More Books

Students also viewed these Databases questions

Question

What Is acidity?

Answered: 1 week ago

Question

Explain the principles of delegation

Answered: 1 week ago

Question

State the importance of motivation

Answered: 1 week ago

Question

Discuss the various steps involved in the process of planning

Answered: 1 week ago

Question

What are the challenges associated with tunneling in urban areas?

Answered: 1 week ago

Question

3. Existing organizations and programs constrain behavior.

Answered: 1 week ago