Convert the given code fragment to assembly code fragment, using only instructions of the following types. These instructions are generally discussed in class. Here X,Y,Z are any memory locations; R, R1, R2 are any general registers; L is a label in the code (you can use any names as labels, ex. L, L1, L2 etc. ). load X, R //copy contents of memory location X into R. store R, X //Store contents of R into Mem location X cmp R1, R2 //Compute R1-R2 and update condition codes; //throw away result of subtraction. jmp L //Jump to location L in the code. jmpp L //If P bit is 1, Jump to location L in the code add X, R //Add contents of X,R and store result in R; //Also update the condition codes. Be careful about what type of argument is allowed in the instruction (Memory or Register). Ex. the first argument of ADD instruction is memory, not register. Do Not use any other instructions (in this, or some other, assembly language). I cannot get into syntax and semantics of your assembly language or its presumed cpu architecture. So follow the instructions in the question.
Convert the given code fragment to assembly code fragment,
using only instructions of the following types.
These instructions are generally discussed in class. Here
X,Y,Z are any memory locations; R, R1, R2 are any general registers; L is a label in the code (you can use any names as labels, ex. L, L1, L2 etc. ).
- load X, R //copy contents of memory location X into R.
- store R, X //Store contents of R into Mem location X
- cmp R1, R2 //Compute R1-R2 and update condition codes;
//throw away result of subtraction.
- jmp L //Jump to location L in the code.
- jmpp L //If P bit is 1, Jump to location L in the code
- add X, R //Add contents of X,R and store result in R;
//Also update the condition codes.
Be careful about what type of argument is allowed in the instruction (Memory or Register). Ex. the first argument of ADD instruction is memory, not register.
Do Not use any other instructions (in this, or some other, assembly language).
I cannot get into syntax and semantics of your assembly language or its presumed cpu architecture.
So follow the instructions in the question.
Ex. do not use JMPZ, JMPN etc. in these questions.
Ex. Do not say: cmp X, Y. The question says that the two arguments in the cmp instruction are registers, not memory locations.
The code segment:
while ((X != Y) X = X + Z;
L:
Answer:
The given code is
if((X + Y ) > 0)
X = X + X;
L:
The assembly code is given below:
load X, R1 / /copy content of the memery location X to R1
load Y, R2 // copy content of the memory location Y to R2
Step by step
Solved in 2 steps