Professional Documents
Culture Documents
Barnameh Nevisi
Barnameh Nevisi
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
: 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
MOV . - MOV .
.
.
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
) 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
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
[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
: 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 :
mem
rem/memsegreg
seg regreg/mem
) 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
ODH
with
0H
MOV
DL,Actulen
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
Q10 CLR
Q20CUPRS
Q20CURS
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:
.
.
=CX
BX=01
=DX
INT AX
:
= 05H ) (
= 06H AX
:
error
display
for
, test
error-rautine
JC
,Dispiay area
display
DB
,kequest
AH,40H
MOV
BX,01
MOV
,Display 17 characters
ex,17
MOV
area
,Display
BX,Cotitle
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
.
(back
20DUP
input
keyboard
area
service
DB
,Request
AH,3FH
MOV
,File
BX,00
MOV
,maximum
CX,20
MOV
KB nput
,Input
DX,KBInput
Lea
,call interrupt
21 H
INT
CX . Enter
.
(ODH) Enter
) (Oah
.
. INT
AX .