### Assembly Language

```Ch. 7
Logic, Shift and Rotate instr.
• Logic Instructions
– AND, OR, XOR and NOT
• TEST Instruction
• Shift Instructions
-
Left shift – doubles a number
Right shift – halves a number
… multiply or divide by powers of 2
MUL, DIV – much slower than shift instr…
• Rotate
• Stack Operations
• Introduction to Procedures
7.1 AND, OR and XOR Instructions
AND
OR
XOR
•
•
•
•
destination, source
destination, source
destination, source
SF – sign
ZF – zero
PF – parity
AF – auxiliary carry
OF – overflow
CF – carry
Dest. – must be a Register or mem.
Source – const, reg., mem
Memory-to-memory operations are not allowed
Effect on flags
– SF, ZF, PF reflect the result
– AF is undefined
– CF, OF = 0
Use of Logic Instructions
• Selectively modify the bits of destination
– b AND 1 = b
(b represents a bit, 0/1)
– b AND 0 = 0
– b OR 0 = b
– b OR 1 = 1
– b XOR 0 = b
– b XOR 1 = ~b
(complement of b)
• So, AND can be used to clear specific destination bit
• OR can be used to set specific destination bit
• XOR can be used to complement specific destination bit
Examples
mask
Example 7.2: Clear the sign bit of AL while leaving the
other bits unchanged.
AND
AL, 7Fh
0111 1111 = 7Fh
Example 7.3: Set the msb and lsb of AL while preserving
the other bits.
OR
AL, 81h
1000 0001 = 81h
Example 7.4: Change the sign bit of DX
XOR
DX, 8000h
See example from book
How to clear a register?
1. MOV
AX, 0
; machine code 3 bytes
2. SUB
AX, AX
; .. 2 bytes
3. XOR
AX, AX
; .. 2 bytes
-- BUT mem2mem operations only for MOV is
allowed here – so to clear a memory location,
use MOV.
7.1.2 NOT Instruction
1’s Complement operation
NOT destination
- No effect on status flags
Example 7.5: Complement the bits in AX
NOT AX
7
• Logic Instructions
– AND, OR, XOR and NOT
•
•
•
•
TEST Instruction
Shift and Rotate Instructions
Stack Operations
Introduction to Procedures
7.2 TEST Instruction
• TEST performs AND of the destination with source –
but no change of the dest. contents
TEST
destination, source
• Effects on flags
– SF, ZF, PF reflect the result
– AF is undefined
– CF, OF = 0
• TEST vs. CMP
– CMP is subtraction operation
TEST Example
• Jump to label BELOW if AL contains an even
number
TESET
JZ
AL, 1
BELOW
; is AL even?
; yes, go to BELOW
JZ – jump if equal to zero
- use to examine individual bits in an operand.
- mask contains 1’s in the bits positions to be tested &
0’s elsewhere
-Even numbers have a 0 in bit#0.
-So, mask = 0000 0001b = 1
Agenda
• Logic Instructions
– AND, OR, XOR and NOT
•
•
•
•
TEST Instruction
Shift and Rotate Instructions
Stack Operations
Introduction to Procedures
7.2 Shift and Rotate Instructions
• Two types of shift and rotate instructions
– Logical Shift / Rotate
– Arithmetic Shift/Rotate
• Both logical and arithmetic left shift are identical
• But right shifts are different
opcode
dest, 1
; 1 bit change
opcode
dest, CL
; N bits change
; CL contians N
- Dest  reg., mem
- SHL  Multiplication by left shift by multiplies of 2
- SAL  for numeric multiplication
Shift and Rotate Instructions
SHL
DH, 3
; DH = 1110 1111
DH = 0111 1000
SAL
DH, 2
C=1
; DH = 1110 1111
DH = 1011 1100
SHR
C=1
DH, 3
; DH = 1110 1111
DH = 0001 1101
SAR
DH, 2
C=1
; DH = 1110 1111
DH = 1111 1011
C=1
Rotate Instructions
ROL – rotate left
ROR – r right
RCL – r carry left
RCR – r c right
Let
DH = 8Ah = 1000 1010
CF = 1
After first RCR
DH = 1100 0101
CF = 0
After second RCR
DH = 0110 0010
CF = 1
Agenda
• Logic Instructions
– AND, OR, XOR and NOT
• TEST Instruction
• Shift and Rotate Instructions
• Stack Operations
Stack vs. Queue
• Stack
– LIFO : Last In First Out
• Queue
– FIFO : First In First Out
Queue
Stack
PUSH vs. POP in Stack
PUSH Instructions
POP Instructions
References
• Some materials are from Dr. Sazzad, NSU
• Ch 7, Assembly Language Programming – by
Charls Marut
• Ch 4, Intel Microprocessors – by Brey
```