8086 - Instruction Set

Download as pdf or txt
Download as pdf or txt
You are on page 1of 54

INSTRUCTION SET

in

8086 Microprocessor
8086 Microprocessor
Instruction Set

8086 supports 6 types of instructions.

1. Data Transfer Instructions

2. Arithmetic Instructions

3. Logical Instructions

4. String Manipulation Instructions

5. Process Control Instructions

6. Control Transfer Instructions

2
8086 Microprocessor
Instruction Set

1. Data Transfer Instructions

 Instructions that are used to transfer data/address in to


registers, memory locations, and I/O ports.

 Generally involve two operands: Source operand and


Destination operand of the same size.

 Source: Register or a memory location or an immediate


data
 Destination: Register or a memory location.

 The size should be a either a byte or a word.

 A 8-bit data can only be moved to 8-bit register/memory


and a 16-bit data can be moved to 16-bit
register/memory.

3
8086 Microprocessor
Instruction Set

1. Data Transfer Instructions

Mnemonics: MOV, XCHG, PUSH, POP, IN, OUT …

MOV reg2/ mem, reg1/ mem

MOV reg2, reg1 (reg2)  (reg1)


MOV mem, reg1 (mem)  (reg1)
MOV reg2, mem (reg2)  (mem)

MOV reg/ mem, data

MOV reg, data (reg)  data


MOV mem, data (mem)  data

XCHG reg2/ mem, reg1

XCHG reg2, reg1 (reg2)  (reg1)


XCHG mem, reg1 (mem)  (reg1)

4
8086 Microprocessor
Instruction Set

‫ دو طرفه بین خانه هایی از حافظه به آدرس های‬Exchange ‫ زیربرنامه‬:1 ‫مثال‬


.OPR2 ‫ و‬OPR1

:‫روش اول‬

MOV AL, [OPR1]


MOV BL, [OPR2]

MOV [OPR1], BL
MOV [OPR2], AL

:‫روش دوم‬

MOV AL, [OPR1]


XCHG AL, [OPR2]
MOV [OPR1], AL

5
8086 Microprocessor
Instruction Set

1. Data Transfer Instructions

Mnemonics: MOV, XCHG, PUSH, POP, IN, OUT …

PUSH reg16/ mem

PUSH reg16 (SP)  (SP) – 2


MA S = (SS) x 1610 + SP
(MA S ; MA S + 1)  (reg16)

PUSH mem (SP)  (SP) – 2


MA S = (SS) x 1610 + SP
(MA S ; MA S + 1)  (mem)

POP reg16/ mem

POP reg16 MA S = (SS) x 1610 + SP


(reg16)  (MA S ; MA S + 1)
(SP)  (SP) + 2

POP mem MA S = (SS) x 1610 + SP


(mem)  (MA S ; MA S + 1)
(SP)  (SP) + 2
6
8086 Microprocessor
Instruction Set

1. Data Transfer Instructions

Mnemonics: MOV, XCHG, PUSH, POP, IN, OUT …

IN A, [DX] OUT [DX], A

IN AL, [DX] PORTaddr = (DX) OUT [DX], AL PORTaddr = (DX)


(AL)  (PORT) (PORT)  (AL)

IN AX, [DX] PORTaddr = (DX) OUT [DX], AX PORTaddr = (DX)


(AX)  (PORT) (PORT)  (AX)

IN A, addr8 OUT addr8, A

IN AL, addr8 (AL)  (addr8) OUT addr8, AL (addr8)  (AL)

IN AX, addr8 (AX)  (addr8) OUT addr8, AX (addr8)  (AX)

7
8086 Microprocessor
Instruction Set

‫ به‬Data_In ‫ بایت داده از بلوک مبدا به آدرس شروع‬6 ‫ زیربرنامه انتقال‬:2 ‫مثال‬
. Copy ‫بلوک مقصد به آدرس شروع‬

MOV SI, Offset Data_In


MOV DI, Offset Copy

MOV CX, 6

Again: MOV AL, [SI]


MOV [DI], AL

INC SI
INC DI

DEC CX

JNZ Again

8
8086 Microprocessor
Instruction Set

2. Arithmetic Instructions
Mnemonics: ADD, ADC, SUB, SBB, INC, DEC, MUL, DIV, CMP…

ADD reg2/ mem, reg1/mem

ADD reg2, reg1 (reg2)  (reg1) + (reg2)


ADD reg2, mem (reg2)  (reg2) + (mem)
ADD mem, reg1 (mem)  (mem)+(reg1)

ADD reg/mem, data

ADD reg, data (reg)  (reg)+ data


ADD mem, data (mem)  (mem)+data

ADD A, data

ADD AL, data8 (AL)  (AL) + data8


ADD AX, data16 (AX)  (AX) +data16

9
8086 Microprocessor
Instruction Set

‫ و نیز‬DATA2 ‫ و‬DATA1 ‫ زیربرنامه جمع دو خانه از حافظه به آدرس های‬:3 ‫مثال‬


.SUM ‫ذخیره سازی در خانه ای از حافظه به آدرس‬

:‫روش اول‬

MOV AL, [DATA1]


MOV BL, [DATA2]
ADD AL,BL
MOV [SUM], AL

:‫روش دوم‬

MOV AL, [DATA1]


ADD AL, [DATA2]
MOV [SUM], AL

10
8086 Microprocessor
Instruction Set

2. Arithmetic Instructions
Mnemonics: ADD, ADC, SUB, SBB, INC, DEC, MUL, DIV, CMP…

ADC reg2/ mem, reg1/mem

ADC reg2, reg1 (reg2)  (reg1) + (reg2)+CF


ADC reg2, mem (reg2)  (reg2) + (mem)+CF
ADC mem, reg1 (mem)  (mem)+(reg1)+CF

ADC reg/mem, data

ADC reg, data (reg)  (reg)+ data+CF


ADC mem, data (mem)  (mem)+data+CF

ADDC A, data

ADD AL, data8 (AL)  (AL) + data8+CF


ADD AX, data16 (AX)  (AX) +data16+CF

11
8086 Microprocessor
Instruction Set

. Data_In ‫ بایت داده موجود در حافظه به آدرس شروع‬5 ‫ زیربرنامه جمع‬:4 ‫مثال‬

MOV SI, Offset Data_In


MOV AL, 0
MOV CX, 5

Again: ADD AL, [SI]


INC SI
DEC CX

JNZ Again

MOV [SUM], AL

12
‫‪8086 Microprocessor‬‬
‫‪Instruction Set‬‬

‫مثال ‪ :5‬زیربرنامه جمع دو عملوند ‪ 32‬بیتی موجود در خانه هایی از حافظه به‬
‫آدرس های شروع ‪ OPR1‬و ‪ OPR2‬و نیز ذخیره سازی در خانه هایی از حافظه به‬
‫آدرس شروع ‪.SUM‬‬

‫]‪MOV AX, [OPR1‬‬


‫]‪ADD AX, [OPR2‬‬
‫‪MOV [SUM], AX‬‬

‫]‪MOV AX, [OPR1+2‬‬


‫]‪ADC AX, [OPR2+2‬‬
‫‪MOV [SUM+2], AX‬‬

‫‪13‬‬
8086 Microprocessor
Instruction Set

2. Arithmetic Instructions
Mnemonics: ADD, ADC, SUB, SBB, INC, DEC, MUL, DIV, CMP…

SUB reg2/ mem, reg1/mem

SUB reg2, reg1 (reg2)  (reg1) - (reg2)


SUB reg2, mem (reg2)  (reg2) - (mem)
SUB mem, reg1 (mem)  (mem) - (reg1)

SUB reg/mem, data

SUB reg, data (reg)  (reg) - data


SUB mem, data (mem)  (mem) - data

SUB A, data

SUB AL, data8 (AL)  (AL) - data8


SUB AX, data16 (AX)  (AX) - data16

14
8086 Microprocessor
Instruction Set

2. Arithmetic Instructions
Mnemonics: ADD, ADC, SUB, SBB, INC, DEC, MUL, DIV, CMP…

SBB reg2/ mem, reg1/mem

SBB reg2, reg1 (reg2)  (reg1) - (reg2) - CF


SBB reg2, mem (reg2)  (reg2) - (mem)- CF
SBB mem, reg1 (mem)  (mem) - (reg1) –CF

SBB reg/mem, data

SBB reg, data (reg)  (reg) – data - CF


SBB mem, data (mem)  (mem) - data - CF

SBB A, data

SBB AL, data8 (AL)  (AL) - data8 - CF


SBB AX, data16 (AX)  (AX) - data16 - CF

15
8086 Microprocessor
Instruction Set

2. Arithmetic Instructions
Mnemonics: ADD, ADC, SUB, SBB, INC, DEC, MUL, DIV, CMP…

INC reg/ mem

INC reg8 (reg8)  (reg8) + 1

INC reg16 (reg16)  (reg16) + 1

INC mem (mem)  (mem) + 1

DEC reg/ mem

DEC reg8 (reg8)  (reg8) - 1

DEC reg16 (reg16)  (reg16) - 1

DEC mem (mem)  (mem) - 1

16
8086 Microprocessor
Instruction Set

2. Arithmetic Instructions
Mnemonics: ADD, ADC, SUB, SBB, INC, DEC, MUL, DIV, CMP…

MUL reg/ mem

MUL reg For byte : (AX)  (AL) x (reg8)


For word : (DX)(AX)  (AX) x (reg16)

MUL mem For byte : (AX)  (AL) x (mem8)


For word : (DX)(AX)  (AX) x (mem16)

IMUL reg/ mem

IMUL reg For byte : (AX)  (AL) x (reg8)


For word : (DX)(AX)  (AX) x (reg16)

IMUL mem For byte : (AX)  (AX) x (mem8)


For word : (DX)(AX)  (AX) x (mem16)

17
8086 Microprocessor
Instruction Set

. [D,D+1]=2*[A]-5*[C]+7 ‫ زیربرنامه محاسبه‬:6 ‫مثال‬

MOV AL, 2
MUL [A]
MOV BX, AX

MOV AL, 5
MUL [C]

SUB BX, AX
ADD BX, 7

MOV [D], BX

18
8086 Microprocessor
Instruction Set

.‫ بیتی‬32 ‫ ضرب دو عملوند‬:1 ‫تمرین‬

19
8086 Microprocessor
Instruction Set

2. Arithmetic Instructions
Mnemonics: ADD, ADC, SUB, SBB, INC, DEC, MUL, DIV, CMP…

DIV reg/ mem

DIV reg For 16-bit :- 8-bit :


(AL)  (AX) :- (reg8) Quotient
(AH)  (AX) MOD(reg8) Remainder

For 32-bit :- 16-bit :


(AX)  (DX)(AX) :- (reg16) Quotient
(DX)  (DX)(AX) MOD(reg16) Remainder

DIV mem For 16-bit :- 8-bit :


(AL)  (AX) :- (mem8) Quotient
(AH)  (AX) MOD(mem8) Remainder

For 32-bit :- 16-bit :


(AX)  (DX)(AX) :- (mem16) Quotient
(DX)  (DX)(AX) MOD(mem16) Remainder

20
8086 Microprocessor
Instruction Set

2. Arithmetic Instructions
Mnemonics: ADD, ADC, SUB, SBB, INC, DEC, MUL, DIV, CMP…

IDIV reg/ mem

IDIV reg For 16-bit :- 8-bit :


(AL)  (AX) :- (reg8) Quotient
(AH)  (AX) MOD(reg8) Remainder

For 32-bit :- 16-bit :


(AX)  (DX)(AX) :- (reg16) Quotient
(DX)  (DX)(AX) MOD(reg16) Remainder

IDIV mem For 16-bit :- 8-bit :


(AL)  (AX) :- (mem8) Quotient
(AH)  (AX) MOD(mem8) Remainder

For 32-bit :- 16-bit :


(AX)  (DX)(AX) :- (mem16) Quotient
(DX)  (DX)(AX) MOD(mem16) Remainder

21
8086 Microprocessor
Instruction Set

2. Arithmetic Instructions
Mnemonics: ADD, ADC, SUB, SBB, INC, DEC, MUL, DIV, CMP…

CMP reg2/mem, reg1/ mem

CMP reg2, reg1 Modify flags  (reg2) – (reg1)

If (reg2) > (reg1) then CF=0, ZF=0, SF=0


If (reg2) < (reg1) then CF=1, ZF=0, SF=1
If (reg2) = (reg1) then CF=0, ZF=1, SF=0

CMP reg2, mem Modify flags  (reg2) – (mem)

If (reg2) > (mem) then CF=0, ZF=0, SF=0


If (reg2) < (mem) then CF=1, ZF=0, SF=1
If (reg2) = (mem) then CF=0, ZF=1, SF=0

CMP mem, reg1 Modify flags  (mem) – (reg1)

If (mem) > (reg1) then CF=0, ZF=0, SF=0


If (mem) < (reg1) then CF=1, ZF=0, SF=1
If (mem) = (reg1) then CF=0, ZF=1, SF=0

22
8086 Microprocessor
Instruction Set

2. Arithmetic Instructions
Mnemonics: ADD, ADC, SUB, SBB, INC, DEC, MUL, DIV, CMP…

CMP reg/mem, data

CMP reg, data Modify flags  (reg) – (data)

If (reg) > data then CF=0, ZF=0, SF=0


If (reg) < data then CF=1, ZF=0, SF=1
If (reg) = data then CF=0, ZF=1, SF=0

CMP mem, data Modify flags  (mem) – (mem)

If (mem) > data then CF=0, ZF=0, SF=0


If (mem) < data then CF=1, ZF=0, SF=1
If (mem) = data then CF=0, ZF=1, SF=0

23
8086 Microprocessor
Instruction Set

2. Arithmetic Instructions
Mnemonics: ADD, ADC, SUB, SBB, INC, DEC, MUL, DIV, CMP…

CMP A, data

CMP AL, data8 Modify flags  (AL) – data8

If (AL) > data8 then CF=0, ZF=0, SF=0


If (AL) < data8 then CF=1, ZF=0, SF=1
If (AL) = data8 then CF=0, ZF=1, SF=0

CMP AX, data16 Modify flags  (AX) – data16

If (AX) > data16 then CF=0, ZF=0, SF=0


If (mem) < data16 then CF=1, ZF=0, SF=1
If (mem) = data16 then CF=0, ZF=1, SF=0

24
8086 Microprocessor
Instruction Set

3. Logical Instructions
Mnemonics: AND, OR, XOR, TEST, SHR, SHL, RCR, RCL …

25
8086 Microprocessor
Instruction Set

3. Logical Instructions
Mnemonics: AND, OR, XOR, TEST, SHR, SHL, RCR, RCL …

26
8086 Microprocessor
Instruction Set

3. Logical Instructions
Mnemonics: AND, OR, XOR, TEST, SHR, SHL, RCR, RCL …

27
8086 Microprocessor
Instruction Set

3. Logical Instructions
Mnemonics: AND, OR, XOR, TEST, SHR, SHL, RCR, RCL …

28
8086 Microprocessor
Instruction Set

3. Logical Instructions
Mnemonics: AND, OR, XOR, TEST, SHR, SHL, RCR, RCL …

29
8086 Microprocessor
Instruction Set

3. Logical Instructions
Mnemonics: AND, OR, XOR, TEST, SHR, SHL, RCR, RCL …

30
8086 Microprocessor
Instruction Set

‫ مطلوب است خروجی زیربرنامه زیر؟‬:7 ‫مثال‬


MOV AL, 9AH
MOV CL, 3
SHR AL, CL

‫ مطلوب است خروجی زیربرنامه زیر؟‬:8 ‫مثال‬


MOV BX, 0FFFFH
MOV CL, 2
SHL BX, CL

31
8086 Microprocessor
Instruction Set

3. Logical Instructions
Mnemonics: AND, OR, XOR, TEST, SHR, SHL, RCR, RCL …

32
8086 Microprocessor
Instruction Set

3. Logical Instructions
Mnemonics: AND, OR, XOR, TEST, SHR, SHL, RCR, RCL …

33
8086 Microprocessor
Instruction Set

‫ مطلوب است خروجی زیربرنامه زیر؟‬:9 ‫مثال‬


MOV AL, 36H
MOV CL, 2
ROR AL, CL

‫ مطلوب است خروجی زیربرنامه زیر؟‬:10 ‫مثال‬


MOV BH, 72H
MOV CL, 2
ROL BH, CL

34
8086 Microprocessor
Instruction Set

‫ بیتی موجود در‬8 ‫ زیربرنامه شبیه سازی پرچم توازن برای یک عملوند‬:11 ‫مثال‬
. DATA ‫خانه ای در حافظه به آدرس‬

MOV DL, 8

MOV BL, 0

MOV AL, [DATA]

Again: ROL Al, 1

JNC NEXT

INC BL

NEXT: DEC DL

JNZ Again

35
‫‪8086 Microprocessor‬‬
‫‪Instruction Set‬‬

‫تمرین ‪ :2‬زیربرنامه شبیه سازی پرچم توازن برای یک عملوند ‪ 16‬بیتی موجود در‬
‫خانه هایی در حافظه به آدرس های ‪ DATA‬و ‪. DATA+1‬‬

‫‪36‬‬
8086 Microprocessor
Instruction Set

4. String Manipulation Instructions

 String : Sequence of bytes or words

 8086 instruction set includes instruction for string movement, comparison,


scan, load and store.

 REP instruction prefix : used to repeat execution of string instructions.

 String instructions end with S or SB or SW.


S represents string, SB string byte and SW string word.

 Offset or effective address of the source operand is stored in SI register and


that of the destination operand is stored in DI register.

 Depending on the status of DF, SI and DI registers are automatically


updated.

 DF = 0  SI and DI are incremented by 1 for byte and 2 for word.

 DF = 1  SI and DI are decremented by 1 for byte and 2 for word.

37
8086 Microprocessor
Instruction Set

4. String Manipulation Instructions


Mnemonics: REP, MOVS, CMPS, SCAS, LODS, STOS

REP

REPZ/ REPE While CX  0 and ZF = 1, repeat execution of


string instruction and
(Repeat CMPS or SCAS until (CX)  (CX) – 1
ZF = 0)

REPNZ/ REPNE While CX  0 and ZF = 0, repeat execution of


string instruction and
(Repeat CMPS or SCAS until (CX)  (CX) - 1
ZF = 1)

38
8086 Microprocessor
Instruction Set

4. String Manipulation Instructions


Mnemonics: REP, MOVS, CMPS, SCAS, LODS, STOS

MOVS

MOVSB MA = (DS) x 1610 + (SI)


MAE = (ES) x 1610 + (DI)

(MAE)  (MA)

If DF = 0, then (DI)  (DI) + 1; (SI)  (SI) + 1


If DF = 1, then (DI)  (DI) - 1; (SI)  (SI) - 1

MOVSW MA = (DS) x 1610 + (SI)


MAE = (ES) x 1610 + (DI)

(MAE ; MAE + 1)  (MA; MA + 1)

If DF = 0, then (DI)  (DI) + 2; (SI)  (SI) + 2


If DF = 1, then (DI)  (DI) - 2; (SI)  (SI) - 2

39
8086 Microprocessor
Instruction Set

‫ به‬List1 ‫ بایت داده از بلوکی در حافظه به آدرس شروع‬100 ‫ زیربرنامه‬:12 ‫مثال‬


. List2 ‫بلوک دیگری در حافظه به آدرس شروع‬

MOV SI, Offset List1

MOV DI, Offset List2

MOV CX, 100

CLD

REP MOVSB

40
8086 Microprocessor
Instruction Set

4. String Manipulation Instructions


Mnemonics: REP, MOVS, CMPS, SCAS, LODS, STOS

Compare two string byte or string word

CMPS

CMPSB MA = (DS) x 1610 + (SI)


MAE = (ES) x 1610 + (DI)

Modify flags  (MA) - (MAE)

If (MA) > (MAE), then CF = 0; ZF = 0; SF = 0


If (MA) < (MAE), then CF = 1; ZF = 0; SF = 1
CMPSW If (MA) = (MAE), then CF = 0; ZF = 1; SF = 0

For byte operation


If DF = 0, then (DI)  (DI) + 1; (SI)  (SI) + 1
If DF = 1, then (DI)  (DI) - 1; (SI)  (SI) - 1

For word operation


If DF = 0, then (DI)  (DI) + 2; (SI)  (SI) + 2
If DF = 1, then (DI)  (DI) - 2; (SI)  (SI) - 2

41
8086 Microprocessor
Instruction Set

‫و‬ String1=‘Europe’ ‫رشته‬ ‫دو‬ ‫مقایسه‬ ‫زیربرنامه‬ :13 ‫مثال‬


. String2=‘Euorop’

CLD

MOV SI, Offset String1

MOV DI, Offset String2

MOV CX, 6

REPE CMPSB

JZ Equal

Not_Equal: …

Equal: …

42
8086 Microprocessor
Instruction Set

4. String Manipulation Instructions


Mnemonics: REP, MOVS, CMPS, SCAS, LODS, STOS
Scan (compare) a string byte or word with accumulator
SCAS

SCASB MAE = (ES) x 1610 + (DI)


Modify flags  (AL) - (MAE)

If (AL) > (MAE), then CF = 0; ZF = 0; SF = 0


If (AL) < (MAE), then CF = 1; ZF = 0; SF = 1
If (AL) = (MAE), then CF = 0; ZF = 1; SF = 0

If DF = 0, then (DI)  (DI) + 1


If DF = 1, then (DI)  (DI) – 1

SCASW MAE = (ES) x 1610 + (DI)


Modify flags  (AL) - (MAE)

If (AX) > (MAE ; MAE + 1), then CF = 0; ZF = 0; SF = 0


If (AX) < (MAE ; MAE + 1), then CF = 1; ZF = 0; SF = 1
If (AX) = (MAE ; MAE + 1), then CF = 0; ZF = 1; SF = 0

If DF = 0, then (DI)  (DI) + 2


43
If DF = 1, then (DI)  (DI) – 2
8086 Microprocessor
Instruction Set

. String=‘REZA’ ‫‘ در رشته‬Z’ ‫ زیربرنامه جستجوی‬:14 ‫مثال‬

CLD

MOV SI, Offset String

MOV CX, 4

MOV AL, ‘Z’

REPNE SCASB

JE Find

Not_Find: …

Find: …

44
8086 Microprocessor
Instruction Set

4. String Manipulation Instructions


Mnemonics: REP, MOVS, CMPS, SCAS, LODS, STOS

Load string byte in to AL or string word in to AX

LODS

LODSB MA = (DS) x 1610 + (SI)


(AL)  (MA)

If DF = 0, then (SI)  (SI) + 1


If DF = 1, then (SI)  (SI) – 1

LODSW MA = (DS) x 1610 + (SI)


(AX)  (MA ; MA + 1)

If DF = 0, then (SI)  (SI) + 2


If DF = 1, then (SI)  (SI) – 2

45
8086 Microprocessor
Instruction Set

4. String Manipulation Instructions


Mnemonics: REP, MOVS, CMPS, SCAS, LODS, STOS

Store byte from AL or word from AX in to string

STOS

STOSB MAE = (ES) x 1610 + (DI)


(MAE)  (AL)

If DF = 0, then (DI)  (DI) + 1


If DF = 1, then (DI)  (DI) – 1

STOSW MAE = (ES) x 1610 + (DI)


(MAE ; MAE + 1 )  (AX)

If DF = 0, then (DI)  (DI) + 2


If DF = 1, then (DI)  (DI) – 2

46
8086 Microprocessor
Instruction Set

.‫ را پاک نمایید‬Buffer ‫ بایت از حافظه به آدرس شروع‬100 :15 ‫مثال‬

MOV DI, Offset Buffer


MOV CX, 100
CLD

MOV AL, 00H


REP STOSB

.‫ را پاک نمایید‬Buffer ‫ بایت از حافظه به آدرس شروع‬100 :16 ‫مثال‬

MOV DI, Offset Buffer


MOV CX, 50
CLD

MOV AX, 0000H


REP STOSW

47
8086 Microprocessor
Instruction Set

5. Processor Control Instructions


Mnemonics Explanation
STC Set CF  1

CLC Clear CF  0

CMC Complement carry CF  CF/

STD Set direction flag DF  1

CLD Clear direction flag DF  0

STI Set interrupt enable flag IF  1

CLI Clear interrupt enable flag IF  0

NOP No operation

HLT Halt after interrupt is set

WAIT Wait for TEST pin active

ESC opcode mem/ reg Used to pass instruction to a coprocessor


which shares the address and data bus
with the 8086

LOCK Lock bus during next instruction 48


8086 Microprocessor
Instruction Set

6. Control Transfer Instructions

Transfer the control to a specific destination or target instruction


Do not affect flags

 8086 Unconditional transfers

Mnemonics Explanation
CALL reg/ mem/ disp16 Call subroutine

RET Return from subroutine

JMP reg/ mem/ disp8/ disp16 Unconditional jump

49
8086 Microprocessor
Instruction Set

6. Control Transfer Instructions

 8086 signed conditional  8086 unsigned conditional


branch instructions branch instructions

Checks flags.

If conditions are true, the program control is


transferred to the new memory location in the same
segment by modifying the content of IP.

50
8086 Microprocessor
Instruction Set

6. Control Transfer Instructions

 8086 signed conditional  8086 unsigned conditional


branch instructions branch instructions

Name Alternate name Name Alternate name


JE disp8 JZ disp8 JE disp8 JZ disp8
Jump if equal Jump if result is 0 Jump if equal Jump if result is 0

JNE disp8 JNZ disp8 JNE disp8 JNZ disp8


Jump if not equal Jump if not zero Jump if not equal Jump if not zero
JG disp8 JNLE disp8 JA disp8 JNBE disp8
Jump if greater Jump if not less or Jump if above Jump if not below
equal or equal
JGE disp8 JNL disp8 JAE disp8 JNB disp8
Jump if greater Jump if not less Jump if above or Jump if not below
than or equal equal
JL disp8 JNGE disp8 JB disp8 JNAE disp8
Jump if less than Jump if not Jump if below Jump if not above
greater than or or equal
equal
JLE disp8 JNG disp8 JBE disp8 JNA disp8
Jump if less than Jump if not Jump if below or Jump if not above
or equal greater equal 51
8086 Microprocessor
Instruction Set

6. Control Transfer Instructions

 8086 conditional branch instructions affecting individual flags

Mnemonics Explanation

JC disp8 Jump if CF = 1

JNC disp8 Jump if CF = 0

JP disp8 Jump if PF = 1

JNP disp8 Jump if PF = 0

JO disp8 Jump if OF = 1

JNO disp8 Jump if OF = 0

JS disp8 Jump if SF = 1

JNS disp8 Jump if SF = 0

JZ disp8 Jump if result is zero, i.e, Z = 1

JNZ disp8 Jump if result is not zero, i.e, Z = 1

52
8086 Microprocessor
Instruction Set

.100 ،... ،2 ،1 ،0 ‫ زیربرنامه جمع اعداد‬:17 ‫مثال‬

MOV AX, 0

MOV BX, 0

L1: INC BX

CMP BX, 100

JA EXIT

ADD AX, BX

JMP L1

EXIT: MOV [S1], AX

53
8086 Microprocessor
Instruction Set

.50 ،... ،2 ،1 ،0 ‫ زیربرنامه جمع مربعات اعداد‬:18 ‫مثال‬

MOV DX, 0

MOV BL, 1

L2: CMP BL, 50

JG EXIT

MOV AL, BL

MUL BL

ADD DX, AX

INC BL

CMP L2

EXIT: MOV [S2], AX 54

You might also like