Top Banner
Microcomputer & Interfacing Lecture 3 The 8086 Instruction sets BY: Tsegamlak Terefe
30

Microcomputer & Interfacing Lecture 3 The 8086 Instruction sets BY: Tsegamlak Terefe.

Dec 21, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

Microcomputer & InterfacingLecture 3

The 8086 Instruction sets

BY: Tsegamlak Terefe

Page 2: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

Objective

Introduction Introduction to an instruction

Instruction set of 8086 Addressing mode

BY: Tsegamlak Terefe

Page 3: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

Introduction

Programs in microprocessors are stored in successive memory locations for fetching followed by decoding and execution in general.

There are in general three levels of programming languages.

Machine Language Assembly Language

High Level Language

BY: Tsegamlak Terefe

Page 4: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

4

Machine Language

These are the binary codes for the instructions you want the microcomputer to execute

It is hard or impossible for a programmer to write code in machine language, because it requires memorizing all the instructions in binary form and soon the programming will Become difficult.

11101001000000000101000

Introduction

BY: Tsegamlak Terefe

Page 5: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

5

Assembly Language

Uses two, three, or four letter mnemonics to represent each instruction type

The letters in an assembly language mnemonic are usually initials or a short form of the English word(s) for the operation performed by the instruction

e.g., SUB for subtract , XOR for Exclusive OR ,ROR for rotate Wright , etc

Assembly language program has to be translated to machine language so that it can be loaded into memory and run – This is done by the assembler

Introduction

BY: Tsegamlak Terefe

Page 6: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

6

High-Level Languages

These languages use program statements which are even more English-like than those of assembly language

e.g. BASIC, C, C++, Java, ...

Each high-level statement may represent many machine code instructions

An interpreter (compiler) program is used to translate higher-level language statements to machine codes, which can be loaded into memory and executed.

Introduction

BY: Tsegamlak Terefe

Page 7: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

7

An instruction will have two major parts

An opcode and an address/operand to store the result after execution or to operate on respectively.

Opcode : is the operation code which is decoded by the processor to activate the necessary circuitry for the execution of an instruction.

Instructions

BY: Tsegamlak Terefe

Opcode Address (Operands)

Page 8: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

8

The 8086 microprocessor have variable length instructions ranging from 8 bit to 48 bits.

Instructions

BY: Tsegamlak Terefe

Page 9: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

9

BY: Tsegamlak Terefe

Page 10: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

10

For Example lets take the following 16 bit instruction 8BEC.

8BEC= 1000 1011 1110 1100 The first six bits will tell us the opcode 100010= MOV The next two bits tell us D=1=> Data will move to REG from R/M W=1=> Data is 16 bit in size on the next byte MOD=11 => data is transferred b/n two registers or R/M is register REG=101 The first register involved is BP R/M=100 The second register involved is SP

Hence the assembly equivalence of this machine code will be MOV BP,SP

Instructions

BY: Tsegamlak Terefe

Page 11: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

11

Now that we got a grip of what an instruction look like in 8086 we can generalize the instruction sets (opcode) in to six general group.

Data transfer instructions Arithmetic instructionsBit manipulation instructionsString manipulation instructionsControl transfer instructionsProcessor control instructions

Instructions

BY: Tsegamlak Terefe

Page 12: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

12

Now that we got a grip of what an instruction look like in 8086 we can generalize the instruction sets (opcode) in to six general group.

Data transfer instructions Arithmetic instructionsBit manipulation instructionsString manipulation instructionsControl transfer instructionsProcessor control instructions

Instruction Sets

BY: Tsegamlak Terefe

Page 13: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

13

Used to transfer data from source operand to destination operand

Memory to register e.g. MOV AX, [0005h] (AX←[0005h]) Register to memory e.g. PUSH AL Immediate to memory/register e.g. MOV AH, 09h I/O device to register e.g. IN AX, 4 Register to I/O device e.g. OUT AL, 2

All the store, move, load, exchange, input and output instructions belong to this category

MOV , PUSH, POP , XCHG, XLAT, IN, OUT, LEA, PUSHF, POPF,LAHF,….

Data transfer instructions

BY: Tsegamlak Terefe

Page 14: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

14

Perform arithmetic operations

Addition e.g. ADD, ADC, INC, AAA, Subtraction e.g. SUB, SBB, DEC, CMP Multiplication e.g. MUL, IMUL Division e.g. DIV, IDIV

e.g. ADD AL, 5 (AL←AL+5)MUL BL (AX ←AL*BL)MUL BX (DX:AX ←AX*BX)

Arithmetic Instructions

BY: Tsegamlak Terefe

Page 15: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

15

Bit Manipulation Instruction

BY: Tsegamlak Terefe

Logical instructionsNOT, AND, OR, XOR Shift instructionsSHL, SHR, SAL, SAR Rotate instructionsROL, ROR, RCL, RCR

e.g. MOV AL, 1Ch (AL←1Ch (00011100b))ROR AL, 1 (rotate AL one bit to the right) (AL = 00001110b)

Byte/WordCF

Byte/WordCF

RCL

RCR

Page 16: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

16

String Manipulation Instructions

BY: Tsegamlak Terefe

A string is a series of bytes or a series of words in sequential memory locations. It often consists of ASCII character codese.g. LODSB – Load byte at DS: [SI] into AL. Update SI STOSW – Store word in AX into ES:[DI]. Update DI CMPSB – Compare bytes: ES:[DI] from DS:[SI]

Page 17: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

17

Control Transfer Instructions

BY: Tsegamlak Terefe

These instructions are used to tell the processor to start fetching instructions from some new address, rather than continuing in sequence Unconditional transfer instructions e.g. CALL, RET, JMP Conditional transfer instructions e.g. JE, JG, JGE, JL, JLE, JZ Iteration control instructions e.g. LOOP, LOOPE, JCXZ Interrupt instructions e.g. INT, IRETe.g. SUB AX, 32JZ label …label: MOV BX, 10

AX=AX-32;If(AX==0)

{BX=10;

}

Page 18: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

18

Processor Control Instructions

BY: Tsegamlak Terefe

Set/clear flags, control the operation of the processorFlag instructions

e.g. STC – set carry flagExternal hardware synchronization instructions

e.g. WAIT - Do nothing until signal on the TEST pin is lowNo operation instructions e.g. NOP

Page 19: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

19

Addressing Modes

BY: Tsegamlak Terefe

Addressing mode: Describe the types of operands and the way they are accessed for executing an instruction

The operand part of an instructions are accessed from a memory location or a register in various mode of addressing.

The 8086 microprocessor have the following addressing modes.

Page 20: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

20

Addressing Modes

BY: Tsegamlak Terefe

ImmediateDirect

RegisterRegister Indirect

IndexedRegister Relative Based IndexedRelative Based Indexed

Page 21: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

21

Immediate Addressing

BY: Tsegamlak Terefe

Immediate data is a part of instruction, and appears inthe form of successive byte(s)

e.g. MOV AX, 0005H (AX←0005H)

Here, 0005H is the immediate data. The immediatedata may be 8-bit or 16-bit in size.

Page 22: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

22

Direct Addressing

BY: Tsegamlak Terefe

In the direct addressing mode, a 16-bit memory address (offset) is directly specified in the instruction

e.g. MOV AX, [5000H ] (AX←[DS:5000H])

Here, data resides in a memory location in the datasegment, whose effective address may be computedusing 5000H as the offset address and content of DSas segment address.

Page 23: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

23

Register Addressing

BY: Tsegamlak Terefe

In register addressing mode, the data is stored in a register and it is referred using the particular register

All the registers, except IP, may be used in this mode

e.g. MOV AX, BX (AX←BX)

Here, data is transferred from register BX to register AX

Page 24: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

24

Register Indirect Addressing

BY: Tsegamlak Terefe

Sometimes, the address of the memory location, which contains data or operand, is determined in an indirect way, using the offset registers

The offset address of data is in either BX, SI or DI registers. The default segment is either DS or ES.

e.g. MOV AX, [BX ] (AX←[DS:BX])

Here, data is present in a memory location in DS whose offset address is in BX.

Page 25: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

25

Indexed Addressing

BY: Tsegamlak Terefe

Offset of the operand is stored in one of the index registers (SI and DI). DS and ES are the default segments for SI and DI respectively

This mode is a special case of register indirect addressing mode

e.g. MOV AX, [SI ] (AX←[DS:SI])

Here, data is present in a memory location in DS whose offset address is in SI.

Page 26: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

26

Base Indexed Addressing

BY: Tsegamlak Terefe

The effective address of data is formed by adding content of a base register (BX or BP) to the content of an index register (SI or DI)

e.g. MOV AX, [BX ][SI] (AX←[DS:BX+SI])

Page 27: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

27

Relative Base Indexed Addressing

BY: Tsegamlak Terefe

The effective address is formed by adding an 8 or 16-bit displacement with the sum of contents of any one of the base registers (BX or BP) and any one of the index registers (SI or DI), in a default segment

e.g. MOV AX, 50H[BX ][SI] (AX←[DS:BX+SI+50])

Page 28: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

28

Summary of addressing modes

BY: Tsegamlak Terefe

Page 29: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

29

Next Lecture

BY: Tsegamlak Terefe

Programming the 8086 Emu8086

Page 30: Microcomputer & Interfacing Lecture 3  The 8086 Instruction sets BY: Tsegamlak Terefe.

30

Additional Reference

BY: Tsegamlak Terefe

Dr Manoj’s handout, chapter 2 The Intel Microprocessors, Barry B.