Explanation : a = 1
b = 10 Let a is in Accumulator than for b and c we want
c = 20 Register than 2 registers want till now 1
for b and 1 for c
d = a + b N ow d = a + b can be stored in
Accumulator because we don’t want a again
e = c + d. Now for f we wan’t next, one register
because we wan’t c & e again
f = c + e
b = c + e. Now at b = c + e we can store value in
register b already, so we don’t want another
e = b + f. Now at e = b + f we can store it in 0
register of b because we don’t want another
d = 5 + e Now at d = 5 + e we can store it in d
because we don’t want e again
than we can say only 3 registers we want.
Explanation : The current value of Stack pointer is (016E)16 The value of SP after following operations is asked in question (1) Store the current value of PC in the stack. This operation increments SP by 2 bytes as size of PC is given 2 bytes in question. So (016E)16 + 2 = (0170)16 (2) Store the value of PSW register in the stack. This operation also increments SP by 2 bytes as size of PSW is also given 2 bytes. So (0170)16 + 2 = (0172)16 (3) Load the starting address of the subroutine in PC. The Load operation doesn't change SP. So new value of SP is (0172)16