- 2075 Asoj · 8 marks
Address-format code for unspecified-2075-asoj
Short answer
For a representative expression like Y=(A+B)*(C-D), the code lengths are three three-address, six two-address, seven one-address, and eight zero-address instructions. The one-address version uses the accumulator and temporary locations.
Write codes for a given operation using zero, one, two and three address instruction format. [the operation/expression is not printed in the scan]
The expression of this question is not printed in the scan. As a representative example, the operation Y = (A + B) × (C - D) is used; the method is the same for any expression.
Assumptions: the operands are memory locations, R1, R2, ... are CPU registers, T1, T2, ... are temporary memory locations, and Y receives the result. Multiplication and division are done before addition and subtraction, and equal-priority operators go left to right.
Fully bracketed: Y = (A+B)*(C-D). Postfix (reverse Polish) form: A B + C D - *.
Three-address instructions (OP dest, src1, src2)
ADD R1, A, B ; R1 = A + B
SUB R2, C, D ; R2 = C - D
MUL Y, R1, R2 ; Y = R1 * R2
Number of instructions: 3. Shortest program, but each instruction is long (three addresses).
Two-address instructions (OP dest, src; dest = dest OP src)
MOV R1, A ; R1 = A
ADD R1, B ; R1 = R1 + B
MOV R2, C ; R2 = C
SUB R2, D ; R2 = R2 - D
MUL R1, R2 ; R1 = R1 * R2
MOV Y, R1 ; Y = R1
Number of instructions: 6. A MOV is needed first because the destination operand is overwritten.
One-address instructions (accumulator AC is the implied operand)
LOAD A ; AC = A
ADD B ; AC = AC + B
STORE T1 ; T1 = AC
LOAD C ; AC = C
SUB D ; AC = AC - D
MUL T1 ; AC = AC * T1
STORE Y ; Y = AC
Number of instructions: 7. Intermediate results that cannot stay in AC are saved in memory temporaries.
Zero-address instructions (stack machine)
PUSH A ; push A
PUSH B ; push B
ADD ; pop two, compute, push result
PUSH C ; push C
PUSH D ; push D
SUB ; pop two, compute, push result
MUL ; pop two, compute, push result
POP Y ; Y = top of stack
Number of instructions: 8. Only PUSH and POP carry an address; ADD, SUB, MUL, DIV work on the top two stack items, so the program follows the postfix form directly.
Summary: 3-address = 3, 2-address = 6, 1-address = 7, 0-address = 8 instructions. Fewer addresses per instruction means shorter instructions but more of them.
✓ Answer checked by Claude Opus 5.5 (high effort)
Related questions
- Address-format code for Y=A+(B*C)+D · Computer Organization and Architecture, chapter 2
- Instruction fields and address formats for X=(E+F)*(G+H) · Computer Organization and Architecture, chapter 2
- Address-format code for Y=(A+B)*(C+D) · Computer Organization and Architecture, chapter 2 · asked 16×
- Address-format code for X=(A*B/C)-(D+E/F) · Computer Organization and Architecture, chapter 2 · asked 16×
- Address-format code for X=(P+Q)×(R+S) · Computer Organization and Architecture, chapter 2 · asked 16×
- Address-format code for Y=A*(B+D/C)+(G*E)/F · Computer Organization and Architecture, chapter 2 · asked 16×
- Instruction and data format, addressing modes · Microprocessor, chapter 2 · asked 2×
- Datapath operation and instruction cycles · Embedded System, chapter 2
- CMOS inverter / NOT gate operation · Basic Electronics Engineering, chapter 3 · asked 4×
- Nyquist zero-ISI criteria; one pulse shaping method · Communication Systems, chapter 6
All Computer Organization and Architecture chapter 2 questions →