Section 1.pptx

  • Uploaded by: Muhammad Wasim Arif
  • 0
  • 0
  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Section 1.pptx as PDF for free.

More details

  • Words: 10,538
  • Pages: 259
CME-205 Microcontroller and Microprocessor Systems Fall 2015

Dr. Muhammad Farhan (Asstt. Prof.) Electrical Engg. Deptt., CES, IoBM [email protected]

Books • Barry B. Brey, “The Intel Microprocessors,” 5th ed. or above Prentice Hall, 2009. • A.P. Godse, and D.A. Godse , “Microprocessor and Microcontroller System,” 1st ed., Technical Publications Pune, 2008. • M.A. Mazidi , J.G. Mazidi, and R.D. Kinely “The 8051 Microcontroller and Embedded Systems”, PHI Pearson Education, 5th Indian reprint, 2003.

Course Organization • Prerequisites: DLD • Class lectures Saturday 09:00-12:00 Place: TBD

• Course material Power point lecture slides and book reading

• Assignments, Quiz, Projects, Presentations To be announced during the course

Course Objectives • To introduce Microprocessor Intel 8085 and 8086 and the Microcontroller 8051 • After completing the course students will have a knowhow of  architecture of 8085 & 8086, 8051  the addressing modes & instruction set of 8085 & 8051  the need & use of Interrupt structure 8085 & 8051  and developed skill of simple program writing for 8051 & 8085 and applications  commonly used peripheral / interfacing ICs

Course Outline • Section I : Intro to Microprocessors, 8085 and 8086 Microprocessors and their architectures and structures(6 Lectures) • Section II : Instruction set and Programming of 8085 Microprocessor (6 Lectures) • Section III : Peripheral interface (6 Lectures) • Section IV : 8051 Microcontroller (6 Lectures) • Section V : Microcontroller Programming and Applications (6 Lectures)

Embedded Systems Overview Embedded Systems:Application-specific systems which contain hardware and software tailored for a particular task and are generally part of a larger System (e.g., industrial controllers) • Characteristics  Are dedicated to a particular application  Include processors dedicated to specific functions  Represent a subset of reactive (responsive to external inputs) systems  Contain real-time constraints  Include requirements that span: o Performance o Reliability o Form factor

Embedded Systems Overview Embedded computing systems • Computing systems embedded within electronic devices • Hard to define. Nearly any computing system other than a desktop computer • Billions of units produced yearly, versus millions of desktop units • Perhaps 50 per household and per automobile

Examples : Refrigerator

Examples : Car Door

A Short List of Embedded Systems

Concepts of co-design Co-design • The meeting of system-level objectives by exploiting the trade-offs between hardware and software in a system through their concurrent design

Key concepts • Concurrent: hardware and software developed at the same time on parallel paths • Integrated: interaction between hardware and software developments to produce designs that meet performance criteria and functional specifications

Essential components and considerations Essential components :• • • • • •

Microprocessor / DSP core Sensors Converter ( A-D and D-A ) Actuators Memory (on-chip and off-chip ) Communication path with interfacing environment

Essential considerations :• Response time ;- ( Real time system ) • Area, Cost, Power, Portability, Fault-tolerance

Design-flow in ES Design

Microprocessor • Microprocessor (µP) is the “brain” of a computer that has been implemented on one semiconductor chip. • The word comes from the combination micro and processor. • Processor means a device that processes whatever(binary numbers, 0’s and 1’s)  To process means to manipulate. It describes all manipulation.  Micro - > extremely small 14

Definition of a Microprocessor. The microprocessor is a programmable device that takes in numbers, performs on them arithmetic or logical operations according to the program stored in memory and then produces other numbers as a result.

15

Microprocessor ?

A microprocessor is multi programmable clock driven register based semiconductor device that is used to fetch , process & execute a data within fraction of seconds. 16

Applications • • • • • • • •

Calculators Accounting system Games machine Instrumentation Traffic light Control Multi user, multi-function environments Military applications Communication systems 17

MICROPROCESSOR HISTORY

18

DIFFERENT PROCESSORS AVAILABLE Socket Pinless Processor

Processor

Slot Processor

Processor Slot 19

Development of Intel Microprocessors • • • • • • • • • • • • • •

8086 - 1979 286 - 1982 386 - 1985 486 - 1989 Pentium - 1993 Pentium Pro - 1995 Pentium MMX -1997 Pentium II - 1997 Pentium II Celeron - 1998 Pentium II Zeon - 1998 Pentium III - 1999 Pentium III Zeon - 1999 Pentium IV - 2000 Pentium IV Zeon - 2001

20

GENERATION OF PROCESSORS Processor

Bits

Speed

8080

8

2 MHz

8086

16

4.5 – 10 MHz

8088

16

4.5 – 10 MHz

80286

16

10 – 20 MHz

80386

32

20 – 40 MHz

80486

32

40 – 133 MHz 21

GENERATION OF PROCESSORS

Processor

Bits

Speed

Pentium

32

60 – 233 MHz

Pentium Pro

32

150 – 200 MHz

Pentium II, Celeron , Xeon

32

233 – 450 MHz

Pentium III, Celeron , Xeon

32

450 MHz – 1.4 GHz

Pentium IV, Celeron , Xeon

32

1.3 GHz – 3.8 GHz

Itanium

64

800 MHz – 3.0 GHz 22

Intel 4004  Introduced in 1971.  It was the first microprocessor by Intel.  It was a 4-bit µP.  Its clock speed was 740KHz.  It had 2,300 transistors.  It could execute around 60,000 instructions per second. 23

Intel 4040 Introduced in 1971. It was also 4-bit µP.

24

8-bit Microprocessors

25

Intel 8008 Introduced in 1972. It was first 8-bit µP.

Its clock speed was 500 KHz. Could execute 50,000 instructions per second. 26

Intel 8080 Introduced in 1974. It was also 8-bit µP.

Its clock speed was 2 MHz. It had 6,000 transistors.

27

Intel 8085

Introduced in 1976. It was also 8-bit µP. Its clock speed was 3 MHz. Its data bus is 8-bit and address bus is 16-bit. It had 6,500 transistors. Could execute 7,69,230 instructions per second. It could access 64 KB of memory. It had 246 instructions. 28

16-bit Microprocessors

29

 Introduced in 1978.

Intel 8086  It was first 16-bit µP.  Its clock speed is 4.77 MHz, 8 MHz and 10 MHz, depending on the version.  Its data bus is 16-bit and address bus is 20-bit.  It had 29,000 transistors.  Could execute 2.5 million instructions per second.  It could access 1 MB of memory.

 It had 22,000 instructions.  It had Multiply and Divide instructions. 30

Intel 8088 Introduced in 1979. It was also 16-bit µP. It was created as a cheaper version of Intel’s 8086.

It was a 16-bit processor with an 8bit external bus. 31

Intel 80186 & 80188 Introduced in 1982. They were 16-bit µPs.

Clock speed was 6 MHz. 80188 was a cheaper version of 80186 with an 8-bit external data bus. 32

Intel 80286  Introduced in 1982.  It was 16-bit µP.  Its clock speed was 8 MHz.  Its data bus is 16-bit and address bus is 24-bit.  It could address 16 MB of memory.  It had 1,34,000 transistors. 33

32-bit Microprocessors

34

 Introduced in 1986.

Intel It80386 was first 32-bit µP.  Its data bus is 32-bit and address bus is 32-bit.  It could address 4 GB of memory.

 It had 2,75,000 transistors.  Its clock speed varied from 16 MHz to 33 MHz depending upon the various versions. 35

Intel Introduced 80486 in 1989.  It was also 32-bit µP.  It had 1.2 million transistors.  Its clock speed varied from 16 MHz to 100 MHz depending upon the various versions.

 8 KB of cache memory was introduced. 36

IntelIntroduced Pentium in 1993. It was also 32-bit µP. It was originally named 80586. Its clock speed was 66 MHz.

Its data bus is 32-bit and address bus is 32-bit. 37

Intel Pentium Pro Introduced in 1995. It was also 32-bit µP.

It had 21 million transistors. Cache memory: 8 KB for instructions. 8 KB for data. 38

Intel Pentium II Introduced in 1997. It was also 32-bit µP.

Its clock speed was 233 MHz to 500 MHz. Could execute 333 million instructions per second. 39

Intel Pentium II Xeon Introduced in 1998. It was also 32-bit µP.

It was designed for servers. Its clock speed was 400 MHz to 450 MHz. 40

Intel Pentium III Introduced in 1999. It was also 32-bit µP.

Its clock speed varied from 500 MHz to 1.4 GHz. It had 9.5 million transistors. 41

Intel Pentium IV Introduced in 2000. It was also 32-bit µP.

Its clock speed was from 1.3 GHz to 3.8 GHz. It had 42 million transistors. 42

Intel Dual Core in 2006. Introduced It is 32-bit or 64-bit µP.

43

44

64-bit Microprocessors

45

Intel Core 2

Intel Core i3

46

Intel Core i5

INTEL CORE I7

47

Basic Terms • • • •

Bit: A digit of the binary number { 0 or 1 } Nibble: 4 bit Byte: 8 bit word: 16 bit Double word: 32 bit Data: binary number/code operated by an instruction • Address: Identification number for memory locations • Clock: square wave used to synchronize various devices in µP • Memory Capacity = 2^n , n->no. of address lines 48

BUS CONCEPT • BUS: Group of conducting lines that carries data , address & control signals. CLASSIFICATION OF BUSES: 1.DATA BUS: group of conducting lines that carries data. 2. ADDRESS BUS: group of conducting lines that carries address. 3.CONTROL BUS: group of conducting lines that carries control signals {RD, WR etc} CPU BUS: group of conducting lines that directly connected to µP SYSTEM BUS: group of conducting lines that carries data , address & control signals in a µP system 49

3 logic levels are:

TRISTATE LOGIC

• High State (logic 1) • Low state (logic 0) • High Impedance state High Impedance: output is not being driven to any defined logic level by the output circuit.

50

Basic Microprocessors System Central Processing Unit

Input Devices

ArithmeticControl Logic Unit ProcessingUnit Data into Information Primary Storage Unit

Keyboard, Mouse etc

Output Devices Monitor Printer

Disks, Tapes,

Optical Disks

Secondary Storage Devices 51

UNIT

1 THE 8086 MICROPROCESSOR

52

8086 Microprocessor-introduction • INTEL launched 8086 in 1978 • 8086 is a 16-bit microprocessor with – 16-bit Data Bus {D0-D15} – 20-bit Address Bus {A0-A19} [can access upto 2^20= 1 MB memory locations] .

• It has multiplexed address and data bus AD0-AD15 and A16–A19. • It can support upto 64K I/O ports 53

8086 Microprocessor • It provides 14, 16-bit registers. • 8086 requires one phase clock with a 33% duty cycle to provide optimized internal timing. – Range of clock: • 5 MHz for 8086 • 8Mhz for 8086-2 • 10Mhz for 8086-1 54

INTEL 8086 - Pin Diagram/Signal Description

55

INTEL 8086 - Pin Details

Power Supply 5V  10%

Ground Reset Registers, seg regs, flags CS: FFFFH, IP: 0000H

Clock

If high for minimum 4 clks

Duty cycle: 33% 56

INTEL 8086 - Pin Details

Address/Data Bus: Contains address bits A15-A0 when ALE is 1 & data bits D15 – D0 when ALE is 0.

Address Latch Enable: When high, multiplexed address/data bus contains address information.

57

INTEL 8086 - Pin Details

INTERRUPT

Non - maskable interrupt

Interrupt acknowledge Interrupt request 58

INTEL 8086 - Pin Details

Direct Memory Access

Hold

Hold acknowledge 59

INTEL 8086 - Pin Details

Address/Status Bus Address bits A19 – A16 & Status bits S6 – S3

60

INTEL 8086 - Pin Details

BHE#, A0: 0,0: Whole word (16-bits) 0,1: High byte to/from odd address 1,0: Low byte to/from even address

Bus High Enable/S7 Enables most significant data bits D15 – D8 during read or write operation. S7: Always 1.

1,1: No selection

61

INTEL 8086 - Pin Details

Min/Max mode Minimum Mode: +5V Maximum Mode: 0V

Minimum Mode Pins Maximum Mode Pins

62

Minimum Mode- Pin Details

Read Signal

Write Signal

Memory or I/0 Data Transmit/Receive Data Bus Enable 63

Maximum Mode - Pin Details

S2 S1 S0 000: INTA 001: read I/O port 010: write I/O port 011: halt 100: code access 101: read memory 110: write memory 111: none -passive

Status Signal Inputs to 8288 to generate eliminated signals due to max mode.

64

Maximum Mode - Pin Details

Lock Output Used to lock peripherals off the system Activated by using the LOCK: prefix on any instruction

DMA Request/Grant

Lock Output

65

Maximum Mode - Pin Details

QS1 QS0 00: Queue is idle

01: First byte of opcode 10: Queue is empty 11: Subsequent byte of opcode

Queue Status Used by numeric coprocessor (8087) 66

8086 Internal Architecture • •

8086 employs parallel processing 8086 CPU has two parts which operate at the same time – –



Bus Interface Unit Execution Unit

CPU functions 1. Fetch

2. Decode 3. Execute

8086 CPU

Bus Interface Unit (BIU)

Execution Unit (EU)

67

Bus Interface Unit • • • • •

Sends out addresses for memory locations Fetches Instructions from memory Reads/Writes data to memory Sends out addresses for I/O ports Reads/Writes data to Input/Output ports

68

Execution Unit • Tells BIU (addresses) where to fetch instructions or data • Decodes & Executes instructions • Dividing the work between BIU & EU speeds up processing

69

Architecture Diagram of 8086

70



Memory Interface

EXTRA SEGMENT (ES)

BIU

CODE SEGMENT (CS)

6

5

4

3

2

1

STACK SEGMENT (SS) DATA SEGMENT (DS)

Instruction Queue

INSTRUCTION POINTER (IP)

Instruction Decoder AH

AL

BH

BL

CH

CL

DH

DL

ARITHMETIC LOGIC UNIT

CONTROL SYSTEM

STACK POINTER (SP) BASE POINTER (BP)

SOURCE INDEX (SI) DESTINATION INDEX (DI)

OPERANDS FLAGS

EU

71

Execution Unit • Main components are – Instruction Decoder – Control System – Arithmetic Logic Unit – General Purpose Registers – Flag Register – Pointer & Index registers

72

Instruction Decoder • Translates instructions fetched from memory into a series of actions which EU carries out

Control System  Generates timing and control signals to perform the internal operations of the microprocessor

Arithmetic Logic Unit  EU has a 16-bit ALU which can ADD, SUBTRACT, AND, OR, increment, decrement, complement or shift binary numbers 73

General Purpose Registers • EU has 8 general purpose registers • Can be individually used for storing 8-bit data • AL register is also called Accumulator • Two registers can also be combined to form 16-bit registers • The valid register pairs are – AX, BX, CX, DX

AH

AL

BH

BL

CH

CL

DH

DL

AH

AL

AX

BH

BL

BX

CH

CL

CX

DH

DL

DX 74

Flag Register • 8086 has a 16-bit flag register • Contains 9 active flags • There are two types of flags in 8086 – Conditional flags – six flags, set or reset by EU on the basis of results of some arithmetic operations – Control flags – three flags, used to control certain operations of the processor 75

Flag Register U U U U OF DF IF TF SF ZF U AF U PF U CF 1.

CF

CARRY FLAG

2.

PF

PARITY FLAG

3.

AF

AUXILIARY CARRY

4.

ZF

ZERO FLAG

5.

SF

SIGN FLAG

6.

OF

OVERFLOW FLAG

7.

TF

TRAP FLAG

8.

IF

INTERRUPT FLAG

9.

DF

DIRECTION FLAG

Conditional Flags (Compatible with 8085, except OF)

Control Flags

76

Flag Register Auxiliary Carry Flag

Carry Flag

This is set, if there is a carry from the lowest nibble, i.e, bit three during addition, or borrow for the lowest nibble, i.e, bit three, during subtraction.

This flag is set, when there is a carry out of MSB in case of addition or a borrow in case of subtraction.

Sign Flag

Zero Flag

Parity Flag

This flag is set, when the result of any computation is negative

This flag is set, if the result of the computation or comparison performed by an instruction is zero

This flag is set to 1, if the lower byte of the result contains even number of 1’s ; for odd number of 1’s set to zero.

15

14

13

12

11

10

9

8

7

6

OF

DF

IF

TF

SF

ZF

5

Over flow Flag

This flag is set, if an overflow occurs, i.e, if the result of a signed operation is large enough to accommodate in a destination register. The result is of more than 7-bits in size in case of 8-bit signed operation and more than 15-bits in size in case of 16-bit sign operations, then the overflow will be set.

Direction Flag

This is used by string manipulation instructions. If this flag bit is ‘0’, the string is processed beginning from the lowest address to the highest address, i.e., auto incrementing mode. Otherwise, the string is processed from the highest address towards the lowest address, i.e., auto incrementing mode.

4 AF

3

2 PF

1

0 CF

Tarp Flag If this flag is set, the processor enters the single step execution mode by generating internal interrupts after the execution of each instruction Interrupt Flag Causes the 8086 to recognize external mask interrupts; clearing IF disables these interrupts. 77

Registers, Flag 8086 registers categorized into 4 groups

Sl.No. 1

Type General purpose register

15

14

13

12

11

10

9

8

7

6

OF

DF

IF

TF

SF

ZF

Register width

5

4 AF

3

2

1

PF

CF

Name of register

16 bit

AX, BX, CX, DX

8 bit

AL, AH, BL, BH, CL, CH, DL, DH

2

Pointer register

16 bit

SP, BP

3

Index register

16 bit

SI, DI

4

Instruction Pointer

16 bit

IP

5

Segment register

16 bit

CS, DS, SS, ES

6

Flag (PSW)

16 bit

Flag register

0

78

Registers and Special Functions Register

Name of the Register

Special Function

AX

16-bit Accumulator

Stores the 16-bit results of arithmetic and logic operations

AL

8-bit Accumulator

Stores the 8-bit results of arithmetic and logic operations

BX

Base register

Used to hold base value in base addressing mode to access memory data

CX

Count Register

Used to hold the count value in SHIFT, ROTATE and LOOP instructions

DX

Data Register

Used to hold data for multiplication and division operations

SP

Stack Pointer

Used to hold the offset address of top stack memory

BP

Base Pointer

Used to hold the base value in base addressing using SS register to access data from stack memory

SI

Source Index

Used to hold index value of source operand (data) for string instructions

DI

Data Index

Used to hold the index value of destination operand (data) for string 79 operations

Bus Interface Unit • Main Components are – Instruction Queue – Segment Registers – Instruction Pointer

80



Memory Interface

EXTRA SEGMENT (ES)

BIU

CODE SEGMENT (CS)

6

5

4

3

2

1

STACK SEGMENT (SS) DATA SEGMENT (DS)

Instruction Queue

INSTRUCTION POINTER (IP)

Instruction Decoder AH

AL

BH

BL

CH

CL

DH

DL

ARITHMETIC LOGIC UNIT

CONTROL SYSTEM

STACK POINTER (SP) BASE POINTER (BP)

SOURCE INDEX (SI) DESTINATION INDEX (DI)

OPERANDS FLAGS

EU

81

Instruction Queue • 8086 employs parallel processing • When EU is busy decoding or executing current instruction, the buses of 8086 may not be in use. • At that time, BIU can use buses to fetch upto six instruction bytes for the following instructions • BIU stores these pre-fetched bytes in a FIFO register called Instruction Queue • When EU is ready for its next instruction, it simply reads the instruction from the queue in BIU

82

Pipelining • EU of 8086 does not have to wait in between for BIU to fetch next instruction byte from memory • So the presence of a queue in 8086 speeds up the processing • Fetching the next instruction while the current instruction executes is called pipelining 83

Memory Segmentation • 8086 has a 20-bit address bus • So it can address a maximum of 1MB of memory • 8086 can work with only four 64KB segments at a time within this 1MB range • These four memory segments are called – – – –

Code segment Stack segment Data segment Extra segment

84

Memory 64KB Memory Segment

1

00000H

2 3 4 4

Only 4 such segments can be addressed at a time

5 6 7

8 9

10

1MB Address Range

11

12 13

14 15 16

FFFFFH 85

Code Segment • That part of memory from where BIU is currently fetching instruction code bytes

Stack Segment  A section of memory set aside to store addresses and data while a subprogram executes

Data & Extra Segments  Used for storing data values to be used in the program 86

Memory Code Segment

1

00000H

2 3 4

Data & Extra Segments

5 6

7 8

9 10

1MB Address Range

11 12 13

14 15

Stack Segment

16

FFFFFH 87

Segment Registers • hold the upper 16-bits of the starting address for each of the segments • The four segment registers are – CS (Code Segment register) – DS (Data Segment register) – SS (Stack Segment register) – ES (Extra Segment register)

88

Memory 1

CS

1000 0H

00000H

Code Segment 3 4

DS ES

4000 0H 5000 0H

Data Segment Extra Segment

Starting Addresses of Segments

7 8 9 10

1MB Address Range

11 12

13 14 15

SS

F000 0H

Stack Segment

FFFFFH 89

• Address of a segment is of 20-bits • A segment register stores only upper 16-bits • BIU always inserts zeros for the lowest 4-bits of the 20-bit starting address. • E.g. if CS = 348AH, then the code segment will start at 348A0H • A 64-KB segment can be located anywhere in the memory, but will start at an address with zeros in the lowest 4-bits

90

Instruction Pointer (IP) Register • a 16-bit register • Holds 16-bit offset, of the next instruction byte in the code segment • BIU uses IP and CS registers to generate the 20-bit address of the instruction to be fetched from memory

91

Physical Address Calculation Start of Code Segment

1

348A0H

00000H

Data Segment

IP = 4214H

Code Byte

Memory

3

38AB4H

MOV AL, BL

4

Code Segment

Extra Segment 7 8 9

CS

IP Physical Address

348A0 H + 4214 H 38AB4 H

1MB Address Range

10 11 12

13 14 15

Stack Segment

FFFFFH 92

Stack Segment (SS) Register Stack Pointer (SP) Register

• Upper 16-bits of the starting address of stack segment is stored in SS register • It is located in BIU • SP register holds a 16-bit offset from the start of stack segment to the top of the stack • It is located in EU

93

Other Pointer & Index Registers • • • • •

Base Pointer (BP) register Source Index (SI) register Destination Index (DI) register Can be used for temporary storage of data Main use is to hold a 16-bit offset of a data word in one of the segments

94

ADDRESSING MODES OF 8086 95

Various Addressing Modes 1. 2. 3. 4. 5. 6. 7. 8.

Immediate Addressing Mode Register Addressing Mode Direct Addressing Mode Register Indirect Addressing Mode Index Addressing Mode Based Addressing Mode Based & Indexed Addressing Mode Based & Indexed with displacement Addressing Mode 9. Strings Addressing Mode 96

1. IMMEDIATE ADDRESSING MODE • The instruction will specify the name of the register which holds the data to be operated by the instruction.

• Source data is within the instruction • Ex: MOV AX,10AB

H



AL=ABH, AH=10H 97

2.REGISTER ADDRESSING MODE • In immediate addressing mode, an 8-bit or 16-bit data is specified as part of the instruction

• Ex: MOV AX,BL MOV AX,BL

H

H

98

3. DIRECT ADDRESSING MODE • Memory address is supplied with in the instruction • Mnemonic: MOV AH,[MEMBDS] AH [1000H] • But the memory address is not index or pointer register

99

4. REGISTER INDIRECT ADDRESSING MODE • Memory address is supplied in an index or pointer register • EX: MOV AX,[SI] ; AL [SI] ; AH [SI+1] JMP [DI] ; IP [DI+1: DI] INC BYTE PTR [BP] ; [BP] [BP]+1 DEC WORD PTR [BX] ; [BX+1:BX] [BX+1:BX]-1 100

5.Indexed Addressing Mode • Memory address is the sum of index register plus displacement MOV AX,[SI+2] AL [SI+2]; AH JMP [DI+2] IP [BX+3:BX+2]

[SI+3]

101

6. Based Addressing Mode • Memory address is the sum of the BX or BP base register plus a displacement within instruction • Ex: MOV AX,[BP+2] AL [BP+2]; AH [BP+3] JMP [BX+2] IP [BX+3:BX+2]

102

7.BASED & INDEX ADDRESSING MODES • Memory address is the sum of the index register & base register Ex: MOV AX,[BX+SI] ; AL [BX+SI] ; AH [BX+SI+1] JMP [BX+DI] ; IP [BX+DI+1 : BX+DI] INC BYTE PTR [BP+SI] ; [BP] [BP]+1 DEC WORD PTR [BP+DI] ; [BX+1:BX] [BX+1:BX]-1

103

8. BASED & INDEXED WITH DISPLACEMENT ADDRESSING MODE • Memory address is the sum of an index register , base register and displacement within instruction MOV AX,[BX+SI+6] ; AL

[BX+SI+6] ; AH

JMP [BX+DI+6] ;

IP

[BX+SI+7] [BX+DI+7 : BX+DI+6]

INC BYTE PTR [BP+SI+5] ; DEC WORD PTR [BP+DI+5] ;

104

9. Strings Addressing Mode • The memory source address is a register SI in the data segment, and the memory destination address is register DI in the extra segment • Ex: MOVSB

• If DF=0 SI DF=1 SI

[ES:DI]

SI+1 SI-1

[DS:SI]

, DI , DI

DI+1 DI-1 105

INSTRUCTION SET of 8086 106

Instruction set basics • Instruction:- An instruction is a binary pattern designed inside a microprocessor to perform a specific function. • Opcode:- It stands for operational code. It specifies the type of operation to be performed by CPU. It is the first field in the machine language instruction format. • E.g. 08 is the opcode for instruction “MOV X,Y”.

• Operand:- We can also say it as data on which operation should act. operands may be register values or memory values. The CPU executes the instructions using information present in this field. It may be 8-bit data or 16-bit data. 107

Instruction set basics • Assembler:- it converts the instruction into sequence of binary bits, so that this bits can be read by the processor.

• Mnemonics:- these are the symbolic codes for either instructions or commands to perform a particular function. • E.g. MOV, ADD, SUB etc.

108

Types of instruction set of 8086 microprocessor (1). Data Copy/Transfer instructions. (2). Arithmetic & Logical instructions. (3). Branch instructions.

(4). Loop instructions. (5). Machine Control instructions. (6). Flag Manipulation instructions. (7). Shift & Rotate instructions. (8). String instructions. 109

(1). Data copy/transfer instructions. (1). MOV Destination, Source • There will be transfer of data from source to destination. • Source can be register, memory location or immediate data. • Destination can be register or memory operand. • Both Source and Destination cannot be memory location or segment registers at the same time. • E.g. • (1). MOV CX, 037A H; • (2). MOV AL, BL; • (3). MOV BX, [0301 H]; 110

BEFORE EXECUTION AX

AFTER EXECUTION MOV BX,AX

2000H

BEFORE EXECUTION

BX

2000H

AFTER EXECUTION

AH

AL

AH

AL

BH

BL

BH

BL

CH

CL

CH

CL

DH

DL

DH

DL

MOV CL,M 40

40 40

111

Stack Pointer • It is a 16-bit register, contains the address of the data item currently on top of the stack. • Stack operation includes pushing (providing) data on to the stack and popping (taking)data from the stack. • Pushing operation decrements stack pointer and Popping operation increments stack pointer. i.e. there is a last in first out (LIFO) operation.

112

(2). Push Source • Source can be register, segment register or memory. • This instruction pushes the contents of specified source on to the stack. • In this stack pointer is decremented by 2. • The higher byte data is pushed first (SP-1). • Then lower byte data is pushed (SP-2). • • • •

E.g.: (1). PUSH AX; (2). PUSH DS; (3). PUSH [5000H]; 113

INITIAL POSITION

(1) STACK POINTER DECREMENTS SP & STORES HIGHER BYTE

(2) STACK POINTER

HIGHER BYTE

DECREMENTS SP & STORES LOWER BYTE (3) STACK POINTER

LOWER BYTE HIGHER BYTE 114

BEFORE EXECUTION SP

2002H

BH

CH

2000H

BL

10

DH

CL

50

DL

2001H 2002H

PUSH CX AFTER EXECUTION SP

2000H

BH

BL

CH DH

10

CL DL

2000H

50

2001H

10

50 2002H 115

(3) POP Destination • Destination can be register, segment register or memory. • This instruction pops (takes) the contents of specified destination. • In this stack pointer is incremented by 2. • The lower byte data is popped first (SP+1). • Then higher byte data is popped (SP+2).

• • • •

E.g. (1). POP AX; (2). POP DS; (3). POP [5000H]; 116

INITIAL POSITION AND READS LOWER BYTE (1) STACK POINTER

LOWER BYTE

INCREMENTS SP & READS HIGHER BYTE LOWER BYTE

(2) STACK POINTER

HIGHER BYTE

INCREMENTS SP LOWER BYTE

HIGHER BYTE (3) STACK POINTER 117

BEFORE EXECUTION SP BH

2000H

2000H

2001H

BL

POP BX

30 50

2002H

AFTER EXECUTION SP

2002H

BH

5 BL 0

2000H 30 2001H 50

30

2002H 118

(4). XCHG Destination, source; • This instruction exchanges contents of Source with destination. • It cannot exchange two memory locations directly. •The contents of AL are exchanged with BL. •The contents of AH are exchanged with BH. •E.g. (1). XCHG BX, AX; (2). XCHG [5000H],AX; 119

BEFORE EXECUTION

AFTER EXECUTION

AH 20 AL 40

AH 70

AL

80

BH 70 BL 80

BH 20

BL

40

XCHG AX,BX 120

(5)IN AL/AX, 8-bit/16-bit port address • It reads from the specified port address. • It copies data to accumulator from a port with 8bit or 16-bit address. • DX is the only register is allowed to carry port address. • E.g. (1). IN AL, 80H; (2). IN AX,DX; //DX contains address of 16-bit port. 121

BEFORE EXECUTION PORT 80H

10

AL

IN AL,80H AFTER EXECUTION

PORT 80H

10

AL

10 122

OUT 8-bit/16-bit port address, AL/AX • It writes to the specified port address. • It copies contents of accumulator to the port with 8-bit or 16-bit address. • DX is the only register is allowed to carry port address. • E.g. (1). OUT 80H,AL; (2). OUT DX,AX; //DX contains address of 16-bit port. 123

BEFORE EXECUTION PORT 50H

AL

10

40

OUT 50H,AL AFTER EXECUTION PORT 50H

40

AL

40 124

(7) XLAT • Also known as translate instruction. • It is used to find out codes in case of code conversion. • i.e. it translates code of the key pressed to the corresponding 7-segment code. • After execution this instruction contents of AL register always gets replaced. • E.g. XLAT;

125

8.LEA 16-bit register (source), address (dest.) • LEA Also known as Load Effective Address (LEA). • It loads effective address formed by the destination into the source register. • E.g. (1). LEA BX,Address; (2). LEA SI,Address[BX];

126

(9). LDS 16-bit register (source), address (dest.); (10). LES 16-bit register (source), address (dest.);

• LDS Also known as Load Data Segment (LDS). • LES Also known as Load Extra Segment (LES). • It loads the contents of DS (Data Segment) or ES (Extra Segment) & contents of the destination to the contents of source register.

• E.g. (1). LDS BX,5000H; (2). LES BX,5000H; 127

(1). LDS BX,5000H; (2). LES BX,5000H; 15

BX 20

0

10

7 0 10 5000H 20

DS/ES 40

30

5001H

30

5002H

40

5003H

128

(11). LAHF:- This instruction loads the AH register from the contents of lower byte of the flag register. • This command is used to observe the status of the all conditional flags of flag register. E.g. LAHF;

(12). SAHF:- This instruction sets or resets all conditional flags of flag register with respect to the corresponding bit positions. • If bit position in AH is 1 then related flag is set otherwise flag will be reset. E.g. SAHF; 129

PUSH & POP (13). PUSH F:- This instruction decrements the stack pointer by 2. • It copies contents of flag register to the memory location pointed by stack pointer. • E.g. PUSH F; (14). POP F:- This instruction increments the stack pointer by 2. • It copies contents of memory location pointed by stack pointer to the flag register. • E.g. POP F; 130

(2). Arithmetic Instructions • These instructions perform the operations like: • • • •

Addition, Subtraction, Increment, Decrement. 131

(2). Arithmetic Instructions (1). ADD destination, source; • This instruction adds the contents of source operand with the contents of destination operand. • The source may be immediate data, memory location or register. • The destination may be memory location or register. • The result is stored in destination operand. • AX is the default destination register.

• E.g. (1). ADD AX,2020H; (2). ADD AX,BX;

132

AFTER EXECUTION

BEFORE EXECUTION AH

10

AL

10

ADD AX,2020H

AH

30

AL

30

1010 +2020 3030 BEFORE EXECUTION

AFTER EXECUTION

AH

10

AL

10

AH

30

AL

30

BH

20

BL

20

BH

20

BL

20

ADD AX,BX

133

ADC destination, source • This instruction adds the contents of source operand with the contents of destination operand with carry flag bit. • The source may be immediate data, memory location or register. • The destination may be memory location or register. • The result is stored in destination operand. • AX is the default destination register.

• E.g. (1). ADC AX,2020H; (2). ADC AX,BX; 134

(3) INC source • This instruction increases the contents of source operand by 1. • The source may be memory location or register. • The source can not be immediate data. • The result is stored in the same place.

• E.g. (1). INC AX; (2). INC [5000H]; 135

BEFORE EXECUTION

AH

10

AL

10

AFTER EXECUTION

INC AX

BEFORE EXECUTION

5000H

1010

AH 10

AL

11

AFTER EXECUTION

INC [5000H]

5000H

1011 136

4. DEC source • This instruction decreases the contents of source operand by 1. • The source may be memory location or register. • The source can not be immediate data. • The result is stored in the same place.

• E.g. (1). DEC AX; (2). DEC [5000H]; 137

BEFORE EXECUTION

AH 10

AL

10

AFTER EXECUTION

DEC AX

1010

AL

09

AFTER EXECUTION

BEFORE EXECUTION

5000H

AH 10

DEC [5000H]

5000H

1009 138

(5) SUB destination, source; • This instruction subtracts the contents of source operand from contents of destination. • The source may be immediate data, memory location or register. • The destination may be memory location or register. • The result is stored in the destination place.

• E.g. (1). SUB AX,1000H; (2). SUB AX,BX; 139

BEFORE EXECUTION AH

20

AL

00

AFTER EXECUTION

SUB AX,1000H

AH

10

AL

00

2000 -1000 =1000

AFTER EXECUTION

BEFORE EXECUTION AH

20

AL

00

BH

10

BL

00

SUB AX,BX

AH

10

AL

00

BH

10

BL

00 140

(6). SBB destination, source; • Also known as Subtract with Borrow. • This instruction subtracts the contents of source operand & borrow from contents of destination operand. • The source may be immediate data, memory location or register. • The destination may be memory location or register. • The result is stored in the destination place.

• E.g. (1). SBB AX,1000H; (2). SBB AX,BX; 141

BEFORE EXECUTION

B 1

AFTER EXECUTION

SBB AX,1000H AH 10 AL

AH 20 AL 20

19

2020 - 1000 1020-1=1019 BEFORE EXECUTION

AFTER EXECUTION

B 1 AH

20

AL

20

BH

10

BL

10

SBB AX,BX

AH

10

AL

19

BH

10

BL

10 2050

142

(7). CMP destination, source • Also known as Compare. • This instruction compares the contents of source operand with the contents of destination operands. • The source may be immediate data, memory location or register. • The destination may be memory location or register. • Then resulting carry & zero flag will be set or reset. • E.g. (1). CMP AX,1000H; (2). CMP AX,BX; 143

D=S: CY=0,Z=1 D>S: CY=0,Z=0 D<S: CY=1,Z=0

BEFORE EXECUTION AH

10

AL

00

BH

10

BL

00

CMP AX,BX

BEFORE EXECUTION AH

10

AL

00

BH

00

BL

10

10

AL

00

BH

20

BL

00

CY

0

Z

1

AFTER EXECUTION CY

CMP AX,BX

BEFORE EXECUTION AH

AFTER EXECUTION

0

Z

0

AFTER EXECUTION

CMP AX,BX

CY

1

Z

0

144

 AAA (ASCII Adjust after Addition):  The data entered from the terminal is in ASCII format.  In ASCII, 0 – 9 are represented by 30H – 39H.  This instruction allows us to add the ASCII codes.  This instruction does not have any operand.

 Other ASCII Instructions:  AAS (ASCII Adjust after Subtraction)  AAM (ASCII Adjust after Multiplication)  AAD (ASCII Adjust Before Division) 145

• DAA (Decimal Adjust after Addition)

– It is used to make sure that the result of adding two BCD numbers is adjusted to be a correct BCD number. – It only works on AL register.

• DAS (Decimal Adjust after Subtraction) – It is used to make sure that the result of subtracting two BCD numbers is adjusted to be a correct BCD number. – It only works on AL register.

146

MUL operand • • • • • •

Unsigned Multiplication. Operand contents are positively signed. Operand may be general purpose register or memory location. If operand is of 8-bit then multiply it with contents of AL. If operand is of 16-bit then multiply it with contents of AX. Result is stored in accumulator (AX).

• E.g. (1). MUL BH

// AX= AL*BH; // (+3) * (+4) = +12.



// AX=AX*CX;

(2). MUL CX

147

IMUL operand • Signed Multiplication. • Operand contents are negatively signed. • Operand may be general purpose register, memory location or index register. • If operand is of 8-bit then multiply it with contents of AL. • If operand is of 16-bit then multiply it with contents of AX. • Result is stored in accumulator (AX).

• E.g. (1). IMUL BH



// AX= AL*BH;

// (-3) * (-4) = 12.

(2). IMUL CX // AX=AX*CX; 148

DIV operand • • • •

Unsigned Division. Operand may be register or memory. Operand contents are positively signed. Operand may be general purpose register or memory location. • AL=AX/Operand (8-bit/16-bit) & AH=Remainder.

• E.g. MOV AX, 0203 // AX=0203 •

MOV BL, 04



IDIV BL

// BL=04 // AL=0203/04=50 (i.e. AL=50 & AH=03) 149

IDIV operand • • • •

Signed Division. Operand may be register or memory. Operand contents are negatively signed. Operand may be general purpose register or memory location. • AL=AX/Operand (8-bit/16-bit) & AH=Remainder.

• E.g. MOV AX, -0203 •

MOV BL, 04



DIV BL

// AX=-0203 // BL=04 // AL=-0203/04=-50 (i.e. AL=-50 & AH=03) 150

Multiplication and Division Examples

151

152

153

154

LOGICAL (or) Bit Manipulation Instructions • These instructions are used at the bit level. • These instructions can be used for: – Testing a zero bit – Set or reset a bit – Shift bits across registers

155

Bit Manipulation Instructions(LOGICAL Instructions) • AND

– Especially used in clearing certain bits (masking) xxxx xxxx AND 0000 1111 = 0000 xxxx (clear the first four bits) – Examples: AND BL, 0FH

• OR – Used in setting certain bits

xxxx xxxx OR 0000 1111 = xxxx 1111 (Set the upper four bits) 156

• XOR – Used in Inverting bits xxxx xxxx XOR 0000 1111 = xxxxx’x’x’x’ -Example: bit 5 of

Clear bits 0 and 1, set bits 6 and 7, invert register CL:

AND CL, FCH OR CL, C0H XOR CL, 20H

; ; ;

1111 1100B 1100 0000B 0010 0000B

157

SHL Instruction • The SHL (shift left) instruction performs a logical left shift on the destination operand, filling the lowest bit with 0.

0 CF

mov dl,5d

shl dl,1 158

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. 0 CF

MOV DL,80d SHR DL,1 SHR DL,2

; DL = 40 ; DL = 10 159

SAR Instruction • SAR (shift arithmetic right) performs a right arithmetic shift on the destination operand.

CF

An arithmetic shift preserves the number's sign. MOV DL,-80 SAR DL,1 SAR DL,2

; DL = -40 ; DL = -10 160

Shifting left n bits multiplies the operand by 2n For example, 5 * 22 = 20

Shifting right n bits divides the operand by 2n

For example, 80 / 23 = 10

mov dl,5

Before:

00000101

=5

shl dl,1

After:

00001010

= 10

161

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 162

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 163

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 MOV BL,88H RCL BL,1 RCL BL,1

; ; ; ;

CF = 0 CF,BL = 0 10001000b CF,BL = 1 00010000b CF,BL = 0 00100001b 164

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 CF

STC MOV AH,10H RCR AH,1

; CF = 1 ; CF,AH = 00010000 1 ; CF,AH = 10001000 0 165

Branching Instructions (or) Program Execution Transfer Instructions • These instructions cause change in the sequence of the execution of instruction. • This change can be through a condition or sometimes unconditional. • The conditions are represented by flags. 166

• CALL Des: – This instruction is used to call a subroutine or function or procedure. – The address of next instruction after CALL is saved onto stack.

• RET: – It returns the control from procedure to calling program. – Every CALL instruction should have a RET. 167

SUBROUTINE & SUBROUTINE HANDILING INSTRUCTIONS Main program Subroutine A First Instruction Call subroutine A Next instruction

Call subroutine A

Return

Next instruction

168

• JMP Des: – This instruction is used for unconditional jump from one place to another.

• Jxx Des (Conditional Jump): – All the conditional jumps follow some conditional statements or any instruction that affects the flag. 169

Conditional Jump Table Mnemonic

Meaning

JA

Jump if Above

JAE

Jump if Above or Equal

JB

Jump if Below

JBE

Jump if Below or Equal

JC

Jump if Carry

JE

Jump if Equal

JNC

Jump if Not Carry

JNE

Jump if Not Equal

JNZ

Jump if Not Zero

JPE

Jump if Parity Even

JPO

Jump if Parity Odd

JZ

Jump if Zero 170

• Loop Des: – This is a looping instruction.

– The number of times looping is required is placed in the CX register. – With each iteration, the contents of CX are decremented. – ZF is checked whether to loop again or not. 171

String Instructions • String in assembly language is just a sequentially stored bytes or words. • There are very strong set of string instructions in 8086. • By using these string instructions, the size of the program is considerably reduced.

172

• CMPS Des, Src: – It compares the string bytes or words.

• SCAS String: – It scans a string. – It compares the String with byte in AL or with word in AX. 173

• MOVS / MOVSB / MOVSW: – It causes moving of byte or word from one string to another. – In this instruction, the source string is in Data Segment and destination string is in Extra Segment. – SI and DI store the offset values for source and destination index. 174

• REP (Repeat): – This is an instruction prefix.

– It causes the repetition of the instruction until CX becomes zero. – E.g.: REP MOVSB STR1, STR2 • It copies byte by byte contents. • REP repeats the operation MOVSB until CX becomes zero. 175

Processor Control Instructions • These instructions control the processor itself. • 8086 allows to control certain control flags that: – causes the processing in a certain direction – processor synchronization if more than one microprocessor attached.

176

STC

– It sets the carry flag to 1. CLC – It clears the carry flag to 0. CMC – It complements the carry flag.

177

STD:  It sets the direction flag to 1.

 If it is set, string bytes are accessed from higher memory address to lower memory address.

CLD:  It clears the direction flag to 0.  If it is reset, the string bytes are accessed from lower memory address to higher memory address.

178

 HLT instruction – HALT processing The HLT instruction will cause the 8086 to stop fetching and executing instructions.

NOP instruction this instruction simply takes up three clock cycles and does no processing.

LOCK instruction this is a prefix to an instruction. This prefix makes sure that during execution of the instruction, control of system bus is not taken by other microprocessor.

WAIT instruction this instruction takes 8086 to an idle condition. The CPU will not do any processing during this. 179

INSTRUCTION SET-summary 1.DATA TRANSFER INSTRUCTIONS Mnemonic

Meaning

Format

Operation

Move

Mov D,S

(S)  (D)

Exchange

XCHG D,S

(S)

Load Effective Address

LEA Reg16,EA

EA 

pushes the operand into top of stack.

PUSH BX

POP

pops the operand from top of stack to Des.

POP BX

IN

transfers the operand from specified port to accumulator register.

IN AX,0028

OUT

transfers the operand from accumulator to specified port.

OUT 0028,BX

MOV XCHG LEA

PUSH

(D) (Reg16)

180

2. ARITHMETIC INSTRUCTIONS Mnemonic

SUB

Meaning Subtract

Format

SUB D,S

Operation (D) - (S)  Borrow

(D)



(CF)

(D) - (S) - (CF) 

(D)

SBB

Subtract with borrow

SBB D,S

DEC

Decrement by one

DEC D

NEG

Negate

NEG D

DAS

Decimal adjust for subtraction

DAS

Convert the result in AL to packed decimal format

AAS

ASCII adjust for subtraction

AAS

(AL) difference (AH) dec by 1 if borrow

ADD

Addition

ADD D,S

(S)+(D)

ADC

Add with carry

ADC D,S

(S)+(D)+(CF)

INC

Increment by one

INC D

(D)+1  (D)

AAA

ASCII adjust for addition

AAA

If the sum is >9, AH

Decimal adjust for addition

DAA

DAA

(D) - 1 

(D)

 (D)  (D)

carry  (CF) carry  (CF)

is incremented by 1 Adjust AL for decimal Packed BCD 181

3. Bit Manipulation Instructions(Logical Instructions) Mnemonic

Meaning

Format

Operation

AND

Logical AND

AND D,S

(S) · (D) → (D)

OR

Logical Inclusive OR

OR D,S

(S)+(D) → (D)

XOR

Logical Exclusive OR

XOR D,S

(S) + (D)→(D)

NOT

LOGICAL NOT

NOT D

(D) → (D)

182

Shift & Rotate Instructions Mnemonic SAL/SHL

Meaning

Format

Shift arithmetic Left/ Shift Logical left

SAL/SHL D, Count

SHR

Shift logical right

SHR D, Count

SAR

Shift arithmetic right

SAR D, Count

Mnemonic

Meaning

Format

ROL ROR

Rotate Left

ROL D,Count

Rotate Right

ROR D,Count

RCL

Rotate Left through Carry

RCL D,Count

RCR

Rotate right through Carry

RCR D,Count 183

4. Branching or PROGRAM EXECUTION TRANSFER INSTRUCTIONS • CALL - call a subroutine • RET - returns the control from procedure to calling program

• JMP Des – Unconditional Jump • Jxx Des – conditional Jump (ex: JC 8000) • Loop Des

184

5. STRING INSTRUCTIONS • CMPS Des, Src - compares the string bytes • SCAS String - scans a string • MOVS / MOVSB / MOVSW - moving of byte or word • REP (Repeat) - repetition of the instruction

185

6. PROCESSOR CONTROL INSTRUCTIONS • • • • • • • • •

STC – set the carry flag (CF=1) CLC – clear the carry flag (CF=0) STD – set the direction flag (DF=1) CLD – clear the direction flag (DF=0) HLT – stop fetching & execution NOP – no operation(no processing) LOCK - control of system bus is not taken by other µP WAIT - CPU will not do any processing ESC - µP does NOP or access a data from memory for coprocessor 186

Assembler Directives 187

Directives Expansion

188

• ASSUME Directive - The ASSUME directive is used to tell the assembler that the name of the logical segment should be used for a specified segment. • DB(define byte) - DB directive is used to declare a byte type variable or to store a byte in memory location. • DW(define word) - The DW directive is used to define a variable of type word or to reserve storage location of type word in memory. 189

• DD(define double word) :This directive is used to declare a variable of type double word or restore memory locations which can be accessed as type double word. • DQ (define quadword) :This directive is used to tell the assembler to declare a variable 4 words in length or to reserve 4 words of storage in memory . • DT (define ten bytes):It is used to inform the assembler to define a variable which is 10 bytes in length or to reserve 10 bytes of storage in memory. 190

• END- End program .This directive indicates the assembler that this is the end of the program module. The assembler ignores any statements after an END directive. • ENDP- End procedure: It indicates the end of the procedure (subroutine) to the assembler. • ENDS-End Segment: This directive is used with the name of the segment to indicate the end of that logical segment. • EQU - This EQU directive is used to give a name to some value or to a symbol. 191

• PROC - The PROC directive is used to identify the start of a procedure. • PTR -This PTR operator is used to assign a specific type of a variable or to a label. • ORG -Originate : The ORG statement changes the starting offset address of the data.

192

Directives examples • • • • •

ASSUME CS:CODE cs=> code segment ORG 3000 NAME DB ‘THOMAS’ POINTER DD 12341234H FACTOR EQU 03H

193

Assembly Language Programming(ALP) 8086 194

Program 1: Increment an 8-bit number • MOV AL, 05H • INC AL

Move 8-bit data to AL. Increment AL.

Program 2: Increment an 16-bit number • MOV AX, 0005H • INC AX

Move 16-bit data to AX. Increment AX.

195

Program 3: Decrement an 8-bit number • MOV AL, 05H • DEC AL

Move 8-bit data to AL. Decrement AL.

Program 4: Decrement an 16-bit number • MOV AX, 0005H • DEC AX

Move 16-bit data to AX. Decrement AX.

196

Program 5: 1’s complement of an 8-bit number. • MOV AL, 05H • NOT AL

Move 8-bit data to AL. Complement AL.

Program 6: 1’s complement of a 16-bit number. • MOV AX, 0005H • NOT AX

Move 16-bit data to AX. Complement AX.

197

Program 7: 2’s complement of an 8-bit number. • MOV AL, 05H • NOT AL • INC AL

Move 8-bit data to AL. Complement AL. Increment AL

Program 8: 2’s complement of a 16-bit number. • MOV AX, 0005H • NOT AX • INC AX

Move 16-bit data to AX. Complement AX. Increment AX 198

Program 7: 2’s complement of an 8-bit number. • MOV AL, 05H • NOT AL • INC AL

Move 8-bit data to AL. Complement AL. Increment AL

Program 8: 2’s complement of a 16-bit number. • MOV AX, 0005H • NOT AX • INC AX

Move 16-bit data to AX. Complement AX. Increment AX 199

Program 9: Add two 8-bit numbers MOV AL, 05H MOV BL, 03H ADD AL, BL

Move 1st 8-bit number to AL. Move 2nd 8-bit number to BL. Add BL with AL.

Program 10: Add two 16-bit numbers MOV AX, 0005H MOV BX, 0003H ADD AX, BX

Move 1st 16-bit number to AX. Move 2nd 16-bit number to BX. Add BX with AX. 200

Program 11: subtract two 8-bit numbers MOV AL, 05H MOV BL, 03H SUB AL, BL

Move 1st 8-bit number to AL. Move 2nd 8-bit number to BL. subtract BL from AL.

Program 12: subtract two 16-bit numbers MOV AX, 0005H MOV BX, 0003H SUB AX, BX

Move 1st 16-bit number to AX. Move 2nd 16-bit number to BX. subtract BX from AX. 201

Program 13: Multiply two 8-bit unsigned numbers. MOV AL, 04H MOV BL, 02H MUL BL

Move 1st 8-bit number to AL. Move 2nd 8-bit number to BL. Multiply BL with AL and the result will be in AX.

Program 14: Multiply two 8-bit signed numbers. MOV AL, 04H MOV BL, 02H IMUL BL

Move 1st 8-bit number to AL. Move 2nd 8-bit number to BL. Multiply BL with AL and the result will be in AX. 202

Program 15: Multiply two 16-bit unsigned numbers. MOV AX, 0004H MOV BX, 0002H MUL BX

Move 1st 16-bit number to AL. Move 2nd 16-bit number to BL. Multiply BX with AX and the result will be in DX:AX {4*2=0008=> 08=> AX , 00=> DX}

Program 16: Divide two 16-bit unsigned numbers. MOV AX, 0004H Move 1st 16-bit number to AL. MOV BX, 0002H Move 2nd 16-bit number to BL. DIV BX Divide BX from AX and the result will be in AX & DX {4/2=0002=> 02=> AX ,00=>DX} (ie: Quotient => AX , Reminder => DX )

203

Detailed coding 16 BIT ADDITION

204

Detailed coding 16 BIT SUBTRACTION

205

16 BIT MULTIPLICATION

206

16 BIT DIVISION

207

SUM of N numbers

L1:

MOV AX,0000 MOV SI,1100 MOV DI,1200 MOV CX,0005 MOV DX,0000 ADD AX,[SI] INC SI INC DX CMP CX,DX JNZ L1 MOV [1200],AX HLT

5 NUMBERS TO BE TAKEN SUM

208

Average of N numbers

L1:

MOV AX,0000 MOV SI,1100 MOV DI,1200 MOV CX,0005 MOV DX,0000 ADD AX,[SI] INC SI INC DX CMP CX,DX JNZ L1 DIV CX MOV [1200],AX HLT

5 NUMBERS TO BE TAKEN AVERAGE

AX=AX/5(AVERAGE OF 5 NUMBERS) 209

FACTORIAL of N L1:

MOV CX,0005 5 Factorial=5*4*3*2*1=120 MOV DX,0000 MOV AX,0001 MUL CX DEC DX CMP CX,DX JNZ L1 MOV [1200],AX HLT 210

ASCENDING ORDER

211

212

DECENDING ORDER

Note: change the coding

JNB L1 into JB L1

in the LINE 10 213

LARGEST, smallest NUMBER IN AN ARRAY

214

LARGEST NUMBER

215

SMALLEST NUMBER

216

Modular Programming 217

• Generally , industry-programming projects consist of thousands of lines of instructions or operation code. • The size of the modules are reduced to a humanly comprehensible and manageable level. • Program is composed from several smaller modules. Modules could be developed by separate teams concurrently.OBJ modules (Object modules). • The .OBJ modules so produced are combined using a LINK program. • Modular programming techniques simplify the software development process 218

CHARACTERISTICS of module: 1. Each module is independent of other modules. 2. Each module has one input and one output. 3. A module is small in size. 4. Programming a single function per module is a goal Advantages of Modular Programming: • It is easy to write, test and debug a module. • Code can be reused. • The programmer can divide tasks. • Re-usable Modules can be re-used within a program DRAWBACKS: Modular programming requires extra time and memory 219

MODULAR PROGRAMMING: 1.LINKING & RELOCATION 2.STACKS 3.Procedures 4.Interrupts & Interrupt Routines 5.Macros 220

LINKING & RELOCATION 221

LINKER • A linker is a program used to join together several object files into one large object file. • The linker produces a link file which contains the binary codes for all the combined modules. The linker program is invoked using the following options. C> LINK or C>LINK MS.OBJ 222

• The loader is a part of the operating system and places codes into the memory after reading the ‘.exe’ file • A program called locator reallocates the linked file and creates a file for permanent location of codes in a standard format.

223

Creation and execution of a program

224

Loader ->Loader is a utility program which takes object code as input prepares it for execution and loads the executable code into the memory . ->Loader is actually responsible for initializing the process of execution. Functions of loaders: 1.It allocates the space for program in the memory(Allocation) 2.It resolves the code between the object modules(Linking) 3. some address dependent locations in the program, address constants must be adjusted according to allocated space(Relocation) 4. It also places all the machine instructions and data of corresponding programs and subroutines into the memory .(Loading) 225

Relocating loader (BSS Loader) • When a single subroutine is changed then all the subroutine needs to be reassembled. • The binary symbolic subroutine (BSS) loader used in IBM 7094 machine is relocating loader. • In BSS loader there are many procedure segments • The assembler reads one sourced program and assembles each procedure segment independently 226

• The output of the relocating loader is the object program • The assembler takes the source program as input; this source program may call some external routines. SEGMENT COMBINATION: ASM-86 assembler regulating the way segments with the same name are concatenated & sometimes they are overlaid. Form of segment directive: Segment name SEGEMENT Combine-type Possible combine-type are: • PUBLIC • COMMON • STACK • AT • MEMORY 227

Procedures 228

• Procedure is a part of code that can be called from your program in order to make some specific task. Procedures make program more structural and easier to understand. • syntax for procedure declaration: name PROC …………. ; here goes the code …………. ; of the procedure ... RET name ENDP

here PROC is the procedure name.(used in top & bottom) RET - used to return from OS. CALL-call a procedure PROC & ENDP – complier directives CALL & RET - instructions

229

EXAMPLE 1 (call a procedure) ORG 100h CALL m1 MOV AX, 2 RET ;

return to operating system.

m1 PROC MOV BX, 5 RET ; return to caller. m1 ENDP END • The above example calls procedure m1, does MOV BX, 5 & returns to the next instruction after CALL: MOV AX, 2. 230

Example 2 : several ways to pass parameters to procedure ORG 100h MOV AL, 1 MOV BL, 2 CALL m2 CALL m2 CALL m2 CALL m2 RET m2 PROC MUL BL RET m2 ENDP END

; return to operating system.

; AX = AL * BL. ; return to caller. value of AL register is update every time the procedure is called. final result in AX register is 16 (or 10h) 231

232

• Stack is an area of memory for keeping temporary data. • STACK is used by CALL & RET instructions. PUSH -stores 16 bit value in the stack. POP -gets 16 bit value from the stack. • PUSH and POP instruction are especially useful because we don't have too much registers to operate 1. Store original value of the register in stack (using PUSH). 2. Use the register for any purpose. 3. Restore the original value of the register from stack (using POP). 233

Example-1 (store value in STACK using PUSH & POP) ORG 100h MOV AX, 1234h PUSH AX ; store value of AX in stack. MOV AX, 5678h ; modify the AX value. POP AX ; restore the original value of AX. RET END 234

Example 2: use of the stack is for exchanging the values ORG 100h MOV AX, 1212h ; store 1212h in AX. MOV BX, 3434h ; store 3434h in BX PUSH AX ; store value of AX in stack. PUSH BX ; store value of BX in stack. POP AX ; set AX to original value of BX. POP BX ; set BX to original value of AX. RET END push 1212h and then 3434h, on pop we will first get 3434h and only after it 1212h 235

MACROS 236

• Macros are just like procedures, but not really. • Macros exist only until your code is compiled • After compilation all macros are replaced with real instructions • several macros to make coding easier(Reduce large & complex programs) Example (Macro definition) name MACRO [parameters,...] ENDM 237

Example1 : Macro Definitions SAVE

MACRO PUSH AX PUSH BX PUSH CX ENDM

RETREIVE

MACRO POP CX POP BX POP AX ENDM

definition of MACRO name SAVE

Another definition of MACRO name

RETREIVE

238

239

MACROS with Parameters Example: COPY MACRO x, y

; macro named

COPY with

2 parameters{x, y}

PUSH AX MOV AX, x MOV y, AX POP AX ENDM 240

INTERRUPTS & INTERRUPT SERVICE ROUTINE(ISR) 241

INTERRUPT & ISR ? • ‘Interrupts’ is to break the sequence of operation. • While the CPU is executing a program, on ‘interrupt’ breaks the normal sequence of execution of instructions, diverts its execution to some other program called Interrupt Service Routine (ISR)

242

243

244

245

• Maskable Interrupt: An Interrupt that can be disabled or ignored by the instructions of CPU are called as Maskable Interrupt. • Non- Maskable Interrupt: An interrupt that cannot be disabled or ignored by the instructions of CPU are called as Non- Maskable Interrupt. • Software interrupts are machine instructions that amount to a call to the designated interrupt subroutine, usually identified by interrupt number. Ex: INT0 - INT255 246

247

248

249

250

251

INTERRUPT VECTOR TABLE 256 INTERRUPTS OF 8086 ARE DIVIDED IN TO 3 GROUPS 1. TYPE 0 TO TYPE 4 INTERRUPTSThese Are Used For Fixed Operations And Hence Are Called Dedicated Interrupts 2. TYPE 5 TO TYPE 31 INTERRUPTS Not Used By 8086,reserved For Higher Processors Like 80286 80386 Etc 3. TYPE 32 TO 255 INTERRUPTS Available For User, called User Defined Interrupts These Can Be H/W Interrupts And Activated Through Intr Line Or Can Be 252 S/W Interrupts.

Type – 0 Divide Error Interrupt Quotient is too large cant be fit in AL/AX or Divide By Zero

{AX/0=∞}

Type –1 Single Step Interrupt used for executing the program in single step mode by setting Trap Flag To Set Trap Flag PUSHF MOV BP,SP OR [BP+0],0100H;SET BIT8 POPF

Type – 2 Non Maskable Interrupt This Interrupt is used for executing ISR of NMI Pin (Positive Egde Signal). NMI cant be masked by S/W

Type – 3 Break Point Interrupt used for providing BREAK POINTS in the program

Type – 4 Over Flow Interrupt used to handle any Overflow Error after signed arithmetic 253

PRIORITY OF INTERRUPTS Interrupt Type

Priority

INT0, INT3-INT 255,

Highest

NMI(INT2) INTR SINGLE STEP

Lowest

254

Byte & String Manipulation 255

Move,

compare,

store,

load,

scan

Refer String Instructions in Instruction Set Slide No: 160-163

256

Byte Manipulation Example 1: MOV AX,[1000] MOV BX,[1002] AND AX,BX MOV [2000],AX HLT Example 2: MOV AX,[1000] MOV BX,[1002] OR AX,BX MOV [2000],AX HLT

Example 3: MOV AX,[1000] MOV BX,[1002] XOR AX,BX MOV [2000],AX HLT Example 4: MOV AX,[1000] NOT AX MOV [2000],AX HLT 257

STRING MANIPULATION 1. Copying a string (MOV SB)

L1

MOV CX,0003 MOV SI,1000 MOV DI,2000 CLD MOV SB DEC CX JNZ L1 HLT

copy 3 memory locations

decrement CX

258

2. Find & Replace

259

Related Documents

Section
June 2020 27
Section
November 2019 50
Section
May 2020 39

More Documents from "kerinsa"

Section 1.pptx
May 2020 5
Dalail Ul Khairat.pdf
May 2020 19
Linear Algebra.pdf
May 2020 8
Smeda Bakery & Confectionery
November 2019 18
Wivi.docx
May 2020 12