# Lab 05: Exploring Logical and Arithmetic Operations (II)

In this laboratory, you will explore the use of arithmetic and logical operations. In this lab, you will implement the algorithm for overflow detection in the signed sum operation, the unsigned sum operation and multiplication.

The following rules applies:

#### Signed SUM

For X = A + B (Signed Number)

if signal(A) != signal(B) then overflow can't occur
if A >= 0 and B >=0 and X < 0 then overflow occcured !
if A < 0 and B < 0 and X >= 0 then overflow occcured !

#### Unsigned SUM

When dealing with unsigned number, tha maximum value that a n-bit register can hold is (2^n - 1), thus for checking the overflow you must avaliate the condition:
(2^n -1) < A + B then overflow occurred !

Unfortunally it isn't that simple. You never can compare your result with the value of 2^n - 1, for one reason. The value of A + B stored on a N-bit register will never be greater than ( 2^n - 1 ). Try to figure out how this verification can be done.

#### Multiplication

For X = A * B (Signed Number)

if signal(A) == signal(B) and X < 0 then overflow occurred !
if signal(A) != signal(B) and X >= 0 then overflow occurred !

The Base Program file contains the implementation of two functions to help you to print data on the screen. Call the function print_int passing an integer as first argument to print it on the screen. To print strings on the console, use the function print_string passing the address of the string (null terminated) as first argument.