Question: Your program will find the sum of numbers input and display all of the input values. You will be writing an assembly language project (using

Your program will find the sum of numbers input and display all of the input values. You will be writing an assembly language project (using the virtual machine described in class and available on Canvas) to perform a series of three tasks. These tasks will build on each other, starting with the simplest program and progressing to the full program. The full program will read in numbers from the keyboard until the value -1 is entered, then display all of the numbers that were entered, followed by their sum.

Each line is independent and self-contained, and may be blank, an instruction, or a storage directive All delimiters are the space character

Instructions are for an accumulator machine (left argument and result are in an implicit accumulator ACC register, except for COPY), with the following format XXX arguments XXX is the reserved instruction name, required, in upper case arguments as needed separated by spaces additional optional label can start any instruction (label:), just one label per line at most instructions (# arguments, meaning)

These are the usable instructions for the tasks below.

ADD (1, ACC = ACC +arg)

BR (1, jump to arg) BRNEG (1, jump to arg if ACC < 0)

BRZNEG (1, jump to arg if ACC <= 0) BRPOS (1, jump to arg if ACC > 0) BRZPOS (1, jump to arg if ACC >= 0) BRZERO (1, jump to arg if ACC == 0)

COPY (2, arg1 = arg2)

DIV (1, ACC = ACC / arg)

MULT (1, ACC = ACC * arg)

READ (1, arg=input integer)

WRITE (1, put arg to output as integer)

STOP (0, stop program)

STORE (1, arg = ACC)

SUB (1, ACC = ACC - arg)

NOOP (0, nothing)

LOAD (1, ACC=arg)

ADD, DIV, MULT, WRITE, LOAD, SUB can take either variable or immediate value as the arg: immediate value is positive integer or negative integer

PUSH (0, tos++)

POP (0, tos)

STACKW (1,stack[tos-arg]=ACC)

STACKR (1,ACC=stack[tos-arg]) PUSH/POP are only means to reserve/delete automatic storage. STACKW/STACKR n - these are stack write/read instructions. n must be a non-negative number, and the access is to nth element down from TOS, top of stack NOTE: tos points to the topmost element on the stack Storage directives XXX val XXX is a name val is the initial value all storage and ACC size are signed 2 bytes Storage name and label are all names starting with latter and following with letters and digits up to eight total

Task 1:

Write a program that will read in numbers until the value -1 is entered on the keyboard. Call this program task1.asm (use the .txt suffix if you are using eclipse to write the program).

Task 2:

Make a copy of your task1.asm file called task2.asm using cp task1.asm task2.asm on the shell command line. This program should read in numbers until -1 is entered and then display the sum of all single digit numbers that were entered.

Task 3:

Make a copy of task2.asm and call it task3.asm. This final version should read in all values and AFTER the -1 is entered, it should display all of the numbers entered followed by printing out the sum of these numbers. The stack must be used for this program.

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!