Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Arithmetic and Logical Operations - Part I. Boolean Operations A boolean variable can only have one of the two values, i.e, can either be 1 or 0. Given.

Similar presentations


Presentation on theme: "1 Arithmetic and Logical Operations - Part I. Boolean Operations A boolean variable can only have one of the two values, i.e, can either be 1 or 0. Given."— Presentation transcript:

1 1 Arithmetic and Logical Operations - Part I

2 Boolean Operations A boolean variable can only have one of the two values, i.e, can either be 1 or 0. Given a sequence of bits, each of these bits can be considered one boolean variable. A boolean operation is applied simultaneously to each bit. Logical operations are defined for boolean variables.

3 Unary boolean operations input zero one invert same 0 0 1 10 1 0 1 01 MAL provides the not operator

4 Logical Operations aband ornandnorxor xnor 00001101 01011010 10011010 11110001 Some MAL instructions notD,S 1 andD,S 1,S 2 norD,S 1,S 2

5 Masking and Merging Masking is the process of extracting a portion of the variables from a cell. A mask can be used to extract the appropriate bits needed for future operations. The and instruction can used to extract bits. Merging is simply inserting a bit sequence in the appropriate part of the cell. The or instruction can be used to merge.

6 Example 14.1 The following can be used as masks: mask1:.word0xff000000 mask2:.word0x007fffff 01000001100000000000000000110101 and00000000011111111111111111111111 00000000000000000000000000110101 mask Extracted bits

7 Example 14.2 What is the result of using mask1 with the given bit sequence? 01000001100000000000000000110101 and11111111000000000000000000000000

8 Example 14.3 01000001100000000000000000110101 and00000000011111111111111111111111 00000000000000000000000000110101 or01000011100000000000000000000000 01000011100000000000000000110101 merged cleared

9 Example 14.4 Here’s a SAL code that demonstrates masking and merging: mask1:.word0xff000000 smallc:.word0x63000000 charc:.word0x43000000... not mask, mask1 and charc, mask, charc #clear bits or charc, charc, smallc #merge

10 Shift Operations Sometimes it is necessary to move a sequence of bits to different positions within the word, e.g. we need to align variables before merging A shift operation rearranges the bits within the cell by shifting them There are three types of shift operation: logical, rotate and arithmetic.

11 Logical Shift A logical shift moves the bits within the cell one position to the right or to the left In a logical right shift, the least significant bit (lsb) is discarded and the most significant bit (msb) is assigned 0. In a logical left shift, the lsb is assigned 0 and the msb is discarded. A shift instruction will have an operand that specifies how many times the one position shift is applied.

12 Example 14.5 10 10 10 0 01 01 00 0 0 in discard MAL instruction: srl D,S 1,AMT y x

13 Example 14.6 10 10 10 0 00 10 10 1 SAL instruction: sll D,S 1,AMT 0 in discard y x

14 Rotate A rotate operation shifts the bits within the cell without discarding. Unlike the logical shift, no information is lost in a rotate operation. A rotate operation can either be left or right. A rotate left has an equivalent rotate right operation. A rotate right places the lsb into the msb position. A rotate left places the msb into the lsb position.

15 Example 14.7 SAL instruction: rol x,y,1 10 10 10 0 01 01 01 0 y x

16 Example 14.8 10 10 10 0 y What is the result of SAL’s ror x,y,2 ?

17 Arithmetic Shift A right shift is equivalent to integer division by two. A left shift is equivalent to multiplication by two. In 2’s complement, positive or negative, a logical left shift, is equivalent to multiplication by two. An arithmetic left shift is the same as a logical left shift.

18 An arithmetic right shift replicates the sign bit, instead of filling in with 0’s as in the logical right shift. In 2’s complement, positive or negative, division by two is accomplished via an arithmetic right shift. There is no arithmetic left shift instruction because the logical left shift instruction produces identical result.

19 Example 14.9 10 10 10 1 01 01 01 1 replicated y x discard SAL instruction: srax,y,1

20 20 Example 14.10 10 10 10 0 What is the result of multiplying this by two?


Download ppt "1 Arithmetic and Logical Operations - Part I. Boolean Operations A boolean variable can only have one of the two values, i.e, can either be 1 or 0. Given."

Similar presentations


Ads by Google