Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

With the following Assembly instructions: ADD (1, ACC = ACC +arg) BR (1, jump to

ID: 3713632 • Letter: W

Question

With the following Assembly instructions:

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

Assumptions
any proper format within line, tokens separated by BS, blank space
all storage directives are listed following the last STOP
all names start with letters and contain more letters or digits

Write a program that reads 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.

Explanation / Answer

Instructions
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])

do

racer1 := racer1+20;

racer2 := racer2+25;

while(racer2 < racer1);

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote