Professional Documents
Culture Documents
95
95
95
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
9E9BCG 5DHI K EL2
N9O6 3 >P QR 12:
76 BC>D
-1-
: )(anas_kurdy@hotmail.com
http://www.arabteam2000.com
.
) :
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
: 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
-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
INTERNAL
COMUNICATION
REGISTERS
TEMPORARY REGISTERS
INSTRUCTION QUE
O BUS
1 2 3 4 5 6
)(8 BITS
EU
CONTROL
SYSTEM
ALU
FLAGS
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
: 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
.
.
.
1 00000h FFFFFh
20 )
( 16
!!
Physical Address PA
:
(1
(2
- 12 -
: )(anas_kurdy@hotmail.com
http://www.arabteam2000.com
:
(1
.
(2
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
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
- 21 -
: )(anas_kurdy@hotmail.com
http://www.arabteam2000.com
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
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
. 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
-
.
(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
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
: :
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
-
. :
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
:
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
. CF
OF .
OF,CF
RCR D,count
CF
RCR
CF
. 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
: )(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
: )(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
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 -