You are on page 1of 99

www.ParsBook.

org


:
:
-1 - 8086 ) (
-2 - :
-3 - - -
-4 - -
.
:
PC )(hardware programming : ) C (
:
:
. .
) (CPU .
:

www.ParsBook.org

www.ParsBook.org

1,0 .
(, X86, Apple) .

) C (

low level


.
: .

.

)(

: CPU CPU
.

www.ParsBook.org

www.ParsBook.org

.
.
(CPU Instruction set) CPU
. Intel down ward-compatible .
8086 80286 80386
:

: n
: m
az,a1,a0 ...
: b

)(
)(

www.ParsBook.org

www.ParsBook.org

16 10 15 A F
(11001)2=25 :
) (
: 10 2
2 . 2
2 . 2
.

:
.

.

www.ParsBook.org

www.ParsBook.org

: 8 3 4 4
.

(01111101 / 0110) = (7 / 6)16


( 25 / 03)16 = (1111
00100101 / 0000
)0011
{{{
{{

2 : 16
10 :
111

11111
11110 +
111101

0 + 1 = 1
1 + 0 = 1

0 + 0 = 0
1 + 1 = 10

:
.

:
- 2 -1 -2
0-255 byte 8

word 16 0-65535
Double word

16) 2 32 64 ( ... .
.

www.ParsBook.org

0-2-1

www.ParsBook.org

19 8

: :
-1 - .
-2 1
-3 2
:
19

10010011

-19
:

-1 .

00000

10000

-2 .
M :
-1) -1

(-1) -2

( 2

: 1
. 8
.
00000
11111
: 2 :
-1 -2 1 -3

www.ParsBook.org

www.ParsBook.org

} 1

,2

{2

: - ALU
ALU CPU
.

: ,-

.
:

www.ParsBook.org

www.ParsBook.org

-1 -
.
-2 - CPU
.
-3 RD -
CPU WR - .
:

.
:

16 80286,8088,8086
32 80486,80386

:
CPU ]) [Execution Unit (EU [Bus
]) INTerface unit (BIU . EU
ALU .
) (BIU
BIU .
Prefetih
.

BIU

EU

www.ParsBook.org

www.ParsBook.org

IP
CS
DS
SS
ES

AH
BH
CH
DH

AL
BL
CL
DL
SP
BP
SI
DI

.
.
.
.
N


ALU

16 :

.

AX

www.ParsBook.org

www.ParsBook.org

BX

:
: Ax .

AL

AX

AH

: Bx
0

8 7

BL

15
BX

BH

: Cx
.


CH

CL

CX

: Dx
.
0

8 7
DL

15
DH

DX

: 16 .
64k . :
-1 Code segment
-2 Data segment

www.ParsBook.org

www.ParsBook.org

-3 Stack segment
-4 Extra segment
: 64k
Cs
:
DS .
: .
. SS .
: .
Es .

:

16
.
Es,Cs,Ds,SS
.

Ss
Ds
Cs
Es

www.ParsBook.org

www.ParsBook.org

: 16 2 )(1 meg 64k 1 meg


.
:
.
0000H ffffH .
24030H Ds=2403H ) 26H (38
38 .

2403 :

0026 . :
24030
0026

24056

] MOV AL,[0012H 2403:0012 AL


.
24030
0012
24042

CS : IP .
CS : IP 3142 : 0025 31420
0025 . ] MOV AX,[0032H
:

www.ParsBook.org

www.ParsBook.org

A0 00 32

.
) HI-byte (HI-Address
32

2131 2130

fa

Fa

32

BA4286

MOV Dx, 8642

www.ParsBook.org

www.ParsBook.org

16
. 64k
.
SS=313AH 21 2
) 16 ( .
24 . 313c
.

DEBUG.COM

www.ParsBook.org

www.ParsBook.org


.
.
C:\>debug :
Debug enter - .
.
Q .
:
) (R CPU .
:

> < R


.
R :
C:\>Debug
-r
Ax=0000 Bx=000 Cx=0000 Dx=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AEA Es=0AEA SS=0AEA IP=0100 NV UP DI PL NZ NA PO NC

MOV Ax , 000l

B80100

OAEA : 0100

.
.
. CS : IP .

www.ParsBook.org

www.ParsBook.org


.
.
R
.

:
.
.
CPU
. 8086
MASM . TASA .
DOS
.
: MOV
. :
MOV destination , Source
:

www.ParsBook.org

www.ParsBook.org

Ax

Bx

Ax,Bx

MOV

) (Bx )(Ax
Ax Bx .
MOV AL , 37H ; AL=37H

) (Bx .

MOV AH , AL ; AH=37H
MOV BX , FC32H ; BX=FC32H
MOV DX , BX ; DX=BX=FC32H
MOV BP , DX ; BP=DX=FC32H
MOV DI , BP ; DI=BP=FC32H

.
; MOV AL,Dx
; MOV FR,Dx
; MOV Ds,FCFAH
:
SS,ES,DS,CS
.
MOV AX,2312H

MOV DS,2312H

MOV DS,AX
: ADD :
;ADD destination, source

www.ParsBook.org

www.ParsBook.org

MOV AL, 2FH


ADD AL, 3AH

2F

MOV AL, 2FH ; AL

3A

MOV BL, 3AH ; BL

AL+BL

ADD AL, BL ; AL

.
.
:
.
: A

:
> < A
.
.
A OAEF:100

A 200

.
.
.
.

www.ParsBook.org

www.ParsBook.org

:
) (TASM=MASM .
H .
-A 100
132F : 0100 MOV Bx,3
132F : 0103 MOV Ax,4
132F : 0106 MOV Cx,5
132F : 0109 Add Ax , Cx
132F : 010B Add Ax,Bx
132F : 010D INT 3
132F : 010E
:

MOV Ax,AB4F
MOV Ax,AB4F H

: 256) 100H ( DOS


. A 100 .
: U
.
A . A
. U
. :

www.ParsBook.org

www.ParsBook.org

)( ) 10 D( -U 100

> < > < -U

) LD( U 100

> > < L < -U

1 CS : 0100 CS: 010D .


2 CS : 0100 D .
BB0300 MOV Bx,0003

103D :0100

B80400 MOV Ax,0004

103D : 0103

B90500 MOV Cx,0005

103D : 0106

ADD Ax,CX

01C8

103D : 0109

ADD Ax,Bx

01D8

103D : 010B

INT 3

CC

103D : 010D

U 32 CS : IP . U
32 32
.
) : (G
:
> < > =< G
:
-1 - CS : IP
INT3 .
.
010D 0AEf INT3 .

www.ParsBook.org

www.ParsBook.org

-R
Ax=0000 Bx=0000
DS=0AEF Es=0000 SS=0000 CS = 0000 IP=0100
0AEF = 0100 BC=300 MOV Bx,0003
-g
Ax=000C Bx=0003 Cx=0005 Px=0000
Ds=000C Bs=0003 SS=0005 IP=010D
0Aef=010D CC INT 3
2 = G
.
G=0Aef 0100

G=100

3 = G

103 D : 010D CC INT3


G=100 106

Ax=004 Bx=003 Cx=0000 .


4

G
-G 109
Ax=0004 Bx=0003 Cx=0005
ADD AX,CX

103D:0109 , 01CS

.
CS:IP .
)( .

www.ParsBook.org

www.ParsBook.org

-1 :
.
-2 :
.
-3 : .
5 :

MOV AL,00H
Add AL,36H
Add AL,2CH
Add AL,3FH
Add AL,9CH
Add AL,1BH


.
.
)( 300H DS
. :
DS:0300=36 MOV AL,0
]ADD AL,[0300

www.ParsBook.org

DS:0301=2C

www.ParsBook.org

]ADD AL,[0301

DS:0302=3F

]ADD AL,[0302

DS:0303=9C

]ADD AL,[0303

DS:0304=1B

]ADD AL,[0304
. .
)( 300
: 8086.
DI,SI,BX .

INC BX " "ADD Bx,1 .




. .
MOV AL,0
MOV Bx,0300H
]ADD AL,[Bx
INC Bx
]ADD AL,[Bx
INC Bx
]ADD AL,[Bx

www.ParsBook.org

www.ParsBook.org

INC Bx
]ADD AL,[Bx
8086 HI-byteHI-address
. 16 .
. :
MOV Dx, 3BCA
MOV [1700],Bx
DS:1700=CA
DS:1701=3B
: T
:
> < > = <T
T=100 5 100 5 .
.
CS:IP .
G T
G .
T
. T .
Ctrl+Numlock .
.

www.ParsBook.org

www.ParsBook.org

T=100 5

INT3
: 8086
.
) ( . .
cpu )(
. 8086 :

-1
-2
-3
-4
-5
-6
-7
-1 :
.
.
MOV Ax,Bx
MOV ES,Cx

www.ParsBook.org

www.ParsBook.org

ADD AL,DL
-2 : .

CPU .

.
B90500

BB0300 , MOV CX,0005

MOV Bx,0003

CPU
CPU .
.
-3 :
. .
. .
)( .
DS
DS:1300 CL

CL,[1300] :

MOV

CL 16 1300
DS:1300 CL .
32 H 1244:2342 .
MOV BL,32H
MOV [2342],BL

www.ParsBook.org

www.ParsBook.org

DS=1244

12440
2342

14782

-4 :
.
Bx,DI,SI ) ( .

DS:BX CL

;)MOV CL,(BX

DS:SI CL

MOV CL,(SI),

DS:DI AL

;MOV (DI),AL

BX DS:SI DS:SI+1 HI-

;MOV (SI),BX

Byte HI-Address
-5 : .
Bx BP
. DS,Bx SS BP .
MOV Ax,[Bx]+15 Bx+15 . DS0

BX

12210

15+

DS:BX+15

18FC

DS:BX+15+1

15

13B1C

AL

AH

www.ParsBook.org

www.ParsBook.org

Ds:Bx+15 Ds:Bx+15+1 Ax
. AL AH .
]MOV Ax,[Bx+15
]MOV Ax,15[Bx
=BP+6

MOV CL,[BP]+6
]MOV CL,[BP+6
]MOV CL,6 [BP

-6 :
SI,DI .
= DS 0 +SI+20 ; MOV Dx,[SI]+20
= DS 0 +DI+32 ; MOV AL,[DI]+32
DS .
:
.
. DS,BX SS,BP.
=DS0+BX+SI+16

;MOV AL,[BX][SI]+16
;]MOV AL,[BX+SI+16
;MOV AH,[BX][DI]+5

=DS0+BX+DI+5

;]MOV AH,[BX+DI+5
=SS0+BP+DI+6

;MOV BL,[BP][DI]+6

=SS0+BP+SI+30

;MOV BH,[BP][SI]+30

www.ParsBook.org

www.ParsBook.org

reg

data

DS

][offset

DS

][Bx

DS

][SI

DS

][DI

DS

[Bx]+disp

SS

[BP]+disp

DS

[DI]+disp

DS

[SI]+disp

DS

[Bx][SI]+disp

DS

[Bx][DI]+disp

SS

[BP][SI]+disp

SS

[BP][DI]+disp


:
SS

ES

DS

www.ParsBook.org

CS

www.ParsBook.org

SP,BP

SI,DI,Bx

SI,DI,Bx

: IP


.
16 10 .
] MOV AL,[BP SS:BP
] MOV AL,CS : [BP
CS : BP SS : BP AL .

DS:BX+DI+30

SS:BX+DI+30

MOV SS:[BX][DI]+30,AX

SS:BP+20

ES:BP+20

MOV Dx,ES:[BP]+20

:
:
: F .
: D .
: E .
Fill .
:
> < > < > < F
> < > > < L < F

www.ParsBook.org

www.ParsBook.org


.
.
DS:100 DS:10F FF .
-F 100 10F FF
CS:100 256) CS:1FF( 20
F CS:100 1FF 20
00FF 20H ) 32(

-F 100 L20 00FF

DS:100 00FF .
Dump D :
:
> < > < -D
> > <L < -D
D 16
. .
D 128 DS:100 D
128 .
10F

20 20 .. 20

112A:0100

20

11F

20 20 .. 20

112A:0110

-F 150 19F 00

14f

20 20 20

112A:0140

-D 100 19F

15F

00 00 00

112A:0150

www.ParsBook.org

-F 100 14F

www.ParsBook.org

19F

00 00 00

112A:0190

Dump
U Dump
.
100

-U

11E

0100 B057 MOV AL,57

1232:

MOV

0102 B686

1232:

MOV DL,72

0104 B272

1232:

DH,86

0106

-D CS:100 11F
72.OW6.2r.R.Q.G39

B2

86

B6

y.5t..ce.t.sv

57
D9

B0

1231:0100

1232:0110 01


" ". .
E :
F
. :
> < ><-E

www.ParsBook.org

><-E

www.ParsBook.org

' 100 'John Snith

-E

-D 100 10f
113D:0100 4A 6F 68 6E 20 53 6E 69 74 68 20 20 20 john snith
' . E
.
:
-1 :
106
6E - 6D

-E

113D:0106

10F

100

-D

113D:0100 4A 6 F6D .John Smith


-2 enter . Space
.
-3
.

-E 100
113D:0100 4A, 6f, 68, 6E, 20, 53, 6E, 6D
-D 100 10F
113D:0100 4A, 6f, 68, 6E, 20, 53, 6E, 6D,69..John Smith

www.ParsBook.org

www.ParsBook.org

-4 " "-
.
-E 107
113D:010 7 69.113D:0106 6E. 6D
E .
-E 100 32 24 B4 02 3F

(Flag Register)FR
Of.Pf.Af,Sf,Zf,Cf
.
IF TF DF
.
-1Carry Flag-CF
CF=1
.
MOV Ax,FFFF
Ax,1
-2 Flag-zf-

Add

Zero

.
MOV Ax,3

www.ParsBook.org

www.ParsBook.org

Add Ax,FFFD
-3 Sign Flag -SF

.
.
-4 Auxiliary carry flag -AF-
AF .
-5 Parity flag-PF

Pf=1 PF= ) . (
-6 (Cout clg =1 )overflow Flag -of-

.
-7 INTerrupt flag-If-

.
-8 Trap Flag-TF Trace flag
Trace .
.
.
-9 Direction flag-DF

www.ParsBook.org

www.ParsBook.org

.
.

: . MOV
.
SUB,ADD .
MOV AL,48H

ADD AL,3FH

MOV Bx,34F5H
Bx,95EBH

)(=1

www.ParsBook.org

Add

) (=

www.ParsBook.org

OF

OV

NV

DF

DN

UP

IF

EI

DI

SF

NG

PL

ZF

ZR

NZ

AF

AC

NA

PF

PE

PO

CF

CY

NC


.
NV UP DI PL NZ NA PO NC
:
OV DN EI NG ZR AC PE CY
-R F
NV UP DI PL NZ NA PO NC-DN OV NG
-R F
NC

PO

DN DI NC NZ NA

OV

MOV BX , AAAA
BX,5556

ADD
INT 3

www.ParsBook.org

www.ParsBook.org

BX=0000
NV UP DI PL ZR AC PE CY
:

.

.
. .
.
:
] [ ][ ][
. 31
.

.
.

:
. SEGMENT
ENDS .
Label SEGMENT

www.ParsBook.org

www.ParsBook.org

Label Ends
.
-1 @ .
-2 31
-3 $ @ -
:

Segment

Proc far

End p

Ends

end

: DS
.
SEGMENT

STSEG

)?( DB 64 DUP 64
ENDS

STSEG

;.

www.ParsBook.org

SEGMENT

DTSEG

DB

DATA1

52 H

www.ParsBook.org

DATA2

DB

29 H

SUM

DB

;.
CDSEG

SEGMENT

MAIN

PROC FAR
ASSUME CS:CDSEG , DS:DTSEG , SS:STSEG
MOV

AX , DTSEG

MOV

DS , AX

MOV

AL , DATA1

MOV

BL , DATA2

ADD

AL , BL

MOV

SUM , AL

MOV

AH , 4C H

INT

21 H

MAIN

END

CDSEG

ENDS
END

MAIN

. ( Procedure)
.

www.ParsBook.org

www.ParsBook.org

PROC

PROC
FAR

ENDP

FAR NEAR
. DOS FAR .


.

CPU .
. ] MOV AL,[Bx Bx
.
DOS SS,CS
DS ) (ES
.
MOV Ax,DTSEG
MOV DS,Ax
. .
MOV AH,4CH .
INT 21H .
.

My File.asm

www.ParsBook.org

www.ParsBook.org

My File.crf

My File.obj

My File.lst

My File.exe

:
.
MASM TASM .
-1 :
Ex.Asm

MASM

Source Filename [Asm] : Asm

.
object filename [Ex.obj] : Ex.obj
. enter .
Source listing [NUL.Lst] : Ex.LST
. .
enter .


obj .
MASM .
EX.ASM , EX.OBJ , EX.LST

www.ParsBook.org

MASM

www.ParsBook.org

:
MASM EX.ASM, ,
CRF .
LIST .
CREF .
Enter ) : (
Cross-reference [ NUL.CRF] :
C:'>Cref Ex.crf Ex.asc

: LINK
" "obj
. LINK " "exe
. LINK DOS
.

LINK.EXE

LINK Ex.obj,Ex.Exe,Ex.MAP

.
Object MOdUls [.OBJ] : Ex.obj
Run File [Ex.exe] : Ex.exe
List File [Nul.Map] : Ex. MAP

www.ParsBook.org

www.ParsBook.org


. Map
.
MAP .
Class

Name

Length

Stop

Start

STACK

STACKSG

00064H

00063H

00000H

DATA

DATASG

00003H

00072H

00070H

CODE

CODCSG

0001BH

0009AH

00080H

Program entry poINT at 0008:0000


.
: Title
. lst TITLE , PAGE .
PAGE .
]PAGE [lines] , [columns
PAGE 60,132
66 80 .

. TITLE .

5 1F,15,12,25 2B :
PAGE 60,132

www.ParsBook.org

www.ParsBook.org

TITLE PRG.EXE POURPOSE:ADDS 5 BYTES OF DATA


STSEG SEGMENT
DB 32 DUP(?)
STSEG ENDS
; ..
DTSEG SEGMENT
DATA_IN DB 25 H,12 H,15 H,1F H,2B H
SUM DB ?
DTSEG ENDS
; .
CDSEG SEGMENT
MAIN PROC FAR
ASSUME CS:CDSEG,DS:DTSEG,SS:STSEG
MOV Ax,DTSEG
MOV DS,Ax
MOV Cx , 05
MOV Bx,Offset DATA_In
MOV Al,0
AGAIN :ADD AL,[BX]
INC

BX

DEC

CX

www.ParsBook.org

www.ParsBook.org

JNZ

AGAIN

MOV

SUM,AL

MOV

AH,4CH

INT
MAIN

21H
ENDP

CDSEG ENDS
END MAIN

.
C:\>debug prg.exe
-U CS:0 19
1053:0000

B86510

MOV

AX , 1052

1053:0003

8ED8

MOV

DS , AX

1053:0005

B90500

1053:0008

BB0000

MOV

BX , 0000

1053:000D

0207

ADD

AL , BX

1053:000F

43

MOV

IWC

CX , 0005

BX

1053:0010

49

DEC

CX

1053:0011

75FA

1053:0013

A20500

MOV

1053:0016

B44C

MOV

JNZ

000D
[0005] , AL
AH , 4C

www.ParsBook.org

www.ParsBook.org

1053:0018

CD21

INT

21

-D 1052:OF
1052:0000

25 12 15

1F

2B

00 00 00 00 00

-G
Program 52 terminated normally
-D

0010H 6
. 0028H
TITLE PRG(EXE)
PAGE 60 132
STSEG SEGMENT
DB 32 DUP(?)
STSEG ENDS
;
DTSEG SEGMENT
ORG

10 H

DATA-IN DB 25H,4FH,85H,1FH,2BH 0C4H


ORG 28H
COPY DB 6 DUP (?)
DTSEG ENDS

www.ParsBook.org

www.ParsBook.org

;.
CDSEG SEGMENT
MAIN PROC FAR
ASSUME CS:CD SEG,DS : DTSEG , SS:ST SEG
MOV AX,DTSEG
MOV DS, AX
MOV SI, 0FFSET DATA-IN
MOV DI, 0FFSET COPY
MOV CX, 06H
MOV LOOP: MOV AL,[SI]
MOV [DI], AL
INC SI
INC DI
DEC CX
JNZ MOV-LOOP
MOV AH,4CH
INT 21H
MAIN ENDP
CDSEG ENDS
: ORG
.

www.ParsBook.org

www.ParsBook.org

A F C4 .
.0C4
.
C:\>debug prg.exe
-U CS: 0 1
B86610 MOV Ax,1066

1069: 0000

1066: 0 2f

-d

1066:0000 00 .
1066:0010 25 4F 85 1F 2B C4.
1066: 0020 00 00 .
-g
Program terminated normally
-d 1066: 0 2f
1066: 0000 00 00 ..
1066: 0010 25 4F 85 1F 2B C400 00
1066 : 0020 00 00 00 00 00 00 00 00 -25 4F 85 9F 2B C4 ..
-g
:
NEAR
. IP,NEAR CS
.

www.ParsBook.org

www.ParsBook.org

FAR IP,CS
.
:
: .
JNZ label zf=0 ZF=1
.
.
-128 +127 IP .
00 ff
. 2 .
IP .
)( IP .
MOV Ax,1066
DS,Ax

1067:0000 B86610

MOV

1067:0003 8ED8

1067:0005 B90500 MOV Cx,0005


MOV Bx,0000

1067: 0008 BB0000

1067: 000D 0207 ADD AL,[Bx] AGAIN


1067: 000F 43 INC Bx
1067: 0010 49 DEC Cx

www.ParsBook.org

www.ParsBook.org

JNZ AGAIN

1067:0011 75FA JNZ 000D

1067: 0013 A20500 MOV [0005] ,AL


MOV AH,4C

1067: 0016 B44C

1067: 0018 CD21 INT 21


) FA 2 -6(
IP=0013+FA=000D
-6 IP+FA0=IP = IP
:
. :
Short Jump -1
NEAR Jump -2
FAR Jump -3
-1 Jmp short label . -128 +127 Ip
. 2 EB
00 ff .
NEAR Jump -2
E9

jump - :
+32767 -32768 IP

www.ParsBook.org

www.ParsBook.org

jump - : IP BX
BX

jmp

jump - :
] JMP[DI IP DI
DI+1 .
FAR JUMP-3
JUMP PTRLABLE
IP CS
:
RAM CPU
CPU
RAM
) SS ( )SP ( CPU
SP CPU.
) PUSH( ) POP( .
:
-1
-2
-3
-1 j condition .
.

www.ParsBook.org

www.ParsBook.org

JC Jump Carry Jump Of CF=1


JNC Jump No Carry Jump of CF=
JP Jump Parity Jump of PF=1
JNP Jump No Parity Jump of PF=
JZ Jump Zero Jump of ZF=1
JNZ Jump No Zero Jump of ZF=
JS Jump Sign Jump of SF=1
JNS Jump No Sign Jump of SF=
Jo Jump Overflow Jump of OF=1
JNO Jump No Overflow Jump of OF=
. AF
." J Condition" : ZF CF , CMP dest,source
. SUB dest,Source
CF

1
JA Jump Above

Jump IF CF= and ZF=

JAE Jump Above or Equal Jump if CF=0


JB Jump Below Jump if CF=1

www.ParsBook.org

ZF

>

1 =

<

www.ParsBook.org

JBE Jump Below or Equal Jump if CF=1 or ZF=1


JE Jump Equal Jump if ZF=1
JNE Jump Not Equal Jump if ZF=

-3 CMP dest,source
. :
> ZF= OF=SF
ZF=1

SF # OF

<
Jump if ZF=0 Or OF=SF

JG Jump Greater

Jump if OF=SF

JGE Jump Great or Equal

Jump if OF SF

JL Jump Less

Jump if ZF=1 Or Of SF

JLE Jump Less Or Equal

Jump Of ZF=1

JE Jump if Equal

JCXZ ; Jump if Cx is Zero :


SP
Push . POP .
POP,Push . Push AL
Push AH .
Push DX

96

SS:1230

SP=1230

5F

Push Ax SS:1231

www.ParsBook.org

www.ParsBook.org

Push DI

C2

SS:1232

SP=1232

85

Push DI SS:1233

Push Ax

86

SP=1234

27

Start

30

SS : 1234
Push Dx SS:1235
SS : 1236

SP=1236
Push POP .
POP CX

SS:18FA

SP=18FC POP DX
SP=18FC
C2=1423
SP=18FE

23

:18FB

14
6B

: 18FC
: 18FD

POP DX

2C
91

: 18FE

: 18FF DX=2C68

F6

: 1900 SP=1900

20

BX=F691

POP CX

POP BX

SP=18FA

): (CALL
.
NEAR CS FAR .
.
NEAR IP . FAR IP,CS
.

www.ParsBook.org

www.ParsBook.org


RET .
POP .
1302:0100 MOV AL,2
1302:0102 Call SUB1
02 FFFC

IP

01 FFFD
FFFE
1302:0105 MOV AL,4

:
PROC FAR NEAR .
. FAR .
; ..
SEGMENT

CODESEG

MAIN PROC FAR

ASSUME

AX,

MOV

DS,AX

MOV

SUBR1

www.ParsBook.org

Call

www.ParsBook.org

MAIN

Call

SUBR2

Call

SUBR3

MOV

AH,4CH

INT

21H

END P

;..
SUBR1 PROC
.
.
.
RET
SUBR1 ENDP
;
SUBR2 PROC
.
.
RET
SUBR2 ENDP
RET
;.
SUBR3

PROC

www.ParsBook.org

www.ParsBook.org

.
.
RET
SUBR3 ENDP
;..
CODESEG ENDS
END MAIN

) DB (

.
1000 1111 B

DATA3 DB

DATA4 DB 13
DATA4 DB 14H
4D 79 20 6E 61 6D 65

DATA5 DB MY Home

) DUP( : .
DATA1 DB 01H , 01H, 01H,01H,01H,01H

)DATA1 DB 6 DUP (01H


01H

www.ParsBook.org

www.ParsBook.org

) DW ( : .
DATA1 DW 1954
DATA2 DW 253FH
DATA3 DW 1001010101111111B

) EQU ( :
.
. ) .
(.
EQU 30

Count
-

Counter1 DB Count
Counter 2 DB Count
) DD ( :
4
) DQ ( :

www.ParsBook.org

www.ParsBook.org

8
) DT ( BCD .

Huge ,LARGE, COMPACT MEDIUM , SMALL , TINY
: SMALL 64K
.
: MEDIUM 64K
64K .
: COMPACT Medium 64K
.
: LARGE . 64K
) ( 64K .
: HUGE 64k .
)( 64k .
: TINY 64k .
COM .
.
: :
.CODE
.DATA
.STACK

www.ParsBook.org

www.ParsBook.org

. END SEGMENT
.

.STACK
.CODE
.Data

TITLE

PRG.EXE

PAGE

60,132
.MODEL SMALL

. STACK 32
.DATA
DATA1

DW

3342 H,2E3BH , 4C5FH,3244H

ORG

10H

DW

2
.CODE

START

ASSUME

MOV Ax,@ DATA


MOV DS,Ax
MOV Cx,04

www.ParsBook.org

www.ParsBook.org

MOV DI,OFFSET DATA1


Bx

SUB

Bx,Bx

]ADD-LP : ADD Bx,[DI


INC DI
INC DI
DEC Cx
JNZ ADD-LP
MOV SI,OFFSET SUM
MOV [SI] , Bx
MOV AH , 4 CH
INT 21 H
END START
: COM COM
. 64K
. COM .
EXE

COM

64K

0100

www.ParsBook.org

www.ParsBook.org

( )

1-TITLE PRG.COM
2-PAGE 60,132
3-CODSG

SEGMENT

4-

ORG

5-

ASSUME CS:COSG,DS:COSG,ES:CODSG

100H

6- ;---- CODE AREA


7-PROG CODE

PROC NEAR

8-

MOV AX,DATA1

9-

ADD Ax,DATA2

10-

MOV SUM,AX

11-

MOV AH,4CH

12-

INT 21H

13-PROGCODE

ENDP

14- ;--------- DATA Area


15-DATA1 DW 2456
16-DATA2 DW 3672
17-SUM DW ?

www.ParsBook.org

www.ParsBook.org

18- ;-----------------19-CODSG
20-END

ENDS

PROGCODE

.
. Jump
START : JMP PROGCODE
; . DATA Area
DATA1 DW 2390
DATA2 DW 3456
Sum

DW ?

; CODE Area
PROGCODE : MOV Ax,DATA1
ADD Ax,DATA 2
MOV Sum,Ax
MOV AH,4CH
INT 21H
;
CODSG ENDS
END START

: COM Exe

www.ParsBook.org

www.ParsBook.org

exe com .
EXE 2BIN COM .
Exe 2BIN PRG PRG.COM
:
.
.
0000

00
0 256

0 65535

16
FFFF

FF

:
Dest=Dest+Source

ADD Dest , Source

.
.
80X86 .
Dest = Dest+Source +CF

ADC Dest , Source

ADC
ADC .
). (.
TITLE PRG
PAGE 60 , 132

www.ParsBook.org

www.ParsBook.org

STSEG SEGMENT
.

DB 67 DUP (?)

STSEG ENDS
;..
DTSEG SEGMENT
Count EQU 5
DATA

DW

1 2 ..................... 5

ORG

0010H

DW

2 DUP (3)

CDSEG

SEGMENT

MAIN

PROC

FAR

ASSUME

BACK

CS:CDSEG, DS:DTSEG,SS:STSEG

MOV

Ax,DTSEG

MOV

DS,Ax

MOV

CX,Count

MOV

SI,offset DATA

MOV

Ax,

MOV

Bx,Ax

: ADD

Ax,[SI]

ADC

Bx,

INC

SI

www.ParsBook.org

www.ParsBook.org

INC

SI

DEC

CX

JNZ

BACK

MOV

Sum,Ax
MOV

MOV

Sum+2,Bx

AH,4CH

INT21
MAIN

ENDP

CDSEG

ENDS
END

MAIN

.
DATA1=367FC25963CBH
TITLE

PRG.exe

PAGE

6 ,132

STSEG

SEGMENT

DATA2=23FA324633CFH

DB 64 DUP (?)
STSEG

ENDS

; .
DTSEG

SEGMENT

DATA1

DQ
ORG10H

www.ParsBook.org

www.ParsBook.org

DATA2

DQ ..
ORG 0020H

DATA3

DQ ?

DTSEG

ENDS

;
CDSEG

SEGMENT

MAIN

PROC FAR
ASSUME CS:CDSEG,DS:DTSEG,SS:STSEG
MOV Ax,DTSEG
MOV DS,Ax
CLC ; Clear Carry Flag
MOV SI,Offset DATA1
MOV ; DI , Offset DATA2
MOV

Bx , Offset DATA3

. 04,03
MOV
BACK

Cx,04

: MOV

Ax,[SI]

ADC

Ax,[DI]

MOV

[BX],AX

INC

SI

INC

SI

www.ParsBook.org

www.ParsBook.org

SI

INC

DI

INC

DI

INC

Bx

INC

Bx

INC

BACK

LOOP

AH,4CH

MOV

21.H

INT
ENDP

MAIN

ENDS

CDSEG

MAIN

END

DQ 8 . ADC .
ADC CF= .CLC
LOOP *****- DEC Cx

**** JNZ
Cx .
Cx

SUB dest , source ; dest-source

www.ParsBook.org

www.ParsBook.org

2 . :
-1 .

00011011
00100010

22

-2 .
1 11 1

00 0 11 0 11
11011110 +

11111001

F9

-3 .
SUB CF= CF=1
2 . NOT INC
.

4CH

DB

DATA1

6EH

DB

DATA2

DB

DATA3

.
DH,DATA1

MOV

DH,DATA2

SUB

NEXT

JNC

DH

NOT

DH

www.ParsBook.org

INC

www.ParsBook.org

NEXT:MOV DATA3,DH
: SBB

.
SBB Des,Source ; Des=Des-Source-
SUB
.
: PTR
. WORD PTR
.
32FA234CH

DD

DATA-A

2832FC BA H

DD

DATA-B

DD

RESULT

MOV Ax,WORD PTR DATA-A ; Ax=234C


SUB FCBA

; SUB Ax,WORD PTR DATA-B

; MOV WORD PTR RESULT, Ax


MOV Ax,WORD PTR DATA-A + 2 ; Ax=32FA
SBB Ax,WORD PTR DATA-B+2,SUB 0412
MOV WORD PTR RESULT+2,Ax ; 23

234C CF=1 . . SBB

- FCBA

www.ParsBook.org

www.ParsBook.org

32FA
- 2832
-1

:
:
-1
-2
-3
-1 X : AL
. Ax .
? DW

RESULT

MOV AL,32H
MOV CL,40H
MUL CL
MOV RESULT,Ax

MOV AL,DATA1 MOV AL,DATA1

32H

DATA1 DB

MOV CL,DATA2 MOV DATA2

40H

DATA2 DB

RESULT DW

MOV RESULT,Ax

MUL CL

MOV RESULT,Ax


MOV AL,DATA1

www.ParsBook.org

www.ParsBook.org

MOV SI,Offset DATA2


PRT

Byte .
]MUL Byte PTR [SI
-2 X : Ax
.
Dx,Ax . Ax Dx
.
DATA1 DW 3278H
DATA2 DW 4C22H
)?(RESULT OW 2 DUP
Ax,DATA1

MOV

DATA2

MUL

RESULT , Ax

MOV

RESULT+2 , DX

MOV

-3 X : AL
AH .
DB 3CH

DATA1

DW 13B2H

DATA2

)?( DW 2 DUP

RESULT

www.ParsBook.org

www.ParsBook.org

MOV AL, DATA1


SUB AH,AH
MUL DATA2
MOV Bx,offset RESULT
MOV [Bx],Ax
[Bx]+2,Dx

MOV

AL

Ax

Ax

Dx-Ax

AH= ,AL

Dx-Ax

:
-1
-2
-3
-4
8086
divide error .
: AL AH
. AL
AH .
102

www.ParsBook.org

DB

DATA1

www.ParsBook.org

DATA2

DB

20

QOUT

DB

REMAIN DB

MOV

AL,DATA1

SUB

AH,AH

DIV

10

MOV
SUB
DIV

AL,DATA1 AL=12
AH,AH
DATA2

AH<==0

AC

Ax


AH |__20

MOV

QOUT,AL

MOV

REMAIN,AH

MOV

AL,DATA1

SUM

AH,AH

MOV
DIV

05

{AL<=05

AH<=02

BH,DATA2
BH

AX |__BH

MOV

QoUT , AL

MOV

REMAIN , DH

MOV

AL,DATA1

=>{AL

www.ParsBook.org

05

AH

02

www.ParsBook.org

AH,AH
DATA2
DATA2

AX

Bx,Offset

]Byte PTR [Bx

SUB
MOV
DIV

QOUT , AL

MOV

REMAIN , AH

MOV

: Ax Dx .
. Ax Dx
.
Ax,320 10

MOV

Dx,Dx

SUB

Bx,100

MOV

Bx

DIV

QOUT,Ax

MOV

REMAIN , Dx

MOV

: Ax .
AL AH .
Ax,3252

MOV

CL,100

MOV

CL

DIV

QOUT , AL

MOV

REMAIN , AH

www.ParsBook.org

MOV

www.ParsBook.org

: Dx,Ax . Dx
Ax . . DIV
Ax Dx .
345607

DD

DATA1

10000

DW

DATA2

?
?

DW
DW

Ax,WORD PTR DATA1

MOV

Dx,WORD PTR DATA1+2

MOV

DATA2

DIV

QUOT,Ax

MOV

REMAIN,Dx

MOV

QUOT
REMAIN

Dx:Ax
Dx .

,AH AL

AL

AH

,DX=0 =AX

Ax

Dx

=Ax

AL

AH

=DxAx

Ax

Dx

:
: AND

AND dest Cnatcon , Source

www.ParsBook.org

www.ParsBook.org

MOV

CL,2BH
AND CL,0CH; BL<= 8 .
.

00101011
00001000

SF= ,ZF= ,PF= ,CF=OF=

00001000

08

AND OR XOR

OF,CF . SF,ZF,PF
.
.
ZF=1 , DH .
CH,CH

AND

****

JZ

: OR OR .
. OR .
ZF=1 , BL .

CF=OF=

SF=ZF=
PF=

00101011
00001100
00101111

BL,

OR

BL,BL

OR

CL,2BH
CL, CH

PF
2FH

XOR dest,Sour : XOR


OR,AND .

DH,54H

MOV

DH,78H

www.ParsBook.org

XOR

MOV
OR

www.ParsBook.org

S2=>F=PF= ,CF=OF=
0010 1011
0000 1100
0010 1111

:
.
: SHR SHL .
: SHR LSB
MSB .
CF

MSB
MSB

LSB
LSB

: SHL SHR . LSB MSB


CF .

MSB
MSB

LSB
LSB

CF


CL .
MOV AX,0004 .
SHR BX,1

MOV DL,12
SHL DL,1
SHL,DL,1

www.ParsBook.org

AL,3BH

MOV

CL,3

MOV

AL,CL

SHR

DL,12

MOV

CL,2

MOV

DL,CL

SHL

www.ParsBook.org

CMP des,Source

: COMPARE


SUB .
CF ZF .

ZF

CF

Des>Source

Des=Source

Des<Source

CF ZF .
99 TEMP
? DB
AL,TEMP

TEMP

MOV

AL,99

CMP

HOT

JZ

Bx,Z

MOV

5 :

www.ParsBook.org

PRG.EXE

TITLE

66,132

PACE

SEGMENT

STSEG

www.ParsBook.org

DB 64 DUP(?)
;..
DTSEG

SEGMENT

GRADES

DB 23,68,33,62,92
ORG 0008

HIGHEST

DB

DTSEG

ENDS

;
CDSEG

SEGMENT

MAIN

PROC FAR
ASSUME

AGAIN :

MOV

AX,DTSEG

MOV

DS,AX

MOV

CX,5

MOV

BX,OFFSET GRADES

SUB

AL,AL

CMP

AL,[BX]

JA

NEXT AL

MOV
NEXT :

CS:CDSEG,DS:DTSEG,SS:STSEG

AL,[BX]

INC

BX

LOOP

AGAIN

www.ParsBook.org

www.ParsBook.org

HIGHEST,AL

MOV

AH,4CH

MOV

21 H

INT
ENDP

MAIN

ENDS

CDSEG

END MAIN
:
:

61

a
b

62


41
42

A
B
C

63

43

79

59

7A

5A

:
df 0100 0001

41H

df .
0110 0001

61H

61H 7AH
AND,1101 1111=DFH .
PRG.EXE

www.ParsBook.org

TITLE

www.ParsBook.org

PAGE

6 0,132

STSEG

SEGMENT

DB 64 DUP(?)
STSEG

ENDS

; .
DATSEG

SEGMENT

DATA1

DB

'mY NAME is Ali'

ORG 0020H
DATA2

DB

14 DUP(?)

DTSEG

ENDS

;..
CDSEG

SEGMENT

MAIN

PROC

FAR

ASSUME CS:CDSBG, DS:DTSEG,SS:STSEG

BACK :

MOV

AX,DTSEG

MOV

DS,AX

MOV

SI,Offset

MOV

BX,Offset

MOV

CX,14

MOV

AL,[SI]

CMP

AL,61H

DATA1
DATA2

'a'

www.ParsBook.org

www.ParsBook.org

Over :

JB

Over

CMP

AL,7AH

JA

Over

AND

AL,11011111D

MOV

'z'

[BX],AL

INC

SI

INC

BX

LOOP

BACK

MOV

AH,4CH

INT

21H

MAIN

ENDP

CDSEG

ENDS
END

MAIN
AL 20 :

K6 :

K61 :

IBM BIOS

CMP

AL,'a'

JB

K61

CMP

AL,'z'

JA

K61

SUB

AL,'a'-'A'

MOV

www.ParsBook.org

www.ParsBook.org

MS.B
MSB

LSB
LSB

CF

CF CF LSB RCR RCR


. CF . MSB
CLC
MOV

; CF=
BL,32H

RCR

BL,1

RCR

BL,1

RCR

BL,1

STC

; CF=1

MOV

BX,32FAH

MOV

CL,6

RCR

BX,CL

CF

MSBMSB

M.V

CL,3

RCR

AL,CL

LSLSB
B
: RCL
. LSB CF CF MSB

CLC
MOV

AX,33 RCH

MOV

CL,5

RCL

AX,CL

www.ParsBook.org

www.ParsBook.org

: IBM PC
8086 20 20
. PC
.

00000H

RAM

,FFFFH

640K

A0000H

Video D1SPlay

BFFFFH

RAM 128K

C0000H

ROM

FFFFFH

256 K

: BIOS RoM
CPU
CPU
.
RoM BIOS BIOS .
RAM CPU .
. PC
BIOS .

www.ParsBook.org

www.ParsBook.org

PC DOS BIOS RAM


PC DOS .
BIOS DOS
. INT .
INT CS:IP
. 00-FFH .
,00-FFH

256 .

XX

INT

:
-1

SP Push .

-2

SP Push CS .

-3

SP Push IP .

-4

4 .
2 2 , IP CS .

-5

TF,IF .

ISR .
CS:IP ISR .
.
INT03 4 03=12=0000CH IP,CS .
1024 (4 256=1024)RAM
.

www.ParsBook.org

www.ParsBook.org

INT

INT 00

00000

INT 01

00004

: IBM PC IBM 256


DOS .
BIOS DOS INT00 BIOS
INT 21H DOS .
: .
:
8086 . ) INTR (
) NMI ( 5
NMI INTR INT02 NMI .
:

. INT XX
.
: :
INT 00
INT 01

INT 03

www.ParsBook.org

www.ParsBook.org

INT 04
.
: IBM .
.
DOS .
C:\> debug
-D 0000:0000
00 06

0000 : 0000 72 , 30 E3 00 ED08

CS

0000 : 0010

IP

CS

IP

: IRET IP,CS
INT .
RET CALL .

. INT21H,INT10H
.
INT 10H BIOS
Rom BIOS IBMPC
.
.
AH .
:

www.ParsBook.org

www.ParsBook.org

80 25 .
: 06H
INT 10H
:
00 , 00

00 , 79
12 , 39

24 , 00

24, 79

AH,06

MOV

AL,00

MOV

BH,07

MOV

CH,00

MOV


CL,00

MOV

DH,24

MOV


MOV AX,0600H
MOV BH,07
MOV CX,0000
MOV DX,184FH; 24,79

www.ParsBook.org

DL,79

MOV

www.ParsBook.org

INT 10H
.
: 02 : DX .
=DH
=DL
RAM
. BH=00 .
.AX,0600H

MOV

BX,0F

MOV

MOV

CX,0000
DX,184FH
10,H
AH,02

MOV
INT

MOV

BH,00
DL,39

DL,DH

MOV
MOV

DH,12

MOV

10 H

INT

: 03

MOV AH,03
MOV BH,00

www.ParsBook.org

www.ParsBook.org

INT 10H
CX .
....... : 0 : AH=0CH
AL=1
CX DX BH AL=
200 5 200 5
CX=100

MOV

DX=50

MOV

BACK : MOV AH, CH


MOV AL , 1
1 H

INT

INC CX
CMP C2,200
BACK

JNZ

: 10 .
) . 0 (F
(.
: 21H DOS . DOS .
: 09
AH= 9 . DX
) . ( $ .

www.ParsBook.org

www.ParsBook.org

DATA-ASC

DB 'Hello World' , '$'

MOV

AH , 9

MOV

DX , Offset DATA-ASC

INT 21 H

. DL : : 02
MOV

AH= 2

MOV

DL,'6'

INT

21H
: : 01


. AL
MOV

AH, 1

INT

21H

TITLE

Test

PAGE 60,132
STSEG SEGMENT
DB 64 DUP(?)
SESEG

ENDS

;
DTSEG
DATA
DTSEG

SEGMENT
DB

HELLO WORLD,$

ENDS

www.ParsBook.org

www.ParsBook.org

;
CDSEG SEGMENT
MAIN PROC FAR
ASSUME

MOV AX,DTSEG
MOV

DS,AX

CALL CLEAR
CALL CURSOR
CALL

DISPLAY

MOV

AH,4CH

INT

21H

MAIN ENDP
;
;SUB PROTIN CLEAR
CLEAR

INT

PROC

MOV

AX,0600H

MOV

BH,07

MOV

CX,0000

MOV

DX,184FH

10H

RET

www.ParsBook.org

www.ParsBook.org

CLEAR

ENDS

;
;SET

CURUSOR CENTER

CURSOR

PROC

MOV AH,02
MOV BH,00
MOV DH,12
MOV DL,39
INT

10H

RET
CURSOR

ENDS

;.
;DISPLAY

STRING

DISPLAY PROC
MOV AH,09
MOV
INT

DX,OFFSET DATA
21H

RET
DISPLAY ENDS
;
CDSEG

ENDS

www.ParsBook.org

www.ParsBook.org

MAIN

END

: OAH -
.
DX,AH=0AH ) . (
.

.

)6 ? 6 DUP (FF

10H

ORG

DB

DATA1

Retor INT21H . Alt


.

0015 0016
0D
CR

AH , AH

MOV

Dx,Offset DATA1

MOV

21H

INT

0014

0013

0012

0011

6A

6D

061H

03

0010
06

......

......

......

16

CR

L16

www.ParsBook.org

A16

www.ParsBook.org

6 ) (CR +5
.
Enter 00 CR . . : 07
) (
AL :
AH,07

MOV

21H

INT

: INT 16 H
: 01 : ZF= . ZF=1
: 00 AL .
01 .
07H
.
TITLE
SMALL

.MODEL
.STACK
.DATA

DB TO STOP THE BELL SOUND PRESS ANY

MESSAGE
KEY$

.CODE

www.ParsBook.org

www.ParsBook.org

MAIN

PROC
MOV

AX,@ DATA

MOV

DS,AX

MOV

AH,09

MOV
INT
AGAIN :

MAIN

DX,Offset MESSAGE
21H

MOV

AH, 2

MOV

DL,07

INT

21H

MOV

AH,01

INT

16H

JZ

AGAIN

MOV

AH,4CH

INT

21H

ENDP
END
(

MESSAGE

DB

'TO STOP THE BELL SOUND PRESS Q (or q)

key$'
CODE
CODE

www.ParsBook.org

www.ParsBook.org

CODE
AGAIN : AH,COE
CODE
CODE

CODE
CODE
CODE

JZ AGAIN
MOV

AH,00 H

INT

16H

CMP

AL,Q

JE

EXIT

CMP

AL,q

JE

EXIT

JMP

AGAIN

EXIT :MOV

AH,4CH

INT

21H

MAIN

ENDP
.

www.ParsBook.org

You might also like