addressing modes&instructions

122
1 8086 Addressing Modes

Upload: ramesh-areapally

Post on 05-Apr-2018

228 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 1/122

1

8086 Addressing Modes

Page 2: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 2/122

2

What is the Addressing Mode

?add dest, source ; dest +source→dest 

add ax,bx ; ax +bx→ax 

The addressing mode means where and how

the CPU gets the operands when theinstruction is executed.

Page 3: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 3/122

3

• Addressing modes for Sequential Control

Transfer Instructions----These Instructions transfer control to the

next sequential instruction in the program

• Addressing modes for Control TransferInstructions

-----These Instructions transfer control to

some predefined address Ex:INT CALL

Page 4: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 4/122

4

Addressing modes for Sequential Control

Transfer Instructions Three types of 8086 addressing modes

• Immediate Addressing Mode

---CPU gets the operand from the instruction • Register Addressing Mode

---CPU gets the operand from one of the internal registers

• Memory Addressing Mode---CPU gets the operand from the memory location(s)

Page 5: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 5/122

5

Exp

MOV AL, 80H

Machine code:B080H

ALB0H

80H

Instruction Queue

MACHINE

CODE

B8

12H

Instruction Queue

AL

MACHINE

CODE

AH

34H

12

3480H

80H

12  34

1. Immediate Addressing Mode

MOV AX, 1234H

Machine Code:B83412H

Page 6: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 6/122

6

Exp:MOV AX, CX 

89

C1

Memory

AX

CX Machine code

2. Register Addressing

Mode

Page 7: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 7/1227

• Specify an offset address (effective address) using expressions of the form (different parts of expression are optional):

 –  [ Base Register + Index Register+ Displacement]

• 1) Base Register---BX, BP• 2) Index Register---SI, DI

• 3) Displacement ---constant value

• Example: 1) add ax,[20h] 2) add ax,[bx]

3) add ax,[bx+20h] 4) add ax, [bx+si]5) add ax, [bx+si+20h]

3. Memory Addressing Mode

Page 8: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 8/1228

⑴ Direct Addressing Mode

Exp: MOV AL, [1064H]

Machine code:A06410H

• The offset address of the operand is provided in theinstruction directly;

• The physical address can be calculated using thecontent of DS and the offset :

PA = (DS)*10H+Offset

3. Memory Addressing Mode

Page 9: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 9/1229

⑴ Direct Addressing ModeExample: MOV AL, [1064h] ;Assume (DS)=2000H

Machine code: A06410H

21064H

(DS)*10H=20000H

20000H

21064H

AL

A0

64

10

45

… 

Code

Segment

Data

Segment

45

45

+ 1064H

Page 10: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 10/12210

⑵ Register Indirect Addressing Mode

• The address of memory location is in a register

(SI,DI,or BX only)

• The physical address is calculated using the content of DS

and the register(SI,DI,BX)

PA = (DS)*10H+(SI)/(DI)/(BX)

3. Memory AddressingMode

Page 11: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 11/12211

50

40

 …  … 

M

AX

⑵ Register Indirect Addressing Mode

ASSUME: (DS)=3000H, (SI)=2000H, (BX)=1000H

30000H

(DS)*10H=30000H

(SI)= 2000H+

32000H

32000H

40  50

50

40

 …  … 64H

M

AL 30000H

(DS)*10h= 30000H

(BX)= 1000H+

31000H

31000H64H

64H

MOV [BX], ALMOV AX, [SI]

Page 12: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 12/12212

⑶ Register Relative Addressing

EA=

(BX)

(BP)

(DI)

(SI)

+ Displacement

For physical address calculation:DS is used for BX,DI,SI;SS is used for BP

PA=(DS)*10H+(BX)/(DI)/(SI)+Disp

ORPA=(SS)*10H+(BP)+Disp

Page 13: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 13/12213

⑶ Register Relative AddressingMOV CL, [BX+1064H] ;assume: (DS)=2000h, (bx)=1000h

;Machine Code: 8A8F6410

22064H

22064H

8F

64

10

45

… 

CodeSegment

Data

Segment

8A

… 

CL

45

45 21000H

(BX)= 1000H

(DS)*10h= 20000H

20000H

+ 1064H

PA=(ds)*10h+(bx)+1064h

Page 14: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 14/12214

⑷ Based Indexed Addressing

EA=(BX)(BP)

+(DI)(SI)

• Base register(bx or bp) determines which segment(data or

stack) the operand is stored;• if using BX, the operand is defaultly located in Datasegment,then:

PA=(DS)*10H+(BX)+(DI)/(SI)

• if using BP, the operand is defaultly located in stack segment,then: 

PA=(SS)*10H+(BP)+(DI)/(SI)

Page 15: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 15/12215

⑷ Based Indexed Addressing

Example: MOV AH, [BP][SI];Assume(ss)=4000h,(bp)=2000h,(si)=1200h

56H

 … 

 … 

M

AH 40000H

(SS)*10H= 40000H

(BP)= 2000H+

43200H

43200H

(SI)= 1200H

56H

56H

PA=(ss)*10h+(bp)+(si)

Page 16: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 16/12216

⑸ Based Indexed Relative Addressing

EA= (BX)(BP)

+ (DI)(SI)

+ Displacement

if using BX, the operand is defaultly located in Datasegment,then:

PA=(DS)*10H+(BX)+(DI)/(SI)+disp

if using BP, the operand is defaultly located in stack segment,then: 

PA=(SS)*10H+(BP)+(DI)/(SI)+disp

Page 17: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 17/12217

⑸ Based Indexed Relative Addressing

MOV [BX+DI+1234H], AH;assume (ds)=4000h,(bx)=0200h,(di)=0010h

;machine code:88A13412hA1

34

12

… 

Code

segment

Data

segment

88

… 

45AH

40000H

(DS)*10H=40000H

(BX)= 0200H

+(DI)= 0010H

1234H

45

45

41444H

41444H

Page 18: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 18/12218

Summary on the 8086 memory addressing modes 

operand offset address Default Overridden

(effective address)  Segment Register Segment Register 

3. Register [SI/DI/BX/BP+disp] (SI)/(DI)/(BX)/(BP)+disp  DS CS ES SS

Relative Addressing

2. Register [BX]/[SI] /[DI] Content of the R DS CS ES SS

Indirect Addressing 

1. Direct Addressing [disp] disp DS CS ES SS

4. Based Indexed [BX+SI/DI] (BX)+disp  DS CS ES SS

Addressing [BP+SI/DI] (BP)+disp  SS CS ES DS

5. Based Indexed [BX+SI/DI+disp] (BX)+(SI)/(DI)+disp  DS CS ES SS

Relative Addressing [BP+SI/DI+disp] (BP)+(SI)/(DI)+disp  SS CS ES DS

Page 19: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 19/12219

Examples:

Assume: (BX)=6000H, (BP)=4000H, (SI)=2000H,(DS)=3000H, (ES)=3500H, (SS)=5000H

3000:0520 30520HDirect Addressing

2. MOV AX, [BX]

1. MOV AX, [0520H]

5. MOV AX, ES: [BX+SI+0050H]

4. MOV AX, [BP+6060H]

Register Indirect Addressing 3000:6000 36000H

Register Relative Addressing 

Register Relative Addressing

3. MOV AX, [SI+1000H] 3000:3000 33000H

5000:A060 5A060H

3500:8050 3D050HBased Indexed Relative

Addressing

Instruction addressing  logical physicalmode  address address

Page 20: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 20/12220

•Addressing modes for Control Transfer

Instructions

Modes for ControlTransfer Instructions

Inter-segment

Intra-segment

Inter-segment-In Direct

Inter-segment-Direct

Intra-segment Direct

Intra-segment Indirect

Page 21: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 21/122

21

Inter-segment-Direct Addressing ModeThe address to which control is to be transferred lies in the different

segment and appears directly In the instruction as an immediatedisplacement value w.r.t IP If the displacement is8-bits(-128<d<+127)(short) If the displacement is16-bits(-32768<d<+32767)(Long)

Ex: CALL 0020:0010H

segment1

CS

Assume CS=2000h,IP=0000h

After JMP,CS= 0020h,IP=0010h

segment2

IP

20

00

10

Sub-routine

… 

00

… 

0020

Op-code for CALL

0010

2000hCS

Page 22: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 22/122

22

Inter-segment-IN-Direct Addressing ModeThe address to which control is to betransferred

lies in the different \segment and it ispassed to theinstruction indirectly i.e contents of amemory blockcontaining four bytesIP(LSB),IP(MSB),CS(LSB),CS(MSB)

Ex: CALL [BX]

IP(LSB)10

IP(MSB)00 

CS(LSB)20 

Sub-routine

… 

segment1

… 

0020CS

Before JMP,Assume BX=100h, CS=3000h,IP=200h

Op-code for CALL

After JMP,CS= 0020h,IP=0010h

segment2

0010IP

3000hCS

CS(MSB)00 

0010IP

Page 23: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 23/122

23

Intra-segment-Direct Addressing ModeThe address to which control is to be transferred lies in the samesegment and appears directly In the instruction as an immediate

displacement value w.r.t IP If the displacement is8-bits(-128<d<+127)(short) If the displacement is16-bits(-32768<d<+32767)(Long)

Ex: CALL 500h

CodeSegment

Assume CS=2000h,IP=0000h

After CALL,CS= 2000h,IP=IP+500h

IP

00

05

Op-code for CALL2000hCS

0500Sub-routine

0000IP

Page 24: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 24/122

24

IP

Intra-segment-In-Direct Addressing ModeIn this mode the displacement to which control is to be transferred,Is in the same segment in which the control transfer instruction lies

But it is passed to the instruction indirectly

Ex: CALL [BX]

CodeSegment

Assume CS=2000h,IP=0000h , BX=800h

After CALL,CS= 2000h,IP=IP+800h

IP

00

05

Op-code for CALL2000hCS

0800Sub-routine

0000IP

Page 25: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 25/122

25

Example:The Contents of different registers are given below. Form effective addresses fordifferent addressing modes

Offset(displacement)= 5000HAX=1000H,BX=2000H,SI=3000H,DI=4000H,BP=5000H,SP=6000H,CS=0000H,DS=1000HSS=2000H,IP=7000HShifting a number four times is equivalent to multiplying it by 16D or 10H 

Page 26: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 26/122

26

Instruction Set

&Assembler Directives

Page 27: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 27/122

27

Programming in 8088/8086 Three levels of languages available to program a microprocessor:

Machine Languages , Assembly Languages , and High-level 

Languages .

Machine Language

A sequence of binary codes for the instruction to be executed by

microcomputers.

Long binary bits can be simplified by using Hexadecimal format

It is difficult to program and error prone.

Different uP (micro-processor) uses different machine codes.

Page 28: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 28/122

28

Programming in 8088/8086 (cont.)

Assembly Language

To simplify the programming, assembly language (instead of machine language) isused.

Assembly language uses 2- to 4-letter mnemonics to represent each instructiontype. E.g. “Subtraction” is represented by SUB

Four fields in assembly language statement:

Label , OP Code , Operand and Comment fields.

Programs will be „translated‟ into machine language, by Assembler, so it can beloaded into memory for execution.

High-Level Language

High level languages, like C , Basic or Pascal , can also be used to program

microcomputers.

An interpreter or a compiler is used to „translate‟ high level language statement tomachine code. High level language is easier to read by human and is more suitablewhen the programs involves complex data structures.

Assemblers

Page 29: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 29/122

29

Assemblers

Programming the instructions directly in machine code is possible butevery machine codes depending on how the data is stored.

The process of converting the microprocessor instructions to thebinary machine code can be performed automatically by a computerprogram, called an ASSEMBLER. Popular assemblers include IBMmacro Assembler, Microsoft Macro Assembler (MASM) and BorlandTurbo Assembler(installed on IE NT Network).

Most assemblers accept an input text file containing lines with arigorously defined syntax split into four fields.

Not all fields need to be present in a line. Eg. A line can be just acomment line if it starts with semicolon;

Source Codes Object Codes and Linking

Page 30: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 30/122

30

Source Codes, Object Codes and Linking

Source code is the text written by the programmerin assembly language

(or any other programming language)

 Object code is the binary code obtained afterrunning the assembler (

Or compiler if the source is in a high level language).

 Modules of a program may be written separatelyand linked together to

form a executable program using a linker.

 The linker joins the object code of the different

modules into one largeobject file which is executable. Most assemblers onIBM PCs produce

object files which must be linked ( even if there areno separate modules).

Source Codes, Object Codes and Linking(Contd.,)

Page 31: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 31/122

31

Source Codes, Object Codes and Linking(Contd.,)

Fields in Assembler

Page 32: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 32/122

32

Fields in Assembler  

<label> <Mnemonic or directive> <operands> <;comment>

Comment field contains internal program documentation to improve

human readability -use meaningful comments

Operand field contains data or address used by the instruction.

The following conventions typically apply:

Fields in Assembler (Contd )

Page 33: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 33/122

33

Fields in Assembler (Contd.,) 

<label> <Mnemonic or directive> <operands><;comment>

Mnemonic/directive field contains the abbreviation forthe processor instruction (eg. MOV) or an assemblerDIRECTIVE. Adirective produces no object code but isused to control how the assembler operates.

Examples of directives include:

END -indicate the end of a program listing,

FRED LABEL NEAR - define “FRED” as a near label

TOM EQU 1000H -define “TOM” as the number 1000H

Label field contains a label which is assigned a valueequal to the address where the label appears.

Why Program in Assembler?

Page 34: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 34/122

34

Why Program in Assembler? 

Assembler language instruction has a one-to-onecorrespondence with the binary machine code: theprogrammer controls precisely all the operations performedby the processor (a high level language relies on a compileror interpreter to generate the instructions).

 Assembler can generate faster and more compactprograms

 Assembler language allows direct access and full controlof input/output operations

 However, high-level language programs are easier towrite and develop than assembler language programs

Advantages of High-level languages

Page 35: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 35/122

35

Advantages of High level languages 

Block structure code: programs are most readable when

they arebroken into “logical blocks” that perform specific function.

Productivity: easier to program

Level of complexity: no need to know the hardware details

Simple mathematics formula statement

Portability: only need to change the compiler when it isported to other machine

Abstract data types: different data types like floating-pointvalue,

record and array, and high precision value.

Readabilit

Intel 8086 Instruction Set Overview

Page 36: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 36/122

36

Intel 8086 Instruction Set Overview

Intel 8088 has ninety basic ( ie not counting

addressing mode

variants) instructions

Instructions belong to one of the following groups:data

transfer, arithmetic, logic, string manipulation,control

transfer and processor control.

C i A bl L I i

Page 37: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 37/122

37

Converting Assembly Language Instructions to

Machine Code

• An instruction can be coded with 1 to 6 bytes

• Byte 1 contains three kinds of information – Opcode field (6 bits) specifies the operation (add, subtract, move)

 – Register Direction Bit (D bit) Tells the register operand in REG field in byte

2 is source or destination operand1: destination 0: source

-Data Size Bit (W bit) Specifies whether the operation will be performed on 8-

bit or 16-bit data

0: 8 bits 1: 16 bits

• Byte 2 has three fields

Page 38: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 38/122

38

• Byte 2 has three fields

 –  Mode field (MOD)

 – Register field (REG) used to identify the register for the first operand 

 – Register/memory field (R/M field) 

Page 39: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 39/122

39

2-bit MOD field and 3-bit R/M field together

specify the second operand

Mode Field encoding

Register/memory (R/M) Field Encoding

Page 40: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 40/122

40

Examples 

MOV BL,AL (88C316)

Opcode for MOV = 100010

D = 0 (AL source operand)

W bit = 0 (8-bits)

Therefore byte 1 is 100010002=8816

• MOD = 11 (register mode) 

• REG = 000 (code for AL) 

• R/M = 011 (destination is BL) 

Therefore Byte 2 is 110000112=C316

Page 41: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 41/122

41

Examples:

MOV BL, AL = 10001000 11000011 = 88 C3h

ADD AX, [SI] = 00000011 00000100 = 03 04 h

ADD [BX] [DI] + 1234h, AX = 00000001 10000001 __ __ h =

01 81 34 12 h

Intel 8086 Instruction Set Overview

Page 42: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 42/122

42

I. Data Movement Instructions (14)

Page 43: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 43/122

43

(abbreviations below: d=destination, s=source)

General Data Movement Instructions

MOV d,s - moves byte or word; most commonly used instructionPUSH s - stores a word (register or memory) onto the stack

POP d - removes a word from the stack

XCHG d,s - exchanges data, reg.-reg. Or memory to register

XLAT - translates a byte using a lookup table (has no operands)

IN d,s - moves data (byte or word) from I/O port to AX or AL

OUT d,s - moves data (byte or word) from AX or AL to I/O port

LEA d,s - loads effective address (not data at address) into register

LDS d,s - loads 4 bytes (starting at s) to pointer (d) and DS

LES d,s - loads 4 bytes (starting at s) to pointer (d) and ES

LAHF - loads the low-order bytes of the FLAGS register to AH

SAHF - stores AH into the low-order byte of FLAGS

PUSHF - copies the FLAGS register to the stack

POPF - copies a word from the stack to the FLAGS register

( )

Instructions for moving strings

Page 44: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 44/122

44

g g

String instructions are repeated when prefixed by the REP mnemonic (CXcontains the repetition count)

MOVS d,s - (MOVSB, MOVSW) memory to memory data transfer

LODS s - (LODSB and LODSW) copies data into AX or AH

STOS d - (STOSB, STOSW) stores data from AH or AX

Data movement using MOV 

Page 45: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 45/122

45

g

MOV d, s

d=destination (register or effective memory address),

s=source (immediate data, register or memory address) MOV can transfer data from:

any register to any register (except CS register)

memory to any register (except CS)

immediate operand to any register (except CS)

any register to a memory location

immediate operand to memory

MOV cannot perform memory to memory transfers (must use a register as anintermediate storage).

MOV moves a word or byte depending on the operand bit-lengths; the source

and destination operands must have the same bit length.

MOV cannot be used to transfer data directly into the CS register.

The stack The stack

Page 46: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 46/122

46

The stack is a block of memory reserved for temporary

storage of data and registers. Access is LAST-IN, FIRSTOUT (LIFO)

The last memory location used in the stack is given by theeffective

address calculated from the SP register and the SS register:

Example:

The stack

Page 47: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 47/122

47

Data may be stored onto the stack using the PUSH

instruction  –this automatically decrements SP by 2 (allstack operations involve words).

The POP instruction removes data from the stack (andincrements SP by 2).

The stack may be up to 64K-bytes in length.

PUSH and POP instructions

Page 48: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 48/122

48

Examples:

PUSH AX ;stores AX onto the stack

POP AX ;removes a word from the stack and loads it into AX

PUSHF ;stores the FLAGS register onto the stack

POPF ; removes a word from the stack and loads it into FLAGS

PUSH may be used with any register to save a word (the register 

contents) onto the stack. The usual order (e.g. as with MOV) of storing the lower order byte in the lower memory location is used.

PUSH may also be used with immediate data, or data in memory.

 POP is the inverse of the PUSH instruction; it removes a word

from the top of the stack. Any memory location or 16-bit register 

(except CS) may be used as the destination of a POP instruction.

PUSHF and POPF saves and loads the FLAGS register to/from the

stack,respectively.

Exchange Instruction (XCHG) 

Page 49: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 49/122

49

XCHG exchanges the contents of two registers or a registerand memory. Both byte and word sized exchanges are

possible.

Examples:

XCHG AX,BX; exchange the contents of AX and BX

XCHG CL,BL; exchange CL and BL contents

XCHG DX,FRED; exchanges content of DX and memory

DS:FRED

 Memory to Memory exchanges using XCHG are NOT allowed.

Translate Instruction (XLAT)

Page 50: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 50/122

50

Many applications need to quickly convert byte sized codes to other valuesmapping one byte value to another (e.g. mapping keyboard binary codes to ASCIIcode)

 XLAT can perform a byte translation using a look-up table containing up to 256elements

XLAT assumes that the 256-byte table starts at the address given by DS:BX (i.e.effective address formed by the DS and BX registers). AL is used as an index topoint to the required element in the table prior to the execution of XLAT. The resultof XLAT instruction is returned in the same register (AL).

Address Data Table

LEA &LDS

Page 51: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 51/122

51

LEA loads the offset of a memory address into a 16-bit register. The offset addressmay be specified by any of the addressing modes.

Examples (with BP=1000H):

LEA AX,[BP+40H];=>SS:[1000H+40H] =SS:[1040H];load 1040H into AX

LEA BX,FRED; load the offset of FRED (in data segment) to BX

LEA CX,ES:FRED; loads the offset of FRED (in extra segment) to CX

LDS -Load data and DSLDS reads two words from the consecutive memory locations and loads them into thespecified register and the DS segment registers.

Examples (DS=1000H initially)

LDS BX,[2222H]; copies content of 12222H to BL, 12223H to BH, and 12224 and12225 to DS register

LDS is useful for initializing the SI and DS registers before a string operation. E.g.LDS SI, sting_pointer

The source for LDS can be displacement, index or pointer register (except SP).

LES -Load data and ES 

Page 52: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 52/122

52

LES reads two words from memory and is very similar to LDS

except that the second word is stored in ES instead of DS.

LES is useful for initializing that DI and ES registers for stringsoperation.

Example (with DS=1000H):

LES DI, [2222H]; loads DI with contents stored at 12222H and12223H and loads ES with contents at 12224 and 12225H

LAHF, SAHF 

Page 53: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 53/122

53

LAHF (load AH with the low-order byte of the FLAGSregister) and SAHF (Store AH into the low-order byte of theFLAG register)

very rarely used instructions -originally present to allowtranslation of 8085 programs to 8086.

IN, OUT

Page 54: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 54/122

54

Examples:

IN AX, 0C8h ;reads port address at C8h (8 bit address) and loads into AX

IN AL, DX ;reads the port address given by DX and loads into AL

OUT p8 ,AX ;sends the data in AX to port p8

OUT DL, AX ; sends the data in AX to port given by DL

IN reads data from the specified IO port (8-bit or 16-bit wide) to the accumulator (

AL or AX).

 The IO port can be an immediate address (8-bit only) or specified by a variable

or register (8 or 16-bit address). (Seems only DX can be used.)

OUT sends data from the accumulator register to the specified I/O port. Both byte andword sized data may be sent using IN and OUT.

II. Arithmetic Instructions(20)

Page 55: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 55/122

55

Intel 8088 has 20 instructions for performing integer addition,Subtraction , multiplication, division, and conversions from binary codeddecimal to binary.

Arithmetic Instructions (cont.)

Page 56: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 56/122

56

Addition

Page 57: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 57/122

57

Binary addition of two bytes or two words are performed using:

ADD d,s

ADD adds bytes or words in d and s and stores result in d.The operands d and s can use the same addressing modes as in

MOV.

Addition of double-word is achieved by using the carry bit in the

FLAGS register. The instruction

ADC d,s

automatically includes the carry flag, and is used to add the

more significant word in a double-word addition.

Addition

Example: addition of two double words stored at [x] and [y]MOV AX, [x] ; Loads AX with the word stored at location [x]MOV DX, [x+2] ; Loads the high order wordADD AX, [y] ; Adds the low order word at [y]ADC DX, [y+2] ; Add including the carry from the low order words

Addition (cont.)

Page 58: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 58/122

58

Example: addition of two double words stored at [x] and [y]

Addition of binary coded decimal numbers (BCD) can be performedby using ADD or ADC followed by the DAA instruction to convert thenumber in register AL to a BCD representation. (see example)

Addition of numbers in their ASCII form is achieved by using AAA(ascii adjust after addition).

ASCII adjust for Addition (AAA)

Page 59: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 59/122

59

ASCII codes for the numbers 0 to 9 are 30H to 39H respectively. The ascii adjust instructions convert the sum stored in AL to two-byte unpackBCD number which are placed in AX.

When 30H is added to each byte, the result is the ASCII codes of the digitsrepresenting the decimal for the original number in AL.Example: Register AL contains 31H (the ASCII code for 1), BL contains 39H (theASCII code for 9).ADD AL, BL ; produces the result 6AH which is kept in AL.AAA ; converts 6AH in AL to 0100H in AX

Addition of 30H to each byte of AX produces the result 3130H (the ASCII codefor 10 which is the result of 1+9)

Subtraction

Page 60: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 60/122

60

Multiplication

Page 61: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 61/122

61

Division

Page 62: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 62/122

62

SIGN EXTENDED INSTRUCTIONS

Page 63: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 63/122

63

Other Arithmetic Instructions

Page 64: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 64/122

64

III. Logic and bit MANIPULATION Instructions (12)

Page 65: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 65/122

65

III. Logic and bit MANIPULATION Instructions (12) (Contd)

Page 66: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 66/122

66

Shift and Rotate

Page 67: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 67/122

67

Shift and Rotate(Contd)

Page 68: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 68/122

68

packed BCD from two ASCII characters

Page 69: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 69/122

69

IV. Strings Instruction (6)

Page 70: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 70/122

70

IV. Instruction for moving strings(Contd)

Page 71: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 71/122

72

REP prefix

Page 72: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 72/122

73

LODS and STOS string instructions

Page 73: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 73/122

74

LODS and STOS string instructions(Contd)

Page 74: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 74/122

75

CMPS and SCAS string instructions

Page 75: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 75/122

76

V. Program Flow Instruction

Page 76: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 76/122

77

Program Flow Instruction

Page 77: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 77/122

78

Unconditional JUMP

Page 78: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 78/122

79

Unconditional JUMP (cont.)

Page 79: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 79/122

80

List file of program Demonstrating “backward” JMP 

Page 80: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 80/122

81

List file of program demonstrating “forward” JMP 

Page 81: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 81/122

82

Conditional Jumps

Page 82: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 82/122

83

8086 Conditional Jump Instructions

Page 83: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 83/122

84

Ex.: Reading ASCII code when a strobe is present

Page 84: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 84/122

85

Assembly language for Reading ASCII code when a strobe is present

Page 85: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 85/122

86

Loops

Page 86: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 86/122

87

Procedures and modular Programming

Page 87: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 87/122

88

Page 88: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 88/122

89

Page 89: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 89/122

90

Procedures and modular Programming (Contd)

Page 90: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 90/122

91

Procedures

Page 91: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 91/122

92

Stack Diagram

Page 92: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 92/122

93

Using PUSH and POP instructions

Page 93: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 93/122

94

Interrupt Instructions

Page 94: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 94/122

95

Interrupt Instructions

Page 95: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 95/122

96

Page 96: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 96/122

97

Program Data and Storage

Page 97: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 97/122

98

• Assembler directives for data storage

 – DB - byte(s) – DW - word(s)

 – DD - doubleword(s)

 – DQ - quadword(s) – DT - tenbyte(s)

Arrays

Page 98: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 98/122

99

• Any consecutive storage locations of the

same size can be called an array

X DW 40CH,10B,-13,0

Y DB 'This is an array'

Z DD -109236, FFFFFFFFH, -1, 100B

• Components of X are at X, X+2, X+4, X+8

• Components of Y are at Y, Y+1, …, Y+15 

• Components of Z are at Z, Z+4, Z+8, Z+12

DUPll f l i b

Page 99: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 99/122

100

• Allows a sequence of storage locations to be

defined or reserved

• Only used as an operand of a define

directive

DB 40 DUP (?)

DW 10h DUP (0)

DB 3 dup ("ABC")

db 4 dup(3 dup (0,1), 2 dup('$')) 

Word Storage• Word doubleword and quadword data are

Page 100: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 100/122

101

• Word, doubleword, and quadword data are

stored in reverse byte order (in memory)

Directive Bytes in Storage

DW 256 00 01

DD 1234567H 67 45 23 01

DQ 10 0A 00 00 00 00 00 00 00X DW 35DAh DA 35

Low byte of X is at X, high byte of X is at X+1

EQU Directive• name EQU expression

Page 101: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 101/122

102

• name EQU expression

 – expression can be string or numeric

 – Use < and > to specify a string EQU

 – these symbols cannot be redefined later in the

program

sample EQU 7FhaString EQU <1.234> 

 message EQU <This is a message> 

Page 102: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 102/122

103

Page 103: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 103/122

104

Page 104: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 104/122

105

Page 105: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 105/122

106

Page 106: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 106/122

107

Page 107: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 107/122

108

Page 108: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 108/122

109

Page 109: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 109/122

110

Page 110: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 110/122

111

Page 111: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 111/122

112

Page 112: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 112/122

113

Page 113: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 113/122

114

Page 114: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 114/122

115

Page 115: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 115/122

116

Page 116: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 116/122

117

Page 117: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 117/122

118

Macro definition:

Page 118: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 118/122

119

Macro definition:

name MACRO [parameters,...]

<instructions>

ENDMMyMacro MACRO p1, p2, p3

MOV AX, p1MOV BX, p2MOV CX, p3

ENDM

ORG 100h

MyMacro 1, 2, 3

MyMacro 4, 5, DX

RET

The syntax for procedure declaration:

Page 119: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 119/122

120

The syntax for procedure declaration:name PROC

; here goes the code; of the procedure ...

RET

name ENDP

ORG 100h

Page 120: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 120/122

121

ORG 100h

CALL m1

MOV AX, 2

RET ; return to Main Program.

m1 PROCMOV BX, 5RET ; return to caller.

m1 ENDP

END

ORG 100h

Page 121: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 121/122

122

MOV AL, 1MOV BL, 2

CALL m2CALL m2CALL m2CALL m2

RET ; return to operating system.

m2 PROCMUL BL ; AX = AL * BL.

RET ; return to caller.m2 ENDP

END

Page 122: Addressing Modes&Instructions

8/2/2019 Addressing Modes&Instructions

http://slidepdf.com/reader/full/addressing-modesinstructions 122/122