728 views
0 votes
0 votes

(c) The following are some assembly language instructions of a hypothetical CPU. The instructions are written to find the remainder when 16 is divided by 7 and store the remainder in a memory location

location assembly instruction

0 load  16

1 sub   7  

2 bge   1

3 store 4

4 (unknown) 

The operands of the above instructions are given in decimal. (i) Translate the first four assembly instructions (at locations 0 to 3) into 8-bit machine language instructions (3 bits for operation code and 5 bits for operand) using the following table. Ignore the last column at this moment.

binary

operation

code

assembly

language

operation

code

operand (5 bits) meaning
100 load x load the value x into the accumulator
101 sub x
subtract the value x from the accumulator A (i.e., A - x) and store result in A.
110 add x add the value x to the accumulator A (i.e., A + x) and store result in A.
111 bge x branch to location x if the content of the accumulator A is greater than or equal to zero. In other words, if A >= 0, the next instruction to execute is at location x. Normally the next instruction's location is one larger than the current memory location.
000 store x store the content of the accumulator to location x

For example, the assembly instruction at location 3 (store 4) is translated to "000 00100" since "store" corresponds to 000 and 410 = 001002 .

(ii) This part is difficult. Upon the reset of the CPU, the first instruction to execute is at location 0. Then the CPU executes the instructions one by one from the top to the bottom unless changed by the "bge" instruction. The machine has a register called the accumulator A which can be used to store a number. Now you need to trace the execution of the above assembly instructions.

• What is wrong with the above instructions?

• Suggest some changes in the assembly instructions that make the code work as intended.

(d) Show your working steps in performing the following conversions:

(i) Convert 0101 10012 to decimal.

(ii) Convert 4E16 to decimal.

(iii) Convert 1100 00112 to hexadecimal.

 

Please log in or register to answer this question.

Related questions

274
views
1 answers
0 votes
Amit kanodia asked Feb 4
274 views
class A:def_init__(s): self.s=sdef print():passa = A('John')a.print()
366
views
1 answers
0 votes
fxavain asked Feb 11, 2022
366 views
L = {w: w ε{0,1}*,Every substring of four symbols has at most two 0's}Write a program using c++ or java.The input program is the string to be tested.The ... with v= {w: w ε L} and the output should either reject or accept the string v.
843
views
0 answers
0 votes
Suja1994 asked Aug 1, 2018
843 views
%{ #include<stdio.h> int vowels=0; int cons=0;%}%%[aeiouAEIOU] {vowels++;}[a-zA-Z] {cons++;}%%int yywrap(){return 1;}int main( ... ubuntu . iam able to enter the string but it does print the line for counting vowels and consonants
538
views
0 answers
2 votes
Adiaspirant asked May 24, 2017
538 views
Could anyone help me with me image processing topic as I have done my Btech project in noise reduction in images but I have tried only those filters which are already ... 't done anything new in it.I need to prepare it for IIIT H interview.