Professional Documents
Culture Documents
Cau Truc May Tinh & ASM
Cau Truc May Tinh & ASM
4/4/2006
MUC TIEU
:
C L
1. Kham pha b mat ben trong may tnh. 2.Trang b nhng kien thc c ban ve cau truc tong quat cua may tnh cung nh cac thanh phan cau tao nen may tnh. 3. Nam c cach hoat ong,cach giao ti p cua cac thanh phan cau tao nen may tnh. 4. Biet viet 1 chng trnh bang Assembly dch lien ket va thc thi chng trnh nay. 5. Biet lap trnh x ly n gi n phan cng, lap trnh he thong . 6. Cc khi ni m c b n v virus TH - nghin c u cc k thu t ly lan c a virus tin h c
4/4/2006 Chuong 1 C U TRC T NG QUT C A HTMT 2
Ti li u tham kh o
Structured Computer Organization Andrew Tanenbaum Assembly Language For the IBM-PC Kip R Irvine Assembly Programming Language & IBM PC Ythayu Charles Marut Gio trnh C u trc my tnh - T ng Vn On L p trnh H p ng - Nguyen Ngoc Tan -V Thanh Hi n
4/4/2006
Ti li u tham kh o
Computer Virus Handbook Virus Writing guide Billy Belceb The macro virus writing guide The little black book of computer viruses M t s m u chng trnh virus (virus file, virus macro)
4/4/2006
4/4/2006
cng mn h c
Chng 1 : T Chng 2 : T ch c t ng qut c a h ch c CPU th ng MT Chng 3 : M c logic s Chng 4 : T ch c b nh
Chng 5 : Xu t nh p Chng 6 : L p trnh Assembly T p l nh Chng 7 : C u trc i u khi n & Vng l p Chng 8 : Macro & Procedure nhng CT Assembly vo ngn ng c p cao nh C Chng 9 : L p trnh x Chng 10 : L p trnh x l mn hnh-bn phm-mouse. l File
Chng 11 : Cc khi ni m c b n v Virus tin h c phn tch cc k thu t ly lan chung c a VR tin h c v ly lan trn m ng. Chuong 1 C U TRC T NG
4/4/2006 QUT C A HTMT 6
4/4/2006
M c tiu :
N m c t ng quan v c u trc my tnh. Hi u v My Turing & Nguyn l Von Neumann Bi t s kh i chi ti t c a my tnh Nam nguyn l ho t ng my tnh Bi t cc component c a my tnh : Processors,Memory,Input/Output devices,Bus
4/4/2006
Chng 1
Tong quan ve cau truc may tnh. Mo hnh may Turing Nguyen ly Von Neumann. S o tong quat cua mot may tnh. Nguyen ly hoat ong cua may tnh Cau hoi on tap
Chuong 1 C U TRC T NG QUT C A HTMT
4/4/2006
4/4/2006
10
4/4/2006
11
Memory : ch a cc ch th & d li u
2+3/4*3-5=? . .. .
4/4/2006
12
The system bus (shown in yellow) connects the various components of a computer. The CPU is the heart of the computer, most of computations occur inside the CPU. RAM is a place to where the programs are loaded in order to be executed.
4/4/2006 Chuong 1 C U TRC T NG QUT C A HTMT 13
M hnh Turing :
M hnh ny r t n gi n nhng n c t t c cc c trng c a 1 h th ng my tnh sau ny. Nguyn l c u t o my Turing : u c ghi kh i x l ch a t p h u h n cc tr ng thi
Bng d li u v h n, d li u k t thc l b
Si
Chuong 1 C U TRC T NG QUT C A HTMT
4/4/2006
14
Nguyn l xy d ng MT
MT i n t lm vi c theo hai nguyn l c b n : nguyn l s v nguyn l tng t . Nguyn l s s d ng cc tr ng thi r I r c c a 1 I l ng v t l bi u di n s li u nguyn l m. Nguyn l tng t s d ng 1 I l ng v t l bi n I lin t c bi u di n s li u nguyn l o
4/4/2006
15
M ch i n trong MT
Trong MT c nh ng lo I m ch i n no ? M ch t h p : l m ch i n c tr ng thi ng ra ph thu c t c th I vo t h p c a tr ng thi ng vo. Ex : M ch gi I m a ch M ch tu n t : l m ch i n th c hi n 1 m c ch m tr ng thi ng ra ph thu c vo t h p c a tr ng thi ng vo v tr ng thi c a qu kh ng vo. Ex : m ch c ng, tr , nhn , chia
4/4/2006
16
Nguyn l Turing
kh i x l u c ghi ch a t p h u h n cc tr ng thi Bng d li u v h n, d li u k t thc l b
Si
Sj
My lm vi c theo t ng b c r i r c. M t l nh c a my nh sau : qiSiSjXqj. Ngha l : u c ghi ang Si th s ghi Sj vo hi n t i v d ch chuy n ho c ng yn theo ch th l X v tr ng thi hi n hnh c a my l qj
4/4/2006 Chuong 1 C U TRC T NG QUT C A HTMT 17
Th d my Turing
Xt th d my Turing th c hi n php ton NOT trn chu i cc bit 0/1.Chu i d li u nh p ban au l 10 t p cc k hi u c a my {0,1} t p cc tr ng thi trong {q0, q1} t p l nh g m 3 l nh : q001Rq0 , q010Rq0 , q0bbNq1 q0 Ban u 0 D ng q0
Chuong 1 C U TRC T NG QUT C A HTMT K t
q0
b q1
1
qu
b
01
19
4/4/2006
Nguyn l VonNeumann
My Von Neumann l m hnh c a cc my tnh hi n i. Nguyn l c a n nh sau : V m t logic (ch c nng) , my g m 3 kh i c b n : n v x l, b nh v h th ng xu t nh p. B nh B nh Trao i thng tin i u khi n H xu t nh p data
4/4/2006
n v x l n v x l
chng trnh
Chuong 1 C U TRC T NG QUT C A HTMT 20
Nguyn l Von Neumann (cont) Chng trnh i u khi n x l d li u cng c xem l data v c lu tr trong b nh g i l chng trnh lu tr . B nh chia lm nhi u , m i c 1 a ch (nh s th t ) c th ch n l a nh trong qu trnh c ghi d li u. (nguyn l nh a ch )
4/4/2006
21
Nguyn l Von Neumann (cont) Cc l nh c th c hi n tu n t nh 1 b m chng trnh (thanh ghi l nh) n m bn trong n v x l.
4/4/2006
22
A L U
4/4/2006
23
Nguyn l ho t ng MT
CPU CPU
nh ccll nh Phn tch nh Phn tch ll nh Th thi nh Th ccthi ll nh
B nh chnh B nh chnh
Lu tr thng tin Lu tr thng tin Ni ch a chng trnh Ni ch a chng trnh CPU v th thi CPU ccv th ccthi
Kh xu nh p Kh ii xu tt nh p
Giao ti p v mi tr ng bn ngoi Giao ti p v iimi tr ng bn ngoi xu nh p d li u, b nh ph xu ttnh p d li u, b nh ph
4/4/2006 Chuong 1 C U TRC T NG QUT C A HTMT 24
Registers
Main Memory . .
I/O Devices
Disk Printer
Bus
Bus
4/4/2006 Chuong 1 C U TRC T NG QUT C A HTMT 25
Bus
S kh i chi ti t
c, phn tch, ra l nh cho cc n v ch c nng th c hi n
Php ton: s h c, lu n l, so snh, d ch, quay,x l bit. M I php ton cho 4/4/2006 2 k t qu
26
T ng k t chng
My tnh c thi t k trn t ng c a My Turing v nguyn l Von Neumann. V m t ch c nng my tnh g m 3 ph n : n v x l, b nh chnh v cc thi t b xu t nh p.
4/4/2006
27
Cu h i
Cu 1: Trnh by nguyn l Von Neumann. Cu 2: Cho bi t s khc nhau gi a m hnh Turing v m hnh VonNeumann. Cu 3: Trnh by nguyn l ho t ng c a My Turing. Cu 4: Tru c khi c nguyn l Von Neumann, chng trnh my tnh th c hi n c u? Cu 5 : Cho bi t k t qu c a 2+3 ?
4/4/2006
28
Chng 2 : T ch c CPU
M c tiu : N m c ch c nng c a CPU Hi u c cc thnh ph n bn trong CPU. N m c cch CPU giao ti p v i thi t b ngo i vi. Bi t c cc c tnh c a CPU h Intel
Chuong 2 : T ch c CPU
2.1 Gi i thi u h th ng s 2.2 B x l trung tm CPU 2.3 H th ng Bus 2.4 B thanh ghi 2.5 C ch nh v a ch 2.6 Cc c tnh thi t k lin quan n hi u su t CPU h Intel 2.7 Cc c trng c a CPU h Intel 2.8 Cu h i n t p
Chuong 2 : T ch c CPU 2
2.1 H th ng s
H m nh phn bt phn th p phn th p l c phn C s 2 8 10 16 s k s 2 8 10 16 d ng k s v k t bi u di n s
0 1
Ex : 1010b Ex : 24o
01234567
H th ng s
H th ng s l g ? Vo th I i m , vi c dng cc que m l 1 t ng v i!! Cn vi c dng cc k hi u thay cho cc que m cn v i hn!!!! M t trong cc cch bi u di n 1 s hi n nay l s d ng h th ng s m decimal. C nhi u cch bi u di n 1 gi tr s . Ngy xa, con ng idng cc que m sau h c v cc hnh trn m t t v trn gi y. th d s 5 l n u c bi u di n b ng | | | | | (b ng 5 que). Sau ch s La M b t u dng cc k hi u khc nhau bi u di n nhi u s g n hn. Th d s 3 v n bi u di n b I 3 que | | | nhng s 5 th c thay b ng V cn s 10 th thay b ng X.
Chuong 2 : T ch c CPU
H th ng s
S d ng que m l 1 ngha v I th i i m ny.V vi c dng cc k hi u thay cho cc que m cng v i hn!!!.
Chuong 2 : T ch c CPU
Decimal System
Chuong 2 : T ch c CPU
n u ta t "7"
Chuong 2 : T ch c CPU
Binary System
on and off, or 1 and 0. MT dng binary system, binary system c 2 digits: 0, 1 Nh v y c s (base) l 2.
M i k s (digit) trong h binary number c g i l BIT, 4 bits nhm thnh 1 NIBBLE, 8 bits t o thnh 1 BYTE, 2 bytes t o thnh 1 WORD, 2 words t o thnh 1 DOUBLE WORD (t dng):
Chuong 2 : T ch c CPU
Hexadecimal System
Hexadecimal System Hexadecimal System dng 16 digits: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F do c s (base) l 16. Hexadecimal numbers are compact and easy to read. Ta d dng bi n I cc s t binary system sang hexadecimal system and v ng c l i, m i nibble (4 bits) c th bi n thnh 1 hexadecimal digit : Ex : 1234h = 4660d
Chuong 2 : T ch c CPU
: 0- 0=0
0 - 1 = 1 m n 1 1 0 = 1 1- 1=0
Chuong 2 : T ch c CPU
10
A and B 0 0 0 1
A or B 0 1 1 1
A xor B 0 1 1 0
Not A
0 0 1 1
0 1 0 1
1 1 0 0
11
Chuong 2 : T ch c CPU
Chuy n h t 10
oi t he 10 he 2 : Ex : 12d = 1100b
he 2
Cach oi : lay so can oi chia lien tiep cho 2, dng khi so b chia bang 0. Ket qua la cac so d lay theo chieu ngc lai. 12 : 2 = 6 0 6:2=3 0 3:2 =1 1 1:2 = 0 1
Chuong 2 : T ch c CPU 12
dng
Chuy n h t he 2
oi t he 2 he 10 : Ex : 1100b = ?d
he 10
Cach oi :
ai*2i vi i 0...n
Chuy n h t he 10
oi t he 10 Ex : 253d = ?h he 16 :
he 16
Cach oi : lay so can oi chia lien tiep cho 16, dng khi so b chia
= 0. Ket qua la chuoi so d lay theo chieu ngc lai.
253d = FDh
Chuong 2 : T ch c CPU
14
Chuy n h t he 2
oi t he 2 he 16 : Ex : 101011010b = ?h
he 16
000101011010d = 15Ah 1 5 A
Chuong 2 : T ch c CPU
15
Chuong 2 : T ch c CPU
16
CPU (cont)
Cac nha che tao CPU qui nh toc o thc hien cua tng chip phu hp vi nhp tim cua chip o (clock speed) toc o ong ho, nhp ong ho. n v o toc o cua chip CPU la Mhz cho biet chip ap bao nhieu nhp trong 1 s. Ex : CPU 500Mhz.
Chuong 2 : T ch c CPU
18
S kh i
CPU
19
Chu ky lenh
Mot chu ky thc hien lenh may gom 3 giai oan chnh sau :
1.
2.
3.
Lay lenh : lenh cat o nh se c lay vao thanh ghi lenh. Giai ma va thc hien lenh : lenh trong thanh ghi lenh se c giai ma va thc hien theo mo ta cua lenh trong tap lenh. Xac nh a ch cua lenh tiep theo : trong khi lenh c thc hien, gia tr cua bo em chng trnh se t ong tang len ch en o nh cha lenh se c thc hien tiep theo.
Chuong 2 : T ch c CPU
20
Chu ky may
Chu ky may la chu ky cua 1 hoat ong c ban cua may tnh nh : Chu ky oc bo nh Chu ky ghi bo nh Chu ky oc toan hang Chu ky ghi ket qua Clock : xung lam nhiem vu nh th cho mach tuan t.
Chuong 2 : T ch c CPU 21
Chuong 2 : T ch c CPU
23
L NH 1 L NH 1
L NH 2 L NH 2
L NH 3 L NH 3
CPU th ng
L NH 1 L NH 2 L NH 3 Th i gian ti t ki m c L NH 1 L NH 2 L NH 3
He a bo x ly (MultiProccessor)
Shared memory
CPU CPU
CPU CPU
CPU CPU
CPU CPU
Bus
He MultiProccessor s dung 1 ng Bus
Chuong 2 : T ch c CPU
25
He a bo x ly (MultiProccessor)
Local Memory
CPU CPU
CPU CPU
CPU CPU
CPU CPU
Shared memory
Bus
He MultiProccessor s dung nhieu bo nh cuc bo
Chuong 2 : T ch c CPU 26
Bus
Bus l cc ng truy n. Thng tin s c chuy n qua l i gi a cc thnh ph n linh ki n thng qua m ng l i g i l cc Bus.
Chuong 2 : T ch c CPU
27
2.3 H th ng Bus
Cc thi t b ngo i vi k t n i v i h th ng nh cc khe c m m r ng (expansion slot). Bus h th ng (Bus system) s k t n i t t c cc thnh ph n l i v i nhau. C 3 lo i bus :bus d li u (data bus), bus a ch (address bus) v bus i u khi n (control bus).
Chuong 2 : T ch c CPU 28
Cc lo i Bus
Address Bus : nhm ng truy n nh n di n v tr truy xu t trong thi t b ch : thng tin c c t u ho c ghi vo u. Data Bus : nhm ng truy n t i data th c s gi a cc thi t b h th ng do a ch trn address bus xc nh. r ng c a data bus (s ng dy d n) xc nh data trong m i l n truy n l bao nhiu. Control Bus : nhm ng truy n cho cc tn hi u i u khi n nh : tc v l c hay ghi, tc v th c thi trn b nh hay trn thi t b ngo i vi, nh n d ng chu k bus v khi no th hon t2 :tTtc cv Chuong ch CPU
29
Minh h a h th ng Bus
Address bus
CPU CPU
Control
Memory
IO devices IO devices
Chuong 2 : T ch c CPU 30
Chuong 2 : T ch c CPU
31
An Input and an Output Device That Share the Same Address (a Dual I/O Port)
Chuong 2 : T ch c CPU
32
Chuong 2 : T ch c CPU
33
PCI local bus n. Short for Peripheral Component Interconnect local bus. A specification introduced by Intel Corporation that defines a local bus system that allows up to 10 PCI-compliant expansion cards to be installed in the computer. A PCI local bus system requires the presence of a PCI controller card, which must be installed in one of the PCI-compliant slots. Optionally, an expansion bus controller for the systems ISA, EISA, or Micro Channel Architecture slots can be installed as well, providing increased synchronization over all the systems bus-installed resources. The PCI controller can exchange data with the systems CPU either 32 bits or 64 bits at a time, depending on the implementation, and it allows intelligent, PCI-compliant adapters to perform tasks concurrently with the CPU using a technique called bus mastering. The PCI specification allows for multiplexing, a technique that permits more than one electrical signal to be present on the bus at one time.
Chuong 2 : T ch c CPU
34
Bus PCI
PCI chu n n I ghp cc thi t b ng ai vi v i b VXL t c cao c a Intel nh 486/Pentium
T c t i a 33MHz Data bus 32 bits v 64 bits H tr cho 10 thi t b ngo i vi Plug and Play
Chuong 2 : T ch c CPU
35
Chuong 2 : T ch c CPU
36
Chuong 2 : T ch c CPU
37
r ng Bus
r ng bus chnh l s ng dy d n h p thnh bus. V i address bus : trn m i ng dy ch c th c 1 trong 2 tr ng thi 0 ho c 1 nn bus c r ng n th c th nh n bi t c 2n a ch . V i data bus : c thi t k theo nguyn t c l b i c a 8 (8,16,32,64 bit) nh th m i l n truy n 1 byte/2 bytes/4 bytes ty theo my. B r ng Data bus cng l n th data truy n cng nhanh.
Chuong 2 : T ch c CPU 39
Bus PC/XT c khe c m 62 chn bao g m : Data bus D0-D7 Adrress Bus A0-A19 Cc tn hi u i u khi n . Bus PC/AT : bus XT + 36 chn n a lm vi c v I data bus 16 bit, bus a ch 24 bit. 36 chn b sung c dng lm cc ng d li u D8-D15, cc ng a ch A21-A23, D0-D7 : l bus d li u 8 bit, 2 chi u n i gi a b VXL v i b nh , I/O.
Chuong 2 : T ch c CPU 40
Nh c i m c a Bus ISA
Data bus b h n ch 16 bits khng th ph I h p v I data bus 32 bits c a b VXL 386/486/Pentum. Address bus a ch 24 bits gi i h n kh nng truy c p b nh c c i qua khe c m m r ng 16MB khng th ph i h p c v i bus a ch 32 bit c a 386/486/Pentium.
Chuong 2 : T ch c CPU
41
Chu k Bus
M i chu k bus l 1 tc v xy ra trn bus truy n t i data. M i l n CPU c n l nh (ho c data) t b nh ho c I/O, chng ph i th c thi 1 chu k bus c c thng tin ho c ghi thng tin ra b nh ho c ra I/O. M i chu k bus g m 2 b c : b c 1 : g i a ch b c 2 : truy n data t a ch c nh v .
Chuong 2 : T ch c CPU
42
4 chu k bus c b n : c b nh (memory Read) ghi b nh (memory Write) c I/O (I/O Read) ghi I/O (I/O Write). Cc tn hi u c n thi t th c hi n cc chu k bus c sinh ra b i CPU ho c DMA Controller ho c b lm ti b nh .
Chuong 2 : T ch c CPU
43
Chu k Bus
M i chu k Bus i h i t i thi u tr n v n 2 xung ng h h th ng. y l m c tham chi u theo th i gian ng b ho t t c cc tc v bn trong my tnh. Xung u tin g i l Address time , a ch truy xu t s c g i i cng v i tn hi u xc nh lo i tc v s c th c thi ( c/ghi/ n mem/ n I/O).
Chuong 2 : T ch c CPU
44
Chu k Bus
Cu i xung th 2, CPU s ki m tra ng tn hi u Ready. N u thi t b c n truy xu t s n sng p ng tc v , thi t b ny s kch 1 tn hi u ln ng Ready bo cho CPU bi t v chu k bus hon t t. Khi 1 thi t b khng s n sng, khng c tn hi u trn ng Ready, CPU ph i ch , c th ph i tiu t n thm 1 hay nhi u xung clock.
Chuong 2 : T ch c CPU
45
Add1
Add2 Data2 Data1 Chu ky Bus khi co trang thai ch InactiveReady Chu k bus
Chuong 2 : T ch c CPU 46
AX Register
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
AH AL Thanh ghi AX (Accumulator register) : thanh ghi tch lu , di 16 bit nhng n cng c th chia lm 2 thanh ghi 8 bit AH v AL
AX ngoi ch c nng lu tr d li u, n cn c CPU dng trong php ton s h c nh nhn, chia.
Chuong 2 : T ch c CPU 49
AX Register
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
BX Register
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
BH
BL
Thanh ghi BX (Base register) : di 16 bit nhng n cng c th chia lm 2 thanh ghi 8 bit BH v BL BX lu gi a ch c a 1 th t c hay bi n, n cng c dng th c hi n cc php d i chuy n s h c v d li u.
Chuong 2 : T ch c CPU 51
DX Register
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DX DH DL
Thanh ghi DX (Data register) : di 16 bit nhng n cng c th chia lm 2 thanh ghi 8 bit DH v DL Thanh ghi DX : c vai tr c bi t trong php nhn v php chia ngoi ch c nng lu tr d li u. Ex : khi nhn DX s lu gi 16 bit cao c a tch.
Chuong 2 : T ch c CPU 52
CX Register
CX
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CX (Counter register) : thanh ghi ny dng lm b m trong cc vng l p. Cc l nh t ng l p l i v sau m i l n l p gi tr c a CX t ng gi m i 1. CL th ng ch a s l n d ch, quay trong cc l nh d ch, quay thanh ghi CX di 16 bit, n cng c th chia lm 2 thanh ghi 8 bit l CH v CL
Chuong 2 : T ch c CPU 53
CH
CL
Chuong 2 : T ch c CPU
55
PHN O N B
NH
CPU 8086 dng phng php phn an b nh qu n l b nh 1MB c a n. a ch 20 bit c a b nh 1MB khng th ch a trong cc thanh ghi 16 bit c a CPU 8086 b nh 1MB c chia ra thnh cc o n (segment) 64KB. a ch trong cc an 64KB ch c 16 bit nn CPU 8086 d dng x l b ng cc thanh ghi c a n. PHN O N B NH : l cch dng cc thanh ghi 16 bit bi u di n cho a ch 20 bit.
Chuong 2 : T ch c CPU
57
2.5 a ch v t l & a ch lu n l
a ch 20 bits c g i l a ch v t l. a ch v t l dng nh th no ? Dng trong thi t k cc m ch gi i m a ch cho b nh v xu t nh p. Cn trong l p trnh , a ch v t l khng th dng c m n c thay th b ng a ch lu n l (logic).
Chuong 2 : T ch c CPU
58
a ch lu n l
a ch c a 1 nh c xc nh b i 2 ph n: Segment : offset a ch o n Ex : B001:1234 M i a ch thnh ph n l 1 s 16 bit v c vi t theo cch sau : Segment : offset a ch trong o n ( d i)
Chuong 2 : T ch c CPU
59
S hnh thnh a ch
Hng Intel xu t 1 phng php hnh thnh a ch . M i a ch nh c hnh thnh t 1 php tnh t ng 1 a ch c s v 1 a ch offset. a ch c s lu trong 1 thanh ghi segemnt, cn a ch offset n m trong 1 thanh ghi ch s hay thanh ghi con tr . Php c ng ny s t o 1 a ch 20 bit g i l a ch v t l.
Chuong 2 : T ch c CPU
60
15
a ch segment a ch segment
0
0000
19
c ng
a ch v l 20 bit a ch v ttl 20 bit
Chuong 2 : T ch c CPU
61
G a s ta c a ch
08F1 : 0100
a ch tng i
0100
09010
Chuong 2 : T ch c CPU 62
Cch tnh a ch v t l t a ch lu n l
a ch v t l = (segment*16) + offset Segment 0 + offset a ch v t l Ex : tnh a ch v t l tng ng a ch lu n l B001:1234 a ch v t l = B0010h + 1234h = B1244h
Chuong 2 : T ch c CPU 63
ch ng ch t cc o n
a ch segment hay cn g i l a ch n n c a o n. N cho bi t i m b t u c a o n trong b nh . a ch offset th hi n kho ng cch k t u an c a nh c n tham kh o. Do offset di 16 bit nn chi u di t i a c a m i an l 64K.
Chuong 2 : T ch c CPU
64
ch ng ch t cc o n
0000
nh c a ch segment: offset
64KB FFFF
Chuong 2 : T ch c CPU
65
Chuong 2 : T ch c CPU
66
hi u r t i sao ta hy xt m i quan h gi a a ch v t l v i segment v offset 00000h 0000: 00010h 0001: 00020h 0002:
Ph n ch ng ch p c a 3 segment 0000,0001,0002
Gi i thch
0000:0000 00000h
Gi nguyn ph n segment, tng ph n offset ln 1 thnh ra a ch lu n l l 0000:0001 a ch v t l tng ng l 00001h Tng t v I a ch lu n l l 0000:0002 ta c a ch v t l l 00002h Khi offset tng 1 n v th a ch v t l tng 1 a ch ho c l tng 1 byte. Nh v y c th xem n v c a offset l byte
Chuong 2 : T ch c CPU
68
Lm l i qu trnh trn nhng gi nguyn ph n offset ch tng ph n segment. 0001:0000 0002:0000 00010h 00020h
Chuong 2 : T ch c CPU
69
Ta th y segment 0000 n m u vng nh nhng segment 0001 b t u cch u vng nh ch c 16 bytes, segment 0002 b t u cch u vng nh 32 bytes.. Ph n ch ng ch p 3 segment 0000,0001,0002 trn hnh v l vng b nh m b t k nh no n m trong ( a ch v t l t 00020h n 0FFFFh) u c th c a ch lu n l tng ng trong c 3 segment.
Chuong 2 : T ch c CPU
70
Ex : nh c a ch 0002Dh s c a ch logic trong segment 0000 l 0000:002D Trong segment 0001 l 0001:001D Trong segment 0002 l 0002:000D n u vng b nh no cng c nhi u segment ch ng ch p ln nhau th cc nh trong cng c nhi u a ch lu n l.
Chuong 2 : T ch c CPU
71
Chuong 2 : T ch c CPU
72
O D I T S Z
O OverFlow flag T : Trap flag A : Auxiliary flag D : Direction flag S : Sign flag P : Parity flag
Chuong 2 : T ch c CPU
A
Z : Zero flag
I : Interrupt flag
C : Carry flag
75
Chuong 2 : T ch c CPU
78
Chuong 2 : T ch c CPU
79
A CH LU N L V THANH GHI
tham kh o n b nh trong chng trnh, VXL 8086 cho php s d ng cc a ch lu n l 1 cch tr c ti p ho c thng qua cc thanh ghi c a n. Thanh ghi o n dng ch a segment Thanh ghi t ng qut dng ch a a ch trong o n offset tham kh o n a ch lu n l c segment trong thanh ghi DS, offset trong thanh ghi BX, ta vi t DS:BX
Chuong 2 : T ch c CPU 80
Chuong 2 : T ch c CPU
81
Trong cch s d ng a ch lu n l thng qua cc thanh ghi c 1 s c p thanh ghi lun ph i dng chung v i nhau 1 cch b t bu c : CS:IP l y l nh ( a ch l nh s p thi hnh) SS:SP a ch nh Stack SS:BP thng s trong Stack (dng trong chng trnh con) DS:SI a ch chu i ngu n ES:DI a ch chu i ch
Chuong 2 : T ch c CPU
82
Chng trnh m VXL 8086 thi hnh th ng c 3 an : an chng trnh c a ch trong thanh ghi CS. an d li u c a ch trong thanh ghi DS. an stack c a ch trong thanh ghi SS.
Chuong 2 : T ch c CPU
83
Chuong 2 : T ch c CPU
84
Chuong 2 : T ch c CPU
85
Chuong 2 : T ch c CPU
87
Chuong 2 : T ch c CPU
88
Chuong 2 : T ch c CPU
91
CPU Pentium
3 thanh phan gop sc tang toc o x ly cua Pentium :
n v tnh toan so nguyen supercallar Bo nh Cache cap 1 ben trong CPU. n v tnh toan so cham ong supercallar
Chuong 2 : T ch c CPU
92
S O KHOI PENTIUM
Vung em ch Re nhanh Bo x ly dau cham ong Registers U Pipeline cua ALU Hang nhat sm registers V Pipeline cua ALU
BIU Quan ly Bus
Chuong 2 : T ch c CPU 93
Cache lenh 8K
Cache Data 8K
Bus ISA-8 bits : a. ch y t c ng h l 8 MHz truy n t i d li u t i a 8 MB/s. b. ch y t c ng h l 4.77 MHz truy n t i d li u t i a 6MB/s. c. ch y t c ng h l 4.77 MHz truy n t i d li u t i a 1MB/s. d. ch y t c ng h l 4.77 MHz truy n t i d li u t i a 12MB/s.
Chuong 2 : T ch c CPU
97
b. ch y t c ng h l 32 MHz truy n t i d li u t i a 12MB/s. c. ch y t c ng h l 4.77 MHz truy n t i d li u t i a 12MB/s. d. ch y t c ng h l 16MHz truy n t i d li u t i a 12MB/s.
Chuong 2 : T ch c CPU
98
Bus PCI : a. truy n t i d li u t i a 528 MB/s. b. truy n t i d li u t i a 128MB/s. c. truy n t i d li u t i a 512MB/s. d. truy n t i d li u t i a 64MB/s.
Chuong 2 : T ch c CPU
99
Chuong 2 : T ch c CPU
100
H th ng Bus l h th ng xa l thng tin bn trong PC gip trao i: a.thng tin gi a cc my tnh b.d li u gi a cc thi t b ng ai vi c. d li u gi a b VXL v cc thi t b khc d. t t c u ng
Chuong 2 : T ch c CPU
101
M i h at ng c a my tnh t CPU n b nh RAM v nh ng thi t b I/O u ph I thng qua s n I k t c g i chung l : a.Chu n giao ti p b.Bus c.BIOS d.CMOS
Chuong 2 : T ch c CPU
102
BI T P
Bi 1 : Cho bi t gi tr chu i XY c lu tr trong MT d I d ng s hex v d ng s bin? Bi 2 : Cho bi t gi tr c d u sau : a.10000000b MOV AH,7F MOV AX,1234 MOV BH,AL MOV BL,AH h 10 c a cc s nguyn
BI T P
Bi 4: Cho o n code sau : MOV AL,81 ADD AL, 0FE INT 20H Gi s cc s u l s c d u. Gi i thch k t qu ch a trong thanh ghi AL khi o n code trn c th c thi. S d ng gi tr h 10 gi i thch.
Chuong 2 : T ch c CPU
104
BI T P
Bi 5: Gi s thanh ghi trong MT c a b n di 24 bits, cho bi t gi tr c a s dng l n nh t m thanh ghi ny c th ch a 2 h 2 v h 16? Bi 6 : Bi n I a ch sau thnh a ch tuy t i a. 0950:0100 b. 08F1:0200
Chuong 2 : T ch c CPU
105
MAINBOARD
Chuong 2 : T ch c CPU
106
MAINBOARD
Chuong 2 : T ch c CPU
107
MAINBOARD
Chuong 2 : T ch c CPU
108
Chuong 2 : T ch c CPU
109
Chuong 2 : T ch c CPU
110
MAINBOARD
Chuong 2 : T ch c CPU
111
Chuong 2 : T ch c CPU
112
Ex : F000:0100
DS: 200
4/4/2006
0AF5
Chuong 3 Debug
4/4/2006
Chuong 3 Debug
C (Compare)
So sanh 2 vung bo nh va liet ke cac o nh co nh ng noi dung khac nhau. Cu phap : C <khoang> , < a ch>
Ex : - C 100, 200, 3000 : 1000 So sanh o nh DS:100h vi o nh 3000:1000h, o nh DS:101h vi o nh 3000:1001h.. Cho en o nh DS :200h vi o nh 3000:1100h. So sanh 101 bytes
4/4/2006 Chuong 3 Debug 6
D (Dump)
Hien noi dung bo nh theo dang he 16 va ng ASCII.
Cach goi : D <khoang>
4/4/2006
Chuong 3 Debug
Lenh F (Fill) nh
Cu phap : F <khoang> <danh sach> ng> ch> Cong dung : lap ay tr vao vung nh ngay ng ng tai a ch mong muon. n.
Tr nhap vao tng byte mot theo he 16 Dau tr (-) dung e lui lai 1 a ch. SPACE BAR dung e ti 1 a ch. ENTER e ket thuc.
4/4/2006
Chuong 3 Debug
OFFSET 100H
4/4/2006
Chuong 3 Debug
KET QUA
-F 100 "TOI DUA EM SANG SONG" -D 100 0ADD:0100 54 4F 49 20 44 55 41 20-45 4D 20 53 41 4E 47 20 0ADD:0110 53 4F 4E 47 54 4F 49 20-44 55 41 20 45 4D 20 53 0ADD:0120 41 4E 47 20 53 4F 4E 47-54 4F 49 20 44 55 41 20 0ADD:0130 45 4D 20 53 41 4E 47 20-53 4F 4E 47 54 4F 49 20 0ADD:0140 44 55 41 20 45 4D 20 53-41 4E 47 20 53 4F 4E 47 0ADD:0150 54 4F 49 20 44 55 41 20-45 4D 20 53 41 4E 47 20 0ADD:0160 53 4F 4E 47 54 4F 49 20-44 55 41 20 45 4D 20 53 0ADD:0170 41 4E 47 20 53 4F 4E 47-54 4F 49 20 44 55 41 20 TOI DUA EM SANG SONGTOI DUA EM S ANG SONGTOI DUA EM SANG SONGTOI DUA EM SANG SONG TOI DUA EM SANG SONGTOI DUA EM S ANG SONGTOI DUA
4/4/2006
Chuong 3 Debug
10
D (DUMP)
Muc ch : in noi dung bo nh trong MT ra man hnh di dang so hex. Cu phap : D [ address] D [range] Ex : in noi dung vung nh a lap ay v du trc a ch 100h Ex2 : xem noi dung vung nh 16 bytes bat au a ch F000:100
- D F000:100 L10
4/4/2006 Chuong 3 Debug 11
006F
- D 0000:0040 L 30
So bytes
4/4/2006 Chuong 3 Debug 12
E (ENTER)
Dung e a d lieu byte vao bo nh ngay ng tai a ch mong muon. n.
Cach goi : - E <a ch> <danh sach>
Tr nhap vao theo dang so 16 tng byte mot Dau - dung e lui lai 1 a ch Space Bar dung e ti 1 a ch Enter dung e ket thuc
4/4/2006
Chuong 3 Debug
13
4/4/2006
Chuong 3 Debug
14
Lenh U (Unassemble)
cong dung : in ra 32 bytes ma may cua ng chng trnh trong bo nh ra man hnh di lenh gi nh. nh cu phap : U [address] U [range]
Ex : U 100
In ra ma n hnh c ac ch CS:1 lenh ma may t 00 en C a S:119
4/4/2006 Chuong 3 Debug 15
119
Lenh R (Register) nh
Cong dung : xem va sa noi dung thanh ghi. ng Cu phap : - R enter (xem tat ca thanh ghi) xem thanh ghi AX : - R AX xem thanh ghi c : R F Ex : muon bat thanh ghi c CF va ZF ta nhap CY va ZR.
4/4/2006
Chuong 3 Debug
16
Lenh N (Name) nh
Cong dung : tao tap tin can oc hay ghi trc ng khi dung lenh L hay W. ng nh Cu phap : - N <ten file> [ thong so] L [a ch]
4/4/2006
Chuong 3 Debug
17
4/4/2006
Chuong 3 Debug
18
Thoat khoi Debug va goi lai tap tin theo cach sau : C :\> Debug Love.txt tm xem Debug a nap tap tin Love.txt vao cho nao trong bo nh.
4/4/2006
Chuong 3 Debug
19
Cu phap : W [address]
Ex : tao tap tin co ten Love.txt
Lenh W (Write) nh
Bc 1 : dung lenh E e a cau I love you more than I can say vao o nh a ch 100. Bc 2 : dung lenh D e kiem tra lai a ch 100 Bc 3 : dung lenh N e at ten tap tin : - N Love.txt Bc 4 : dung lenh R e nh so byte can ghi len a trong 2 thanh ghi BX va CX. (BX cha 16 bit cao, CX cha 16 bit thap). ay so byte can ghi la 1Eh. Bc 5 : dung lenh W e ghi cau tren a nhap vao vung nh co a ch bat au la 100.
4/4/2006
Chuong 3 Debug
20
Lenh T (Trace)va P
cu phap : - T [= <ia ch>][so lan]
Muc ch : dung e chay 1 hay nhieu lan cac lenh trong bo nh Ex : - T = 3000:1000 Ex : - T = 3000:1000 <so lan>
4/4/2006
Chuong 3 Debug
21
Lenh L (Load)
nap tap tin hoac nap sector luan ly t a vao bo nh.
Cu phap : - L <a ch> [<a> <sector><so>] Dang 1 : neu ch co a ch dung e nap tap tin. Ten tap tin phai c gan trc bang lenh N. Tap tin luon luon c gan a ch offset 100h
Dang 2 : neu co ay u cac thong so , dung e oc sector luan ly tren a vao bo nh. a : = 0 o a A, =1 o a B, =2 o a C .
4/4/2006 Chuong 3 Debug 22
4/4/2006
Chuong 3 Debug
23
Lenh S (Search) nh
Cong dung : tm kiem tr trong 1 vung bo nh. ng ng Cu phap : - S <khoang> <danh sach> ng> ch> Giai thch : tm kiem tr co hien dien trong vung bo ng nh a ch nh hay khong? Neu co Debug hien cac a ch au cua nhng ni co cha danh sach. ch. Ex : - S 100 L 1000 DOS 18AF : 0154 18AF : 0823 Ex2 : - S 2000 2200 13,15,8A, 8
4/4/2006
Chuong 3 Debug
24
Lenh M (Move) nh
Cong dung : chep noi dung vung nh en 1 ng ng a ch khac. c. Cu phap : - M <khoang> ng> Ex : - M 100 105 200 Chep 5 bytes t DS:100 en DS:200
Ex2 : - M CS:100 L 50 ES:300 Chep 50 bytes t CS:100 en ES:300
4/4/2006 Chuong 3 Debug 25
Lenh I (Input) nh
Cong dung : nhap 1 byte t cong xuat nhap ng ng va hien ra man hnh. Cu phap : - I <a ch cong> ng> a ch cong la so he 16 toi a 4 ch so. ng Ex : - I 37E EC
4/4/2006
Chuong 3 Debug
26
Lenh O (Output) nh
Cong dung : xuat 1 byte ra cong xuat nhap. ng ng p.
Cu phap :- O<a ch cong> <tr> ng> a ch cong la so he 16 toi a 4 ch so. ng
Ex : - O 378 5E
4/4/2006
Chuong 3 Debug
27
Summary
Dung lenh D e xem noi dung vung nh tai a ch cua ng nh ng ROM BIOS F000:0000. Tng t xem noi dung vung nh RAM man hnh a ng ch B800:0000; bang vector ngat quang 0000:0000 ng Go vao may bang lenh A, oan chng trnh sau a ng nh ch 2000:0100
4/4/2006
Chuong 3 Debug
28
Summary
2000:0100 MOV AL,32 2000:0102 MOV AH, 4F 2000:0104 MOV CX, [200] 2000:0108 MOV WORD PTR [1800], 1 2000:010E MOV BYTE PTR [1800], 1 2000:0113 Xem lai oan chng trnh va anh tren bang lenh U. Chu y quan nh ng nh sat phan ma may. Tm xem cac toan hang tc thi va cac a y. ng ch xuat hien au trong phan ma may cua lenh. nh. Phan ma may cua 2 cau lenh cuoi co g khac nhaukhi dung cac nh ng toan t WORD PTR va BYTE PTR.
4/4/2006 Chuong 3 Debug 29
Summary
Dung lenh E nhap vao oan van ban sau vao bo nh tai a ch ng nh DS:0100 8086/8088/80286 Assembly language. Copyright 1988, 1886 by Brady Books, a division of Simon, Inc. All right reserved, including the of reproduction in whole or in part, in any form. (chu y ky t au dong xuong dong co ma ASCCI la 0D va 0A). ng ng ng
4/4/2006
Chuong 3 Debug
30
NH (Memory)
Muc tieu : 1. Hieu c cau tao cua bo nh, chc nang va hoat ong cua bo nh. 2. Nam c qua trnh oc bo nh & ghi bo nh. 3. Vai tro cua bo nh Cache trong may tnh.
Chng 3 : T ch c Memory
Bo nh (Memory)
Noi dung : 1. To chc bo nh cua may tnh IBM PC 2. Phan loai bo nh : Primary Memory va Secondary Memory. 3. Qua trnh CPU oc bo nh. 4. Qua trnh CPU ghi bo nh. 5. Bo nh Cache.
Chng 3 : T ch c Memory
Memory
B nh (Memory) la ni cha chng trnh va d lieu. n v o bo nh : Bit : n v bo nh nho nhat la bit. Moi bit co the lu tr 1 trong 2 trang thai la 0 va 1. Byte = 8 bits, c anh ch so t 0 en 7 bat au t phai sang trai. Kbyte = 1024bytes = 210 bytes. Mbyte = 1024Kbytes = 210 Kbytes. Gbyte = 1024Mbytes = 210 Mbytes.
Chng 3 : T ch c Memory 3
Primary Memory
Cn c g i l b nh chnh hay b nh trung tm. Chia lm 2 lo i : RAM v ROM
Chng 3 : T ch c Memory
RAM
RAM (Random Access Memory) b nh truy xu t ng u nhin.L ni lu gi cac chng trnh va d li u khi ch y chng trnh. c i m c a RAM : Cho phep c/ ghi d li u. D li u b m t khi m t ngu n.
Khi may tnh khi ong, Ram rong. Ngi lap trnh chu yeu la lam viec vi Ram vung nh tam e d lieu va chng trnh.
Chng 3 : T ch c Memory 5
RAM
Ram la vung nh lam viec neu vung nh nay tr nen nho so vi nhu cau s dung th ta tang them Ram (gan them Ram).
RAM c th chia lm 2 lo i : Dynamic v Static RAM Dynamic RAM : ph i c lm ti trong vng d i 1 ms n u khng s b m t n i dung. Static RAM : gi c gi tr khng c n ph i lm ti. RAM tnh c t c cao, c tn l b nh CACHE n m trong CPU.
Chng 3 : T ch c Memory 6
RAM
Chng 3 : T ch c Memory
ROM
ROM (Read Only Memory) : b nh ch c. ROM BIOS ch a ph n m m c u hnh v ch n on h th ng, cc chng trnh con nh p/xu t c p th p m DOS s d ng. Cc chng trnh ny c m ho trong ROM v c g i l ph n d o (firmware).
M t tnh nng quan tr ng c a ROM BIOS l kh nng pht hi n s hi n di n c a ph n c ng m i trong MT v c u hnh l i h i u hnh theo Driver thi t b .
Chng 3 : T ch c Memory
ROM(cont)
c i m c a ROM: Ch cho php c khng cho php ghi. D li u v n t n t i khi khng c ngu n.
Chng 3 : T ch c Memory
Secondary Memory
L b nh ph n m ngoi h p CPU. Floppy disk, Tapes, Compact discs l secondary Memory.
Chng 3 : T ch c Memory
11
S l c v Cache
Cache c p 1 (Level 1-cache) : n m trong CPU, t c truy xu t r t nhanh, theo t c c a CPU.
Cache c p 2 (Level 2-cache) : th ng c dung l ng 128K,256K l cache n m gi a CPU v Ram, th ng c u t o b ng Ram tnh (Static Ram), t c truy xu t nhanh v khng c n th i gian lm ti d li u. Cache c p 3 (Level 3-cache) : chnh l vng nh DRAM dng lm vng m truy xu t cho a c ng v cc thi t b ngo i vi. T c truy xu t cache c p 3 chnh l t c truy xu t DRAM.
Chng 3 : T ch c Memory
12
Cache (cont)
T ch c c a Cache :lin quan n chi n l c tr m v cch th c lu thng tin trong Cache. Lo i l nh ph i thi hnh : Cache ch a c chng trnh v d li u, khi CPU truy xu t m chng c s n th truy xu t nhanh. Khi CPU c n truy xu t b nh , cache s ki m tra xem ci m CPU c n c trong cache cha. Dung l ng cache : nh v y n u 1 t p l nh n m g n trong cache (vng l p ch ng h n) th th c thi r t nhanh.
Chng 3 : T ch c Memory
13
C u trc Cache
Cache c c u t o thnh t ng hng (cache lines) , 32 bit/hng cho 386, 128 bit/hng cho 486, 256 bit/hng cho Pentium. M i hng c km theo 1 tag lu tr a ch b t u c a o n b nh m thng tin c a vo cache. N u l cache c p 2 (SRAM), a ch b t u c a o n b nh chuy n data vo cache cn c lu trong 1 vng nh ring. M t b i u khi n cache (cache controller) s i u khi n ho t ng c a cache v i CPU v data vo/ra cache. Chnh Cache controller ph n nh chi n l c tr m c a cache. V i cache c p 1, cache controller l 1 thnh ph n c a CPU. V i cache c p 2, cache controller n m trn Mainboard.
Chng 3 : T ch c Memory 14
Hi u su t c a Cache
Cache dng lm vng m truy xu t nn n u CPU truy xu t data m c s n trong cache th th i gian truy xu t nhanh hn nhi u. Hi u qu c a cache ngoi vi c cho t c truy xu t nhanh cn ph thu c vo Cache hit ho c Cache miss. Cache Hit : t c data c s n trong Cache. Cache Miss : t c data cha c s n trong cache. t l cache hit v cache miss ph thu c vo 3 y u t : t ch c cache , lo i l nh ph i thi hnh v dung l ng c a cache.
Chng 3 : T ch c Memory
15
Hi u su t c a Cache
Tnh toan hieu suat thc thi cua Cache : Goi c thi gian truy xuat cua Cache M la thi gian truy xuat bo nh h la t le thanh cong (hit ratio), la t so gia so lan tham chieu cache vi tong so lan tham chieu. h =(k-1)/k T le that bai (miss ratio) (1-h) Thi gian truy xuat trung bnh = c+(1-h)m Khi h 1, tat ca truy xuat eu tham chieu ti Cache, thi gian truy xuat trung bnh c. Khi h 0, can phai tham chieu bo nh chnh moi luc, thi gian truy xuat trung bnh c+m.
Chng 3 : T ch c Memory 16
Chng 3 : T ch c Memory
18
Chng 3 : T ch c Memory
19
Interrup Vector Table BIOS and DOS data Resident portion of DOS
M E M O
User RAM
A0000 B0000 B8000 C0000 F0000 F6000 FE000
R Y M A P
20
EGA Color Video Monochrome Video Color Video Reserved ROM (not used) Reserved ROM ROM BASIC Chng 3 : BIOS Memory ROM T ch c
Memory Map
Dos data Area cha cac bien c DOS s dung nh :
Keyboard buffer : cac phm nhan c lu cho en khi c x ly. C ch tnh trang keyboard : cho biet phm nao ang c nhan. a ch cong printer. a ch cong tuan t Mo ta cac thiet b ang co trong he thong : tong dung lng bo nh, so o a, kieu man hnh
Chng 3 : T ch c Memory 21
Memory Map
User Ram : v tr thng tru cua DOS a ch 0600H. Vung nh trong nam ngay di vung nh Dos. Rom Area : t C000H FFFFHc IBM danh rieng cho Rom s dung cha hard disk controller, Rom Basic. Rom BIOS : t F000H FFFFH vung nh cao nhat cua bo nh cha cac chng trnh con cap thap cua Dos dung cho viec xuat nhap va cac chc nang khac..
Chng 3 : T ch c Memory
22
Chng 3 : T ch c Memory
23
Trnh t tac vu oc o nh
CPU a a ch o nh can oc vao thanh ghi a ch. Mach giai ma xac nh a ch o nh. CPU gi tn hieu ieu khien oc bo nh. Noi dung o nh can oc c a ra thanh ghi d lieu. CPU oc noi dung cua thanh ghi d lieu.
Chng 3 : T ch c Memory
24
Mach giai ma a ch o nh
Mach ien co nhiem vu xac nh ung o nh can truy xuat ang co a ch lu trong thanh ghi a ch. Bo nh lam viec c chia thanh nhieu o nh. Kch thc moi o nh thay oi tuy theo may, thng la 8 hay 16 bit tc 1 byte hay 1 word. Neu kch thc moi o nh la 1 byte th se co 8 ng d lieu song song noi bo nh lam viec vi bo VXL. Moi ng 1 bit , tat ca 8 ng tao thanh mot tuyen d lieu (data bus)
Chng 3 : T ch c Memory 25
oc / ghi d lieu
O NH
H NH N BO BO
Chng 3 : T ch c Memory
N V X LY
26
Bo nh
... . . . . .
11110 11111 Chng 3 : T ch c Memory 28
nv X ly
Bo giai ma a ch
Stack
Stack la vung nh ac biet dung e lu tr a ch va d lieu.
Stack thng tru trong stack segment.Moi vung 16 bit tren stack c tro en bi thanh ghi SP, goi la stack pointer. Stack pointer lu tr a ch cua phan t d lieu cuoi mi c them vao (pushed len stack.)
Chng 3 : T ch c Memory
29
Stack
phan t d lieu cuoi mi c them vao nay lai la phan t se c lay ra (popped trc tien). Stack lam viec theo c che LIFO (Last In First Out).
Stack
BEFORE HIGH MEM AFTER SP
HIGH MEM
0006
0006
00A5 SP SP giam 1
LOW MEM
Chng 3 : T ch c Memory
31
Chng 3 : T ch c Memory
32
Summary Slide
C nao c thiet lap khi 1 phep tnh so hoc khong dau qua rong khong va vi ch? Hai thanh ghi nao c to hp thanh a ch cua lenh se c thc ke tiep? Neu qua trnh oc bo nh. Tai sao qua trnh oc bo nh lai chiem nhieu chu ky may hn so vi truy cap thanh ghi? Thanh ghi AH b sa oi, tai sao thanh ghi AX cung thay oi theo. Noi dung nao chiem 1024 bytes thap nhat cua bo nh?
Chng 3 : T ch c Memory
33
Chng 3 : T ch c Memory
34
Chng 3 : T ch c Memory
35
Chng 3 : T ch c Memory
36
h1 h2
Hieu ngon ng may va ngon ng Assembly. Trnh hp dch Assembler. Ly do nghien cu Assembly. Hieu cac thanh phan c ban cua Assembly nh Nam c cau truc cua 1 CT Assembly. Biet viet 1 chng trnh Assembly. Biet cach dch, lien ket va thc thi 1 chng trnh ch Assembly.
4/4/2006 Chuong 5 Nhap mon ASM 1
Slide 1 h1 h2 shjsahjsa
huh, 13/10/2004
ssasasasas
huh, 13/10/2004
4/4/2006
Mot chng trnh viet bang ngon ng Assembly ng muon MT thc hien c ta phai chuyen thanh nh ngon ng may. y. Chng trnh dung e dch 1 file viet bang Assembly ng ng ngon ng may , goi la Assembler. Co 2 chng trnh dch: MASM va TASM
Assembler
4/4/2006
Ly do nghien cu Assembly o la cach tot nhat e hoc phan cng MT ch ng va he ieu hanh. nh. V cac tien ch cua no . Co the nhung cac chng trnh con viet ng bang ASM vao trong cacchng trnh viet ng cch bang ngon ng cap cao . ng
4/4/2006 Chuong 5 Nhap mon ASM 4
Lenh may nh
La 1 chuoi nh phan co y ngha ac biet no ra lenh cho CPU thc hien tac vu. nh
Tac vu o co the la : di chuyen 1 so t v tr nh nay sang v tr nh khac. c. Cong 2 so hay so sanh 2 so. ng nh
Add a number to the AL register Add a number to a variable Move the AX reg to another reg
4/4/2006
4/4/2006
Lien ket CT
Chay CT
4/4/2006
Go ten tap tin thc hien .EXE t dau nhac DOS e chay
Chuong 5 Nhap mon ASM 7
TenCT .MAP
TenCT .LIST
TenCT .CRF
4/4/2006
4/4/2006
4/4/2006
10
File Listing
Microsoft (R) Macro Assembler Version 5.10 Page 1-1 10/11/4 1 DOSSEG 2 .MODEL SMALL 3 .STACK 100H 4 .DATA 5 0000 48 45 4C 4C 4F 20 MES DB "HELLO WORD$" 6 57 4F 52 44 24 7 .CODE 8 0000 MAIN PROC 9 0000 B8 ---- R MOV AX,@DATA 10 0003 8E D8 MOV DS, AX 11 0005 B4 09 MOV AH,9 12 0007 BA 0000 R MOV DX, OFFSET MES 13 000A CD 21 INT 21H 14 000C B4 4C MOV AH,4CH 15 000E CD 21 INT 21H 16 0010 MAIN ENDP 17 END MAIN Microsoft (R) Macro Assembler Version 5.10 10/11/4
4/4/2006 Chuong 5 Nhap mon ASM 11
Map File
Start Stop Length Name 00000H 0001FH 00020H _TEXT 00020H 0002AH 0000BH _DATA 00030H 0012FH 00100H STACK Origin Group 0002:0 DGROUP Program entry point at 0000:0010 Class CODE DATA STACK
4/4/2006
12
Giai thch
.model small : dung kieu cau truc <= 64 K bo nh cho ng ma , 64K cho d lieu. u. .Stack 100h : danh 256 bytes cho stack cua chng nh trnh . .Data : anh dau phan oan d lieu o cac bien nh c lu tr. .Code : anh dau phan oan ma cha cac lenh phai nh nh thi hanh. nh. Proc : khai bao au 1 thu tuc, trong Ex nay ta ch co 1 c, thu tuc Main.
4/4/2006
13
4/4/2006
14
4/4/2006
15
Cac che o bo nh
Kieu SMALL MEDIUM Mo ta Ma lenh trong 1 oan.D lieu trong 1 oan nh n.D Ma lenh nhieu hn 1 oan.D lieu trong 1 oan nh n.D
COMPACT Ma lenh trong 1 oan. D lieu nhieu hn 1 oan nh n. LARGE Ma lenh nhieu hn 1 oan nh D lieu nhieu hn 1 oan,khong co mang nao > n,kho ng 64K HUGE Ma lenh nhieu hn 1 oan nh D lieu nhieu hn 1 oan, mang co the > 64K n, ng
4/4/2006
16
Dang lenh ng nh
Moi dong ch cha 1 lenh va moi lenh phai nam tren 1 dong
4/4/2006
17
INT 21H
Lenh INT so hieu ngat c dung e goi nh ng chng trnh ngat cua DOS va BIOS.
Ngat 21h Muon s dung ham nao cua INT 21h ta at function_number vao thanh ghi AH, sau o goi INT 21h
Function_number 1 2 9
4/4/2006
chc nang nhap 1 ky t t ban phm Xuat 1 ky t ra ma hnh. Xuat 1 chuoi ky t ra man hnh
18
Ham 2 : Hien th 1 ky t ra man hnh Input : AH =2 DL = Ma ASCII cua ky t hien th hay ky t ieu khien
4/4/2006
19
Th du minh hoa
DOSSEG .MODEL SMALL .STACK 100H .CODE MAIN PROC MOV AH , 2 MOV DL , ? INT 21H MOV AH ,1 INT 21H MOV BL,AL MOV AH,2 MOV DL, 0DH INT 21H MOV DL , 0AH INT 21H MOV DL , BL INT 21H MOV AX , 4C00H INT 21H MAIN ENDP END MAIN
KET QUA
4/4/2006
?N N
Chuong 5 Nhap mon ASM 20
Bien
Cu phap : [ten bien] DB | DW |.... [tr khi tao] n] o] La mot ten ky hieu danh rieng cho 1 v tr trong bo nh nh ni lu tr d lieu. u. Offset cua bien la khoang cach t au phan oan ng ch en bien o. Ex : khai bao 1 danh sach aList a ch 100 vi ch noi dung sau : .data aList db ABCD
4/4/2006
22
Bien (cont)
Luc o : Offset 0000 0001 0002 0003 Bien A B C D
4/4/2006
23
4/4/2006
24
KIEU BYTE
Char db A Num db 41h Mes db Hello Word,$ Array_1 db 10, 32, 41h, 00100101b Array_2 db 2,3,4,6,9 Myvar db ? ; bien khong khi tao Btable db 1,2,3,4,5 db 6,7,8,9,10
4/4/2006 Chuong 5 Nhap mon ASM 25
1000h
BO NH
1001h
34
12
D LIEU
1234H
4/4/2006
27
Toan t DUP
Lap lai 1 hay nhieu gia tr khi tao. o. Ex : Bmem DB 50 Dup(?) ; khai bao vung nh gom 50 bytes. ng db 4 dup (ABC) ;12 bytes ABCABCABCABC db 4096 dup (0) ; Vung em 4096 bytes tat ca bang 0 ng ng
4/4/2006
28
4/4/2006
30
Toan t DUP
Ch xuat hien sau 1 ch th DB hay DW Vi DUP ta co the lap lai 1 hay nhieu tr cho vung nh. ng Rat co ch khi lam viec vi mang hay chuoi. ng i.
4/4/2006
31
Toan t ?
Muon khai bao 1 bien hay 1 mang ma khong ng can khi tao tr ta dung toan t ? ng
Ex : MEM8 DB ? MEM16 DW ?
BMEM DB 50 DUP(?) ; khai bao 50 byte trong trong bo nh
; khai bao 1 byte trong trong bo nh ; khai bao 2 byte trong trong bo nh
4/4/2006
32
SUMMARY
chng trnh Assembly gom nhieu dong lenh. ng nh. Moi lenh phai viet tren 1 dong nh ng Lenh co the gom [ten] [toan t] [toan hang] nh ng] Cac ky t phai at trong dau hay DB dung e nh ngha bien kieu BYTE ng DW dung e nh ngha bien kieu WORD. ng Co 2 cach xuat nhap d lieu : lien lac trc tiep qua ch cong hay dung cac phuc vu ngat cua DOS va BIOS. ng ng
4/4/2006 Chuong 5 Nhap mon ASM 34
4/4/2006
35
Chng trnh sau co loi. Hay tm cau lenh nao gay ra loi, giai nh thch va sa lai cho ung. ng.
.MODEL SMALL
.STACK 100H .DATA MOV AX, VALUE1 MOV BX, VALUE2 INC BX, 1 INT 21H MOV 4C00H, AX MAIN ENDP VALUE1 VALUE2 END MAIN
4/4/2006 Chuong 5 Nhap mon ASM 36
0AH 1000H
Chng trnh sau co loi. Hay tm cau lenh nao gay ra loi, giai nh thch va sa lai cho ung. ng.
.MODEL SMALL
.STACK 100H .CODE MAIN PROC MOV AX, @DATA MOV DS , AX MOV AX, VALUE1 MOV AX, VALUE2 MOV AX, 4C00H INT 21H MAIN ENDP VALUE1 DB 0AH VALUE2 DB 1000H END MAIN 4/4/2006
37
4/4/2006
4/4/2006
Toan t so hoc
Toan t + * / MOD + SHL SHR Cu phap + expression - expression exp1*exp2 exp1/exp2 exp1 mod exp2 exp1 + exp2 exp1 - exp2 exp shl n exp shr n Cong dung ng
Dng Am Nhan Chia Phan d Cong ng Tr Dch exp sang trai n bit Dch exp sang phai n bit
4/4/2006
Toan t logic
Not And Or Xor
Ex : MOV AH , 8 OR 4 AND 2 MOV AL, NOT (20 XOR 0011100B)
Not expression Exp1 and exp2 Exp1 or exp2 Exp1 xor exp2
4/4/2006
Toan T Quan He So sanh 2 bieu thc va cho tr la true (-1) neu nh ieu kien cua toan t thoa, ngc lai la false. a, EQ Exp1 EQ exp2 NE LT LE Exp1 NE exp2 Exp1 LT exp2 Exp1 LE exp2 True neu Exp1 = exp2 True neu Exp1 <> exp2 True neu Exp1 < exp2 True neu Exp1 <= exp2 True neu Exp1 > exp2 True neu Exp1 >= exp2
5
O U TIEN TOAN T
TOAN T MO TA () Dau ngoac
o u tien giam dan
+,-
Dau dng , am
4/4/2006
Toan t SEG
Cu phap : SEG expression Cho a ch oan cua bieu thc expression. Expression co the la bien | nhan | ten segment hay toan hang bo nh khac. ng c.
4/4/2006
Toan t OFFSET
Cu phap : OFFSET expression Cho a ch OFFSET cua bieu thc expression. Expression co the la bien | nhan | ten segment hay toan hang trc tiep bo nh khac. ng c.
Ex : nap a ch segment va offset cua bien table vao DS :AX TABLE DB ? MOV AX, SEG TABLE MOV DS, AX MOV DX, OFFSET Table
4/4/2006 Chuong 7 Cac phep dinh vi dia chi 8
TOAN T $
Cho a ch cua OFFSET cua phat bieu cha toan t $. Thng c dung e tnh chieu dai ng ng chuoi. i.
4/4/2006
TOAN T PTR
Cu phap : type PTR expression Cho phep thay oi dang cua expression ng neu expr la 1 bien | toan hang bo nh th type co ng the la byte , word hay dword. Neu expr la 1 nhan th type co the la near hay far. Ex : mov ax, word ptr var1 ; var1 la toan hang kieu Word mov bl , byte ptr var2 ; var2 la toan hang kieu byte
4/4/2006 Chuong 7 Cac phep dinh vi dia chi 10
Hau het cac lenh Assembly eu co oi so la 1 hoac 2 toan hang Co 1 so lenh ch co 1 toan hang nh RET, CLC. Vi cac lenh 2 toan hang th toan hang th 2 la toan hang nguon (source) cha d lieu hoac a ch cua d lieu.
4/4/2006
11
4/4/2006
13
4/4/2006
14
NH V THANH GHI
Gi tr c a ton h ng c truy xu t n m ngay trong thanh ghi c a CPU.
4/4/2006
15
4/4/2006
16
AX, [SI]
AX, [BP]
4/4/2006
17
NH V TR C TI P
a ch Offset c a nh ch a d li u ton h ng n m tr c ti p trong cu l nh cn a ch segment ng m nh ch a trong DS. Ex : MOV BX, [1234] N p n I dung nh c a ch DS:1234 BX
4/4/2006
18
NH V C S
a ch Offset c a ton h ng c tnh l t ng c a n I dung thanh ghi BX ho c BP v 1 d ch. d ch l 1 s nguyn m ho c dng. a ch an l o n hi n t i.
4/4/2006
19
A CH HIEU DUNG NG
Toan hang bo nh dung trong tap lenh vi x ly 86 s dung phng phap nh a ch tong hp c goi la a ch hieu dung. a ch hieu dung la to hp cua 3 nhom sau at trong dau [ ]. Nhom thanh ghi ch so : SI , DI Nhom thanh ghi nen : BX, BP a ch trc tiep : so 16 bit
Ca thanh ghi trong cung 1 nhom khong xua hien trong cung 1 Caccthanh ghi trong cung 1 nhom khong ccxuatthien trong cung 1 a ch hieu dung. a ch hieu dung.
4/4/2006 Chuong 7 Cac phep dinh vi dia chi 20
A CH HIEU DUNG NG
Mot so th du
a ch hieu dung hp le :
[1000h] [SI], [DI] , [BX] , [BP] [SI+BX], [SI+BP] , [DI+BX] , [DI+BP] , [SI+1000h], [DI+100h] [SI] [BX] [1000h], [SI+BP+1000h] , [DI+BX][1000h], [DI+1000h]+[BP]
4/4/2006
22
D lieu 8 bit bo nh : [ a ch ]
D lieu 16 bit bo nh : [ a ch +1, a ch ]
e xac nh ro hoat ong cua bo nh , ta phai dung them toan t PTR nh sau :
8 bit : BYTE PTR [1000H]
Tham khao 1 byte b o nh a ch 1000h Tham khao 2 byte b o nh lien tiep a ch 1000h va 1001 h
23
16 bit
4/4/2006
MOV BX, OFFSET LIST MOV AX, 0 MOV AL, [BX] ADD AL , [BX+1] ADD AL , [BX+2] ADD AL , [BX+3] ADD AL , [BX+4] MOV SUM , AX LIST DB 10h, 20h, 40h, 2h, 5h SUM DW 0
4/4/2006
Lay a ch cua List vao BX Da vao BX e xac nh cac phan t cua array. Khi tnh tong xong, a tong vao bien SUM.
24
4/4/2006
25
Tap lenh nh
Lenh MOV : Y ngha : copy gia tr t toan hang nguon Cu phap : MOV dest , source Yeu cau : Dest va source cung kieu Dang lenh : MOV reg , reg MOV mem , reg MOV reg, mem MOV reg16, segreg MOV segreg, reg16 MOV reg, immed MOV mem, immed MOV mem16, segreg MOV segreg, mem16
4/4/2006 Chuong 7 Cac phep dinh vi dia chi
toan hang ch
26
BP
4/4/2006
27
Chu y
Lenh MOV khong lam anh hng en c. nh nh ng Khong the chuyen d lieu trc tiep gia 2 toan hang bo nh vi nhau, muon chuyen phai dung ng ng thanh ghi trung gian. Khong the chuyen 1 gia tr tc thi vao thanh ghi oan, muon chuyen phai dung thanh ghi trung gian. n, ng Khong the chuyen trc tiep gia 2 thanh ghi oan
4/4/2006
28
4/4/2006
29
4/4/2006
30
Ap dung ng
Viet chng trnh chuyen noi dung vung nh bat au tai a ch 700h sang vung nh co a ch bat au la 1000h. Biet chieu moi vung nh la 9 bytes va d lieu ang khao sat trong oan c ch bi DS.
Cho vung nh MEM co chieu dai 9 bytes gom cac ky t abcdefghi trong oan ch bi DS. Viet chng trnh ao ngc vung nh MEM.
4/4/2006
31
Cu phap : LEA REG | MEM y ngha : nap a ch Offset vao thanh ghi e khi ong Reg. Ex : MOV DX, OFFSET MES Tng ng vi LEA DX, MES
1000h DI + BX + 2000h
4/4/2006
32
4/4/2006
33
Lenh PUSH nh Cu phap : PUSH REG16 PUSH MEM16 PUSH SEGREG ay toan hang nguon 16 bit vao STACK
Ex : PUSH DI ; [SS :SP+1, SS :SP] DI
CS
4/4/2006
34
Lenh POP nh
Cu phap : POP REG16 POP MEM16 POP SEGREG Lay d lieu t nh STACK vao toan hang ch.
Ex : POP AX ; AX
4/4/2006
35
Lenh IN nh
Cu phap : IN ACCUM, IMMED8 IN ACCUM, DX nhap d lieu t cong xuat nhap vao thanh ghi tch luy AL hay AX. Trng hp AX se nhap byte thap trc, byte cao sau.
SUMMARY
Dung DEBUG e hp dch va chay chng trnh sau : ng Chep 3 so nguyen kieu Word a ch 0120h vao a ch 0130h. Cho biet gia tr cua AX sau khi cac lenh sau c thc thi : nh MOV AX, ARRAY1 INC AX ADD AH, 1 SUB AX, ARRAY1 ARRAY1 DW 10h, 20h
4/4/2006
37
Gi s bien VAL1 a ch offset 0120h va PTR1 a ch 0122h. Cho biet gia tr cua cac thanh ghi AX, BX khi moi lenh sau c thc thi : nh
.CODE MOV AX, @DATA MOV DS, AX MOV AX, 0 MOV AL, BYTE PTR VAL1 ; AX = ? MOV BX, PTR1 ; BX = ? XCHG AX, BX ; BX = ? SUB AL,2 ; AX = ? MOV AX, PTR2 ; AX = ? .DATA VAL1 DW 3Ah PTR1 DW VAL1 PTR2 DW PTR1
4/4/2006 Chuong 7 Cac phep dinh vi dia chi 38
SUMMARY
Cho biet gia tr cua cac thanh ghi ben phai, khi moi lenh cua oan chng trnh sau c thc thi. Gia s FIRST offset 0H MOV AL, BYTE PTR FIRST+1 MOV BX, WORD PTR SECOND+2 MOV DX, OFFSET FIRST + 2 MOV AX, 4C00H INT 21H . FIRST DW 1234h SECOND DW 16385 THIRD DB 10,20,30,40
4/4/2006 Chuong 7 Cac phep dinh vi dia chi 39
; AL = ; BX = ; DX =
Bai 2 : Viet chng trnh nhap 2 ky t va hien th ky t th 3 co ma ASCII la tong cua ma 2 ky t a nhap. Ket qua co dang :
4/4/2006
40
Biet cach mo phong cau truc ieu khien va vong lap nh ngon ng lap trnh cap cao. Nam c cac lenh nhay trong lap trnh Assembly. Tren c s o, van dung e lap trnh giai quyet 1 so bai toan.
Noi dung
S can thiet cua lenh nhay trong lap trnh ASM. nh Lenh JMP (Jump) : nhay khong ieu kien. nh n. Lenh LOOP : cho phep lap 1 cong viec vi 1 so lan nao o. nh Cac lenh so sanh va luan ly. nh nh Lenh lap co ieu kien. nh n. Lenh nhay co ieu kien. nh n. Bieu dien mo phong cau truc luan ly mc cao. ng Chng trnh con. Mot so chng trnh minh hoa. a.
Cong dung :Chuyen ieu khien khong ieu ng kien. phap : JMP ch n. Cu
Nhay gan (NEAR) : 1 tac vu nhay trong cung 1 ng segment. Nhay xa (FAR) : 1 tac vu nhay sang segment khac. c.
JConditional destination
Ex : JNZ nhan ch ;
LENH LOOP NH
Cong dung : cho phep lap 1 cong viec vi 1 so lan nao o. Moi lan lap CX giam i 1 n v. Vong lap cham dt khi CX =0.
Ex 1 : xuat ra man hnh 12 dong gom cac ky t A. MOV CX, 12 * 80 MOV DL, A NEXT : MOV AH, 2 INT 21H LOOP NEXT
Chuong 8 : Cau truc DK va Vong lap 6
LOOP (tt)
Ex : co 1 Array A gom 6 bytes, chep A sang array B dung SI va DI e lay Offset MOV SI, OFFSET A MOV DI, OFFSET B MOV CX, 6 MOVE_BYTE : MOV AL, [SI] MOV [DI], AL INC SI INC DI LOOP MOVE_BYTE A DB 10H,20H,30H,40H,50H,60H B DB 6 DUP (?)
Lenh AND nh
Cu phap : AND Destination , Source
Cong dung : Lenh nay thc hien phep AND gia 2 toan hang, ket qua cuoi cung cha trong toan hang ch. Dung e xoa cac bit nhat nh cua toan hang ch gi nguyen cac bit con lai.
Muon vay ta dung 1 mau bit goi la mat na bit (MASK), cac bit mat na c chon e sao cho cac bit tng ng cua ch c thay oi nh mong muon.
Lenh AND nh
Ex1 : xoa bit dau cua AL, gi nguyen cac bit con lai : dung AND vi 01111111b lam mat na AND AL, 7FH
Ex2 : MOV AL, 5 ; oi ma ASCII cua so AND AL, 0FH ; thanh so tng ng. Mask bits Ex3 : MOV DL, a ; oi ch thng thanh ch hoa. AND DL, 0DFH ; thanh so tng ng. Mask bits
10
LENH OR NH
Cong dung : dung e bat len 1 so bit va gi nguyen cac bit khac. Cu phap : OR destination, source Ex1 : OR AL , 10000001b ; bat bit cao nhat va bit thap nhat trong thanh ghi AL len 1 Ex 2: MOV AL , 5 ; oi 0..9 thanh ky so Ex 3: OR AL , 30h ; ASCII tng ng.
11
12
LENH XOR NH
Cong dung : dung e tao o hoa mau toc o cao. Cu phap : XOR destination, source
Ex : lat bit cao cua AL 2 lan MOV AL , 00111011b ; XOR AL, 11111111b ; AL = 11000100b XOR AL, 11111111b ; AL = 00111011b
13
LENH TEST NH
Cu phap : TEST destination, source
Cong dung : dung e khao sat tr cua tng bit hay nhom bit. Test thc hien giong lenh AND nhng khong lam thay oi toan hang ch.
Ex : kiem tra bit 13 trong DX la 0 hay 1 TEST DX, 2000h JZ BitIs0 BitIs1 : bit 13 is 1 BitIs0 : bit 13 is 0 e kiem tra 1 bit nao o ch can at bit 1 vao ung v tr bit can kiem tra va khao sat c ZF. (neu bit kiem la 1 th ZF se xoa, ngc lai ZF c lap.
14
15
16
Lenh CMP nh
Cu phap : CMP destination , source Cong dung : so sanh toan hang ch vi toan hang nguon bang cach lay toan hang ch toan hang nguon. Hoat ong : dung phep tr nhng khong co toan hang ch nao b thay oi. Cac toan hang cua lenh CMP khong the cung la cac o nh. lenh CMP giong het lenh SUB tr viec toan hang ch khong thay oi.
17
Pham vi
Ch nhay en nhan co khoang cach t -128 en +127 byte so vi v tr hien hanh. Dung cac trang thai c e quyet nh co nhay hay khong?
18
e thc hien 1 lenh nhay CPU nhn vao cac thanh ghi c. neu ieu kien cua lenh nhay thoa, CPU se ieu chnh IP tro en nhan ch cac lenh sau nhan nay se c thc hien.
PRINT_LOOP : INT 21H INC DL DEC CX JNZ PRINT_LOOP MOV AX, 4C00H INT 21H
19
LENH NHAY DA TREN KET QUA SO SANH NH NH CAC TOAN HANG KHONG DAU. NG U. Thng dung lenh CMP Opt1 , Opt2 e xet ieu kien nhay hoac da tren cac c.
JZ JE JNZ JNE
Nhay neu ket qua so sanh = 0 nh Nhay neu 2 toan hang bang nhau ng ng Nhay neu ket qua so sanh la khac nhau. nh Nhay neu 2 toan hang khac nhau. ng
JA Nhay neu Opt1 > Opt2 JNBE Nhay neu Opt1 <= Opt2 JAE JNB Nhay neu Opt1 >= Opt2
Chuong 8 : Cau truc DK va Vong lap 20
LENH NHAY DA TREN KET QUA SO SANH NH NH CAC TOAN HANG KHONG DAU (ctn) . NG
JNC
JB Nhay neu Opt1 < Opt2 JNAE Nhay neu Not(Opt1 >= Opt2) JC JBE JNA Nhay neu co Carry Nhay neu Opt1<=Opt2 Nhay neu Not (Opt1 > Opt2)
21
LENH NHAY DA TREN KET QUA SO SANH NH NH CAC TOAN HANG CO DAU . NG
JG Nhay neu Opt1>Opt2 JNLE Nhay neu Not(Opt1 <= Opt2) JGE JNL JL JNGE JLE JNG Nhay neu Opt1>=Opt2 Nhay neu Not (Opt1 < Opt2) Nhay neu Opt1 < Opt2 Nhay neu Not (Opt1 >= Opt2) Nhay neu Opt1 <= Opt2 Nhay neu Not (Opt1 > Opt2)
Chuong 8 : Cau truc DK va Vong lap 22
JCXZ Nhay neu CX=0 JS JNS JO Nhay neu SF=1 Nhay neu SF =0 Nhay neu a tran tr
JL Nhay neu Opt1 < Opt2 JNGE Nhay neu Not (Opt1 >= Opt2) JLE JNO JP JNP Nhay neu Opt1 <= Opt2 Nhay neu tran tr Nhay neu parity chan Nhay neu PF =0
Chuong 8 : Cau truc DK va Vong lap 23
CAC V DU MINH HOA LENH NHAY CO K Ex1 : tm so ln hn trong 2 so cha trong thanh ghi AX va BX . Ket qua e trong DX
MOV DX, AX CMP DX, BX JAE QUIT MOV DX, BX QUIT : MOV AH,4CH INT 21H
; gia s AX la so ln hn. ; IF AX >=BX then ; nhay en QUIT ; ngc lai chep BX vao DX
24
CAC V DU MINH HOA LENH NHAY CO K Ex1 : tm so nho nhat trong 3 so cha trong thanh ghi AL BL va CL . Ket qua e trong bien SMALL ; gia s AL nho nhat ; neu SMALL <= BL th Nhay en L1 ; neu SMALL <= CL th ; Nhay en L2 ; CL la so nho nhat
MOV SMALL, AL CMP SMALL, BL JBE L1 MOV SMALL, BL L1 : CMP SMALL, CL JBE L2 MOV SMALL, CL L2 : . . .
25
Cu phap : SHL toan hang ch ,1 Dch 1 v tr. Cu phap : SHL toan hang ch ,CL Dch n v tr trong o CL cha so bit can dch.
tr a vao v b c 0 se h, con bit ms gia tr g c g : mo t at on oan han Ho cua t ai nhat CF ben ph a vao c c ua no c
26
27
Cu phap : SHR toan hang ch , 1 SHR toan hang ch , CL ; dch phai n bit trong o CL cha n Hoat ong : 1 gia tr 0 se c a vao bit msb cua toan hang ch, con bit ben phai nhat se c a vao c CF. MT thc hien phep chia bang dch phai
28
29
30
31
32
33
34
Phat bieu IF se kiem tra 1 ieu kien va theo sau o la 1 so cac phat bieu c thc thi khi ieu kien kiem tra co gia tr true.
HIEN THC BANG ASM CMP OP1,OP2 JNE CONTINUE <STATEMENT1> <STATEMENT2> CONTINUE : .
35
Cau truc IF vi OR
CMP A1,OP1 JG EXCUTE CMP A1,OP2 JGE EXCUTE CMP A1,OP3 JE EXCUTE CMP A1,OP4 JL EXCUTE JMP CONTINUE EXCUTE : <STATEMENT> CONTINUE : ..
36
Cau truc logic IF (A1>OP1) AND (A1>=OP2) AND (A1=OP3) AND (A1<OP4) <STATEMENT> ENDIF
JMP CONTINUE
CONTINUE : .. CHU Y : khi ieu kien co toan t AND, cach hay nhat la dung nhay vi ieu kien ngc lai en nhan, bo qua phat bieu trong cau truc Logic.
CMP A1,OP1 JNG CONTINUE CMP A1,OP2 JL CONTINUE CMP A1,OP3 JNE CONTINUE CMP A1,OP4 JNL CONTINUE <STATEMENT>
37
HIEN THC BANG ASM DO_WHILE : CMP OP1, OP2 JNL ENDDO <STATEMENT1>
38
VONG LAP WHILE CO LONG IF HIEN THC BANG ASM _WHILE : CMP OP1, OP2 JNL WHILE_EXIT <STATEMENT1> CMP OP2,OP3 ; phan If
Cau truc logic DO WHILE (OP1<OP2) <STATEMENT> IF (OP2=OP3) THEN <STATEMENT2> <STATEMENT3> ENDIF ENDDO
JNE ELSE ; khong thoa If <STATEMENT2> ; thoa If <STATEMENT3> JMP ENDIF; thoa If nen bo qua Else ELSE : <STATEMENT4> ENDIF : JMP _WHILE WHILE_EXIT : ..
39
Cau truc logic REPEAT <STATEMENT1> <STATEMENT2> <STATEMENT3> UNTIL (OP1=OP2) OR (OP1>OP3) u nha ang at B ho t t pea Re
REPEAT : <STATEMENT1> <STATEMENT2> <STATEMENT3> TESTOP12: CMP OP1, OP2 JE ENDREPEAT TESTOP13 : CMP OP1, OP3 JNG REPEAT ENDREPEAT : ..
40
Cau truc logic CASE INPUT OF A : Proc_A B : Proc_B C : Proc_C D : Proc_D End ;
41
LooKup Table
Rat hieu qua khi x ly phat bieu CASE la dung bang OFFSET cha a ch cua nhan hoac cua ham se nhay en tuy vao ieu kien. Bang Offset nay c goi Lookup Table rat hieu qua khi dung phat bieu Case co nhieu tr la chon.
42
LooKup Table
; gia tr tm kiem a ch cac procedure gia s a ch 0120 gia s a ch 0130 gia s a ch 0140 gia s a ch 0150
43
LooKup Table Case : MOV AL, INPUT MOV BX, OFFSET CASE_TABLE MOV CX, 4 ; lap 4 lan so entry cua table TEST : CMP AL, [BX] ; kiem tra Input JNE TESTAGAIN ; khong thoa kiem tra tiep CALL WORD PTR [BX+1] ; goi thu tuc tng ng JMP ENDCASE TESTAGAIN : ADD BX , 3 ; sang entry sau cua CaseTable LOOP TEST ENDCASE : ..
44
45
Ky thuat lap trnh Hay to chc chng trnh cac chng trnh con n gian hoa cau truc luan ly cua CT lam cho CT de oc, de hieu , de kiem tra sai sot.. au CTC hay cat tr thanh ghi vao Stack bang lenh PUSH e lu trang thai hien hanh. Sau khi hoan tat cong viec cua CTC nen phuc hoi lai tr cac thanh ghi luc trc a Push bang lenh POP . Nh trnh t la ngc nhau e tr cua thanh ghi nao tra cho thanh ghi nay.
ng toi u qua CT v co the lam cho CT kem thong minh, kho oc.
46
Ky thuat lap trnh (tt) Co gang to chc chng trnh cho tot phai thiet ke c cac bc chng trnh se phai thc hien. Kinh nghiem : khi van e cang ln th cang phai to chc logic chng trnh cang chat che. Bang s to hp cua lenh nhay ta hoan toan co the mo phong cau truc ieu khien va vong lap.
47
SUMMARY
Co the mo phong cau truc logic nh ngon ng cap cao trong Assembly bang lenh JMP va LOOP. cac lenh nhay : co ieu kien va vo ieu kien. Khi gap lenh nhay, CPU se quyet nh nhay hay khong bang cach da vao gia tr thanh ghi c. cac lenh luan ly dung e lam ieu kien nhay la AND, OR, XOR, CMP . . . Bat c khi nao co the, hay to chc chng trnh thanh cac chng trnh con n gian c cau truc luan ly cua chng trnh.
48
Cau hoi 1. Gia s DI = 2000H, [DS:2000] = 0200H. Cho biet a ch o nh toan hang nguon va ket qua lu trong toan hang ch khi thc hien lenh MOV DI, [DI] 2. Gia s SI = 1500H, DI=2000H, [DS:2000]=0150H . Cho biet a ch o nh toan hang nguon va ket qua lu trong toan hang ch sau khi thc hien lenh ADD AX, [DI]
3. Co khai bao A DB 1,2,3 Cho biet tr cua toan hang ch sau khi thi hanh lenh MOV AH, BYTE PTR A. 4. Co khai bao B DB 4,5,6 Cho biet tr cua toan hang ch sau khi thi hanh lenh MOV AX, WORD PTR B.
49
Bai 1 : Co vung nh VAR1 dai 200 bytes trong oan c ch bi DS. Viet chng trnh em so ch S trong vung nh nay.
Bai 2 : Co vung nh VAR2 dai 1000 bytes. Viet chng trnh chuyen oi cac ch thng trong vung nh nay thanh cac ky t hoa, cac ky t con lai khong oi. Bai 3 : Viet chng trnh nhap 2 so nho hn 10. In ra tong cua 2 so o.
50
Bai 4 : Viet chng trnh nhap 2 so bat ky. In ra tong va tch cua 2 so o. Chng trnh co dang sau : Nhap so 1 : 12 Nhap so 2 : 28 Tong la : 40 Tch la : 336
Bai 5 : Viet chng trnh nhap 1 ky t. Hien th 5 ky t ke tiep trong bo ma ASCII. Ex : nhap ky t : a 5 ky t ke tiep : b c d e f
51
Bai 6 : Viet chng trnh nhap 1 ky t. Hien th 5 ky t ng trc trong bo ma ASCII. Ex : nhap ky t : f 5 ky t ke tiep : a b c d e Bai 7 : Viet chng trnh nhap 1 chuoi ky t. In chuoi a nhap theo th t ngc. Ex : nhap ky t : abcdef 5 ky t ke tiep : fedcba
52
MACRO MACRO
nh ngha Macro v g i Macro Van e truyen thong so trong Macro. Macro long nhau. ng S dung Macro e goi chng trnh con. ng Cac toan t Macro. Th vien Macro So sanh viec dung Macro vi Procedure nh ng Mot so Macro mau.
CHUONG 9 MACRO 1
LM QUEN V I MACRO
Khi ta c nhi u o n code gi ng nhau, chng ta c th dng macro thay th , gi ng nh ta dng define trong C. Th d chng ta thay th an l nh sau b ng macro in d u xu ng dng.
MOV DL,13 ; v u dng MOV AH,2 INT 21H MOV DL,10 ; xu ng dng m i MOV AH,2 INT 21H
CHUONG 9 MACRO
CHUONG 9 MACRO
CHUONG 9 MACRO
M RONG CUA MACRO CO THE XEM NG TRONG FILE.LIST. 3 DIRECTIVE BIEN DCH SAU SE QUYET NH M RONG MACRO NH THE NAO. NG O.
.SALL (SUPRESS ALL) PHAN M RONG MACRO NG KHONG C IN. S DUNG KHI MACRO LN HAY NG MACRO C THAM CHIEU NHIEU LAN TRONG CT. .XALL CH NHNG DONG MACRO TAO MA NGUON NG MI C IN RA.TH DU CAC DONG CHU THCH NG C BO QUA. AY LA TUY CHON DEFAULT. .LALL (LIST ALL) TOAN BO CAC DONG TRONG NG MACRO C IN RA TR NHNG CHU THCH BAT AU BANG 2 DAU ;; NG
CHUONG 9 MACRO 6
CHUONG 9 MACRO
CHUONG 9 MACRO
SWAP MACRO BIEN1, BIEN2 N1, N2 MOV AX, BIEN1 XCHG AX, BIEN2 MOV BIEN1, AX ENDM GOI : SWAP TRI1, TRI2
CHUONG 9 MACRO
PUTCHAR MACRO CHAR MOV AH, 2 MOV DL, CHAR INT 21H ENDM
CHUONG 9 MACRO
10
MACRO TRUY N THNG S Th d : macro @Printstr Vi t chng trnh in 2 chu i Hello v Hi. .DATA MSG1 DB Hello,13,10 MSG2 DBHi,13,10 .CODE . MOV DX, OFFSET MSG1 MOV AH,9 INT 21H MOV DX, OFFSET MSG2 MOV AH,9 INT 21H .. Ta th y o n 1 v o n 2 g n gi ng nhau c th t o macro c tham s nh sau :
;1 ;1 ;1 ;2 ;2 ;2
CHUONG 9 MACRO
11
TH DU VE MACRO DISPLAY MACRO STRING PUSH AX PUSH DX LEA DX, STRING MOV AH,9 INT 21H POP DX GOI : DISPLAY POP AX ENDM
CHUOI
CHUONG 9 MACRO
12
LOCATE MACRO ROW, COLUMN S DUNG MACRO PUSH AX PUSH BX TA CO CAC DANG S DUNG PUSH DX SAU : MOV BX, 0 LOCATE 10,20 MOV AH, 2 LOCATE ROW, COL MOV DH, ROW MOV DL, COLUMN LOCATE CH, CL INT 10H POP DX CHU Y : KHONG DUNG CAC POP BX THANH GHI AH,AL,BH,BL V POP AX SE UNG O VI CAC ENDM
13
DISPLAY_AT MACRO ROW, COL, STRING LOCATE ROW, COL ;Goi macro nh v cursor DISPLAY STRING ; Goi Macro xuat string ENDM MOT MACRO CO THE THAM CHIEU EN CHNH NO, NHNG MACRO NH VAY GOI LA MACRO E QUI.
CHUONG 9 MACRO 14
CU PHAP :
LOCAL LABEL_NAME
CHUONG 9 MACRO
15
Mot so Macro yeu cau user nh ngha cac thanh phan d lieu va cac nhan ben trong nh ngha cua Macro. Neu s dung Macro nay nhieu hn 1 lan trong cung mot chng trnh, trnh ASM nh ngha thanh phan d lieu hoac nhan cho moi lan s dung cac ten giong nhau lap lai khien cho ASM bao loi. e am bao ten nhan ch c tao ra 1 lan, ta dung ch th LOCAL ngay sau phat bieu Macro Khi ASM thay 1 bien c nh ngha la LOCAL no se thay the bien nay bang 1 ky hieu co dang ??n, trong o n la 1 so co 4 ch so. Neu co nhieu nhan co the la ??0000, ??0001, ??0002 ... Ta can biet ieu nay e trong CT chnh ta khong s dung cac bien hay nhan i cung 1 dang. CHUONG 9 MACRO 16
ASM SE DUNG C CHE ANH SO CAC NHAN (T 0000H EN FFFFH) E ANH DAU CAC NHAN CO CH NH LOCAL.
CHUONG 9 MACRO
18
Th du minh hoa
Viet 1 macro a t ln hn trong 2 t vao AX
GETMAX MACRO WORD1, WORD2 LOCAL EXIT MOV AX, WORD1 CMP AX, WORD2 JG EXIT MOV AX, WORD2 EXIT : ENDM
GIA S FIRST,SECOND, THIRD LA CAC BIEN WORD. S THAM CHIEU MACRO C M RONG NH SAU : MOV AX, FIRST CMP AX, SECOND JG ??0000 MOV AX, SECOND ??0000:
CHUONG 9 MACRO 19
Th du minh hoa
Viet 1 macro a t ln hn trong 2 vao AX
LI GOI MACRO TIEP THEO : S THAM CHIEU LIEN TIEP GETMAX SECOND, THIRD C M RONG NH SAU : MOV AX, SECOND CMP AX, THIRD JG ??0001 ??0001 :
MACRO NAY HAY EN MACRO KHAC KHIEN TRNH BIEN DCH CHEN CAC NHAN ??0002, ??0003 VA C NH VAY TRONG CHNG TRNH CAC NHAN NAY LA DUY NHAT.
CHUONG 9 MACRO
20
TH VIEN MACRO
CAC MACRO MA CHNG TRNH THAM CHIEU CO THE AT FILE RIENG TA CO THE TAO 1 FILE TH VIEN CAC MACRO. DUNG 1 EDITOR E SOAN THAO MACRO LU TR TEN FILE MACRO.LIB KHI CAN THAM CHIEU EN MACRO TA DUNG CH TH INCLUDE TEN FILE TH VIEN MOT CONG DUNG QUAN TRONG CUA MACRO LA TAO RA CAC LENH MI.
CHUONG 9 MACRO
21
CAC LENH LAP TRONG NH CAC LENH LAP TRONG MACRO MACRO
REP <BIEU THC> : C> ... ENDM TAC DUNG : LAP LAI CAC KHOI LENH TRONG MACRO NG NH VI SO LAN LA <BIEU THC> C>
EX : MSHL MACRO OPER, BITS REPT BITS SHL DEST, 1 ENDM ENDM GOI MSHL BX, 3 SE C THAY THE BANG : SHL BX, 1 SHL BX, 1 SHL BX, 1
CHUONG 9 MACRO 23
CAC LENH LAP TRONG NH CAC LENH LAP TRONG MACRO MACRO
IRP <THONG SO>, <DANH SACH CAC TR TRONG NGOAC NHON> : >, CH N> ... ENDM
TAC DUNG : NG LAP LAI KHOI LENH TUY THEO DANH SACH TR. NH CH SO LAN LAP CHNH LA SO TR TRONG DANH SACH CH MOI LAN LAP LAI SE THAY <THONG SO> BANG 1 TR TRONG NG DANH SACH VA SE LAN LT LAY HET CAC TR TRONG DANH CH SACH. CH.
EX : PROCTABLE LABEL WORD IRP PROCNAME, <MOVEUP, MOVDOWN,MOVLEFT,MOVRGHT> DW PROCNAME ENDM
CHUONG 9 MACRO 24
CAC LENH LAP TRONG NH CAC LENH LAP TRONG MACRO MACRO
TUY NHIEN CACH KHAI BAO NAY RM RA HN LA CH DUNG : NG PROCTABLE DW MOVUP, MOVDOWN,MOVLEFT,MOVRIGHT VIEC S DUNG CAC MACRO LAP VONG NAY CHO CO HIEU QUA LA IEU KHO, OI HOI PHAI CO NHIEU KINH NGHIEM
CHUONG 9 MACRO
25
BI T P MACRO
Bi 1 : 1. Vi t m t MACRO tnh USCLN c a 2 bi n s M v N. Thu t ton USCLN nh sau : WHILE N <> 0 DO M = M MOD N Hon v M v N END_WHILE Bi 2 : MACRO doi tu so chua trong ax sang chuoi tro den boi DI ; in : DI =offset chuoi ; AX =so can doi ; out: khong co(chuoi van do di tro toi)
CHUONG 9 MACRO
26
Bi 3 :Vi t macro chuyen tu chuoi thanh so chua trong ax ; in : DI =offset chuoi ; out : AX =so da doi
CHUONG 9 MACRO
27
Gi I THI U STACK
STACK : l m t c u trc d li u m t chi u. Cc ph n t c t vo v l y ra theo phng th c LIFO (Last In First Out). M i chng trnh ph i dnh ra m t kh i b nh lm stack b ng khai bo STACK. V d : .STACK 100H ; Xin c p pht 256 bytes lm stack
L P TRNH V I STACK
Trong l p trnh c khi c n truy xu t n cc ph n t trong STACK nhng khng c thay i tr t t c a STACK. th c hi n i u ny ta dng thm thanh ghi con tr BP : tr BP v nh Stack : MOV BP,SP thay i gi tr c a BP truy xu t n cc ph n t trong Stack : [BP+2]
Ph n t c a vo STACK l n u tin g i l y STACK, ph n t cu i cng c a vo STACK c g i l nh STACK. Khi thm m t ph n t vo STACK ta thm t nh, khi l y m t ph n t ra kh i STACK ta cng l y ra t nh a ch c a nh nh STCAK lun lun b thay i.
SS dng lu a ch segemnt c a o n b nh dng lm STACK SP lu a ch c a nh nh STACK (tr t i nh STACK)
TH D
STACK A,B,C l cc Word MOV BP,SP
D C
;AX = D ;AX = C
SP
B A
PUSH ngu n : a ngu n vo nh STACK PUSHF : c t n i dung thanh ghi c vo STACK ngu n l m t thanh ghi 16 bit hay m t t nh
POP v POPF : dng l y m t ph n t ra kh i STACK. C php : POP ch : a ngu n vo nh STACK POPF : c t n i dung nh STACK vo thanh ghi c Ch : - y ch l m t thanh ghi 16 bit (tr thanh ghi IP) hay m t t nh Cc l nh PUSH, PUSHF, POP v POPF khng nh h ng t i cc c
M TS
NG D NG C A STACK
TH D
Nh p vo 1 chu i, in chu i o ng c Ex : nh p : Cong nghe thong tin xu t : int gnoht ehgn gnoC
V d minh h a : dng STACK trong thu t ton o ng c th t nh sau : ; Nh p chu i k t Kh i ng b m c m t k t WHILE k t <> 13 DO C t k t vo STACK Tng bi n m c m t k t END_WHILE ; Hi n th o ng c FOR bi n m l n DO L y m t k t t STACK Hi n th n END_FOR CHNG TRNH CON Chng 10:
10
CTC l 1 nhm cc l nh c g p l i d i 1 ci tn m ta c th g i t nhi u ni khc nhau trong chng trnh thay v ph i vi t l i cc nhm l nh ny t i ni c n n chng.
L i ch
CTC lm cho c u trc logic c a c a CT d ki m sot hn, d tm sai st hn v c th ti s d ng m ti t ki m c cng s c v th i gian l p trnh.
Chng 10: CHNG TRNH CON 11
C U TRC C A CTCON
TNCTC PROC [NEAR|FAR] CC L NH C A CTC RET TNCTC ENDP
12
MINH H A
Vi t chng trnh nh p 1 s n (n nguyn dng v <9). Tnh giai th a c a n v xu t ra mn hnh d i d ng s hex (gi i h n k t qu 16 bit). Vi t chng trnh tm s hon thi n (gi i h n 2 ch s ) v in n ra mn hnh.
13
TH D
.DATA EXTRN MemVar : WORD, Array1 : BYTE , ArrLength :ABS .CODE EXTRN NearProc : NEAR , FarProc : FAR . MOV AX,MemVar MOV BX, OFFSET Array1 MOV CX, ArrLength CALL NearProc . CALL FarProc ..
14
C CH LM VI C C A CTC
C ch g i v th c hi n CTC trong ASM cng gi ng nh ngn ng c p cao.
Khi g p l nh g i CTC th : . a ch c a l nh ngay sau l nh g i CTC s c a vo STACK. . a ch c a CTC c g i s c n p vo thanh ghi IP. . Quy n i u khi n c a CT s c chuy n giao cho CTC. . CTC s th c hi n cc l nh c a n v khi g p RET, n s l y a ch c t trn STACK ra v n p l i thanh ghi IP th c thi l nh k ti p.
Chng 10: CHNG TRNH CON 15
PUBLIC EXTRN GLOBAL thu n l i trong vi c d ch, lin k t chng trnh a file, Assembler cung c p cc i u khi n Public, Extrn v Global.
PUBLIC
Ch cho Assembler bi t nhn (label) no n m trong module ny c php s d ng cc module khc. C php : PUBLIC tn nhn khai bo nhn
TN CTC TN Bi N TN I TR C NHN
16
EXTRN
Bo cho Assembler bi t nh ng nhn c khai bo PUBLIC cc module khc c s d ng trong module ny m khng c n ph i khai bo l i.
PROC
Chng 10: CHNG TRNH CON 17
GLOBAL
Vi t chng trnh n m trn 2 file (2 module) v i s phn cng nh sau : Module c a chng trnh chnh (Main.ASM) c nhi m v xc nh Offset c a 2 chu i k t v g i CTC n i 2 chu i ny v cho hi n k t qu ra mn hnh. Module CTC (Sub.ASM) lm nhi m v n i 2 chu i v a vo b nh .
18
19
Cho php nhi u user cng tham gia gi i quy t 1 chng trnh l n. S a module no th ch c n d ch l i module . M i module ch gi i quy t 1 v n d tm sai st.
20
V N TRUY N THAM S
CHUY N GI TR C A THAM S CT G I CT C G I
C 3 cch truy n tham s Thng qua thanh ghi Thng qua bi n ton c c Thng qua STACK
Chng 10: CHNG TRNH CON 21
THNG
TH NG C S D NG I V I NH NG CT THU N TY ASM T 1 GI TR NO VO THANH GHI CTCHNH V SAU CTC S S D NG GI TR NY TRONG THANH GHI.
Chng 10: CHNG TRNH CON 22
TRUY N THAM S
QUA STACK
24
CHUY N GI TR T LN CT CHNH.
CTCON
25
CHUY N GI TR T LN CT CHNH.
CTCON
N U GI TR QUAY L I L 32 BIT (CHO KHAI BO LONG, CON TR XA) TH GI TR PH I C T TRONG THANH GHI DX,AX C A HM TR C KHI QUAY V CT CHNH.
26
NEAR : l y a ch OFFSET (16BIT) trong STACK v gn vo thanh ghi IP. FAR : l y a ch OFFSET v SEGMENT trong STACK n p vo thanh ghi CS:IP.
27
V N B O V CC THANH GHI
C N C QUAN TM TRONG QU TRNH L P TRNH ASM. R T D X Y RA CC TR NG H P LM M T GI TR C A M CT CHNH T VO THANH GHI S D NG SAU NAY KHI TA G I CTCON.
28
CC V D MINH H A
NH P VO 1 S H HEX. IN RA S NH P V I YU C U SAU : Vi T CTCON NH P S Vi T CTCON XU T S CTCHNH G I 2 CTCON TRN.
29
Bi 3 :Vi t chng trnh ki m tra m t bi u th c i s c ch a cc d u ngo c (nh (), [] v {}) l h p l hay khng h p l . V d : (a + [b { c * ( d e ) } ] + f) l h p l nhng (a + [b { c * ( d e )] } + f) khng h p l . HD : dng ngn x p PUSH cc d u ngo c tri ( (, {, [ ) vo Stack
30
Bi 4 : Vi t chng trnh nh p vo 1 k t , cho bi t k t v a nh p thu c lo i gi ? k t , k s ,ton t ton h c hay k t khc. N u k t l phm Escape th thot chng trnh.
31
Bi 6 :Vi t chng trnh nh p 1 chu i k t . Xu t k t d i d ng vi t hoa k t u c a t ng t , cc k t cn l i l ch th ng Ex : Nh p : ngo phuoc nguyen Xu t : Ngo Phuoc Nguyen Nh p : VU tHanh hIEn Xu t : Vu Thanh Hien Bi 7 : Vi t chng trnh tm s hon thi n (gi i h n 2 ch s ). Xu t cc s hon thi n t s l n nh t n s nh .
32
L P TRNH X
Gii thieu man hnh & viec quan ly man hnh Hieu c to chc cua man hnh. So sanh chc nang ieu khien man hnh cua INT 10h cua nh ROM BIOS vi chc nang cua INT 21h. Biet cach lap trnh quan ly man hnh trong ASM. ch Biet cach lap trnh x ly phm va 1 so ng dung cua no. ch ng ng
MN HNH
C TRNG C A MN HNH
h Hn m . hnh c ie man at ca i g PHN GII tron h nh cho d iem hnh c ng o i : so li i th ixel the a i a an g gom 1 phan gi ng p o ph tr n o a so l o cot. ma 0*480). o h l l the anh u 64 e d rong ng pix (th h x v t o l ang a v la s d ng v do
Chuoung 10 Lap trinh xu ly man hinh 2
CH H A
800x600x16 bits = 960 000 bytes 1Mb 1024x 768x32 bits 3.145.728 bytes 4Mb
RAM MN HNH
Dung l ng
THUOC TNH MAN HNH Moi v tr tren man hnh co the lu 1 ky t n cung vi thuoc tnh rieng cua ky t nay ng chang han nh ao mau, nhap nhay, chieu ng u, y, sang, gach di ... ng, ch Thuoc tnh cua ky t c lu trong 1 byte goi la byte thuoc tnh.
HIGHT/LOW BIT 7 6 5 4 3 2 1 0
0
BLINK
1
9
BACKGROUND BITS
FOREGROUND BITS
THUOC TNH MAN HNH Ex : cac ky t mau vang chanh nhap nhay ng tren nen mau nau
BLINK = 10000000B RED = 100B MOV BH, (RED SHL 4) +YELLOW+BLINK
E TAO 1 BYTE THUOC TNH VIDEO T 2 MAU , TA DUNG SHL CHUYEN CAC BIT MAU NEN SANG TRAI 4 VI TR.
10
VUNG HIEN TH MAN HNH NG Vung hien th cua man hnh n sac a ng ch B000h trong Bios. Vung hien th video o hoa mau c ban b t ng au t v tr B800h cua Bios.
11
THUOC TNH MAN HNH Cac thuoc tnh chuan cua man hnh Ca thuo tnh chua cu ma hnh Monochrome :
HEX VALUE 07H 87H 0FH 70H 01H 09H ATTRIBUTE Normal thng ng Blinking nhap nhay Bright sang ng Reverse ao thuoc tnh Underline Bright Underline
12
: 2,1,0 Bit
sang : o
13
LIGHT GREEN 1011 1100 1101 LIGHT CYAN LIGHT RED LIGHT MAGENTA
EX : 01101110 : 06EH nen Brown, ch Yellow, khong nhap nhay. EX : 11010010 : 0D2H nen Magenta, ch Green, nhap nhay.
Chuoung 10 Lap trinh xu ly man hinh 14
CAC MODE MAN HNH Cac Card man hnh CGA,EGA,VGA chuyen oi Video mode nh INT 10h. cho phep
Cac trnh ng dung thng dung INT 10h e ng ng ng ng tm Video mode hien hanh. nh. Ex: 1 ng dung thng muon the hien o hoa ng ng ng vi o phan giai cao (640x200) phai kiem tra chac chan rang MT hien ang s dung ang ng ng dung Card man hnh CGA,VGA hoac EGA. ng
15
CAC MODE MAN HNH Co 2 che o lam viec cua man hnh : text va o hoa. a.
Man hnh la hnh anh cua Video Ram.
che o text mot trang man hnh can toi thieu bao nhieu byte cua VIDEO Ram
16
80x25 black and white text 80x25 color text 320x400 4 color graphics 640x200 2 color graphics 80x25 black and white text, monochrome adaptor only 320x200 16 color graphics 640x200 16 colors graphics, EGA, VGA only 640x350 monochrome graphics, EGA, VGA only 640x350 16 colors graphics, EGA, VGA only
Chuoung 10 Lap trinh xu ly man hinh 17
TRANG MAN HNH (VIDEO PAGE) Tat ca cac Card CGA eu co kha nang lu tr nhieu man hnh text goi la cac trang man hnh (video page) trong bo nh. Rieng card mono ch hien th 1 trang trang 0. So trang phu thuoc vao mode man hnh. Trong card man hnh mau, ta co the ghi vao 1 u, trang nay trong khi hien th trang khac hoac chuyen oi qua lai v tr gia cac trang. Cac trang c anh so t 0 en 7. nh
Chuoung 10 Lap trinh xu ly man hinh 18
TRANG MAN HNH (VIDEO PAGE) so trang 0 0-7 0-3 0-7 0-7 0-3 0-1 mode adaptor 07h monochrome 00h 01h CGA 02h-03h CGA 02h-03h EGA 0Dh EGA 0Eh EGA 0Fh, 10h EGA
19
TH DU VE TRANG MH
E HIEN TH 1 KY T VI THUOC TNH CUA NO TAI 1 V TR BAT KY CHA KY T VA THUOC TNH VAO T TNG NG NG TRONG TRANG HIEN TH HOAT ONG. NG.
EX : Lap ay man hnh bang ch A mau o tren nen xanh
20
CH
H A
21
22
Ch c nng AH = 1, ng t 10H Vo : AH = 1, CH = dng qut u, CL = dng qut cu i V d : thi t l p con tr v i kch th c l n nh t MOV AH, 1 MOV CH, 0 ; dng b t u MOV CL, 13 ; dng k t thc INT 10H
23
D CH CHUY N CON TR
Ch c nng AH = 2, ng t 10H Vo : AH = 2, DH = dng m i (0-24), DL = c t m i (0-79) BH = s hi u trang V d : Di chuy n con tr n gi a mn hnh 80 x 25 c a trang 0 MOV AH, 2 XOR BH, BH ; trang 0 MOV DX, 0C27H ; dng 12 c t 39 INT 10H
24
Ch c nng AH = 3, ng t 10H Vo : AH = 3, BH = s hi u trang Ra : DH = dng, DL = c t, CH = dng qut u, CL = dng qut cu i V d : Di chuy n con tr trn cng MOV XOR INT OR JZ MOV DEC INT exit : ln m t dng n u n khng dng
AH, 3 BH, BH ; trang 0 10H DH, DH ; dng trn cng DH = 0 ? exit AH, 2 ; ch c nng d ch con tr DH ; gi m m t dng 10H
25
CU N MN HNH
Ch c nng AH = 6, ng t 10H Vo : AH = 6, AL = s dng cu n (= 0 l ton mn hnh) Ra : BH = thu c tnh cc dng tr ng , CH, CL = dng, c t gc tri trn DH, DL = dng, c t gc ph i d i c a c a s
V d : Xo en mn hnh 80 x 25 MOV AH, 6 XOR AL, AL XOR CX, CX MOV DX, 184FH ; gc ph i d i MOV BH, 7 INT 10H
Chuoung 10 Lap trinh xu ly man hinh 26
V d t ng h p : Vi t chng trnh th c hi n nh sau: . L p ch hi n thi mu 80 x 25 . Xo c a s t i gc tri trn : c t 26 dng 8 v gc ph i d i t i c t 52 dng 16 thnh mu . . Sau hi n th k t A mu cam t i v tr con tr .
27
0 1 2 3 4 5 6 7
8 9
set video mode chon mono, text, graphic hoac color mode Set cursor line thiet lap 1 dong quet tao dang cho cursor. Set cursor position nh v cursor get cursor position lay v tr cursor oc v tr va trang thai cua but ve light pen. chon trang muon hien th. cuon ca so hien hanh len, the cac dong cuon bang ktrong.
cuon ca so hien hanh xuong. oc ky t va thuoc tnh ky t tai v tr con tro hien hanh. ghi ky t va thuoc tnh ky t tai v tr con tro hien hanh.
Chuoung 10 Lap trinh xu ly man hinh 28
0Ah
0Bh Chon palette mau 0Ch Ghi 1 iem graphic trong graphics mode. 0Dh oc gia tr mau cua 1 pixel co v tr a biet. 0Eh Ghi ky t ra man hnh va cap nhat con tro sang phai 1 vtr. 0Fh Lay mode man hnh hien hanh e xem ang che o text hay graphics.
29
Thiet lap video mode. AH = 0 AL = mode. Neu bit cao cua AL =0 se t ong xoa man hnh. ng Neu bit cao cua AL = 1 khong xoa man hnh. Ex : thiet lap 80x25 color text mode MOV AH, 0 MOV AL, 3 ; mode 3 , co xoa man hnh INT 10h
LU Y : Khong muon xoa man hnh th AL = 83H
Chuoung 10 Lap trinh xu ly man hinh 30
HAM 0H IN T 10 H
H M 0H I NT 10H
Ex : oan chng trnh sau se thiet lap video mode la hight resolution graphics, i go 1 phm sau o thiet lap video mode la color text mode.
MOV AH, 0 ; set video mode MOV AL, 6 ; 640x200 color graphics mode INT 10h MOV AH, 1 ; i go 1 phm INT 21H MOV AH, 0 ; set video mode MOV AL, 3 ; color text mode INT 10H
Chuoung 10 Lap trinh xu ly man hinh 31
Dang con tro man hnh c tao ra bang cach ch ng ng ch nh so dong quet. ng t. Viec thay oi dang con tro chnh la thay oi so lng ng ng va v tr dong quet nay. ng y. Man hnh monochrome dung 13 dong (t 0 0Ch) ng ng Man hnh CGA,VGA dung 8 dong (t 0-7). ng ng
0 0
12 CGA/EGA 7
Chuoung 10 Lap trinh xu ly man hinh
MONOCHROME 32
e thay oi dang con tro : AH = 1 CH = TOP (dong au) CL = BOTTOM (dong cuoi)
33
Ex2: tra kch thc con tro ve dang mac nh ng trc khi thoat. t.
MOV AH, 3
MOV AH , 1 MOV CX, 0607H INT 10H MOV AX, 4C00H INT 21H
MOV BH, 0 INT 10H MOV SAVECURSOR, CX OR CH, 00100000 INT 10H ..... . MOV AH, 1 MOV CX, SAVECURSOR
Ex2: lu kch thc con tro hien hanh vao 1 bien trc khi thay oi nh kch thc con tro e sau nay phuc hoi lai. Chuoung 10 Lap trinh xu ly man hinh i.
INT 10H
34
Ex : THIET LAP CURSOR TAI TOA O (DONG 10, COT 20) CUA TRANG 0 MOV AH, 2 MOV DH, 10 MOV DL, 20 MOV BH,0 INT 10H ; Chc nang set cursor ; dong 10 ; cot 20 ; trang 0 ; goi BIOS
Chuoung 10 Lap trinh xu ly man hinh 35
AH =3 ; BH= TRANG MAN HNH MUON LAY CURSOR Ga tr tra ve : CH= Dong quet au cua cursor CL = Dong quet cuoi cua cursor DH = v tr dong man hnh DL = v tr cot man hnh
36
Ex : lay v tr cua cursor lu vao bien. Thng dung trong cac tac vu menu.
MOV AH, 3 MOV BH, 0 INT 10H MOV SAVECURSOR, CX MOV CURRENT_ROW , DH MOV CURRENT_COL , DL
37
AH = 5 ; AL = TRANG MAN HNH SE LA TRANG HIEN HANH EX : THAY OI TRANG MH KHI GO 1 PHM BAT KY
DOSSEG .MODEL SMALL .STACK 100H .CODE MAIN PROC MOV AX, @DATA MOV DS,AX
MOV DX, OFFSET TRANG0 INT 21H MOV AH , 1 INT 21H SANG_TRANG_1 : MOV AH, 5 MOV AL, 1
Chuoung 10 Lap trinh xu ly man hinh 38
INT 10H MOV AH, 9 MOV DX, OFFSET TRANG1 INT 21H MOV AH, 1 INT 21H SANG_TRANG_0 : MOV AH, 5 MOV AL, 0
INT 10H MOV AX, 4C00H INT 21H MAIN ENDP .DATA TRANG0 DB DAY LA TRANG 0,$ TRANG1 DB DAY LA TRANG 1,$ END MAIN
39
CUON MAN HNH LA TAC VU LAM CHO D LIEU TRT LEN HOAC XUONG. CAC DONG D LIEU B CUON SE C THAY THE BANG CAC DONG TRONG NH NGHA WINDOWS NH HE TOA O TA
HANG COT VI GOC TOA O LA GOC TREN TRAI CUA MAN HNH. HANG SE THAY OI T 0 EN 24 T TREN XUONG. COT SE THAY OI T 0 EN 79 T TRAI SANG PHAI.
TOAN BO WINDOWS B CUON MAN HNH B XOA. Chuoung 10 Lap trinh xu ly man hinh
40
CAC THONG SO : CUON LEN AH =6 ; CUON XUONG AH = 7 AL = SO DONG SE CUON ( = 0 NEU CUON TOAN BO MAN HNH) CH, CL = TOA O HANG,COT CUA GOC TREN TRAICUA WINDOWS DH, DL = TOA O HANG, COT CUA GOC DI PHAI CUA WINDOWS BH = THUOC TNH MAN HNH CUA CAC DONG TRONG KHI MAN HNH A CUON.
41
EX : XOA MAN HNH BANG CACH CUON LEN TOAN BO MAN HNH VI THUOC TNH NORMAL MOV AH, 6 MOV AL, 0 MOV CH, 0 MOV CL, 0 MOV DL, 24 MOV DH, 79 MOV BH, 7 INT 10H MOV AX, 0600H MOV CX, 0000H MOV DX, 184FH MOV BH, 7 INT 10H
42
EX : CUON WINDOWS T (10,20) TI (15,60), CUON XUONG 2 DONG, 2 DONG CUON SE CO THUOC TNH VIDEO AO.
MOV AX, 0702H MOV CX,0A14H MOV DX, 0F3CH MOV BH, 70H INT 10H
Chuoung 10 Lap trinh xu ly man hinh 43
AH =8 ; BH = TRANG MAN HNH TRI TRA VE : AL = KY T A OC C ; AH = THUOC TNH CUA KY T EX : THIET LAP CURSOR TAI HANG 5 COT 1 SAU O NHAN 1 KY T NHAP.LU KY T A OC C VA THUOC TNH CUA KY T NAY. LOCATE : MOV AH, 2 MOV BH, 0 MOV DX, 0501H INT 10H GETCHAR : MOV AH, 8 MOV BH, 0 INT 10H MOV CHAR, AL MOV ATTRIB , AH
Chuoung 10 Lap trinh xu ly man hinh 44
CHC NANG 09H INT 10H : XUAT (GHI) 1 HOAC NHIEU KY T CUNG VI THUOC TNH CUA CHUNG LEN MAN HNH. CHC NANG NAY CO THE XUAT MOI MA ASCII KE CA KY T O HOA AC BIET CO MA T 1 EN 31
45
CHC NANG 0AH INT 10H : XUAT (GHI) 1 HOAC NHIEU KY T CUNG VI THUOC TNH CUA CHUNG LEN MAN HNH. CHC NANG NAY CO THE XUAT MOI MA ASCII KE CA KY T O HOA AC BIET CO MA T 1 EN 31
46
CHC NANG 0AH INT 10H : XUAT (GHI) 1 HOAC NHIEU KY T CUNG VI THUOC TNH CUA CHUNG LEN MAN HNH. CHC NANG NAY CO THE XUAT MOI MA ASCII KE CA KY T O HOA AC BIET CO MA T 1 EN 31
47
CHC NANG 0FH INT 10H : LAY VIDEO MODE AH =0F ; BH = TRANG HIEN HANH AH = SO COT MAN HNH ; AL = MODE MAN HNH HIEN HANH
EX : MOV AH,0FH ; Get Video Mode Function INT 10H ; goi BIOS MOVE VIDEO_MODE, AL ; lu Video Mode vao bien bo nh MOV PAGE, BH ; lu trang hien hanh.
48
L P TRNH X
L PHM
1. c phm nh n : Ch c nng AH = 0, ng t 16H Vo : AH = 0 Ra : AL = m ASCII n u m t phm ASCII c nh n = 0 n u phm i u khi n c nh n AH = m scan c a phm nh n
49
L P TRNH X
BN PHM
L PHM
50
BN PHM
51
BN PHM
52
BN PHM
53
BN PHM
54
BN PHM
55
L P TRNH X
L PHM
56
3. Ki m tra v thi t l p tr ng thi cc phm Caps/Num/Scroll Lock tng t nhng v i m scan khc Scroll = 10H, Num = 20H, Cap = 40H. 4. t l i cc tr ng thi n Caps/Num/Scroll Lock, ta ch c n t l i gi tr a ch 0:0417. Vd, b t n Caps Lock v i tr ng thi n Num Lock ta s lm nh sau: XOR AX, AX MOV ES, AX ; ES = 0 MOV AL, ES:[417H] ; c tr ng thi n OR AL, 40H ; b t n Caps Lock XOR AL, 20H ; o n Nums Lock MOV ES:[417H], AL ; MOV AH , 2H INT 16H
Chuoung 10 Lap trinh xu ly man hinh 57
58
1. Vi t chng trnh : a. Xo mn hnh, t o kch th c to nh t cho con tr v di chuy n n n gc tri trn b. N u nh n phm Home : chuy n con tr n gc tri trn, End : chuy n n gc tri d i, Page Dn : chuy n con tr n gc ph i d i, Esc : k t thc chng trnh. 2. D ch chuy n con tr n gc tri trn mn hnh n u phm F1 c nh n, gc tri d i n u phm F2 c nh n. Chng trnh s b qua cc k t thng th ng. 3. Vi t chng trnh so n th o vn b n nh sau : a. Xo mn hnh, nh v con tr t i u dng 12 b. ng i s d ng nh vo cc k t . Con tr d ch chuy n i sau khi hi n th k t n u n khng t i l ph i c a mn hnh c. Phm mi tn tri , ph i, ln , xu ng d ch con tr tng ng d. Phm Insert : chn k t , Delete : Xo m t k t , Esc : k t thc chng trnh.
Chuoung 10 Lap trinh xu ly man hinh 60
MA SCAN CODE CUA CAC PHM MUI TEN : TRAI 4BH PHAI 4DH LEN 48H XUONG 50H
61
L P TRNH X
C B N V M T M T LU TR
L A&FILE
TRN A T .
CC CH C NNG V
4/4/2006
C B N V
LU TR
TRN A T
khc
Ta xem xt vi c lu tr thng tin trn a theo 2 m c : m c ph n c ng/BIOS v m c ph n m m/DOS. m c ph n c ng :lu tr thng tin lin quan n cch d li u c lu tr 1 cch v t l nh th no trn a t ? m c ph n m m : vi c lu tr c qu n l b i ti n ch qu n l File c a HH DOS.
4/4/2006 LAP TRINH XU LY DIA TU 2
4/4/2006
4/4/2006
CC C TNH LU N L & V T L C A A T
m c v t l : a c t ch c thnh cc Tracks, Cylinders, Sectors. Kh nng lu tr c a a c m t b ng 3 thng s : C (cylinder number) H (Head side) R (sector number)
4/4/2006 LAP TRINH XU LY DIA TU 5
4/4/2006
4/4/2006
m c lu n l : a c t ch c thnh cc Clusters, cc files m DOS s dng c p pht vng lu tr cho d li u c n lu tr . Cluster : l 1 nhm g m 2,4,6 cc sector k nhau. chnh l n v c p pht vng lu tr cho d li u (file). Cc cluster c nh s b t u t 0. N u d li u c n lu tr ch 1 byte th h i u hnh cng c p pht 1 cluster. s bytes/cluster hay sector/cluster ty thu c vo t ng lo i a.
4/4/2006 LAP TRINH XU LY DIA TU 9
0 0 0 1 1 0
0 0 0 0 0 1
4/4/2006
10
BAD SECTOR Trn b m t a c th t n t i cc sector m HH khng th ghi d li u vo ho c khng th c d li u t . Cc sector ny g i l Bad Sector. Lm sao bi t sector no l bad sector
4/4/2006
11
Trong b ng FAT c ghi cluster b t u c a File ny u ? V a cn bao nhiu Clusters tr ng cha c p pht. t ch c lu n l c a a c m t nh hnh sau : B ng Boot B ng Root data FAT2 record FAT1 directory
4/4/2006
12
Th d v b ng FAT
a m m 3.5 360K th : Sector 0 : boot sector Sector 1-4 : b ng FAT Sector 5 11 : th m c g c Sector 12-719 : vng ch a data
4/4/2006
13
BOOT RECORD Cn c g i l Boot Sector. a c ng g i l Master boot, l Sector u tin khi a c format. ch a 1 chng trnh nh cho bi t d ng lu tr trn a v tn h th ng MT, ki m tra xem c cc file h th ng IO.SYS, MSDOS.SYS, COMMAND.COM hay khng ?
nh
(g i l
14
4/4/2006
16
3 8 2 1 2 1
ch th nh y v n i ch a CT n p m i Tn nh s n xu t v h i u hnh Bytes/sector Sector/block (m i block >=1 sector) S l ng Sectors khng dng n k t sector 0. S l ng b ng FAT
4/4/2006
17
2 2 1 2 2 2 4 4
S Entry c a th m c g c a. T ng s sector c a a logic ny. Byte m t S sector cho 1 b ng FAT S Sectors trong 1 track. S l ng u c S l ng sector n T ng s sectors
LAP TRINH XU LY DIA TU 18
Bootstrap
4/4/2006
19
4/4/2006
20
B NG FAT
B ng ch a cc danh sch lin k t cc clusters. M i danh sch trong b ng cho DOS bi t r ng cc clusters no c p pht, cc clusters no cha dng. ty theo a c th c 1 hay 2 b ng FAT, b ng FAT2 d ph ng. c 2 lo i b ng FAT : b ng c Entry 12 bit cho a m m. b ng c Entry 16 bit cho a c ng.
4/4/2006
21
64 Bytes c a Partiton table c chia lm 4, m i ph n 16 bytes m t cho 1 partition cc thng tin sau : Bytes 00H 01H 02H active flag (=0 Non bootable =80H Bootable) starting head Ni b t u Partittion starting cylinder M t
PARTITON TABLE
4/4/2006
22
PARTION TABLE B ng FDISK c a HH ta c th chia khng gian lu tr c a a c ng thnh cc ph n khc nhau g i l Partition. DOS cho php t o ra 3 lo i Partition : Primary Dos, Extended Dos v None Dos Ta c th ci t cc HH khc nhau ln cc Partition khc nhau.
4/4/2006
23
03H 04H
PARTITON TABLE
4 cho a l n 16 bit FAT Entry 5 Extended Dos 05H 06H 07H 08H, 0BH 0Ch,0FH
4/4/2006
Ending ni k t thc Partition Ending Cylinder Ending Sector Starting sector for partition Partition length in sectors
LAP TRINH XU LY DIA TU 24
M t s th d
ki m tra Partition Active c sector u tin c a a c ng lu vo bi n. ki m tra offset 00 c a 4 ph n t trong Partition Table MOV CX, 4 MOV SI, 1BEH PACTIVE : MOV AL, MBOOT [SI] CMP AL, 80H
4/4/2006
Partition
M t s th d
c n i dung c a BootSector ghi vo bi n dem c sector u tin c a a c ng lu vo buffer. tm partition active (ph n t partition c offset 80h) trong b ng
c byte t i offset 01h v word t i offset 02h c a ph n t partition tng ng trn (head, sector, cylinder) xc nh s hi u b t u c a partition active boot sector c a a c ng. c n i dung c a sector c c vo buffer.
4/4/2006 LAP TRINH XU LY DIA TU
trn lu
26
M t s th d
ACTIVE : MOV AX, 0201H ; c 1 sector MOV CX, WORD PTR MBOOT [SI+2] ; sector cylinder MOV DH, BYTE PTR MBOOT[SI+1] ; head MOV DL, 80H ; a c ng MOV ES, CS ; tr LEA BX, BUFFER INT 13H
4/4/2006 LAP TRINH XU LY DIA TU 27
u vng buffer lu
TH M C G C (ROOT DIRECTORY)
L danh sch t t c cc Files c trn a, cc th m c c p 1 c. M i ph n t (32 bytes) trong b ng th m c s ch a thng tin v tn file ho c l th m c, kch th c, thu c tnh, cluster b t u c a file ny ho c cluster b t u c a th m c th c p (th m c con). m i b ng th m c ch a t i a 112 entry, m i entry l 32 bytes.
4/4/2006 LAP TRINH XU LY DIA TU 28
TH M C G C (ROOT DIRECTORY)
Offset 00H 08H 0BH 0CH 16H 18H 1Ah 1CH gi N i dung tn chnh c a File ph n m d tr thay i thng tin cu i cng r ng c a tn file thu c tnh c a File Kch th c 8 bytes 3 bytes 1 byte 10 bytes 2 bytes 2 bytes 4bytes
29
ngy thay i thng tin cu i cng 2 bytes cluster u tin c a File Kch th c File
LAP TRINH XU LY DIA TU
4/4/2006
x : khng s
a : thu c tnh lu tr
d : thu c tnh th m c con (Sub Directory) v : thu c tnh nhn a (Volume) s : thu c tnh h h : thu c tnh th ng (System) n (Hidden)
VNG LU TR
l vng dnh cho vi c lu tr d li u.
nh v y vi c lu tr d li u trn a c c u trc l 1 danh sch lin k t m b ng th m c g c l u c a danh sch lin k t. u m i cluster lun lun ch a a ch c a cluster sau n cho bi t ph n cn l i c a file l cluster no. N u gi tr ny l 0 th cluster ny l cluster cu i cng.
4/4/2006 LAP TRINH XU LY DIA TU 31
CLUSTERS
4/4/2006
CC LO I A
Disk Type sides track sectors total per side
360K 720K 1.2MB 1.4MB 32MB 2 2 2 2 6 40 80 80 80 614
cluster size
total bytes
per track
9 9 15 18 17
sector
4/4/2006
33
TNH DUNG L NG A
Cng th c tnh dung l ng a : Dung l ng a (bytes) = s byte/1 sector * s sector/1 track * s track/ 1 m t a * s m t a.
4/4/2006
34
M TS
bytes cn tr ng trn a
A .
sector / cluster
DX = t ng s
BI T P
4/4/2006
36
Vi t chng trnh ghi d li u vo file v i yu c u : Tn file nh p t bn phm D li u ghi vo file cng g t bn phm v k t thc vi c nh p b ng phm CTRL+Z
4/4/2006
37
4/4/2006
38
Handle la 1 so 16 bits c Dos s dung e nhan biet File a m hoac 1 thiet b trong he thong.
4/4/2006
39
0 1 2 3 4
Keyboard, standard input Console, standard output Error output thiet b xuat loi man hnh Auxiliary device asynchronous Printer
4/4/2006
40
CC THAO TC X
L FILE
4/4/2006
41
Chc nang
3Ch 3Dh 3Eh 3Fh 40h 42h Tao File mi
Tac vu
M File a co e xuat/nhap/va nhap va xuat ong the File oc t File hay oc t thiet b 1 so bytes nh trc Ghi vao File hay oc t thiet b 1 so bytes nh trc di chuyen con tro File trc khi oc/ ghi
4/4/2006
42
4/4/2006
43
E BAO VE FILE, CO 2 CACH : C1 : M FILE BANG CHC NANG 3Dh, NEU FILE CHA CO TH TRA VE LOI SO 2 (FILE NOT FOUND) YEN TAM M FILE MI. C2 : DUNG CHC NANG 5Bh M FILE CO KIEM TRA TEN FILE NAY A CO CHA.
4/4/2006
45
2 FILE NOT FOUND KHONG TM THAY FILE, CO THE NG DAN KHONG UNG HOAC TEN FILE MO TA KHONG HP LE. 3 PATH NOT FOUND NG DAN KHONG CO. 4 TOO MANY OPEN FILES CO THE DO LENH PATH XX TRONG CONFIG.SYS QUA NHO KHONG CHO PHEP M NHIEU FILE. 5 ACCESS DENIED T CHOI TRUY XUAT. CO THE TA MUON XOA FILE ANG M, HAY FILE NAY CO THUOC TNH CH OC. CH M truy nh p khng h p l . FH a khng h p l
4/4/2006
48
4/4/2006
49
Tru c khi s d ng 1 file, ta ph i m n. t o 1 file m i hay ghi l i 1 file c, ta s d ng tn file v thu c tnh c a File. DOS tr v th file
4/4/2006
50
AH = 3CH DS:DX a ch c a chu i ASCII (chu i tn File k t thc b ng byte 0) CL = thu c tnh File N u thnh cng, AX = th File N u CF c set th c l i, m l i ch a trong AX (l i 3,4,5)
4/4/2006
51
Fname DB FILE1,0 FHANDLE DW ? MOV AX,@DATA MOV DS,AX MOV AH,3CH MOV CL,1 LEA DX,FNAME
4/4/2006
52
AH = 3DH DS:DX = a ch c a chu i ASCII (chu i tn File k t thc b ng byte 0) AL = m truy c p 0:m c 1 : m ghi 2 : m c v ghi Thnh cng, AX = Fhandle C l i. M l i ch a trong AX (2,4,5,12)
4/4/2006
53
4/4/2006
54
LOI SO 6 : INVALID HANDLE FILE HANDLE TRONG BX KHONG PHAI LA THE FILE CUA FILE A M.
IEU KIEN : AH = 3FH BX = FILE HANDLE , CX = SO BYTES CAN OC DS:DX : A CH BO EM. XUAT : AX = SO BYTES OC C, NEU AX = 0 HAY AX<CX FILE A KET THUC. NEU C CF C LAP TRONG AX( 5,6)
4/4/2006
56
.DATA HANDLE DW ? BUFFER DB 512 DUP(?) MOV AX, @DATA MOV DS, AX MOV AH, 3FH MOV CX, 512 MOV BX, HANDLE
4/4/2006 LAP TRINH XU LY DIA TU 57
INPUT : AH =40H BX = THE FILE CX = SO BYTES CAN GHI DS:DX : A CH VUNG EM. OUTPUT : AX : SO BYTES GHI C, NEU AX<CX, CO LOI (A AY).NEU CF C LAP CO LOI, MA LOI TRONG AX (5,6).
HAM 40H CUNG CO THE DUNG E A D LIEU RA MAN HNH
4/4/2006 LAP TRINH XU LY DIA TU 58
CON TRO FILE DUNG E NH V TRONG FILE. KHI FILE C M, CON TRO FILE NAM AU FILE. SAU MOI THAO TAC OC, CON TRO FILE SE DI CHUYEN EN BYTE KE. SAU KHI GHI 1 FILE MI CON TRO CH EN CUOI FILE (EOF). E DI CHUYEN CON TRO FILE HAM 42H
4/4/2006 LAP TRINH XU LY DIA TU 59
Vi t chng trnh cho php User g vo tn File (c th c km theo tn a, th m c ch a fiel), chng trnh s c v hi n th n i dung File ra mn hnh.
4/4/2006
60
0 DCH CHUYEN TNG OI SO VI AU FILE. 1 DCH CHUYEN TNG OI SO VI V TR HIEN THI CUA CON TRO. 2 DCH CHUYEN TNG OI SO VI CUOI FILE. BX = THE FILE. CX : DX SO BYTES CAN DCH CHUYEN. OUTPUT : DX:AX : V TR MI CUA CON TRO FILE TNH BANG BYTE T AU FILE. NEU CF =1 MA LOI TRONG AX (1, 6).
4/4/2006 LAP TRINH XU LY DIA TU 61
DI CHUYEN CON TRO FILE EN CUOI FILE VA XAC NH KCH THC FILE MOV AH, 42H XOR DX, DX XOR CX, CX ; DCH CHUYEN 0 BYTE MOV AL, 2 ; TNH T CUOI FILE INT 21H ; CHUYEN CON TRO EN CUOI FILE, DX:AX KCH THC FILE JC MOVE_ERROR
4/4/2006 LAP TRINH XU LY DIA TU 62
INPUT :
AH = 43H DS :DX = A CH CHUOI ASCII STRING AL = 0 E LAY THUOC TNH FILE AL =1 E THAY OI THUOC TNH FILE, CX = THUOC TNH FILE MI (NEU AL =1) OUTPUT : NEU THANH CONG, CX = THUOC TNH HIEN THI NEU CF C LAP CO LOI, MA LOI TRONG AX (2,3,5).
4/4/2006
63
4/4/2006
64
L P TRNH FILE 1. Vi t chng trnh chp m t file ngu n n m t file ch trong thay ch th ng b ng ch hoa. 2. Vi t chng trnh c 2 file v hi n th chng bn c nh nhau trn mn hnh. Ch c ch c nng d ng t ng trang mn hnh n u file qu di. 3. Vi t chng trnh ghp n i dung 1 file vo cu i 1 file khc c. 4. Vi t chng trnh t o 1 th m c, tn th m c c g t bn phm (tn th m c c th bao g m tn a, ng d n).
4/4/2006
65
Chng 13 :L P TRNH X
L M NG & CHU I
Gi I THI U CHU I
Trong ASM 8086 khi ni m chu i b nh hay chu i l 1 m ng cc byte hay word. Cc l nh thao tc v i chu i cng c thi t k cho cc thao tc v i m ng.
DF=0 chu i c x l theo chi u tng t c a ch vng nh ch a chu i tng d n. (chu i c x l t tri qua ph i).
DF=1 chu i c x l theo chi u tng t c a ch vng nh ch a chu i gi m d n. (chu i c x l t ph i qua tri).
L NH LIN QUAN N C
H NG
CLD (CLEAR DIRECTION FLAG) XA C H NG DF =0 STD (SET DIRECTION FLAG) THI T L P C H NG DF=1
Tr c khi s d ng cc l nh x l chu i, ta ph i xc nh h ng x l chu i b ng cch set hay clear c h ng. L nh t c h ng : CLD : xa c h ng, chu i c x l t tri ph i STD : t c h ng, chu i c x l t ph i tri
CON TR
DS:SI ES:DI
Ch a a ch chu i ch
Chng 14 L p trnh XL Chu i 6
CC THAO TC X
L CHU I
NH P CHU I
Input : AH = 0AH, ng t 21H DS:DX = a ch c a buffer, trong buffer[0] l kch th c t i a c a chu i, buffer[1] s l kch th c d li u nh p. Output : Chu i buffer ch a n i dung nh p vo t buffer[2] tr i
NH P CHU I
NH P CHU I
Ta cng c th dng hm 1 INT 21h c 1 k t t bn phm nh p 1 chu i b ng cch dng vng l p v lu chu i b ng l nh STOSB.
LU CHU I CC BYTES
10
NH P CHU I
Ta cng c th dng hm 1 Int 21h c 1 k t t bn phm nh p 1 chu i b ng cch dng vng l p v lu chu i b ng l nh STOSW.
LU CHU I CC WORD
11
TH D
.MODEL SMALL .STACK 100H .DATA STRING1 DB 'HELLO' .CODE MAIN PROC MOV AX,@DATA MOV ES,AX LEA DI, STRING1 ; kh i t o ES CLD ; x l t tri ph i MOV AL,'A' STOSB ; AL ch a k t c n lu STOSB ; lu k t A MOV AH,4CH ; lu k t th 2 INT 21H MAIN ENDP END MAIN Chng 14 L p trnh XL Chu i
12
TH D . READSTR PROC PUSH AX PUSH DI CLD XOR BX,BX MOV AH,1 INT 21H LAP: CMP AL,0DH JE ENDLAP CMP AL,8H JNE ELSE1 DEC DI DEC BX JMP READ
ELSE1 : STOSB INC BX READ : INT 21H JMP LAP ENDLAP : POP DI POP AX RET READSTR ENDP
13
NH P XU T CHU I
Hi N TH CHU I
AH = 09, ng t 21H Vo : DX = a ch offset c a chu i. Chu i ph i k t thc b ng k t $. Ch : thay v dng l nh MOV OFFSET ta c th dng l nh LEA.
14
CC THAO TC X
L CHU I
For counter Do
Hi N TH CHU I
N p 1 chu i
15
N P 1 CHU I CC BYTES
AL
16
TH D
STRING1 DB ABC MOV AX,@DATA MOV DS,AX LEA SI, STRING1 CLD LODSB LODSB .
N P BYTE TH
1 V TH
AL
17
N P 1 CHU I CC WORD
18
TH D
Hi n th chu i nh p DISPSTR PROC PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI MOV CX, BX JCXZ EXIT CLD MOV AH,2 LAP : LODSB MOV DL, AL INT 21H LOOP LAP
19
CHNG TRNH HAN CH NH Vi t chng trnh nh p 1 chu i k t t i a 80 k t , hi n th 15 k t c a chu i nh p dng k . .MODEL SMALL .STACK 100H .DATA STRING1 DB 80 DUP(0) XDONG DB 0DH,0AH,$ .CODE MAIN PROC MOV AX,@DATA MOV DS,AX MOV ES,AX LEA DI, STRING1 CALL READSTR LEA DX,XDONG MOV AH,9 INT 21H
LEA SI, STRING1 MOV BX, 15 CALL DISPSTR MOV AX,4C00H INT 21H MAIN ENDP ; READSTR PROC ; DISPSTR PROC END MAIN
20
CC THAO TC X
L CHU I
chuy n n i dung c a byte c nh b i DS:SI n byte c ch b i ES: DI. Sau SI v DI t ng tng ln 1 n u c DF = 0 hay gi m 1 n u DF = 1.
21
DF
0
22
MOVSW
Sau khi chuy n 1 word c a chu i c SI v DI cng tng ln 2 n u DF=0 ho c cng gi m i 2 n u DF=1
23
24
DF DS:SI DS:SI 0
3A
LODSB
3A AL
Chng 14 L p trnh XL Chu i 25
26
27
28
29
30
31
32
33
REP
Kh i t o CX v i s byte c n chuy n
TH D MINH H A
.DATA STRING1 DB HELLO STRING2 DB 5 DUP(?) .. CLD LEA SI, STRING1 LEA DI, STRING2 MOV CX, 5 REP MOVSB
35
TH D MINH H A
10,20, ,40,50,60
D i 40,50,60 ra sau 1 v tr
30
Sau chn 30 vo
Chng 14 L p trnh XL Chu i 36
STD LEA SI, ARR+8H LEA DI, ARR+AH MOV CX, 3 REP MOVSW MOV WORD PTR[DI],30
37
M NG 1 CHI U
M t dy cc ph n t
c cng ki u d li u, c cng 1 tn g i.
Khai bo
MKT DB MNB Dw
abcdef ; m ng k t 10h,20h,30h,40h,50h,60h ; m ng s c gi tr
38
39
40
BI T P
Bi 1 : Vi t chng trnh nh p 1 s t 1-12, in ra tn thng tng ng. Bi 2 : Vi t chng trnh nh p 1 s t 1-7, in ra tn th tng ng.
41
M TS
Nh p 1 chu i di t i a 255 k t t bn phm. Cho php dng phm BackSpace s a khi nh p sai v k t thc nh p khi g phm Enter.
H ng d n : Dng hm 0AH INT 21H nh p chu i DS:DX a ch c a buffer m lu chu i. Byte 0 : s byte t i a c th nh p. Byte 1 : ch a gi tr 0 Byte 2 tr i : tr ng (lu cc k t s nh p) nh p 1 chu i k t vo Buffer m ta khai bo nh sau : .DATA BUFFERN DB 80,0,80 DUP(?)
42
B2. Vi t chng trnh nh p vo 1 chu i, sau i t t c chu i thnh ch hoa v in chu i ra mn hnh dng k .
B3.Vi t chng trnh nh p hai chu i k t , ki m tra xem chu i th hai c xu t hi n trong chu i th nh t hay khng. V d : Nh p chu i th nh t : computer information Nh p chu i th hai : compute Xu t: Chu i th hai c xu t hi n trong chu i th nh t.
43
B4. Vi t chng trnh nh p 1 chu i k t vi t hoa cc k t nguyn m, vi t th ng cc k t ph m. V d : Nh p chu i : aBcdE Xu t chu i: AbCdE B5. Vi t chng trnh nh p vo 2 chu i k t s1, s2 v 1 s nguyn dng n. Chn chu i s2 vo chu i s1 v tr k t th n trong chu i s1 . V d : Nh p chu i s1 : abcde Nh p chu i s2 : fgh Nh p n = 3 Xu t k t qu : abcfghde B6. Vi t chng trnh nh p vo t bn phm 1 chu i v tnh s l n xu t hi n c a cc nguyn m (a,e,i,o,u, y), cac phu am, cac khoang trang, trong chu i tng ng. V d : Nh p chu i : dai hoc khoa hoc tu nhien thanh pho ho chi minh Xu t : S l n xu t hi n c a cc nguyn m l : 14 , phu am la: 24, khoang trang la: 9
Chng 14 L p trnh XL Chu i 44
B7. Vi t chng trnh nh p vo t bn phm 1 chu i g m cc k t trong b ng ch ci. m xem trong chu i c bao nhiu t . V d : Nh p chu i : hO Chi mINh Xu t : chu i g m c 3 t
B8. Vi t chng trnh nh p vo t bn phm 4 s . Xu t ra mn hnh 4 s theo th t tng d n . V d : Nh p : 14 7 26 11 Xu t : 7 11 14 26 B9. Vi t chng trnh nh p vo t bn phm 4 s v sau xu t s l n nh t v nh nh t ra mn hnh. V d : Nh p : 13 21 1 49 Xu t : S l n nh t : 49 S nh nh t : 1
45
46