Using this instruction set: Instructions ADD (1, ACC = ACC +arg) BR (1, jump to
ID: 3581007 • Letter: U
Question
Using this instruction set:
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])
convert the following do while loop into a do while loop using the ASSEMBLY language.
do
{
racer1 += 20; racer2 += 25;
} while(racer2 < racer1);
Explanation / Answer
Assembly Program for Do-While Loop:
.L2:
addl $20, -8(%rbp)
addl $25, -4(%rbp)
movl -4(%rbp), %eax
cmpl -8(%rbp), %eax
jl .L2
movl $0, %eax
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.