For the following two operations give the result and indicate the status of the C, V, N, and Z bits in the Condition Code register.

a) $2A + $52 = ?

b) $AC + $8A = ?

## Expert Answer

Let’s know first when each bit is set i.e. its value is set to 1.

I am writing this for addition operation only..

Z bit is set if addition returns 0 here. i.e. Z = 1 when the result is 0.

C bit is set if a carry is produced by the addition.

N bit is set if the result is negative i.e. when the MSB – most significant bit in result comes 1, the number is said negative so N bit is set.

V bit is set when an overflow is occurred. This in simple terms means when you add 2 positive numbers and it produces a negative number; it is said an overflow.

Similarly, when you add 2 negative numbers and the result is positive number, it is also an overflow.

So, in general, overflow means when you add 2 numbers of same sign and the result produced is having different sign.

Let’s make it simpler. If both the numbers have 1 in MSB, and the result has 0 in MSB; or vice-versa, it is said an overflow.

So now let’s add the numbers and find the result and status of these bits.

(a).

$2A

+ $52

——

$7C

Condition Code register status:

The result is not zero so Z flag remains **0**.

No carry is produced here so C flag is also **0**.

To see the MSB, write this number in binary.

7C = 0111 1100

So, here the MSB is not 1 so the number is positive. So N bit is also set to **0**.

To find out the overflow…

Overflow is detected when the carry is generated while adding the respective 4 bits in binary. This means that you consider A+2 separate and if it is producing a carry, it will be added with 2+5. It is not generating a carry here, but if it was generated, it would be an overflow.

As here no overflow is there, V bit is also remaining **0**.

(b).

$AC

+ $8A

——

$36 and carry = 1.

Let’s find the condition register status..

Here, the carry flag is set because in result we get, A+8+1 is exceeding F, the maximum value so C = **1**

Z bit is **0** as the result is non-zero.

The number in binary is : 36 = 00110110 so the MSB is **0**.

So N bit is also **0**.

Let’s find for the overflow bit.

1100 (C in binary)

+1010 (A in binary)

——

0110

See, here both the numbers having MSB 1 and result containing MSB 0.

So this is an overflow. So, V bit is set to **1**.

So the final answer is…

Operation | Result | Condition Code Register | |||
---|---|---|---|---|---|

C | V | N | Z | ||

a) $2A + $52 | $7C | 0 | 0 | 0 | 0 |

b) $AC + $8A | $36 | 1 | 1 | 0 | 0 |