You are on page 1of 53

Assembly

Programming



: ) (RAM
) (Ram OO

:ROM .
.
) (BIOS 68K /
. 960K

.
ROM RAM
.
: RAM RAM
. RAM
) RAM(
.
ROM RAM .
RAM .



1315 0526H
. 05
29 .
:
.


.
.

.
64k
.

.


.
.
) (cs
. 64k
.


) (DS " . 64k
".


. ) (ss
.



088EOH

. 038EOH 038E
.
] 038[0 .



) (
. 0000H FFFFH 65,535
. 00 01
65535
.
038EOH . DS
038E[o]H 0032H
.

03912H .

, .

PC
. : 8086/8088
) (

] nnnn[o
o . FFFF[o]H

F 1111
o .
: 80286
]FFFFF[o
.

.

: 80386/486 /
.
. .

.


. SS,DS,CS
.



o .

:CS .
) (Ip
. cs .
: DS .
.
.
: SS
.
) (sp .
ss .
: ES
) ES ( ) DI ( ES
.
: FS,GS .

BP,SP,IP:
(IP) : IP
IP CS . IP
. IP
DEBV6
. IP EIP

. CS 39B4[o] H IP 514H
, CS IP .
39B40H+514H=3A054H CS IP
.
) SP ( ) BP :(... ss
.
): (SP SP
ss
ESP .
.

) : (BP BP
.
EBP .

DX,CX,BX,AX .
.
AX
AH AL .

EDX,ECX,EBX,EAX .

O ECX,BX,AX :
ECX,OO

MOV AX,OO 2/MOV BH,OO 3/MOV

: AX /
. AX
.
: BX
.... BX
.
CX:CX .
cx
.
DX:DX . /
AX,DX
.

.
:
DI,SI .
: SI
SI DS
ESI .
: DI .
DI ES .

)(Flags


flag
.
) OF ( ) (
.
) DF (
.
) IF (
.
) TF ( .
DEBVG Flag
.
) SF ( ) = o = 1(
) ZF ( ) zr=o
zf=1 (
) (
AF .
) PF ( .
) CF ( ) (
.

Flag .

Flag CF,ZF,SF,OF:
DF .
flag
.



.

Ilo
. DOS
.
Dos: .

.
/ :
. .
:

.
:
.


.
:
.
:
CO.MMAND.Com,MSDOS.SysIO.sys:
: IO.sys
/ /
.
pc-Dos IBMBIO.COM .
: MSDOS.sys
/ .
pc-Dos IBMDOS.COM .
: COMMAND.COM
.
.

BooT Process
) (Cold boot .
CS
FFFF[o] H IP .

CS:IP FFFFoH
ROM .
FFFFOH
:
.
.
. ] 40[o
.

) (boot start loader
MSDOS,To.sys
To.sys
To.sys.
MSDOS.sys . DOS DOS
. ConFIG.sys
. MSDOS.sys COMMAND.COM
AUTOEXE.BAT
.
640k
.

-
ROM

.
Dos .
Llo
.

. - - Dos
.


EXE,COM . COM
. COM

)
( . EXE

EXE
:
. EXE .
. ) 266 (PSP
.
. PSP .
. PSP ES,DS .
. CS LP )
( .
. SS SP .
.
.
SS:SP,CS:LP
PSP DS ES
.
EXE,COM .
.
COM
EXE .

) ( . SS
. SP
.
:
.
POP,PUSH
6P
. PUSH SP
POP
SP
.

.

EXE
.

PushF: popF popA,pushA.
) (
.



. .
.

.
EXE cs DS

. IP
.
.


Wordx,DW
o

)( .
Wordx CX

Wordx

CX
DX CX

Wordx DW
CX ,

MOV

CX,

MOV

CX

MOV

25
DX

DX CX ]MOV CX, [DX

MOV . - MOV .

MOV . MOV : ) DX DS DS:DX


( CX
.




.


.
Comment .

ADD , MOV
END SEGMENT
SIZE,FAR

Model , Data .
.

) (label :
. .
. MAIN
:

FAIR

PROC

MAIN

.
.
-

A Z Q Z
0 ) 9 (.
)( ) (- ) ($)@(
) ) ( (

)(state ments
. :
. ADD,MOV .
. ) (directives
.
.

Title,Page
Title,Page
.
: Page Page
.
} { }{ Page


Page
.
: Title Title
.
SAGMENT

EXE .
........
segments , :
ENDS .

Begin segment

segment

ENDS

End segment

: )(align
(combine).) (class :
""

segment

: .
PARA
10H .
para .
:
. :

stack

public , common ,

AT .
stack

PARA

Sgment


common , poblic
none .
: ) (calss ) (
. code
) ( data stack
.
PROC

PROC .
ASSVME
EXE SS DS
CS .

.
ASSVME .

CS: DS : ss :

ASSVME

ss : ss
.
ASSVME ES
ES :.
ES
ES:nothing .
ASSVME

.
END
ENDS ENDP
. END
.
][procname

END



. PROC
FAR .

EXE psp

. :
CS .- ss psp .


.
. .
.MODEL
large , compact,medium,small,tiny :

Tiny

small

medium

compact

Large

) liny
( . TASM4,MASM6 Tiny com
64k . small
64k 64k model
Assume .

}{

stack
Data

}{

code

segment Ends
. ) ( :
) text,data,stack (. txet,data

.
ds
MOV DS, AX ,MOVS AX , @data
EXIT ,Startup
MASM .Exit ,
.startup .startup.
Exit 4ch INI 21h
.
TASM ExitCode,startup code .
:
. EXE
/ .
: DB DW
. ) (

.
[name] Dn expressino

. .

: name .
: Dn ) DB:(DW
)()DD ()DF ()DQ ( )DT(
. MASM6

Tword,Qword,Fword,Dword-22/word-Byte .
) (expression
.
?

FLDA DB

)(

FLDA DB/Byte 21,22,23,........

. FLDA
) FLDA+o (
FLDA+l
MOV AL,FLDA+3
(18h)24 AL
)( Dup name DN .
)?( DW/word 10 Dup
DB/Byte
)5 Dup (12
DB/Byte
) 3 Dup (5 Dup 4

1/
2/
3/

(44444)4
.
:


PC
PC
. ) DB,MASM (Byte

) ( DB
:

DB , strawberry jam

23/

Emporium
Emporium

CD
CD

sams
sam s

crazy

DB

Crazy

DB

:
.
. H


.
:
: 1,0 B

Test,xor,OR,AND .

: D

.
: 0 F H .

.
:

.

.
CLC RET .

)( ) (
.

.
operand 1,operand 2

operation

][lable:


.
.
define a word
,register in first operand

? Dw
DX,Worda

Worda
Mov

worda . cx ,register in second ... ....


EDX , EBX ,register in both operand

Mov
Mov

.

)
(.
.
,add 25 to BX
count,50 ,move 50 to count

? Count DB
ADD BX,25
Mov



)
.( Cmps,movs DC
.
a word
a Byte

,Define
,define

DW
o
DB
o
BX, worda
ByteA , DL
]CX,DS:[38BOH
ByteA
]PTR [1BOH

Worda
Bytea
Mov
ADD
Mov
INC

)
38BOH DS (
38BOH move cx .
1BOH .

] [1BOH
Byte PTR .
Codetbl
Mov
Mov

DB
)?( 20 DUP
]CL, Codetbl [3
CL, Codetbl+3

mov
mov + .


. BP,SI,DI,BX
. SI,DI,BX
DS DS:SI,DS:DI,DS:BX
BP ss SS:BP
.
.
.
. ] [DI
DI .
Mov BX Dataval Mov.
BX Dataval
.

50

DB
BX ,offset Dataval
[BX],25

Dataval
MOV
MOV

MOV mov Dataval ,25 .


.
Dadval :

[BX+2] ,o

mov

: ] [BX+DI
BX DI .
DI,BX,BP SI

.
operond =DS:BX
operond =DS:DI
operond =SS:BP

,2nd
,1st
,1st

]CL,[BX
Byte ptr[DI],25
][BP
,CL

ADD
MOV
ADD

: . MOV
BL ) Data TAB ( Data TAB
DI .
)?(DUP

DB
40
datatab[DI] ,BL

Datatab
MOV


)(
.
MOV
MOV
) ( .
)

MOV . //
MOV

][lalde:

MOV :
BW
DW

?
?

Bytefld
Wordfld

.
MOV EDX,ECX
MOV DS , BX
MOV Byteefld,DH
MOV [DI] ,BX

,Register to Register
,Register to segment register
,Register to memory,direct
,Register to memory , Indirect
.
,Immediate to register
,Immediate to memory-direct
,Immediate to memory-indirect

CX,40
Bytefld,40
Wordfld [BX],40

MOV
MOV
MOV

.
Register,direct
Register,indirect

,memory to
,memory to

CH,Bytefld
]CX,Wordfld [BX

MOV
MOV

.
,segment register to Register
,segment Register to memory

MOV CX,DS
MOV Wordfld,DS

.
CH
CL MOV :
--) ( -
-- . .
:

: .
:
.
.
.
.

.

.


) (o )(1
.
. 27-1 . ooo AH
w o AX 1.

MOV
100 OOOOOOOO

10110

AH,OO

MOV

(100)AH
. MOV
:
00000000

00000000

000

AX,00 10111

MOV

) AX(ooo
. reg,w .

) (mode
:
mod 10,01,00 11
.
Rey
R/m 8 r m
.
d ) /(
. AXBX
000

011

11

00 00 00 11

BX,AX

MOV

D=q ) mod(11) reg(011 )(r/m)(ooo


. w=l .
(ooo)Ax (011)BX
. DEBU6 .

: MOV

.
. )(
mov
) MOVS (
.
: .
: // / MOV
. :
100010 dw mod reg r/m
:Reg / reg/mem
1100011w
modooor/m .....data....data
ifw=1
1011wreg......data......data if w=1

lmmed :
mem :

1010000w addr-low addr-high

mem

1010001w addr-low addr-high

rem/memsegreg

)10001110 mod Osgr/m (sg=seg reg

seg regreg/mem

)10001100 modosgr/m (sg=seg reg

) INT= (Interrupt
. INT10H INT21 H
.

) (
AH .
INT10 H
. INT 21 H
DOS .
.
INT21 H
.
ODH enter
) (carriage Return=CR .


) ( ) ( .

.

OO
OO

OO
79

12

39/40

24

OO

OOH

OOH

4FH

OOH
OOH
18 H

27H/28H
OOH

24

79

18 H

O4 H

.
BOOOCOJH 4K 2K
2K
.
16k B800[0]h .
) (text mode ) (graphics mode .


) ( .

- INT 10 H
O2 H AH .
) ( O BH DH
DL . .
. O8 :
,Request set sursor
,Page number O
,Row 8
,Solumn 15
,Call interrupt service.

AH,O2 H
BH,OO
DH,O8
DL,15
10H

MOV
MOV
MOV
MOV
INT

O6H INT 10 H

.
= AHO6H
= AL OOH .
= BH ) (
=CX:
=DX:
CX,DX )(
AL .
: CX OO:OOH :
18:4FH DX . 71H
) ( ) ( .
),AH =06(scroll),AL=oo(full screen
),white background (I), biue foreground (1
,upper left row: column
,lower row : column
,Call interrupt service

AX,0600H
BH,71H
BH,0000H
DX,184 FH
10 H

MOV
MOV
MOV
MOV
INT

05 oo
0500H CX oc4FH DX :
184FH
. 09H INT 21H

.

, customer name ? $

DB

CUSTMSG

customer name?$
DB $.
$ .
09H AH LEA
DX INT 21 H .
prompt

of

,load address

MOV AH,09H
LEA
DX,Custmsg
INT
21H

INT
. .
.
.
09H

. FFH,ooH
. 20 H .
06 H: INT 10 H

. INT
O
.

. O6 H

AL .
AL .
:
: = CX

) 00 ( = AL

: =DX

= BH

:
AX,0601 H
,Request Scroll upone Line
BH,61 H
,Bronn
Background , Blue Foregronnd
CX,0000
,From 00:00
throogh
DX,184 FH
),24:79-(Full screen
10H
,call interrupt service
.

MOV
MOV
MOV
MOV
INT

. ROW
O .
. .
. ROW )(CMP ROW,22
. ROW
ROW OO .
. ROW ) (INC ROW
CX DX . AL
DX:CX
. ) (
: :
: : :
,request scroll 7 lins
,cyan background,black foregroond

AX,0607H
BH,80H

MOV
MOV

MOV
CX,OC19 H
,from cow12,column25 tehrough
INT
10 H
,call
int errupt- service

.
.

.
O9 H : INT 10 H

. :
=BL

= AL

=CX

=BH

CX AL
. C60"
") (01H .
MOV
AH,09H
,request
display
MOV
AL,01H
,happy face
for display
MOV
BH,O
,page
)number o (normal
MOV
BL,16H
,blue
background
,brown foreground
MOV
CX,60
,60repeated characters
INT
10H
,call interrupt service
) (Bell
Tab
.

09 H
oo . CX 01

AL ) cx
LOOP (
02H INT 10H .
:

. Dana porter
:
.

11/2=5
40-5=35

page 60,132
Title Ao9CTRNM
)(EXE
Accept
names ,Center on screen
.model small
.stack
64
Data
Parlist
labeel
byte
Maxnlen
DB
20
Actulen
DB
?
KB name
DB
21 DUP
Prompt
DB
name? , $
.Code
.886
Alomain
proc
far
,MOV AX.@ data,MOV
DS,AX
MOV
ES,AX,
CALL
QLOCLR
cx AL
"
") (01H :
display

,Request

AH,09H

MOV

display

face for

,Happy

AL,01H

MOV

number

,page

BH,O

MOV

,blue

BL,16 H

MOV

,60

CX,60

MOV

)o (normal
foreground

background , brown
characters

repeated

INT
10 H
,call
interrupt
service
) (Bell
TAB
.

09 H
00 . CX
01 AL )
CX LOOP (
02H INT 10H
.
A2OLOOP:
,set wrsor to oo,oo

name

of

DX,OOOO

MOV

Q2OCURS

Call

,display-prompt

B10 PRMPT

Call

,provide

C10 INPT

Call

,clear

Q10 CLR

Call

for input
screen

CMP

ACTULEN,OO

,name entered?

JE

A30

Call

D10 CODE

, setbell

Call

E10 CENT

,cinter,display name

JMP

A20 LOOP

,no,exit
ande $

A30:
MOV

AX,4COOH ?

INT

21 H

A10 MAIN

,end processing

ENDP
Display

B10 PROMPT

PROC
MOV
Lea
INT

Prompt
Near

AH , 09H

,Reqvest

dispiay

DX,PROMPT
21H

RET

C10 INPT

INT

21 H

B10 Prompt
Endp
Accept+input of name
Proc
near
MOV
AH,OAH
,Request
Lea
DX,PARlist
,input
...
RET
.... C10INPT
Endp

Key board

D10 Code

D1OCOde
E10cent

E10Cent
Q10CLR

Set bell and $ delimiter


PROC
near
Movsx
BX,Actulen
Replace
Mov
KB name [BX],0
Mov
KB name[BX+1] $
Ret
Endp
Center and display name:
PROC
near

ODH

with

0H

MOV

DL,Actulen

,locate center column

Shir

DL,1

,divide lengh

NEG

DL

,reverse

ADD

DL,40

,add 40

MOV

DH,12

,center

Call

Q20coRs

MOV

AH,09H

LEA

DX,kbname

INT
RET
Endp
PROC

by 2

sign

row

,set cursor

,display name

21 H

Clear Screen
Near

MOV

AX,0600H

MOV

BH,30

,Request

scroll screen

CX,0000

MOV

DX,184FH

MOV

10H

INT
RET
Endp

Set eursor row co umn


PROC
near
,DX set on entry
MOV
AH,02H
,Request set cursor
MOV
BH,00
,page #00
INT
10H
RET
ENDP
End
A10 main

Q10 CLR
Q20CUPRS

Q20CURS

E10 CENT SHR


.
NEG + - . ADD
DL DL

.

Dana porter:

D10Ccode ) (01H
:
BX,Actulen
Kbname[BX],01H

MOV ZX
MOV

MOVzx BX . MOV
BX
. mov bx KB name

07H . 07H
KB name+11 ) Enter (
D10 code $ 07H 09HINT
21 H .
> <Enter
. 09 H INT 21 H 00H
:


cmp Actulen ,oo A20 loop .

OAH INT 21 H
OAH INT 21 H .

INT .
.
.
.
. :
. ABEL BYTE .

LABEL .
.
LABEL .
. .
O FFh .
.
.
.
. .

. Enter
.

pgup , home , F1
.

OS
12,unix
.
.

) (con

00

) (con .

01

) (con .

02

)(AVX

03

)(LPT1PRN

04

01,00:
.
.

40h INT 21h



.
AH=40h

=CX
BX=01

=DX

INT AX
:
= 05H ) (
= 06H AX
:
error

display

for

, test

error-rautine

JC

) 07H( ) oalt,(back spacs) 08H (ODH


) ( 09H INT 21H .

Intertech corp , ODH,OAH

,Dispiay area

display

DB

,kequest

AH,40H

MOV

,File handle for screen

BX,01

MOV

,Display 17 characters

ex,17

MOV

area

,Display

BX,Cotitle

,Call interrupt service

21 H

Cotitle

Lea
INT

Cotitle OAH,ODH

3FH INT 21 H

. :

BX=00
=DX

AH=3FH
=CX

INT AX
.

INT
AX = 05H: = 06H
. AX

.

Oah INT 21h 3Fh )spaes

(back

20DUP

input

keyboard

area
service

DB

,Request

AH,3FH

MOV

,File

BX,00

MOV

,maximum

CX,20

MOV

handle for key board


20 characters

KB nput

,Input

DX,KBInput

Lea

,call interrupt

21 H

INT


CX . Enter
.

(ODH) Enter
) (Oah
.

. INT
AX .

You might also like