95

You might also like

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

(anas_kurdy@hotmail.

com)    :
 
http://www.arabteam2000.com


    
  
http://www.arabteam2000.com

 "!    

    $ %& *
)+ ,- $ /0 1  34 %5 6
 3 3
:89:
<9  
 +3 15 !>? 35 A3 $ 5 
+ ,-

C
  E + 
12 3456 76 92:
@ ?> = ;
www.kutub.info
9E 9BCG 5DHI K EL2
N9O6 3 >P QR 12:
76 BC>D

-1-


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

 $4> 8 +




.
) :
1 9
(.

.
:

) ( 10
19 20
99
.100

A F
:
} { 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F


!!
:
0,1,2,,9,A,B,,F,10,11,12,13,14,,19,1A,1B,1C,,1F,20,21,,29,2A,2B,,2F,30,,99,9
A,9B,,9F,A0,A1,A2,,A9,AA,AB,AC,,AF,,FF,100,,119,11A,11B,,199,19A,



on . off
}. {0,1
:
0000,0001,0010,0011,0100,0101,0110,0111,1000,1001,1010,1011,1100,1101,1110,1111

-2-


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com


:
-1 .
-2 .
-3 .
:
: 1 0100 :
(0100)b = 0 2 0 + 0 21 + 1 2 2 + 0 2 3 = 0 + 0 + 4 + 0 = 4

: 2 33A :
2

(33 A)h = 10 16 + 3 16 + 3 16 = 10 + 48 + 768 = 826

: 3 30 :
:
128 64 32 16
8
4
2
1

30
16+8+4+2 16 8 4 2
.

:
-1 .
-2 .
-3 .
: -30 :
(30)d = 0001 1110
=> 1110 0001

=> 1110 0010

-3-


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

 $4<
:
: . SOFTWARE

: HARDWARE

C.P.U

:
(1 : .
(2 : .
(3 : .
(4 : .

8086
ADDRESS BUS

)(20 BITS

DATA BUS

CS
DS
SS
ES
IP

AH
BH
CH
DH

GENERAL
REGISTERS

SP
BP
DI
SI

)(16 BITS

BUS
CONTROL
LOGIC

8 7
AL
BL
CL
DL

15

ALU DATA BUS


)(16 BITS

INTERNAL
COMUNICATION
REGISTERS

TEMPORARY REGISTERS

INSTRUCTION QUE
O BUS

1 2 3 4 5 6

)(8 BITS

EU
CONTROL
SYSTEM

ALU

FLAGS

BUS INTERFACE UNIT


)(BIU

EXECUTION UNIT
)(EU

8086 :
-4-


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

(1 ) : ( Execution Unit . EU
(2 ) : ( Bus interface Unit . BIU
BIU :
.
EU .
.
: :
(1 : DATA BUS .
(2 : ADDRESS BUS .
(3 : CONTROL BUS .
Bus Interface Unit

. :
.
BIU .
BIU ) (

First In Last Out .FIFO
EU )
8086 CPU 8086
(.
EU
( )
)
BIU (.
: .
Execution Unit

:
(1 .
(2 .
(3 .
(4 .
(5 .EU
-5-


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

EU BIU
) ( EU BIU
.
EU EU
) : ( .
2
. AX,BX,CX,DX,SI,DI,BP,SP

8 ) (

.
0 FF .
16 20.
) 100 ( 100 100

100
.
20 ) 20 ( 20
:
2 20 = 1048576 1MB

8086 .

) (


) ( :
(1 Code Segment CS
- . CS

) IP (Instruction Pointer
.
(2 Data Segment DS

. DS
SI .
-6-


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

(3 Stack Segment SS



)) SP=(SP-2 (

.
) SP (
SS

)) SP=(SP+2 (
BP
.
) Last In First Out LIFO

00000h

Stack

FFFFFh
Memory

( :
Stack Pointer SP
) ( .
2 ) ( SP 2

SP 2 .
(4 Extra Segment ES

.
Destination Index DI .
:
.

:5 Registers
8086 16 :
(1 IP
(2 . AX,BX,CX,DX
(3 . SI,DI,BP,SP
(4 . CS,DS,SS,ES
16
9 .
:

-7-


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

:
16 2 :
(1 : CS
.
(2 : DS
.
(3 : SS
.
(4 : ES
.
00000h
CS

15

0
CS

64 KB

DS

DS
SS

SS

ES

ES

FFFFFh

:

16 2 :
(1 : Source Index SI DS
.
(2 : Destination Index DI ES
DI .
(3 : Stack Pointer SP
SP
SS SP
.
-8-


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

(4 : Base Pointer BP SS
.

:

:
(1 Accumulator . A
(2 Base . B
(3 Count . C
(4 Data . D
16 X
8 H,L :
L . AL
H . BH
. And, Add


C ) (
Instruction Pointer IP
BIU
IP ) (.
Flags Register
16 :
5 4 3 2 1 0
9
8
7
6
CF

PF

AF

ZF

SF

TF

15 14 13 12 11

10
OF DF IF

CF, PF, AF, ZF, SF, OF


. DF, IF, TF
(
Set
Reset :

: Carry Flag

-9-


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

) ( ) (
.
.
:
:

CF=1
.
:

0
0

1
1

2
1

3
0

4
0

5
0

6
1

CF=1

:


)(
CF=1 .

0
1

1
1

2
0

3
1

4
1

5
0

6
1

2
)(.

: Parity Flag PF
)
( .
PF ) 2 (
.

: Auxiliary Flag AF

) 2 ( 3 4
AF=1 )( . AF=0
:
- 10 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

AF=0

0
0

1
1

2
1

3
0

4
0

5
0

6
1

: Zero Flag ZF
.
.

: Sign Flag SF
SF Set .
SF Reset .
:

.
SF .
:
128 127+
32768 32767+

: Overflow Flag OF

OF .
:
(1 .
(2 .
(3 .
(4 .
: CF
.
- 11 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

ZF=1

.

: Trap Flag TF


.

: Interrupt Flag IF

) ( .
21
:
.

: Direction Flag DF
.
.
.

A  3 ! HC G9

1 00000h FFFFFh
20 )
( 16
!!

Physical Address PA
:
(1

(2

: Very good Tip


!!
: 192 1920
192 x 10 = 1920

10 h = 16 d


- 12 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

:
(1
.
(2

) = PA (Physical Address x 10h ) + (


:
CS 1B6C IP A0
:
:
PA = ( CS x 10h ) + IP = 1B6C x 10h + A0 = 1B760
1B6C
IP

A0

1B760

: PA DS = 1000h . SI = 1F
:
PA = ( 1000 x 10 ) + 1F = 1001F

) (
) ( ) (
:

-1 ) ( .
-2 .
-3 .
:
41000h DS . SI
- 13 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

: SI 1000h .
( 3-2
DS = 4000h

-1 .
-2 .
: PA = 41000h
:
SI=0
DS=4100


4000:1000

- 14 -

4100:0000

)1
)2

(anas_kurdy@hotmail.com)    :
 
http://www.arabteam2000.com

8086 J   K


00000h

IP
CS

64KB

64KB

64KB

64KB

DS
SS
ES
AH

AL

AX

BH

BL

BX

CH

CL

CX

DH

DL

DX
SP
BP
SI
DI

FFFFFh

MPU 8086

- 15 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

!<  >3
:
00000h FFFFFh 16

64KB
16 CS, DS, SS, ES 16
.
:

DS :
Mov AX,A000
Mov DS,AX

.
8086 :
- .

BIU
:

: .
:
MOV AX,BX

) BX ( ) AX (
AX BX :

MOV AX,BX

8B

01000

C3

01001

XX

01002

0002

IP

0100

CS

MOV AX,BX

8B

01000

C3

01001

XX

01002


ABCD
ABCD

AX
BX

0000

IP

0100

CS

XXXX
ABCD

AX
BX

IP CS

) 8BC3 ( .
- 16 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

:

) 2 (.
MOV AL,15 : 15h
.

MOV AL,15

B0

01000

15

01001

XX

01002

0002

IP

0100

CS

MOV AL,15

B0

01000

15

01001

XX

01002

AL
15

AX

0000

IP

0100

CS

AL
XX

AX

:

EA = Effective memory Address 16
DS . ES
:
]MOV CX,[1234
DS = 200 :
PA = 200 x 10h + 1134 = 03243h
03234h CL

. CH

MOV CX,Beta

8B

01000

0E

01001

34

01002

12

01003

XX

01004

4000

IP

0100

CS

0200
BEED

MOV CX,Beta

8B

01000

0E

01001

34

01002

12

01003

XX

01004

DS
CX

ED

03234

BE

- 17 -

ED
BE

03234

0000

IP

0100

CS

0200
XXXX

DS
CX


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

: :
) ( BX,BP
. SI,DI
:
] MOV AX,[SI
SI . DS PA = ( DS x 10h ) + SI SI = 1234 DS = 200
PA = ( 0200 x 10 ) + 1234 = 03234 03234
AL AH
:

]MOV AX,[SI

8B

01000

0E

01001

XX

01002

ED

0000

IP

0100

CS

0200

DS

]MOV AX,[SI

8B

01000

0E

01001

XX

01002

03234

BE

0000

IP

0100

CS

0200

DS

AX BEED
1234

SI

ED
BE

03234

AX XXXX
1234

SI

:
) ( disp BX
BP DS SS :
PA = ( DS X 10h ) + BX + disp = ( SS x 10h ) + BP + disp

MOV
3412

MOV [BX].Beta,AL
8870 BX Beta


) ( ) .( Beta
AL Beta 1234h
:
PA = (DS x 10h ) + BX + disp = 02000 + 1000 + 1234 = 04234h

- 18 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

MOV
]AL,array[SI

8A

01000

44

01001

34

01002

12

01003

XX

01004

0000

IP

0100

CS

0200

DS

XX BE

AX

2000

SI

MOV
]AL,array[SI

8A

01000

44

01001

34

01002

12

01003

XX

0100

CS

0200

DS

XXXX

AX

2000

SI

01004

02000

XX

02000

02001

XX

02001

0000

IP

05234

BE

05234

BIU EU
AL 04234h
.
:
DI SI
) disp ( displacement
.
: 8A443412 ]. MOV AL,array[SI
array
:
PA = ( DS x 10h ) + EA
; EA = ( SI ) + disp => EA = 2000 + 1234 = 3234h
PA = ( DS x 10h ) + EA = 02000 + 3234 = 05234h

MOV
[BX].Beta,AL

8A

01000

44

01001

34

01002

12

01003

XX

01004

MOV
[BX].Beta,AL

88

01000

07

01001
01002

4000

IP

0100

CS

0200

DS

34

- 19AX

12

01003

XX

01004

BE ED
2000

BX

XX

02000

XX

02000

XX

02001

XX

02001

0000

IP

0100

CS

0200

DS

BE ED

AX

1000

BX


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

05234h AL
.
: :

.
: ] MOV AH,[BX].Beta[SI :
EA = BX + Beta + SI
PA = ( DS x 10h ) + EA = 02000 + 4234 = 06234h

MOV AH
],[BX].Beta[SI

8A

01000

20

01001

34

01002

12

01003

XX

01004

XX

02000

XX

02001

0000

IP

0100

CS

0200

DS

BE XX

AX

1000

BX

2000

SI

MOV AH
],[BX].Beta[SI

8A

01000

20

01001

34

01002

12

01003

XX

01004

XX

02000

XX

02001

BE

0000

IP

0100

CS

0200

DS

AX XX XX
1000

BX

2000

SI

06234

BE

06234

AH = BEh
. 06234h
:
- 20 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

8086
.
MOVS SI DS
DI ES . SI DI .
:
. I/O I/O

. DX
:
]IN AL,15h  IN AL,[15h
15h I/O .AL

:
]IN AL,[DX
:
DX

DX = 1234h 1234h .AL

- 21 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

  


    

http://www.arabteam2000.com
"!      

34 %5 6
 3 3   1 $ /0 ,-+ *
) & $ %    

:89:
,-+
  A3 $ 5  35?>!  15 +3
  <9

C ?>
! 6  8086 J

- 22 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

  E +

ALPHANUMERIC .
)( :
; :
.
.
object code . source code

. : opcode = operation

code . operands
.
8086
mnemonic
ADD SUB . MOV


BX AX ADD AX,BX
BX AX AX BX AX .

- 23 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

! 6 1L  8086 J


8086 117
Mov 28

.
-

:
(1 Mov

MOV D,S
SD


S,D
:
MOV

Acc

Mem

Reg

Imm

Seg-reg

Reg16

16

Mem16

Source

Destination

Acc
Mem
Reg
Mem
Reg
Imm
Imm
Reg16
Mem16
Seg-reg
Seg-reg

Mem
Acc
Reg
Reg
Mem
Reg
Mem
Seg-reg
Seg-reg
Reg16
Mem16

MOV

-1 MOV :
MOV
Mem Mem
MOV.
-2 . MOV DS,1000
:

MOV AX,1000
MOV DS,AX

-3
MOV DS,ES
MOV AX,ES
- 24 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

MOV DS,AX
MOV AL,[SI] : SI AL
PA = DS x 10h +

SI . AL
(2 XCHG

SD
DS

XCHG D,S


. XCHG
:

XCHG

Reg16
Reg
Reg

Acc
Mem
Reg

XCHG AX,BX

AX .BX
XCHG [SUM],BX

SUM . BX
(3 XLAT

AL BX
DS AL XLAT
AL BX
. AL

]( DS x 10h ) + [AL+BX
AL

XLAT

XLAT

:
1 9
1 ) 2 (4
DS
DS . 100
4
100
1
AL = 16 :
4
9
(1 AL = 3 . BX = 100
16
(2 . XLAT
AL = 16 .

109

- 25 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

(4 LEA, LES, LDS


. LEA LDS
DS LES . ES
:

Mem16 reg16

Mem32 reg16
Mem32+2 DS

Mem32 reg16
Mem32+2 ES

LEA reg16,mem16

LDS reg16,mem32
DS
LES reg16,mem32


ES

LEA
LDS

LES

00
10

100

3F
55
00
10

200

30
40
00
30

300

LEA SI,[100] => SI = 1000


LDS SI,[200] => SI = 553F
DS = 1000
LES DI,[300] => DI = 4030
ES = 3000

-
.
(1
:

S+DD
Carry CF

ADD D,S

ADD

- 26 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

S + D + CF D
Carry CF

ADC D,S

ADC

D+1 D

INC D

INC

AF,CF

AAA

AAA


BCD

DAA

DAA

OF

ADD ADC

ADD, ADC
:

Reg
Mem
Reg
Imm
Imm
Imm

Reg
Reg
Mem
Reg
Mem
Acc
D

INC :

Reg8
Reg16
Mem

: AX = 4F3Dh BX = FD81h CF = 1 ADC AX,BX


.
:

1111 111
1
AX = 0100 1111 0011 1101 b
BX = 1111 1101 1000 0001 b
= CF
0001 b
0100 1100 1011 1111 b
1
CF

:
PF = 0
AF = 0 3 4 )
(
SF = 0 ) (
CF = 1
OF = 0
- 27 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

: MSB

OF = 1 :
DAA
) BCD AL

( AX : BCD
9

9
10

0
9
10

1
9
10

2
9
10

3
4

9
10

15
16

9
10

15
16

18

5
9
10

15
16

6
9
10

15

7
9
10

8
9

0 9
7+2=9 .
10 15 6
9+5=E 6 E 6+E=14

.
16 18
.
AL AL = Bit7 Bit0
:
1) if Bit3 Bit2 Bit1 Bit0 of AL > 9 or AF = 1
then AL = AL + 6 , AF = 1
2) if AL > 9Fh or CF = 1
then AL = AL + 60h , CF =1
: AL = 28 BCD BL = 68 BCD

:
ADD AL,BL
DAA
- 28 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

:
1000 b
1000 b +
0000 AL
0110
+
0110 => AL = 96 BCD
AF = 1

0110

28 BCD = 0010
68 BCD = 0110
1001
CF = 0
1001

AAA

) ( AL
:
or AF =1

if Bit3 Bit2 Bit1 Bit0 of AL > 9


then AL = AL + 06
AL = AL and 0Fh
AH = AH + 1
AF = 1
CF = 1
Else AL = AL and 0Fh
AH = 00

: AL =32h = 2 ASCII BL = 34h = 4 ASCII :


ADD AL,BL
AAA

: :
AL = 66h

AL = 0011 0010
BL = 0011 0100 +
0110 0110

AL = 06h , AH = 00

AF = 0 3 ) 4 (
(2
:

D-SD
burrow CF
D - S - CF D
Carry CF
D-1 D
0DD
1 CF

SUB D,S

SUB

SBB D,S

SBB

DEC D

DEC

NEG D

NEG

- 29 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com


OF

DAS


BCD

DAS




AAS
AAS
AF, CF

: SUB, SBB
ADD,ADC DEC
INC NEG . Reg, Reg16, Mem, Mem16
: SI = 0018h DS = 2F00h 2F018h
[2F018] = 0400h . SUB [SI],03F8h
:
) ( )
( .
Destination = 0400h = 0000 0100 0000 0000 b
Source = 03F8h = 1111 1100 0000 1000 b +
0000 0000 0000 1000 b

) ( :
03F8h :
(1 0000 0011 1111 1000
(2 1111 1100 0000 0111
(3 03F8h = 1111 1100 0000 1000

PF = 0 : .
AF =1 ) ( ) (.
ZF = 0 .
SF = 0 .MSB
CF = 0 ) (.
OF = 0 .
DAS

BCD AL
:
1) if Bit3 Bit2 Bit1 Bit0 of AL > 9 or AF = 1
- 30 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

then AL = AL 06 , AF = 1
2) if AL > 9Fh or CF=1
then AL = AL 60h , CF = 1

: AL = 86 BCD AH = 07 BCD :
SUB AL,AH
DAS

+
=> AL = 7Fh

AL = 1000 0110 b
AH = 1111 1001 b
1 0111 1111 b

:
AF = 1 .
CF = 0
1 AL = 79h , AF = 1
AAS

ASCII AL :
if Bit3 Bit2 Bit1 Bit0 of AL > 9 or AF = 1
then AL = AL 06h , AL = AL and 0Fh
AH = AH 01
, AF = 1 , CF = 1
Else AL = AL and 0Fh , AH = 00

:
AL = 38h = 8 ASCII BL = 35h = 5 ASCII :
SUB AL,BL
AAS

:
AL = 0011 1000 b
BL = 1100 1011 b +
1 0000 0011 b => AL = 03h

AF = 0
CF = 0
AL = 03h , AH = 00
(3
BCD .
:

- 31 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

AL.S8 AX
AX.S16 DX,AX
Q[AX/S8] AL
R[AX/S8] AH
Q[(DX,AX)/S16] AX
R[(DX,AX)/S16] DX

MUL S

MUL

DIV S

DIV

: S8 R
Q .
: Q ) ( FF Q ) (
FFFFh .
: :
IMUL .
IDIV .
. MSB
) (:

SF, ZF, PF

Q[AL/10d] AH
R[AL/10d] AL

AH.10d + AL AL
00 AH

MSB of AL
All bits of AH
MSB of AX
All bits of DX

AAM

AL
BCD

AAM

AAD

AX
AX

.

AAD

CBW

CBW

CBW

CWD

: S
Mem16, Mem8, Reg16, Reg8 D .
: 8 AL 8 .
AX AH
) ( . CBW
- 32 -

15

0
0


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

32 16 16 AX 16
.CWD
:
.
AAM
. AAM
: BL = 09 AL = 07 :
MUL BL
AAM

:
AX
AX

AX = 00 07
BX = 00 09
MUL 00 3F
AAM 06 03

AAD :
.
) AX = 0604h ( ) AAD
( :
=> AX = 0040h

AL = 06 x 10d + 04h = 64d = 40h


AH = 00h

-
. :

S.D D

AND D,S

AND

AND

S+DD

OR D,S

OR

OR

S+DD

XOR D,S

XOR

XOR

NOT

NOT


XOR, OR, AND :
DD

NOT D

-
- 33 -

S
Reg
Mem
Reg
Imm
Imm
Imm

D
Reg
Reg
Mem
Reg
Mem
AX


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

SAL/SHL D,count

SAL/SHL

OF,CF
0

CF

D CF count
.
: OF . OF = 1


SHR D,count

OF,CF
0

CF

SHR

D CF count
.
: OF OF = 1

SAR D,count

SAR

CF

D CF count
) MSB (.

- 34 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

: : SHL, SAL count = N


2 n . 2
: SHR 2 count LSB = 0
LSB = 1 . CF
: :
3.(AX) + 7.(BX) DX
MOV SI,AX
; copy AX into SI
SAL SI,1
; 2 AX
ADD SI,AX
; 3 AX
MOV DX,BX
; copy BX into DX
MOV CL,03H
; load shift count
SAL DX,CL
; 8 BX
SUB DX,BX
; 7 BX
ADD DX,SI
; result

:
Count count
CL : count
:

D
Reg
Reg
Mem
Mem

Count
1
CL
1
CL

SAL AX,1

<= count =/ 1 :
MOV CL,count
SAL AX,CL

count ] [1,FF .

-
:

OF,CF

ROL D,count

ROL

CF

D . count MSB

LSB . CF
OF .

- 35 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

ROR D,count

OF,CF

ROR

CF

D . count LSB
MSB . CF
OF .



CF

RCL D,count

OF,CF

RCL

CF

ROL CF LSB MSB

. CF
OF .


OF,CF

RCR D,count


CF

RCR

CF

ROR CF MSB LSB

. CF
OF .

-
:

- 36 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

Flags AH

AH

LAHF

SAHF

AH

SAHF

CF

0 CF

CLC

CF

CLC

CF

1 CF

STC

CF

STC

CF

CF CF

CMC

CMC

IF

0 IF

CLI

IF

CLI

IF

1 IF

STI

IF

STI


AH


OF

AH Flags
AH

LAHF

CF

-
CMP 8 16 :


DS


CMP
CMP D,S

S D
) D
( .
:
S
Reg
Mem
Reg
Imm
Imm
Imm

D
Reg
Reg
Mem
Reg
Mem
Acc

.
: .

.
(1
:

JMP operand

JMP

- 37 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com


operand



CS IP IP.
:
Operand
Short_Label
Near_Label
Memptr16
Regptr16
Far_Labrl
Memptr32



16
16

32


(
8 ) (Disp
IP :
IP = ]) + IP ( + 8
16 [
IP CS .
:

IP = 0112h
JMP disp ; disp = 0F2h

) ( IP :
) ( ) = 0112 + 2 + FFF2 = 0106h ( = IP + 2 + disp address

. 0106 < 0112
:
IP = 0112h
JMP 04
Address = 0112 + 2 + 0004 = 0118h

0118 > 0112 .


CS . address
: 8 -126 +129
2 -128 +127 .
- 38 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

16 32KB
.
:
JMP label
label ) 16 ( IP

IP CS .
(
16 16 . 32 KB
:
JMP BX

BX BX IP
CS . IP
:
BX = 0200h

CS = 0100h
PA = ( CS x 10h ) + BX = 01000 + 0200 = 01200h
] JMP [SI
:

SI IP
CS
. DI, SI, BX:

( 32 . 16
IP CS 16 CS
.
:
JMP farlabel

farlabel 32 ) IP .( CS
(
32 .
.
:
] JMP farseg [DI DS, DI
:
:
DI = 0200h
DS = 0100h

PA = DS x 10h + DI = 01000 + 0200 = 01200h


- 39 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

:
IP IP = 3010h

Content

) Address ( h

CS CS = 0400h

10

01200

30

01201

PA = CS x 10h + IP = 07010h

00

01202

04

01203

(2
:

cc


18 :

Jcc

Jcc

CF = 1

JC

CF = 0

JNC

OF = 1

JO

OF = 0

JNO

SF = 1

JS

SF = 0

JNS

CX = 0000

JCXZ

JE/JZ

JGE/JNL

JA/JNBE

JAE/JNB

JB/JNAE

JBE/JNA

JG/JNLE

JLE/JNG

JNE/JNZ

Parity / PF = 0

JNB/JBO

/Parity PF = 1

JP/JPE
- 40 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

:

) ( A ) ( B ) ( L ) ( G
ABCDh 1234h .
.
ABCDh 1234h ABCDh .1234h

- 41 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

 JSUBROUTINES !4


.


:
subroutine

Main program
2

1
CALL SUB
6

7
3

5
4

CALL SUB

8
9
RETURN

:

IP CS
.

. :


operand

CALL operand
.
IP CS
5 :
- 42 -

CALL


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com
OPERAND
Near_pro
Memptr16
Regptr16
Far_proc
Memptr32

)
( IP
IP . 2 IP
.
IP ) ( IP
16
:
CALL near_proc
]CALL [SI
CALL BX

) (
Memptr32 Far_pro .
IP . CS

CS IP operand IP . CS
CS IP . Far_proc
32 ) ( opcode .
:
CALL 01234321 IP CS CS
. CALL
. IP 32
)
] JMP farseg [DI (.

RET :

RET/RET operand

- 43 -


RET


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

IP IP CS )
( . Far_pro ) (operand
RET . SP
16.

-
PUSH
. POP
.

.
:
PUSH xx
PUSH yy

PUSH zz
---------------------

----------POP zz



POP xx
RET LIFO
: .
POP yy

PUSH, POP

))S ((SP

PUSH S

PUSH

((SP)) D

POP D

POP

SS SP


.

.

- 44 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

CS IP .
SS . SP . SS
SS SP ) (
. FFFFh .
SS ) ( .
2
.

2 .
SS FFFFh )(
SS 0000h
. SS SP
SP . 2
.
: :
34

12

AX

AA

BB

BX

77

66

Tos
Bos
12h

34

12

77

66

AX

66

0105C

88 99

88 99

0105A

AA BB

AA BB

01058 AA BB

12

34

12

34

67

45

67

45

88 99

TOS

77

23

01

01056

67

45

01054

89 AB

89 AB

89 AB

01052

CD EF

01050 CD EF

01050 CD EF

01056

SS

05

01

SS

05

01

SS

05

01

SP

0A

01

SP

60

01

SP

08

01

)(3

)(2
- 45 -

)(1

TOS


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

0105h
SS FFFFh : BOS
A (bos) = 0105h + FFFF = 1104Fh
0008h

:
A (tos) = 01050 + 0008 = 01058h

01058h
) : ( .
. BBAAh
. PUSH AX AX 1234h PUSH
SP 2 SS
. 01056h AX .
) AX ( 12h
) AX ( 34h .

POP AX POP BX . .

-
.
. :

LOOP short_label

LOOP

CX
CX . IP = IP + disp disp
) 16 (.

LOOPE/ /

LOOPZ

LOOPE/
LOOPZ

CX
CX ZF .
.
- 46 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

LOOPNE/ /

LOOPNZ


LOOPNE/
LOOPNZ

CX CX
ZF .
.
:
) (
8,9,4,5,7 : . 4
CX = 5 . :
CX =/ 0

MOV CX, 5
------------------------------------------LOOPNE Nxt

. ZF = 1

Nxt:

- 11
.
SCAN
.
:

MOVS operand

MOVS

: DS:SI ES:DI:
SI 1 or 2 SI
DI 1 or 2 DI

MOVSB

MOVSB

MOVSW

MOVSW

CMPS operand

CMPS

- 47 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

:
:
) ( ( DS x 10h ) + SI ) ( ( ES x 10h ) + DI
SI 1 or 2 SI
DI 1 or 2 DI

SCAS operand


)SCAS(B or W

:
) ( AL or AX ) ( ( ES x 10h ) + DI
DI 1 or 2 DI

LODS operand

)LODS (B or W

) ( ( DS x 10h ) + SI ) ( AL or AX
SI 1 or 2 SI

STOS operand

)STOS(B or W

:
) ( AL or AX ) ( ( ES x 10h ) + DI
DI 1 or 2 DI

- 48 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

- 12
.
.
:

MOVS, STOS

REP

CX 0

CMPS, SCAS


ZF=1, CX0

REPE/REPZ

CMPS, SCAS


ZF=0, CX0

REPNE/REPNZ

:
:
SI = 0100h
DI = 0110h

DS = 0200h
ES = 0400h

:
MOV CX,20h
REP MOVSB

CX 20h = 32d 32
DS SI ES . DI

- 13
SI DI
DF DF = 0 .
:


DF

0 DF

CLD

DF

CLD

DF

1 DF

STD

DE

STD

- 49 -


  :    )(anas_kurdy@hotmail.com
http://www.arabteam2000.com

- 14 IN OUT

(port) Acc

IN Acc,port


IN

((DX)) Acc

IN Acc,DX

IN

)Acc (port

OUT port,Acc

OUT


OUT DX,Acc
))Acc ((DX
port DX .
:
AAh, A9h
B000h .
:
OUT

]IN AL,[0AAh
MOV AH,AL
]IN AL,[0A9h
MOV DX,0B000h
OUT DX,AX

- 50 -

You might also like