Download Integer Arithmetic - Computer Organization and Assembly Language - Lecture Slides and more Slides Assembly Language Programming in PDF only on Docsity!
Computer Organization &
Assembly Languages
Integer Arithmetic
Chapter Overview
Shift and Rotate Instructions
Shift and Rotate Applications
Multiplication and Division Instructions
Extended Addition and Subtraction
ASCII and Unpacked Decimal Arithmetic
Packed Decimal Arithmetic
Logical vs Arithmetic Shifts
A logical shift fills the newly created bit position
with zero:
• An arithmetic shift fills the newly created bit
position with a copy of the number’s sign bit:
CF
0
CF
SHL Instruction
The SHL (shift left) instruction performs a logical
left shift on the destination operand, filling the
lowest bit with 0.
CF
0
• Operand types for SHL: SHL destination,count
SHL reg,imm
SHL mem,imm
SHL reg ,CL
SHL mem ,CL
(Same for all shift and
rotate instructions)
SHR Instruction
The SHR (shift right) instruction performs a logical
right shift on the destination operand. The highest
bit position is filled with a zero.
CF
0
mov dl, shr dl,1 ; DL = 40 shr dl,2 ; DL = 10
Shifting right n bits divides the operand by 2 n
SAL and SAR Instructions
SAL (shift arithmetic left) is identical to SHL.
SAR (shift arithmetic right) performs a right
arithmetic shift on the destination operand.
CF
An arithmetic shift preserves the number's sign.
mov dl,- sar dl,1 ; DL = - sar dl,2 ; DL = -
ROL Instruction
ROL (rotate) shifts each bit to the left
The highest bit is copied into both the Carry flag
and into the lowest bit
No bits are lost
CF
mov al,11110000b rol al,1 ; AL = 11100001b
mov dl,3Fh rol dl,4 ; DL = F3h
ROR Instruction
ROR (rotate right) shifts each bit to the right
The lowest bit is copied into both the Carry flag
and into the highest bit
No bits are lost
CF
mov al,11110000b ror al,1 ; AL = 01111000b
mov dl,3Fh ror dl,4 ; DL = F3h
RCL Instruction
RCL (rotate carry left) shifts each bit to the left
Copies the Carry flag to the least significant bit
Copies the most significant bit to the Carry flag
CF
clc ; CF = 0
mov bl,88h ; CF,BL = 0 10001000b
rcl bl,1 ; CF,BL = 1 00010000b
rcl bl,1 ; CF,BL = 0 00100001b
RCR Instruction
RCR (rotate carry right) shifts each bit to the right
Copies the Carry flag to the most significant bit
Copies the least significant bit to the Carry flag
stc ; CF = 1
mov ah,10h ; CF,AH = 1 00010000b
rcr ah,1 ; CF,AH = 0 10001000b
CF
SHLD Instruction
Shifts a destination operand a given number of bits
to the left
The bit positions opened up by the shift are filled
by the most significant bits of the source operand
The source operand is not affected
Syntax:
SHLD destination, source, count
Operand types:
SHLD reg16/32 , reg16/32, imm8 /CL SHLD mem16/32, reg16/32, imm8 /CL
SHLD Example
.data
wval WORD 9BA6h
.code
mov ax,0AC36h
shld wval,ax,
9BA6 AC
BA6A AC
wval AX
Shift wval 4 bits to the left and replace its lowest 4
bits with the high 4 bits of AX:
Before:
After:
SHRD Example
mov ax,234Bh
mov dx,7654h
shrd ax,dx,
Shift AX 4 bits to the right and replace its highest 4
bits with the low 4 bits of DX:
Before:
After:
7654 234B
7654 4234
DX AX
Your turn...
mov ax,7C36h
mov dx,9FA6h
shld dx,ax,4 ; DX =
shrd dx,ax,8 ; DX =
Indicate the hexadecimal values of each destination
operand:
FA67h 36FAh