0% found this document useful (0 votes)
21 views

Unit 2

The document discusses various integer instructions for the 8088/8086 microprocessor including: 1) Data-transfer instructions like MOV, XCHG, XLAT, LEA, LDS, and LES that allow transferring data between registers and memory. 2) Arithmetic instructions like ADD, SUB, MUL, and DIV for performing operations like addition, subtraction, multiplication and division. 3) Logic instructions like AND, OR, XOR, and NOT for performing bitwise logic operations. 4) Shift and rotate instructions for manipulating data in registers. Examples are provided to demonstrate how different instructions work and the results they produce.

Uploaded by

Santhosh G
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
21 views

Unit 2

The document discusses various integer instructions for the 8088/8086 microprocessor including: 1) Data-transfer instructions like MOV, XCHG, XLAT, LEA, LDS, and LES that allow transferring data between registers and memory. 2) Arithmetic instructions like ADD, SUB, MUL, and DIV for performing operations like addition, subtraction, multiplication and division. 3) Logic instructions like AND, OR, XOR, and NOT for performing bitwise logic operations. 4) Shift and rotate instructions for manipulating data in registers. Examples are provided to demonstrate how different instructions work and the results they produce.

Uploaded by

Santhosh G
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 51

8088/8086 MICROPROCESSOR

PROGRAMMING – INTEGER
INSTRUCTIONS AND
COMPUTATIONS
8088/8086 MICROPROCESSOR
PROGRAMMING – INTEGER
INSTRUCTIONS AND COMPUTATIONS

5.1 Data-Transfer Instructions


5.2 Arithmetic Instructions
5.3 Logic Instructions
5.4 Shift Instructions
5.5 Rotate Instructions
Data-Transfer Instructions
 The data-transfer functions provide the ability
to move data either between its internal
registers or between an internal register and a
storage location in memory
 The data-transfer functions include
 MOV (Move byte or word)
 XCHG (Exchange byte or word)
 XLAT (Translate byte)
 LEA (Load effective address)
 LDS (Load data segment)
 LES (Load extra segment)
Data-Transfer Instructions (cont.)
 The MOVE Instruction
 The move (MOV) instruction is used to transfer a
byte or a word of data from a source operand to
a destination operand

e.g. MOV DX, CS

MOV [SUM], AX
Data-Transfer Instructions (cont.)
 The MOVE Instruction
 Note that the MOV instruction cannot transfer
data directly between external memory
Data-Transfer Instructions (cont.)
 The MOVE Instruction
 MOV DX, CS
Data-Transfer Instructions (cont.)
 The MOVE Instruction
 MOV DX, CS
Data-Transfer Instructions (cont.)
 EXAMPLE:
What is the effect of executing the instruction?
MOV CX, [SOURCE_MEM],
where SOURCE_MEM equal to 2016 is a memory location
offset relative to the current data segment starting at
1A00016
 Solution:
((DS)0+2016) (CL)
((DS)0+2016+116) (CH)
Therefore CL is loaded with the contents held at memory address
1A00016 + 2016 = 1A02016
and CH is loaded with the contents of memory address
1A00016 + 2016 +116 = 1A02116
Data-Transfer Instructions (cont.)
 The XCHG Instruction
 The exchange (XCHG) instruction can be used to
swap data between two general-purpose
registers or between a general purpose register
and a storage location in memory

e.g. XCHG AX, DX


Data-Transfer Instructions (cont.)
 EXAMPLE:
What is the result of executing the following instruction?
XCHG [SUM], BX
where SUM = 123416, (DS)=120016
 Solution:
((DS)0+SUM) (BX)
PA = 1200016 + 123416=1323416
Execution of the instruction performs the following 16-bit
swap:
(1323416) (BL)
(1323516) (BH)
So we get (BX) = 00FF16, (SUM) = 11AA16
Data-Transfer Instructions (cont.)
 The XCHG Instruction
 XCHG [SUM], BX
Data-Transfer Instructions (cont.)
 The XCHG Instruction
 XCHG [SUM], BX
Data-Transfer Instructions (cont.)
 The XLAT Instruction
 The translate (XLAT) instruction is used to simplify
implementation of the lookup-table operation.
 Execution of the XLAT replaces the contents of AL
by the contents of the accessed lookup-table
location

e.g. PA = (DS)0 + (BX) + (AL)


= 0300016 + 010016 + 0D16 = 0310D16
(0310D16) (AL)
Data-Transfer Instructions (cont.)
 The LEA, LDS, and LES Instructions
 The LEA, LDS, LES instructions provide the ability to
manipulate memory addresses by loading either a 16-
bit offset address into a general-purpose register or a
register together with a segment address into either
DS or ES

 e.g. LEA SI, [DI+BX+5H]


Data-Transfer Instructions (cont.)
 The LEA, LDS, and LES Instructions
 LDS SI, [200H]
Data-Transfer Instructions (cont.)
 The LEA, LDS, and LES Instructions
 LDS SI, [200H]
Data-Transfer Instructions (cont.)
 EXAMPLE:
 Initializing the internal registers of the 8088 from
a table in memory
 Solution:
Arithmetic Instructions
 The arithmetic instructions include
 Addition
 Subtraction
 Multiplication
 Division
 Data formats
 Unsigned binary bytes
 Signed binary bytes
 Unsigned binary words
 Signed binary words
 Unpacked decimal bytes
 Packed decimal bytes
 ASCII numbers
Arithmetic Instructions (cont.)
Arithmetic Instructions (cont.)
 Addition Instructions: ADD, ADC, INC, AAA,
DAA
Arithmetic Instructions (cont.)
 Addition Instructions: ADD, ADC, INC, AAA,
DAA

Allowed operands
for INC instruction
Allowed operands for ADD and
ADC instructions
Arithmetic Instructions (cont.)
 EXAMPLE:
 Assume that the AX and BX registers contain
110016 and 0ABC16, respectively. What is the
result of executing the instruction ADD AX, BX?
 Solution:

(BX)+(AX)= 0ABC16 + 110016=1BBC16

The sum ends up in destination register AX. That is

(AX) = 1BBC16
Arithmetic Instructions (cont.)
 Addition Instructions: ADD, ADC, INC, AAA,
DAA
 ADD AX, BX
Arithmetic Instructions (cont.)
 Addition Instructions: ADD, ADC, INC, AAA,
DAA
 ADD AX, BX
Arithmetic Instructions (cont.)
 EXAMPLE:
 The original contents of AX, BL, word-size memory
location SUM, and carry flag (CF) are 123416, AB16,
00CD16, and 016, respectively. Describe the results of
executing the following sequence of instruction?
ADD AX, [SUM]
ADC BL, 05H
INC WORD PTR [SUM]
 Solution:
(AX) (AX)+(SUM) = 123416 + 00CD16 =130116
(BL) (BL)+imm8+(CF) = AB16 + 516+016 = B016
(SUM) (SUM)+ 116 = 00CD16 + 116 = 00CE16
Arithmetic Instructions (cont.)
 EXAMPLE:
What is the result of executing the following instruction
sequence?
ADD AL, BL
AAA
Assuming that AL contains 3216 (ASCII code for 2) and BL
contains 3416 (ASCII code 4), and that AH has been cleared
 Solution:
(AL) (AL)+(BL)= 3216 + 3416=6616
The result after the AAA instruction is
(AL) = 0616
(AH) = 0016
with both AF and CF remain cleared
Arithmetic Instructions (cont.)
 EXAMPLE:
 Perform a 32-bit binary add operation on the contents of
the processor’s register.
 Solution:
(DX,CX) (DX,CX)+(BX,AX)
(DX,CX) = FEDCBA9816
(BX,AX) = 0123456716
MOV DX, 0FEDCH
MOV CX, 0BA98H
MOV BX, 01234H
MOV AX, 04567H
ADD CX, AX
ADC DX, BX ; Add with carry
Arithmetic Instructions (cont.)
 Subtraction Instructions: SUB, SBB, DEC, AAS,
DAS, and NEG
Arithmetic Instructions (cont.)
 Subtraction Instructions: SUB, SBB, DEC, AAS,
DAS, and NEG

Allowed operands for Allowed operands Allowed operands


SUB and SBB instructions for DEC instruction for NEG instruction
Arithmetic Instructions (cont.)
 EXAMPLE:
 Assuming that the contents of register BX and CX
are 123416 and 012316, respectively, and the
carry flag is 0, what is the result of executing the
instruction SBB BX, CX?
 Solution:
(BX)-(CX)-(CF) (BX)
We get
(BX) = 123416 – 012316 – 016
= 111116
the carry flag remains cleared
Arithmetic Instructions (cont.)
 EXAMPLE:
 Assuming that the register BX contains 003A 16, what
is the result of executing the following instruction?
NEG BX
 Solution:
(BX) = 000016-(BX)=000016+2’complement of
003A16
= 000016+FFC616
= FFC616
Since no carry is generated in this add operation, the
carry flag is complemented to give (CF) = 1
Arithmetic Instructions (cont.)
 EXAMPLE:
 Perform a 32-bit binary subtraction for variable X
and Y
 Solution:
Arithmetic Instructions (cont.)
 Multiplication Instructions: MUL, DIV, IMUL,
IDIV, AAM, AAD, CBW, and CWD
Arithmetic Instructions (cont.)
 Multiplication Instructions: MUL, DIV, IMUL,
IDIV, AAM, AAD, CBW, and CWD
Arithmetic Instructions (cont.)
 EXAMPLE:
 The 2’s-complement signed data contents of AL are –1
and that of CL are –2. What result is produced in AX
by executing the following instruction?
MUL CL and IMUL CL
 Solution:
(AL) = -1 (as 2’s complement) = 111111112 = FF16
(CL) = -2 (as 2’s complement) = 111111102 = FE16
Executing the MUL instruction gives
(AX) =
Executing the IMUL instruction gives
111111112x111111102=11111101000000102=FD0216
(AX) = -116 x -216 = 216 = 000216
Arithmetic Instructions (cont.)
 EXAMPLE:
 What is the result of executing the following instructions?
MOV AL, 0A1H
CBW
CWD
 Solution:
(AL) = A116 = 101000012
Executing the CBW instruction extends the MSB of AL
(AH) = 111111112 = FF16
or (AX) = 11111111101000012
Executing the CWD instruction, we get
(DX) = 11111111111111112 = FFFF16
That is, (AX) = FFA116 (DX) = FFFF16
Logic Instructions
 The logic instructions include
 AND
 OR
 XOR (Exclusive-OR)
 NOT
Logic Instructions (cont.)

 Logic instructions : AND, OR, XOR, NOT

Allowed operands for AND, OR, and Allowed operands


XOR instructions for NOT instruction
Logic Instructions (cont.)
 EXAMPLE:
 Describe the results of executing the following instructions?
MOV AL, 01010101B
AND AL, 00011111B
OR AL, 11000000B
XOR AL, 00001111B
NOT AL
 Solution:
(AL)=010101012  000111112= 000101012=1516
Executing the OR instruction, we get
(AL)= 000101012 +110000002= 110101012=D516
Executing the XOR instruction, we get
(AL)= 110101012  000011112= 110110102=DA16
Executing the NOT instruction, we get
(AL)= (NOT)110110102 = 001001012=2516
Logic Instructions (cont.)
 EXAMPLE:
 Masking and setting bits in a register
 Solution:
Mask off the upper 12 bits of the word of data in AX
AND AX, 000F16
Setting B4 of the byte at the offset address
CONTROL_FLAGS
MOV AL, [CONTROL_FLAGS]
OR AL, 10H
MOV [CONTROL_FLAGS], AL
Executing the above instructions, we get
(AL)=XXXXXXXX2 +000100002= XXX1XXXX2
Shift Instructions
 Shift instructions: SHL, SHR, SAL, SAR
Shift Instructions (cont.)
 Shift instructions: SHL, SHR, SAL, SAR

Allowed operands for shift instructions


Shift Instructions (cont.)
 Shift instructions: SHL, SHR, SAL, SAR

SHL AX, 1

SHR AX, CL
(CL)=2

SAR AX, CL
(CL)=2
Shift Instructions (cont.)
 EXAMPLE:
 Assume that CL contains 0216 and AX contains
091A16.
 Determine the new contents of AX and the carry
flag after the instruction SAR AX, CL is executed
 Solution:
(AX)=00000010010001102=024616

and the carry flag is (CF)=12


Shift Instructions (cont.)
 EXAMPLE:
 Isolate the bit B3 of the byte at the offset
address CONTROL_FLAGS.
 Solution:
MOV AL, [CONTROL_FLAGS]
MOV CL, 04H
SHR AL, CL
Executing the instructions, we get
(AL)=0000B7B6B5B4 and (CF)=B3
Rotate Instructions
 Rotate instructions: ROL, ROR, RCL, RCR
Rotate Instructions (cont.)
 Rotate instructions: ROL, ROR, RCL, RCR
Rotate Instructions (cont.)
 Rotate instructions: ROL, ROR, RCL, RCR

ROL AX, 1

ROR AX, CL
(CL)=4
Rotate Instructions (cont.)
 Rotate instructions: ROL, ROR, RCL, RCR

For RCL, RCR, the bits are rotate through the carry flag
Rotate Instructions (cont.)
 EXAMPLE:
 What is the result in BX and CF after execution of
the following instructions?
RCR BX, CL
Assume that, prior to execution of the
instruction, (CL)=0416, (BX)=123416, and (CF)=0
 Solution:
The original contents of BX are
(BX) = 00010010001101002 = 123416
Execution of the RCR command causes a 4-bit
rotate right through carry to take place on the data
in BX, the results are
(BX) = 10000001001000112 = 812316
(CF) = 02
Rotate Instructions (cont.)
 EXAMPLE:
 Disassembly and addition of 2 hexadecimal digits
stored as a byte in memory.
 Solution:
 MOV AL, [HEX_DIGITS]
 MOV BL, AL
 MOV CL, 04H
 ROR BL, CL
 AND AL, 0FH
 AND BL, 0FH
 ADD AL, BL

You might also like