You are on page 1of 570

C U TRC L P TRNH H P NG MY TNH

4/4/2006

Chuong 1 C U TRC T NG QUT C A HTMT

MUC TIEU
:

C L

u trc My tnh & p trnh Assembly

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

C u trc My tnh - i h c Bch khoa

4/4/2006

Chuong 1 C U TRC T NG QUT C A HTMT

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

Chuong 1 C U TRC T NG QUT C A HTMT

Giao vien : Ngo Phc Nguyen Email : nguyenktcn@yahoo.com Mobile: 091-8-380-926

4/4/2006

Chuong 1 C U TRC T NG QUT C A HTMT

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

Chng 1 :C U TRC T NG QUT C A M T H TH NG MY TNH

4/4/2006

Chuong 1 C U TRC T NG QUT C A HTMT

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

Chuong 1 C U TRC T NG QUT C A HTMT

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

Chuong 1 C U TRC T NG QUT C A HTMT

10

4/4/2006

Chuong 1 C U TRC T NG QUT C A HTMT

11

May tnh & S tnh toan


B x l

Memory : ch a cc ch th & d li u

2+3/4*3-5=? . .. .

Input device : thi t b nh p

4/4/2006

Chuong 1 C U TRC T NG QUT C A HTMT

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

T ng quan v c u trc my tnh


My tnh hi n i ngy nay c thi t k d a trn m hnh Turing Church v m hnh Von Neumann.

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

Chuong 1 C U TRC T NG QUT C A HTMT

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

Chuong 1 C U TRC T NG QUT C A HTMT

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

Nguyn l hoat ng my Turing


D li u c a bi ton l 1 chu i cc k hi u thu c t p cc k hi u c a my khng k k hi u r ng b, c c t v bng. Tr ng thi trong ban u c a my l q0 . u c/ghi ch a k hi u u tin c a chu i k hi u nh p. Trong qu trnh ho t ng, s thay i d li u trn bng, s d ch chuy n u c ghi v s bi n i tr ng thi trong c a my s di n ra tun theo cc l nh thu c t p l nh c a my ty theo tr ng thi hi n t i v k hi u hi n t i. Qu trnh s d ng l i khi tr ng thi trong c a my l tr ng thi k t thc qf.
4/4/2006 Chuong 1 C U TRC T NG QUT C A HTMT 18

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

Chuong 1 C U TRC T NG QUT C A HTMT

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.

Chng trnh MT c th bi u di n d I d ng s v t vo trong b nh c a MT bn c nh d li u.

4/4/2006

Chuong 1 C U TRC T NG QUT C A HTMT

22

Typical Von Neumann Machine

A L U

4/4/2006

Chuong 1 C U TRC T NG QUT C A HTMT

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

T ch c My tnh 1 CPU & 2 I/O device


CPU
Control Unit Control Unit ALU ALU

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

Control Unit Control Unit ALU ALU


Registers Registers

Main Memory Main Memory


C 2 tc v /Ghi C 2 tc v :: cc/Ghi 2 lo d li u: 2 lo iid li u: 1) Data li u u vo, 1) Data ::ss li u u vo, k qu ,d li u trung gian k ttqu ,d li u trung gian 2) Chng trnh 2) Chng trnh

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

n v giao ti p IO Card n v giao ti p IO Card IO Devices IO Devices

Chuong 1 C U TRC T NG QUT C A HTMT

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

Chuong 1 C U TRC T NG QUT C A HTMT

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

Chuong 1 C U TRC T NG QUT C A HTMT

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

0 1 2 3 4 5 6 7 8 9 Ex : 12d 0123456789ABCDEF Ex : 3F8h


Chuong 2 : T ch c CPU 3

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!!!.

M t trong nh ng cch t t nh t hi n nay l dng h th ng s th p phn (decimal system).

Chuong 2 : T ch c CPU

Decimal System

Con ng i ngy nay dng h 10 m.Trong h 10 c 10 digits 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Nh ng k s ny c th bi u di n b t k 1 gi tr no, th d : 754

Chuong 2 : T ch c CPU

V tr c a t ng k s r t quan tr ng, th d cu i th: 547 n s l 1 gi tr khc :

n u ta t "7"

Chuong 2 : T ch c CPU

Binary System

MT khng thng minh nh con ng I,n dng tr ng thi c a i n t

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

Cc php ton trong h nh phn


c ng : 0+0=0 tr 0+1=1 1+ 0 = 1 1 + 1 = 0 nh 1

: 0- 0=0

0 - 1 = 1 m n 1 1 0 = 1 1- 1=0

Nhn : c th coi l php c ng lin ti p Chia : c th coi l php tr lin ti p

Chuong 2 : T ch c CPU

10

Cc php ton trong h nh phn


B ng php tnh Logic cho cc s nh phn

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

a la ky so cua so can oi. 1*23+1*22+0*21+0*20 = 12d


a
Chuong 2 : T ch c CPU 13

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

Cach oi : nhom 4 ch so nh phan thanh tng nhom, roi chuyen


oi tng nhom sang so he thap luc phan.

000101011010d = 15Ah 1 5 A

Chuong 2 : T ch c CPU

15

2.2 B x l trung tm CPU

Chuong 2 : T ch c CPU

16

2.2 B x l trung tm CPU


CPU (Central Processing Unit) B x l trung tm Ch c nng : th c hi n chng trnh lu trong b nh chnh b ng cach l y l nh ra - kh o sat - th c hi n l n l t cac l nh. Moi CPU co 1 tap lenh rieng. Chng trnh c thc thi CPU nao se ch gom cac lenh trong tap lenh cua CPU o. CPU g m 1 s b ph n tch bi t : B i u khi n l y l nh ra t b nh v xc nh ki u l nh. B lu n l v s h c (ALU) th c hi n php ton nh c ng, and. Cc thanh ghi (Registers) : lu k t qu t m th i v cc thng tin i u khi n.CPU giao ti p v i cc b ph n khc trong my tnh thng qua cc tuy n g i l Bus
Chuong 2 : T ch c CPU 17

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

c, phn tch l nh , ra l nh cho cc n v ch c nng th c hi n

S kh i
CPU

Control Unit Control Unit ALU ALU


Registers Registers

Main Memory Main Memory


C tc /Ghi C 22tc vv :: cc/Ghi lo d li u: 22lo i id li u: 1) Data li u u vo, 1) Data ::ss li u u vo, k qu k ttqu , , d li u trung gian d li u trung gian 2) Chng trnh 2) Chng trnh

Php ton: s h c, lu n l, so snh, d ch, quay,x l bit

n v giao ti p IO Card n v giao ti p IO Card IO Device IO: Device Chuong 2 T ch c 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.

Chu ky lenh c xay dng t nhng n v c ban la chu ky may.

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

Thc hien lenh


CPU thc hien lenh tuan t theo chuoi cac bc : Lay lenh ke t bo nh. thanh ghi lenh. Thay oi PC e ch en lenh ke tiep. Xac nh kieu lenh va lay ra. Xac nh kieu d lieu va yeu cau va xac nh v tr d lieu trong bo nh. Neu lenh can d lieu trong bo nh, nap no vao thanh ghi cua CPU
Chuong 2 : T ch c CPU 22

Thc hien lenh (cont)


Thc hien lenh.. Lu ket qua ni thch hp. . Tr v bc 1 e thc hien lenh ke.

Chuong 2 : T ch c CPU

23

S phn ph i th i gian cho 2 qu trnh l y l nh v thi hnh l nh c a CPU th ng v CPU ng ng

L y l nh Thi hnh l nh L y l nh Thi hnh l nh

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

CPU dng c c u ng ng (piple line)


Chuong 2 : T ch c CPU 24

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

Data bus bus

Memory

IO devices IO devices
Chuong 2 : T ch c CPU 30

A Typical Output Port

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

Connection of the PCI and ISA Busses in a Typical PC


Industry Standard Architecture

Peripheral Component Interconnect

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

Plug and Play


1.C BIOS trn mainboard v Card b sung u khng ph I l Plug and Play. 2. BIOS trn mainboard Plug and Play nhng Card b sung th khng ph n m m ci t s gip s p x p a ch I/O, IRQ v cc knh DMA. 3. BIOS trn mainboard v Card b sung l Plug and Play c u hnh t ng th c hi n m i cng vi c.

Chuong 2 : T ch c CPU

36

AGP Bus Interface

Accelerated Graphic Port

Chuong 2 : T ch c CPU

37

AGP (Accelerated Graphics Port)


Acronym for Accelerated Graphics Port. A high-performance bus specification designed for fast, high-quality display of 3-D and video images. Developed by Intel Corporation, AGP uses a dedicated point-to-point connection between the graphics controller and main system memory. This connection enables AGP-capable display adapters and compatible chip sets to transfer video data directly between system memory and adapter memory, to display images more quickly and smoothly than they can be displayed when the information must be transferred over the systems primary (PCI) bus. AGP also allows for storing complex image elements such as texture maps in system memory and thus reduces the need for large amounts of memory on the adapter itself. AGP runs at 66 MHz twice as fast as the PCI busand can support data transfer speeds of up to 533 Mbps..
Chuong 2 : T ch c CPU 38

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

Chu k Bus (cont)


Data2 Add1 Data1 Ready Chu k bus Chu ky Bus khi khong co trang thai ch Add2

Add1

Add2 Data2 Data1 Chu ky Bus khi co trang thai ch InactiveReady Chu k bus
Chuong 2 : T ch c CPU 46

Chu k Bus (cont)


Ch :
Trong 1 s h th ng, cho php ta Setup m t s wait states trong ph n Extend Setup c a Bios. N u ta cho gi tr ny nh th c th ngo i vi khng theo k p CPU v h th ng b treo. Cn n u cho gi tr ny l n th t c chung c a h th ng b ch m l i. Wait states m c nh l 4 cho cc v m ch 8 bit v l 1 cho cc v m ch 16 bit. t c truy n t i t i a : t c truy n t i = t c bus (MHz) x s bytes trong 1 l n truy n /s chu k xung clock cho m i l n truy n
Chuong 2 : T ch c CPU 47

2.4 H th ng thanh ghi


L cc ph n t c kh nng lu tr thng tin v i dung l ng 8, 16 , 32, 64 bit. c xy d ng t cc FlipFlop nn c t c truy xu t r t nhanh.
Phn lo i thanh ghi : Thanh ghi t ng qut : ch y u dng lu tr d li u trong qu trnh th c thi CT, nhng m i thanh ghi cn c 1 s ch c nng ring. Thanh ghi i u khi n : cc bit c a n qui nh tc v c a cc n v ch c nng c a MT. Thanh ghi tr ng thi : lu tr thng tin m t tr ng thi.
Chuong 2 : T ch c CPU 48

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

AH AL Thanh ghi AH l n a cao c a thanh ghi AX Thanh ghi AL l n a th p c a thanh ghi AX


Th d n u AX=1234h th AH=12H AL=34h
Chuong 2 : T ch c CPU 50

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

Cc thanh ghi Segment


CPU c 4 thanh ghi segment di 16 bit, cc thanh ghi ny khng th chia lm 2 thanh ghi 8 bit nh 4 thanh ghi AX,BX,CX v DX. Cc thanh ghi o n c s d ng nh l a ch c s c a cc l nh trong chng trnh, stack v d li u. 4 thanh ghi o n : CS (Code Segment), DS (Data Segment), SS (Stack Segment) v ES (Extra Segment). CS : ch a a ch b t u c a code trong chng trnh. DS : ch a a ch c a cc bi n khai bo trong chng trnh. SS : ch a a ch c a b nh Stack dng trong chng trnh ES : ch a a ch c s b sung cho cc bi n b nh .
Chuong 2 : T ch c CPU 54

Thanh ghi 32 bit


oi vi mot so CPU i mi, co cac thanh ghi dai 32, 64 bit. Ta ghi them E ng trc ten cac thanh ghi 16 bit... EAX, EBX, ECX, EDX ....

Chuong 2 : T ch c CPU

55

2.5 Thanh ghi o n v s hnh thnh a ch


8088 s d ng 20 bit nh a ch b nh qu n l trn 1Mb b nh . Nhng 8088 l i khng c thanh ghi no 20 bit, t t c l 16 bit do 1 thanh ghi ch c th nh a ch t i a l 64 kB b nh . Nh v y ph i k t h p 2 thanh ghi m i a ch ho ton b b nh . 8088 s 1 trong cc thanh ghi dng chung v 1 trong cc thanh ghi o n (CS,DS,SS,ES) t o thnh 1 a ch 20 bit.
Chuong 2 : T ch c CPU 56

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

Th d minh ho hnh thnh a ch


15
a ch Offset a ch Offset

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

S hnh thnh a ch tuy t i


a ch segment a ch Offset

G a s ta c a ch

08F1 : 0100
a ch tng i

CPU t ng l y a ch segment x 10 (h 16) thnh 08F10 Sau n c ng v i a ch Offset a ch tuy t 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

Trong m i o n, nh u tin c offset l 0000h v nh cu i cng l FFFFh. segment B nh


offset

0000

nh c a ch segment: offset

64KB FFFF

Chuong 2 : T ch c CPU

65

M i nh ch c a ch v t l nhng c th c nhi u a ch lu n l. Ex : 1234:1234 u c chung a ch v t l 13574h 1334:0234 1304:0534 T i sao ?

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

0FFFFh 1000Fh 1001Fh


Chuong 2 : T ch c CPU 67

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

Khi segment tng 1 n v th a ch v t l tng 10h a ch ho c l tng 16 bytes n v c a segemnt l paragraph

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

M t nh c bao nhiu a ch lu n l M t nh c t nh t 1 a ch lu n l v nhi u nh t l 65536/16 = 4096 a ch lu n l

Chuong 2 : T ch c CPU

72

Cac thanh ghi oan CS, DS, SS, ES


3 trong 4 thanh ghi oan c dung trong cac muc ch ac biet sau CS : xac nh oan lenh ni cha chng trnh c thi hanh. DS : xac nh oan d lieu ni cha chng trnh c thi hanh. SS : xac nh oan stack vung lam viec tam thi dung e theo doi cac tham so va cac a ch ang c chng trnh hien hanh s dung. Con thanh ghi ES : tro en oan them, thng c dung e bo sung cho oan d lieu co vung nh >64k cho oan d lieu.
Chuong 2 : T ch c CPU 73

Cac thanh ghi oan CS, DS, SS, ES


3 trong 4 thanh ghi oan c dung trong cac muc ch ac biet sau CS : xac nh oan lenh ni cha chng trnh c thi hanh. DS : xac nh oan d lieu ni cha chng trnh c thi hanh. SS : xac nh oan stack vung lam viec tam thi dung e theo doi cac tham so va cac a ch ang c chng trnh hien hanh s dung. Con thanh ghi ES : tro en oan them, thng c dung e bo sung cho oan d lieu co vung nh >64k cho oan d lieu.
Chuong 2 : T ch c CPU 74

Thanh ghi trang thai (thanh ghi c)


Thanh ghi c la thanh ghi 16 bit nam ben trong EU (Excution Unit). Tuy nhien ch co 9 trong 16 bit c s dung.7 bit con lai khong dung.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

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

Thanh ghi trang thai (thanh ghi c)


Giai thch : C CF : ch th cong co nh, tr co mn. C PF : On khi ket qua cua tac vu co so bit 1 la so chan. Neu so bit 1 la so le th PF la Off. C AF : co nh trong phep cong hoac co mn trong phep tr vi 4 bit thap sang 4 bit cao. C ZF : On khi tac vu luan ly cho ket qua la 0. C SF : bit cao nhat cua ket qua se c copy sang SF. SF =1 ket qua la so am. SF = 0 khi ket qua la so dong.
Chuong 2 : T ch c CPU 76

Thanh ghi trang thai (thanh ghi c)


Giai thch : C OF : OF=1 khi ket qua b tran so (vt qua kha nang lu tr ). Neu ket qua khong b tran th OF=0. 3 bit con lai la 3 bit ieu khien : C TF : bao CPU thi hanh tng bc. Cung cap cong cu debug chng trnh. C IF : IF=1 giup 8086 nhan biet co yeu cau ngat quang co che. C DF : xac nh hng theo chieu tang/giam trong x ly chuoi. 8086 cho phep User lap trnh bat tat cac c CF,DF,IF,TF
Chuong 2 : T ch c CPU 77

Thanh ghi ch so (Index)


5 thanh ghi offset dung e xac nh chch xac 1 byte hay 1 word trong 1 oan 64K.o la : IP : thanh ghi con tro lenh, cho biet v tr cua lenh hien hanh trong oan lenh. Con tro lenh IP con c goi la bo em chng trnh. Thng c dung ket hp vi CS e theo doi v tr chnh xac cua lenh se c thc hien ke tiep.

Chuong 2 : T ch c CPU

78

Thanh ghi ch so (Index)


Cac thanh ghi con tro Stack : SP va BP, moi thanh ghi dai 16 bit. SP (Stack pointer) cho biet v tr hien hanh cua nh Stack. BP (Basic Pointer) dung e truy cap d lieu trong Stack. SI (source index) : tro en o nh trong oan d lieu c nh a ch bi thanh ghi DS. DI (destination) : chc nang tng t SI. Hai thanh ghi nay thng dung trong x ly chuoi.

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

Ex : n u lc tham kh o DS = 2000h BX = 12A9h th a ch lu n l DS:BX chnh l tham kh o n nh 2000:12A9

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

Cac ac tnh cua CPU Intel


Hieu qua cua CPU thuoc ho Intel khi x ly va chuyen giao thong tin c xac nh bi cac yeu to sau : Tan so mach xung ong ho cua CPU. o rong cua Data bus o rong cua Address bus

Chuong 2 : T ch c CPU

84

Cac ac tnh cua CPU Intel


Tan so mach xung ong ho cua CPU.cang nhanh th toc o x ly cang nhanh. o rong cua Data bus cang rong th cang nhieu data c chuyen giao trong 1 lan giao dch. o rong cua Address bus cang rong th kha nang quan ly bo nh cang ln.

Chuong 2 : T ch c CPU

85

Cac ac tnh cua CPU Intel


Loai CPU 8088 8086 80286 80386 80486 Pentium Data Bus (bit) 8 16 16 32 32 64 Address bus (bit) 20 20 24 32 32 32
Chuong 2 : T ch c CPU

Kha nang quan ly bo nh 1 MB 1MB 16Mb 4 GB 4 GB 4GB


86

Tom tat CPU ho Intel


CPU 80286 : Data bus 16 bit nen moi lan chuyen giao 2 bytes quan ly 16MB bo nh. Ch co kha nang thc hien cac phep toan oi vi cac so nguyen, co the dung tap lenh 80286 e mo phong cac phep toan so hoc dau cham ong nhng ieu nay se lam giam hieu suat he thong. Neu muon co kha nang thc hien cac phep toan dau cham ong phai gan CoProccessor 8087. 80286 lam viec theo 2 che o : che o thc va che o bao ve.

Chuong 2 : T ch c CPU

87

Tom tat CPU ho Intel


CPU 80386 : Data bus 32 bit nen co the quan ly 4GB bo nh. Cac thanh ghi dai 32 bit tang o chnh xac cua cac phep toan. o rong Bus tang toc o thc thi. CPU 80386 hoan toan tng thch vi cac CPU trc no.

Chuong 2 : T ch c CPU

88

Tom tat CPU ho Intel


CPU 80486 : co bus 32 bit . 1 Coprocessor 387, bo phan ieu khien Cache, 1 Cache 8K, dung phoi hp tap lenh rut gon RISC va tap lenh phc tap CISC. CPU 80486 phan ln cac lenh ch dung 1 so t xung. S dung c che ng ong co kha nang x ly 5 lenh ong thi : Lay lenh trc PreFetch Giai ma lan 1 Giai ma lan 2 Decode 1 Decode 2

Thc thi lenh Execution Ghi lai trang thai. WriteBack


Chuong 2 : T ch c CPU 89

RISC & CISC


Nguyen ly CISC : Complex Intruction Set Computer
Tap lenh kha ln >300 lenh Kha nang nh v phc tap Mot so lenh can phai vi lenh hoa
qua nhieu lenh lenh phc tap thc thi. nap lau lam cham he thong nen time giai ma lenh nhieu khi ln hn time

Ch co hn 20% lenh thng dung ti


Chuong 2 : T ch c CPU 90

RISC & CISC


Nguyen ly RISC : tap lenh thu gon Reduce Intruction Set Computer
tap lenh nho thi hanh ngay khong can giai ma.

lenh lam viec theo c che ng ong (pipeline).

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

Cau hoi on tap


Bus la g? Trong cac loai Bus, Bus nao la Bus 2 chieu. Cho 1 o nh co a ch vat ly la 1256H, cho biet a ch dang segment:offset vi cac oan 1256H va 1240H. O nh co a ch vat ly 80FD2H, trong oan nao th no co offset = BFD2H? Xac nh a ch vat ly cua o nh co a ch logic 0A51H:CD90H
Chuong 2 : T ch c CPU 94

Cau hoi on tap


The nao la bien gii oan? S khac nhau c ban gia bo vi x ly 8086 va 80286? Thuyet minh trnh t CPU thc hien cau lenh Mem(b) Not Mem(a) Chu ky lenh, chu ky may. Cho biet quan he gia chu ky clock, chu ky may va chu ky lenh. Quan he gia tap lenh va kien truc cua CPU
Chuong 2 : T ch c CPU 95

Cau hoi on tap


Giai thch tai sao khi tang tan so xung clock, giam chu ky wait state cua bo nh, them cache cho CPU lai lam cho he thong chay vi hieu suat cao hn. ? Trnh bay chien lc chnh lu tr thong tin trong Cache? Tnh toc o chuyen giao d lieu cua may tnh co CPU 486DX-66MHz va may Pentium 100MHz. Phan biet RISC va CISC. Trnh bay c che ng ong trong thc thi cua CPU
Chuong 2 : T ch c CPU 96

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

Bus ISA-16 bits : a. ch y t c ng h l 8 li u t i a 8 MB/s. 12 MHz truy n t i d

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

D n u v Chipset hi n c trn th tr ng l : a.AMD b.ALI c.Intel d.Mac

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

b.01111111b INT 20H Hy cho bi t gi tr c a cc thanh ghi AX,BX ?


Chuong 2 : T ch c CPU 103

Bi 3 : Cho o n code sau :

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

CHNG TRNH G ROI DEBUG


Muc tieu
Dch c 1 chng trnh ngan Xem cac thanh ghi va c cua CPU Xem s thay oi noi dung cua cac bien
o SCII trong bo nh oac A a n h a tm tr dang nh pha o Do ssembly A nh bang chng tr t n tap vie o tr luye H
4/4/2006 Chuong 3 Debug 1

Dang lenh cua Debug ng nh


<ma lenh > <thong so> nh
Trong o ma lenh la 1 trong cac ch A,B,C,D,E, ... con thong so th thay oi tuy theo lenh. Cac thong so co the la : a ch : la 1 bo a ch ay u segment : offset hay ch can offset la u. Segment co the dung ten thanh ghi.

Ex : F000:0100
DS: 200
4/4/2006

0AF5
Chuong 3 Debug

Dang lenh cua Debug ng


Tap tin : la 1 tham khao ten tap tin ay u, t nhat phai co ten tap tin. Danh sach : La 1 hay nhieu tr byte hoac chuoi cach nhau bang dau phay.

Khoang : la 1 tham khao en vung bo nh Tr : la 1 so he 16 co toi a co 4 ch so


4/4/2006 Chuong 3 Debug 3

Tap lenh cua Debug nh


A <Assemble> : cho phep viet t ban phm cac lenh ma may nh di dang gi nh. ng A [ <a ch>] Ex : - A 100 dch a ch CS:100h -A dch a ch hien tai - A DS:2000h dch a ch DS:2000h
4/4/2006 Chuong 3 Debug 4

(Debug lay a ch oan CS)

Th du minh hoa lenh A nh


Phai nhap lenh vao theo tng dong mot va nh ng ng ket thuc bang Enter. ng Ket thuc nhap nhan Enter dong trong. ng ng. Ex : - A 100 User go vao 5514:0100 MOV AH, 2 5514:0102 MOV DL, 41 5514:0104 INT 21H
SEGMENT OFFSET

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>

Ex : - D F000 : 0 - D ES : 100 - D 100

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

Minh hoa lenh F nh


Lap ay vung nh tai a ch offset 100h ng chuoi Toi dua em sang song.
F 100 TOI DUA EM SANG SONG

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

Th du minh hoa lenh D nh


anh vao lenh D e xem noi dung vung nh nh nh ng cua 30h bytes bo nh t a ch 0000:0040 en 0000:006F
- D 0000:0040
a ch bat au

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

Minh hoa lenh E nh


Muc dch : thay oi noi dung bo nh.
Cu phap : - E [address] [ list] Ex : thay oi 6 bytes bat au a ch 100 thanh ABCDE - E 100 ABCDE
Debug lay oan ch b i D S Neu ta kh ong qui nh a ch oan

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

Th du minh hoa lenh N nh


Ex : tao tap tin Love.txt . Dung lenh R e xac nh vung a ch danh cho User. Dung lenh e a cau thong bao I love you more than I can say a ch 2000:100. Dung lenh D e kiem tra vung nh tai a ch 2000:100. Dung lenh N e at ten tap tin tren a. - N Love.txt Dung lenh R e nh so byte can thiet ghi len a trong 2 thanh ghi BX va CX. Cu the trong trng hp nay so byte can ghi la 1Eh byte. BX = 0000 CX = 1E Dung lenh W 2000:100 e ghi d lieu a nhap vao tap tin a ch bo nh 2000:100.

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

Thng c s dung chung vi lenh N

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

Lenh H (Hex Arithmethic)


thc hien phep cong va tr he 16
Cu phap : - H <tr 1> <tr 2> Ket qua : hien ra tong va hieu cua tr 1 va tr 2

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

Cac loai Rom


PROM (Programmable Read Only Memory) : Cho php user c th l p trnh v ghi vo ROM b ng cch t. EPROM (Erasable Programmable Read Only Memmory) Cho php user vi t ghi chng trnh v xa ghi l i. Vi c xa b ng cch dng tia c c tm. EEPROM (Electrically Erasable Programmable Read Only Memory) b nh c th l p trnh b ng xung i n c bi t
Chng 3 : T ch c Memory 10

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

Hieu suat cua Cache (cont) CPU


Trong Registers? Trong Cache L1? Trong Cache L2 tren chip? Trong Cache L2 th cap? Trong RAM? Tren a?
Chng 3 : T ch c Memory 17

A Two Level Caching System

Chng 3 : T ch c Memory

18

Cc chi n l c tr m trong Cache


Cc chi n l c tr m lin quan n tc v c ghi t CPU. C 2 lo i : Writethrough Cache (WTC) v Writeback cache (WBC). Khi CPU c t b nh qui c th WTC v WBC u nh nhau : s c 1 o n n i dung trong b nh vo cache. Khi CPU ghi ra b nh qui c : WTC : CPU ghi data ra vng m ghi (write buffer) r i b ti p t c vi c khc, cache s l y n i dung trong buffer r i ch u trch nhi m ghi ra b nh qui c khi bus rnh. WBC : CPU ghi data vo cache, khi cache y th y thng tin ra b m ( m castoff) r i t castoof, data chuy n sang b nh qui c.

Chng 3 : T ch c Memory

19

00000 00400 00600

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 :

1024 bytes thap nhat cha bang vector interrupt

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

Qua trnh Boot may


Xay ra khi ta power on hay nhan nut Reset.
Bo VXL xoa tat ca o nh cua bo nh tr ve 0, kiem tra chan le bo nh, thiet lap thanh ghi CS tro en segment FFFFh va con tro lenh IP tro ti a ch offset bang 0. Ch th au tien c MT thc thi a ch an nh bi noi dung cap thanh ghi CS:IP, o chnh la FFFF0H , iem nhap ti BIOS trong ROM.

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

Truy xuat bo nh (cont)


DA TA BU S
D7 D6 D5 D4 D3 D2 D1 D0

oc / ghi d lieu

O NH

H NH N BO BO
Chng 3 : T ch c Memory

N V X LY

26

Trnh t tac vu ghi o nh


CPU a a ch o nh can ghi vao thanh ghi a ch cua bo nh. Mach giai ma xac nh a ch o nh. CPU a d lieu can ghi vao thanh ghi d lieu cua bo nh. CPU gi tn hieu ieu khien ghi bo nh. Noi dung trong thanh ghi d lieu c ghi vao o nh co a ch xac nh.
Chng 3 : T ch c Memory 27

Truy xuat bo nh : ghi o nh


O nh c chon
00000 00001 00010 00011 A0 A1 A2 A3 A4

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).

Xet v du sau : gia s stack ang cha 1 gia tr 0006

Sau ta a 00A5 vo stack


Chng 3 : T ch c Memory 30

Stack
BEFORE HIGH MEM AFTER SP
HIGH MEM

0006

0006
00A5 SP SP giam 1

LOW MEM

Chng 3 : T ch c Memory

31

Cong dung cua Stack


Dung e lu tr d lieu tam cho thanh ghi neu ta can s dung cac d lieu nay. Khi 1 chng trnh con c goi, stack se lu tr a ch tr ve ngay sau khi chng trnh con thc hien xong. Cac ngon ng cap cao thng tao ra 1 vung nh ben trong chng trnh con goi la stack frame e cha cac bien cuc bo.

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

Cau hoi on tap


Vai tro cua Cache trong may tnh. Trnh bay chien lc tr em cua Cache. Phan biet bo nh RAM va ROM. Neu trnh t qua trnh thc hien khi khi ong may tnh.

Chng 3 : T ch c Memory

34

Cau hoi on tap


Mot bo nh co dung lng 4Kx8. a) Co bao nhieu au vao d lieu, au ra d lieu. b) Co bao nhieu ng a ch. c) Dung lng cua no tnh theo byte.

Chng 3 : T ch c Memory

35

Cau hoi on tap


B nh Cache n m gi a : a) Mainboard v CPU b) ROM v CPU c) CPU v b nh chnh. d) B nh chnh v b nh ngoi

Chng 3 : T ch c Memory

36

Cau hoi on tap


Theo quy c, ng I ta chia b nh thnh t ng vng c nh ng a ch c m t b ng : a) s th p phn b) s th p l c phn c) s nh phn d) s bt phn
Chng 3 : T ch c Memory 37

h1 h2

Chng 5 : Nhap mon Assembly


Muc tieu

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

Gii thieu ngon ng Assembly


Giup kham pha b mat phan cng cung nh phan ng mem may tnh. Nam c cach phan cng MT lam viec vi he ch ng ieu hanh va hieu c bang cach nao 1 trnh nh ng ch ng dung giao tiep vi he ieu hanh. ng ng nh. Mot MT hay mot ho MT s dung 1 tap lenh ma ng nh may rieng cung nh 1 ngon ng Assembly rieng.

4/4/2006

Chuong 5 Nhap mon ASM

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

Chuong 5 Nhap mon ASM

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

00000100 10000101 10100011

4/4/2006

Chuong 5 Nhap mon ASM

Lenh may (cont) nh


Tap lenh may c nh ngha trc, khi CPU c nh c, san xuat va no ac trng cho kieu CPU . Ex : B5 05 la 1 lenh may viet dang so hex, dai 2 byte. nh ng Byte au B5 goi la Opcode Byte sau 05 goi la toan hang Operand ng
Y ngha cua lenh B5 05 chep gia tr 5 vao reg AL Y ngha cua lenh B5 05 ::chep gia tr 5 vao reg AL

4/4/2006

Chuong 5 Nhap mon ASM

Cach viet 1 chng trnh Assembly ch


Soan CT TenCT.ASM Dch CT Dung 1 phan mem soan thao VB bat ky e soan CT Assembly nh : NotePad, NC, man hnh C, Pascal ... CT co phan m rong la .ASM dung MASM e dch chng trnh nguon .ASM File Object. dung LINK e lien ket Object tao tap tin thc hien .EXE

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

Dch va noi ket chng trnh


MASM.EXE MASM.EXE TenCT .ASM TenCT .OBJ LINK.EXE LINK.EXE

TenCT .MAP

TenCT .LIST

TenCT .CRF

TenCT .EXE TenCT .EXE

4/4/2006

Chuong 5 Nhap mon ASM

Mot chng trnh minh hoa


DOSSEG .MODEL SMALL .STACK 100h .DATA MES DB HELLO WORD,$ .CODE MAIN PROC MOV AX, @DATA MOV DS, AX MOV DX, OFFSET MES MOV AH, 9 INT 21 MOV AH,4CH INT 21 MAIN ENDP END MAIN

4/4/2006

Chuong 5 Nhap mon ASM

Cac file c tao


Sau khi dch thanh cong file nguon.ASM, ta co cac file : nh n.ASM, File listing : file VB , cac dong co anh so th t ma. ng nh File Cross reference File Map File Obj File EXE

4/4/2006

Chuong 5 Nhap mon ASM

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

Chuong 5 Nhap mon ASM

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

Chuong 5 Nhap mon ASM

13

Giai thch (cont)


Chep a ch oan d lieu vao thanh ghi AX. Sau o chep vao thanh ghi DS Goi ham so 9 cua Int 21h cua Dos e xuat chuoi ky t ra man hnh. Thoat khoi CT . Main endp : anh dau ket thuc thu tuc nh End main : cham dt chng trnh

4/4/2006

Chuong 5 Nhap mon ASM

14

4/4/2006

Chuong 5 Nhap mon ASM

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

Chuong 5 Nhap mon ASM

16

Dang lenh ng nh

Chu thch Chu thch

[name] [operator] [ operand] [comment]


Nhan ten bien Nhan, ,ten bien Ten thu tu Ten thu tucc
Ex : MOV CX , 0 LAP : MOV CX, 4 LIST DB 1,2,3,4

Ma lenh dang Ma lenh dang g nh giinh

Register, o nh Register, o nh Tr, hang Tr, hang

Moi dong ch cha 1 lenh va moi lenh phai nam tren 1 dong

4/4/2006

Chuong 5 Nhap mon ASM

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

Chuong 5 Nhap mon ASM

18

INT 21h (cont)


Ham 1 : Nhap 1 ky t Input : AH =1 Output : AL = ma ASCCI cua phm an = 0 neu 1 phm ieu khien c an

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

Chuong 5 Nhap mon ASM

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

Th du minh hoa cac ham cua INT 21


In dau ? ra man hnh : MOV AH, 2 MOV DL, ? INT 21H Nhap 1 ky t t ban phm : MOV AH, 1 INT 21H
4/4/2006 Chuong 5 Nhap mon ASM 21

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

Chuong 5 Nhap mon ASM

22

Bien (cont)
Luc o : Offset 0000 0001 0002 0003 Bien A B C D

4/4/2006

Chuong 5 Nhap mon ASM

23

Khai bao bien


T gi nh DB DW DD DQ DT Mo ta nh ngha byte T T kep T t 10 bytes So byte 1 2 4 8 10 Thuoc tnh Byte Word Doubleword Quardword tenbyte

4/4/2006

Chuong 5 Nhap mon ASM

24

KIEU BYTE

Minh hoa khai bao bien

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

Minh hoa khai bao bien


KIEU WORD

DW 3 DUP (?) DW 1000h, AB, 1024 DW ? DW 5 DUP (1000h) DW 256*2


DANG LU TR D LIEU KIEU WORD : Trnh hp dch ao ngc cac byte trong 1 gia tr kieu WORD khi lu tr trong bo nh : Byte thap lu a ch thap Byte cao lu a ch cao
4/4/2006 Chuong 5 Nhap mon ASM 26

Minh hoa khai bao bien


KIEU WORD

Ex : 1234h c lu tr trong bo nh nh sau :


A CH

1000h
BO NH

1001h

34

12

D LIEU

1234H

4/4/2006

Chuong 5 Nhap mon ASM

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

Chuong 5 Nhap mon ASM

28

Khi tao bien


Lu y : Khi khi tao tr la 1 so hex th gia tr so luon luon bat au bang 1 ky so t 0 en 9. Neu ky ng so bat au la A.. F th phai them so 0 au. u. Ex : Db A6H ; sai Db 0A6h ; ung ng
4/4/2006 Chuong 5 Nhap mon ASM 29

Toan t DUP (cont)


Amtrix dw 3 dup (4 dup (0) )
Tao 1 ma tran 3x4

Atable db 4 dup (3 dup (0), 2 dup (X))


XX X 000XX 000 a 000X ung nh ch Tao 1 v 000XX

4/4/2006

Chuong 5 Nhap mon ASM

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

Chuong 5 Nhap mon ASM

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

Chuong 5 Nhap mon ASM

32

Chng trnh dang .COM ng


CODE SEGMENT ASSUME CS:CODE , DS:CODE, SS:CODE ; toan bo chng trnh ch nam trong 1 segment Org 100h ;; ch th nap thanh ghi lenh IP=100h khi CT c nap nh Main proc mov ax,bx . Main endp Count db 10 Code ends End main
4/4/2006 Chuong 5 Nhap mon ASM 33

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

Cau hoi on tap


Trong ma may di ay c lay t tap tin liet ke, hay neu y ngha cua R 5B 0021 R ADD BX, VAL1 Neu y ngha cua ky hieu a ch cua bien di ay trong 1 tap tin liet ke. 5B 0021 R ADD BX, VAL1

4/4/2006

Chuong 5 Nhap mon ASM

35

Chng trnh sau co loi. Hay tm cau lenh nao gay ra loi, giai nh thch va sa lai cho ung. ng.

Cau hoi on tap

.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

Cau hoi on tap

Chuong 5 Nhap mon ASM

37

Bai tap lap trnh


Bai 1 : Viet chng trnh nhap 1 ky t thng , in ng ra ky t hoa tng ng. ng. Bai 2 : Viet chng trnh hoan v 2 bien kieu byte c gan san tr. Bai 3 : Viet chng trnh tao 1 array co cac phan t 31h,32h,33h,34h. Nap tng phan t vao thanh ghi DL va xuat no ra ng man hnh. Giai thch tai sao ket xuat tren man hnh la 1234.
4/4/2006 Chuong 5 Nhap mon ASM 38

4/4/2006

Chuong 7 Cac phep dinh vi dia chi

4/4/2006

Chuong 7 Cac phep dinh vi dia chi

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

Chuong 7 Cac phep dinh vi dia chi

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

Chuong 7 Cac phep dinh vi dia chi

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

GT Exp1 GT exp2 GE Exp1 GE exp2


4/4/2006

Chuong 7 Cac phep dinh vi dia chi

O U TIEN TOAN T
TOAN T MO TA () Dau ngoac
o u tien giam dan

+,-

Dau dng , am

* / MOD Nhan , chia, Modulus +, Cong, tr ng,

4/4/2006

Chuong 7 Cac phep dinh vi dia chi

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

Chuong 7 Cac phep dinh vi dia chi

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

Chuong 7 Cac phep dinh vi dia chi

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

Toan hang (Operand) ng


Cac toan hang ch ra ni cha d lieu cho 1 lenh , ch th.

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

Chuong 7 Cac phep dinh vi dia chi

11

Toan hang (Operand) ng


Toan hang ch gi ket qua (neu co yeu cau) sau khi thi hanh lenh. Toan hang ch co the la thanh ghi hay Bo nh. Toan hang nguon co the la thanh ghi, bo nh hay 1 gia tr tc thi . Toan hang so tc thi co the la so trong cac he em khac nhau va c viet theo qui nh sau : So he 2 : xxxxxxxxB (x la bit nh phan) So he 10 : xxxxxD hay xxxxx (x la 1 so he 10) So he 16 : xxxxH va bat au bang so (x la 1 so he 16)
4/4/2006 Chuong 7 Cac phep dinh vi dia chi 12

4/4/2006

Chuong 7 Cac phep dinh vi dia chi

13

4/4/2006

Chuong 7 Cac phep dinh vi dia chi

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.

Ex : MOV AX,BX ; chuy n n i dung c a thanh ghi BX vo thanh ghi AX

4/4/2006

Chuong 7 Cac phep dinh vi dia chi

15

4/4/2006

Chuong 7 Cac phep dinh vi dia chi

16

nh v gian tiep thanh ghi :


EX1 : MOV

AX, [SI]

N p n i dung c a nh m a ch Offset lu trong SI v a ch o n lu trong DS vo AX. EX2 : MOV

AX, [BP]

N p n i dung c a nh m a ch Offset lu trong BP v a ch o n lu trong ES vo AX.

4/4/2006

Chuong 7 Cac phep dinh vi dia chi

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

Chuong 7 Cac phep dinh vi dia chi

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

Chuong 7 Cac phep dinh vi dia chi

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]

a ch hieu dung khong hp le :


[70000], [AX] , [SI+DI+1000h], [BX] [BP]
4/4/2006 Chuong 7 Cac phep dinh vi dia chi 21

4/4/2006

Chuong 7 Cac phep dinh vi dia chi

22

a ch hieu dung (tt) ng


Qui c
e thuan tien trong van e giai thch lenh, ta qui c sau :

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

: WORD PTR [1000H]

4/4/2006

Chuong 7 Cac phep dinh vi dia chi

Ex : Tnh tong 1 array co 5 phan t ng


Cach thc hien :

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.

Chuong 7 Cac phep dinh vi dia chi

24

CHAY CT nay bang DEBUG

Ex : Tnh tong 1 array co 5 phan t ng


-A 100 MOV BX, 0120 MOV AX, 0 MOV AL, [BX] ADD AL , [BX+1] ADD AL , [BX+2] ADD AL , [BX+3] ADD AL , [BX+4] MOV [0125], AX -A 120 DB 10, 20, 40, 2, 5 DW 0

4/4/2006

Chuong 7 Cac phep dinh vi dia chi

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

Minh hoa lenh MOV nh


MOV AX, CX MOV DL, BH MOV [SI+1000h], BP ; [SI+1000h, SI+1001h] MOV DX, [1000h] ; DX [1000h, 1001h] MOV DI, 12h MOV AL, 12h MOV BYTE PTR [1000h], 12h MOV WORD PTR [2000h] , 1200h MOV [BX] , DS MOV SS, [2000h]

BP

4/4/2006

Chuong 7 Cac phep dinh vi dia chi

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

Chuong 7 Cac phep dinh vi dia chi

28

Minh hoa lenh MOV nh


Ex1 : Cho table la 1 mang gom 10 phan t dang byte Table DB 3,5,6,9,10, 29,30,46,45,90 Truy xuat phan t au , phan t th 2 va th 5 cua mang: MOV AL, TABLE hay MOV AL, TABLE[0] MOV AL, TABLE+1 hay MOV AL, TABLE[1] MOV AL, TABLE+4 hay MOV AL, TABLE[4]

4/4/2006

Chuong 7 Cac phep dinh vi dia chi

29

Minh hoa lenh MOV nh


Ex2 : MOV AX, DS : [100h] ; chep noi dung 16 bit tai a ch 100h trong oan ch bi DS vao Reg AX.

Ex3 : MOV AX, [100h] ; chuyen N I DUNG NH

100h vao Reg AX.

4/4/2006

Chuong 7 Cac phep dinh vi dia chi

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

Chuong 7 Cac phep dinh vi dia chi

31

Lenh LEA (Load Effective Address) nh

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

Ex : LEA BX, [1000h] ; BX LEA SI, [DI][BX][2000h] ; SI

1000h DI + BX + 2000h

4/4/2006

Chuong 7 Cac phep dinh vi dia chi

32

Lenh XCHG (XCHANGE) nh


Cu phap : XCHG DEST , SOURCE y ngha : hoan chuyen noi dung 2 Reg, Reg va o nh Yeu cau : 2 toan hang phai cung kieu 2 toan hang khong the la 2 bien bo nh. Muon hoan oi tr cua 2 bien phai dung Reg trung gian. Ex : XCHG AH, BL MOV VAR1, VAR2 ; khong hp le, phai dung Reg tam

4/4/2006

Chuong 7 Cac phep dinh vi dia chi

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

Ex : PUSH CS ; [SS :SP+1, SS :SP]

CS

4/4/2006

Chuong 7 Cac phep dinh vi dia chi

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

[SS :SP+1, SS :SP]


[SS :SP+1, SS :SP]

Ex : POP [BX+1] ; [BX+2, BX+1]

4/4/2006

Chuong 7 Cac phep dinh vi dia chi

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.

Ex : IN AL ,61h IN AX, 40h Ex : MOV DX, 378H IN AL, DX


4/4/2006 Chuong 7 Cac phep dinh vi dia chi 36

Dang lenh co Reg DX dung e cho cong co a ch 16 bit

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

Chuong 7 Cac phep dinh vi dia chi

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 tap Lap trnh


Bai 1 : Viet chng trnh nhap 1 ky t. Hien th ky t ng trc va ky t ng sau ky t a nhap theo th t ma ASCII. Ket qua co dang : Nhap mot ky t : B Ky t ng trc : A Ky t ng sau : C

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

Chuong 7 Cac phep dinh vi dia chi

40

Chng 8 : Cau truc ieu khien va Vong lap ng


Muc tieu

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.

Chuong 8 : Cau truc DK va Vong lap

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.

Chuong 8 : Cau truc DK va Vong lap

S can thiet cua lenh nhay nh


cac chng trnh viet bang ngon ng cap cao th ng viec nhay (lenh GoTo) la ieu nen tranh nhng lap nh nh trnh he thong th ay la viec can thiet va la iem ng manh cua 1 chng trnh viet bang Assembly. nh ng Mot lenh nhay CPU phai thc thi 1 oan lenh 1 nh nh cho khac vi ni ma cac lenh ang c thc thi. nh Trong lap trnh, co nhng nhom phat bieu can phai lap i lap lai nhieu lan trong 1 ieu kien nao o. e ap ng ieu kien nay ASM cung cap 2 lenh JMP va ng nh LOOP.
Chuong 8 : Cau truc DK va Vong lap 3

Lenh JMP (Jump) nh

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.

Chuong 8 : Cau truc DK va Vong lap

Cac lenh chuyen ieu khien nh


Chuyen ieu khien vo ieu kien

JMP [ SORT | NEAR PTR |FAR PTR ] DEST


Chuyen ieu khien co ieu kien

JConditional destination

Ex : JNZ nhan ch ;

Chuong 8 : Cau truc DK va Vong lap

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 (?)

Chuong 8 : Cau truc DK va Vong lap

CAC LENH LUAN LY NH


Lu y ve cac toan t LOGIC : AND 2 Bit : ket qua la 1 khi va ch khi 2 bit la 1 OR 2 Bit : ket qua la 1 khi 2 Bit co bit la 1 XOR 2 Bit : ket qua la 1 ch khi 2 bit khac nhau NOT 1 Bit : lay ao cua Bit nay
Lu y ve thanh ghi c : C ZERO c lap khi tac vu cho ket qua la 0. C CARRY c lap khi cong ket qua b tran hay tr phai mn. C SIGN c lap khi bit dau cua ket qua la 1, tc ket qua la so am.

Chuong 8 : Cau truc DK va Vong lap

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.

Chuong 8 : Cau truc DK va Vong lap

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

Chuong 8 : Cau truc DK va Vong lap

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.

OR AL , AL ; kiem tra mot thanh ghi co = 0.


Neu : c ZF c lap c SIGN c lap AL =0 AL <0 AL >0

c ZR va c SIGN khong c lap

Chuong 8 : Cau truc DK va Vong lap

11

Chuong 8 : Cau truc DK va Vong lap

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

Chuong 8 : Cau truc DK va Vong lap

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.

Chuong 8 : Cau truc DK va Vong lap

14

MINH HOA LENH TEST NH


Ex : kiem tra trang thai may in. Interrupt 17H trong BIOS se kiem tra trang thai may in, sau khi kiem tra AL se cha trang thai may in. Khi bit 5 cua AL la 1 th may in het giay.
MOV AH, 2 INT 17h TEST AL , 00100000b ; Test bit 5, neu bit 5 = 1 may in het giay.

Lenh TEST cho phep test nhieu bit 1 lt.

Chuong 8 : Cau truc DK va Vong lap

15

MINH HOA LENH TEST(tt) NH


Ex :viet oan lenh thc hien lenh nhay en nhan A1 neu AL cha so chan.
TEST AL, 1 ; AL cha so chan ? JZ A1 ; neu ung nhay en A1.

Chuong 8 : Cau truc DK va Vong lap

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.

Chuong 8 : Cau truc DK va Vong lap

17

LENH NHAY CO IEU KIEN NH


Cu phap : Jconditional destination
Cong dung : nh cac lenh nhay co ieu kien, ta mi mo phong c cac phat bieu co cau truc cua ngon ng cap cao bang Assembly.

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?

Chuong 8 : Cau truc DK va Vong lap

18

LENH NHAY CO IEU KIEN NH


Hoat ong

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.

MOV AH, 2 MOV CX, 26 MOV DL, 41H

PRINT_LOOP : INT 21H INC DL DEC CX JNZ PRINT_LOOP MOV AX, 4C00H INT 21H

Chuong 8 : Cau truc DK va Vong lap

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

Nhay neu Not (Opt1<Opt2)

LENH NHAY DA TREN KET QUA SO SANH NH NH CAC TOAN HANG KHONG DAU (ctn) . NG

JNC

Nhay neu khong co Carry.

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)

Chuong 8 : Cau truc DK va Vong lap

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

LENH NHAY DA TREN CAC C . NH

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

Chuong 8 : Cau truc DK va Vong lap

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 : . . .

Chuong 8 : Cau truc DK va Vong lap

25

Cac lenh dch va quay bit nh


SHL (Shift Left) : dch cac bit cua toan hang ch sang trai

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

Chuong 8 : Cau truc DK va Vong lap

26

Cac lenh dch va quay bit nh


Ex : DH cha 8Ah, CL cha 3. SHL DH, CL ; 01010000b ? Cho biet ket qua cua : SHL 1111b, 3

MT thc hien phep nhan bang dch trai

Chuong 8 : Cau truc DK va Vong lap

27

lenh dch phai SHR nh


Cong dung : dch cac bit cua toan hang ch sang ben phai.

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

Chuong 8 : Cau truc DK va Vong lap

28

lenh dch phai SHR nh


Ex : shr 0100b, 1 ; 0010b = 2 oi vi cac so le, dch phai se chia oi no va lam tron xuong so nguyen gan nhat. Ex : shr 0101b, 1 ; 0010b = 2

Chuong 8 : Cau truc DK va Vong lap

29

Chuong 8 : Cau truc DK va Vong lap

30

Chuong 8 : Cau truc DK va Vong lap

31

Chuong 8 : Cau truc DK va Vong lap

32

Chng trnh con


Co vai tro giong nh chng trnh con ngon ng cap cao. ASM co 2 dang chng trnh con : dang FAR va dang NEAR. Lenh goi CTC nam khac oan bo nh vi CTC c goi

Lenh goi CTC nam cung oan bo nh vi CTC c goi

Chuong 8 : Cau truc DK va Vong lap

33

BIEU DIEN CAU TRUC LOGIC MC CAO


Du Assembly khong co phat bieu IF, ELSE, WHILE, REPEAT, UNTIL,FOR,CASE nhng ta van co the to hp cac lenh cua Assembly e hien thc cau truc logic cua ngon ng cap cao.

Chuong 8 : Cau truc DK va Vong lap

34

Cau truc IF n gian

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.

Cau truc logic IF (OP1=OP2) <STATEMENT1> <STATEMENT2> ENDIF

HIEN THC BANG ASM CMP OP1,OP2 JNE CONTINUE <STATEMENT1> <STATEMENT2> CONTINUE : .

Chuong 8 : Cau truc DK va Vong lap

35

Cau truc IF vi OR

Phat bieu IF co kem toan t OR HIEN THC BANG ASM

Cau truc logic IF (A1>OP1) OR (A1>=OP2) OR (A1=OP3) OR (A1<OP4) <STATEMENT> ENDIF

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 : ..

Chuong 8 : Cau truc DK va Vong lap

36

Cau truc IF vi AND

Phat bieu IF co kem toan t AND HIEN THC BANG ASM

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>

Chuong 8 : Cau truc DK va Vong lap

37

Cau truc WHILE

VONG LAP WHILE

Cau truc logic DO WHILE (OP1<OP2) <STATEMENT1> <STATEMENT2> ENDDO

HIEN THC BANG ASM DO_WHILE : CMP OP1, OP2 JNL ENDDO <STATEMENT1>

<STATEMENT2> JMP DO_WHILE ENDDO : ..

Chuong 8 : Cau truc DK va Vong lap

38

Cau truc WHILE co long IF

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 : ..

Chuong 8 : Cau truc DK va Vong lap

39

Cau truc REPEAT UNTIL

VONG LAP REPEAT UNTIL HIEN THC BANG ASM

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 : ..

Chuong 8 : Cau truc DK va Vong lap

40

Cau truc CASE

HIEN THC BANG ASM


CASE : MOV AL, INPUT CMP AL, A JNE TESTB CALL PROC_A JMP ENDCASE TESTB : CMP AL, B JNE TESTC CALL PROC_B JMP ENDCASE TESTC : CMP AL, C JNE TESTD CALL PROC_C JMP ENDCASE TESTD : CMP AL, D JNE ENDCASE CALL PROC_D ENDCASE : .

Cau truc logic CASE INPUT OF A : Proc_A B : Proc_B C : Proc_C D : Proc_D End ;

Chuong 8 : Cau truc DK va Vong lap

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.

Chuong 8 : Cau truc DK va Vong lap

42

LooKup Table

Case_table db A Dw Proc_A Db B Dw Proc_B Db C Dw Proc_C Db D Dw Proc_D

; 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

A 0120 B 0130 C 0140 D 0150


Cau truc lu tr cua CaseTable nh sau

Chuong 8 : Cau truc DK va Vong lap

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 : ..

Chuong 8 : Cau truc DK va Vong lap

44

Chng trnh con


Cau truc CTC : TenCTC PROC <Type> ; cac lenh RET TenCTC ENDP CTC co the goi 1 CTC khac hoac goi chnh no. CTC c goi bang lenh CALL <TenCTC>. CTC gan (near) la chng trnh con nam chung segment vi ni goi no. CTC xa (far) la chng trnh con khong nam chung segment vi ni goi no.

Chuong 8 : Cau truc DK va Vong lap

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.

Chuong 8 : Cau truc DK va Vong lap

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.

Chuong 8 : Cau truc DK 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.

Chuong 8 : Cau truc DK va Vong lap

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.

Chuong 8 : Cau truc DK va Vong lap

49

Bai tap LAP TRNH

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.

Chuong 8 : Cau truc DK va Vong lap

50

Bai tap LAP TRNH

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

Chuong 8 : Cau truc DK va Vong lap

51

Bai tap LAP TRNH

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

Chuong 8 : Cau truc DK va Vong lap

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

NH NGHA MACRO NH NGHA MACRO


Macro la 1 ky hieu c gan cho 1 nhom lenh ASM Macro la ten thay the cho 1 nh nhom lenh. nh
Tai sao can co Macro :
Trong lap trnh nhieu luc ta can phai viet nhng lenh na na nhau nhieu lan ma ta khong muon viet nh di dang ham v dung ham ton thi gian thc thi, ng ng thay v ta phai viet ay u nhom lenh nay vao CT, nh ta ch can viet Macro ma ta a gan cho chung. ng
CHUONG 9 MACRO 2

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

Thay v ph i vi t l i 6 dng l nh trn, ta c th t o 1 macro c tn @Newline thay th o n code ny :


@NewLine Macro MOV DL,13 MOV AH,2 INT 21H MOV DL,10 MOV AH,2 INT 21H ENDM Sau , b t k ch no c n xu ng dng, ta ch c n g i macro @NewLine. @NewLine

CHUONG 9 MACRO

MACRO (tt) MACRO (tt)


Khi hp dch noi dung nhom lenh nay ma ta a nh gan cho macro se c thay the vao nhng ni co ten macro trc khi CT c hp dch thanh file nh OBJ. Ex1 : nhieu khi ta phai viet lai nhieu lan oan lenh xuat ky t trong DL ra man hnh. nh MOV AH, 2 INT 21H Thay v phai viet ca 1 cap lenh tren moi khi can nh xuat ky t trong DL, ta co the viet Macro PUTCHAR nh sau :
PUTCHAR MACRO MOV AH,2 INT 21H ENDM

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

NH NGHA MACRO NH NGHA MACRO


CU PHAP KHAI BAO MACRO : MACRO_NAME MACRO [ <THONG SO HNH THC>] C>] STATEMENTS ENDM GOI MACRO : MACRO_NAME [<THONG SO THC>, ...] C>,
THONG SO HNH THC CH CO TAC DUNG ANH DAU V TR CUA THONG SO TRONG MACRO. QUAN TRONG NHAT LA V TR CAC THONG SO.

CHUONG 9 MACRO

MACRO TRUY N THAM S


.MODEL SMALL .STACK 100H PUTCHAR MACRO KT MOV DL,KT MOV AH,2 INT 21H ENDM .CODE MAIN PROC MOV DL, A PUTCHAR MOV DL, * PUTCHAR

MOV AH,4CH INT 21H MAIN ENDP END MAIN

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

TRAO OI THAM SO CUA MACRO


MOT MACRO CO THE CO THONG SO HOAC KHONG CO THONG SO.

MACRO CO THONG SO S DUNG MACRO

PUTCHAR MACRO CHAR MOV AH, 2 MOV DL, CHAR INT 21H ENDM

. CODE .. ... PUTCHAR A PUTCHAR B PUTCHAR C ...

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

TRAO OI THAM SO CUA MACRO


MACRO LOCATE : NH V CURSOR MAN HNH

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

THANH GHI A S DUNG TRONG MACRO CHUONG 9 MACRO

13

MACRO LONG NHAU NG


MOT CACH N GIAN E XAY DNG MACRO LA XAY DNG 1 MACRO MI T MACRO A CO. EX : HIEN TH 1 CHUOI TAI 1 TOA O CHO TRC

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

NH NGHA NHAN BEN TRONG MACRO


TRONG MACRO CO THE CO NHAN. GOI MACRO NHIEU LAN NHIEU NHAN C TAO RA LAM SAO GIAI QUYET VAN E NHAY IEU KHIEN? ASSEMBLY GIAI QUYET VAN E NAY BANG CH TH LOCAL NG BC MASM TAO RA 1 TEN DUY NHAT CHO MOI MOT LABEL KHI MACRO C GOI..

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

Th du minh hoa ch th Local


Xay dng Macro REPEAT co nhiem vu xuat count lan so ky t char ra man hnh. REPEAT MACRO CHAR, COUNT LOCAL L1 MOV CX, COUNT L1: MOV AH,2 MOV DL, CHAR INT 21H LOOP L1 ENDM SE C DCH RA
CHUONG 9 MACRO 17

GIA S GOI : REPEAT A, 10 REPEAT *, 20

ASM SE DUNG C CHE ANH SO CAC NHAN (T 0000H EN FFFFH) E ANH DAU CAC NHAN CO CH NH LOCAL.

Th du minh hoa ch th Local


MOV CX, 10 ??0000 : MOV AH,2 MOV DL, A INT 21H LOOP ??0000 MOV CX, 20 ??0001 : MOV AH,2 MOV DL, * INT 21H LOOP ??0001
: OI G 0 , 1 S A IA T 0 G , 2 EA * EP T R A PE RE

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

SO SANH GIA MACRO & THU NH TUC


THI GIAN BIEN DCH. MACRO T TON THI GIAN BIEN DCH HN PROCEDURE THI GIAN THC HIEN : NHANH HN PROCEDURE V KHONG TON THI GIAN KHOI PHUC TRANG THAI THONG TIN NG KHI C GOI TOC O NHANH HN. KCH THC : KCH THC CT DAI HN
CHUONG 9 MACRO 22

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

Bi 4 : Vi t MACRO xu t s hecxa ch a trong AL ra mn hnh ; INPUT : AL ch a s c n xu t; OUTPUT: nothing

Bi 5 : Vi t Macro in s hecxa ch a trong BL ra d ng binary ;Input: BL ch a s c n in ;Output: Nothing

CHUONG 9 MACRO

27

Chng 9 STACK & CHNG TRNH CON


Gi i thi u STACK M ts ng d ng c a STACK C u trc c a 1 CTC C ch lm vi c c a 1 CTC V n truy n tham s Chng trnh g m nhi u MODULE

Chng 10: CHNG TRNH CON

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 1 ph n c a b nh , c t ch c lu tr d li u theo c ch vo sau ra tr c (LIFO).

Chng 10: CHNG TRNH CON

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]

Chng 10: CHNG TRNH CON

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)

Chng 10: CHNG TRNH CON

TH D
STACK A,B,C l cc Word MOV BP,SP

D C
;AX = D ;AX = C

SP

MOV AX,[BP] MOV AX,[BP+2]

B A

MOV AX,[BP+6] ;AX = A

Chng 10: CHNG TRNH CON

lu 1 ph n t vo Stack ta dng l nh PUSH l y 1 ph n t ra t Stack ta dng l nh POP

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

Chng 10: CHNG TRNH CON

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

Chng 10: CHNG TRNH CON

M TS

NG D NG C A STACK

Kh c ph c cc h n ch c a l nh MOV Ex : MOV CS,DS ; sai PUSH DS POP CS ; ng


Truy n tham s cho cc chng trnh con Lu t m th i gi tr thanh ghi hay bi n.

Chng 10: CHNG TRNH CON

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

Chng 10: CHNG TRNH CON

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

Gi I THI U CHNG TRNH CON

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

Chng 10: CHNG TRNH CON

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.

Chng 10: CHNG TRNH CON

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 ..

Chng 10: CHNG TRNH CON

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

Chng 10: CHNG TRNH CON

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.

C php : EXTRN Tn nhn : Ki u

BYTE WORD DWORD

DATAPTR NEAR FAR

PROC
Chng 10: CHNG TRNH CON 17

GLOBAL

THAY TH PUBLIC V EXTRN.

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 .

Chng 10: CHNG TRNH CON

18

V d minh ho v STACK, CALL/RET : chng trnh in m t s nguyn (16 bit) ra mn hnh


PrintNum10 PROC ; s nguyn N n m trong AX PUSH BX CX DX MOV CX, 0 ; so lan push (so ky tu) laysodu: XOR DX, DX ; cho DX = 0 tr c khi chia MOV BX, 10 DIV BX ; s d trong DX, ph n nguyn trong AX PUSH DX ; lu ph n d vo stack INC CX CMP AX, 0 ; h t cha? JNZ laysodu ; cha h t, l y s d ti p MOV AH, 2 INSO: POP DX ADD DL, '0' INT 21H LOOP inso POP DX CX BX RET ENDP PrintNum10 10: CHNG TRNH CON Chng

19

CHNG TRNH A FILE

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.

Chng 10: CHNG TRNH CON

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

TRUY N THAM S QUA THANH GHI


D N Gi N

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 THNG QUA Bi N GLOBAL


KHAI BO Bi N TON C C. DNG N CHUY N CC GI TR Gi A CT G I V CT C G I.
CCH NY TH NG C DNG : TRONG 1 CT Vi T THU N TY B NG ASM Vi T H N H P Gi A ASM V 1 NGN NG C P CAO
Chng 10: CHNG TRNH CON 23

TRUY N THAM S

QUA STACK

PH C T P HN. DNG R T NHI U KHI Vi T CHNG TRNH H N H P Gi A ASM V NGN NG C P CAO.

Chng 10: CHNG TRNH CON

24

CHUY N GI TR T LN CT CHNH.

CTCON

CNG THNG QUA CC THANH GHI,B NH V STACK.


N U GI TR TR V L 8 BIT HO C 16 BIT (CHO KHAI BO CHAR, INT, CON TR G N) TH GI TR PH I C T TRONG THANH GHI AX C A HM TR C KHI QUAY V CTCHNH.

Chng 10: CHNG TRNH CON

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.

Chng 10: CHNG TRNH CON

26

NEAR | FAR bo cho l nh RET l y a ch quay v chng trnh g i n trong STACK.

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.

Chng 10: CHNG TRNH CON

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.

Chng 10: CHNG TRNH CON

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.

Chng 10: CHNG TRNH CON

29

LUY N T P L P TRNH C10


Bi 1 : Vi t chng trnh nh p 1 s nguyn n (n<9). Tnh giai th a c a n v xu t k t qu ra mn hnh d i d ng s Hex (gi i h n 16 bits). Bi 2 :Vi t chng trnh nhap vao 1 chu i ky tu. Hay in ra man hinh chu i ky tu vua nhap theo th t o (trong m i t o t ng k t ).

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

Chng 10: CHNG TRNH CON

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.

Chng 10: CHNG TRNH CON

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 .

Chng 10: CHNG TRNH CON

32

L P TRNH X

L MN HNH & BN PHM

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

Chuoung 10 Lap trinh xu ly man hinh

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

Chuoung 10 Lap trinh xu ly man hinh

CARD MN HNH phn gi i Cung c p cc ch MH

S i m ngang x s i m d c x s mu (s bit mu)

CH H A

800x600x16 bits = 960 000 bytes 1Mb 1024x 768x32 bits 3.145.728 bytes 4Mb

RAM MN HNH

Dung l ng

Chuoung 10 Lap trinh xu ly man hinh

a ch (i,j) = B800:0000+ (i*160+j*2)


Chuoung 10 Lap trinh xu ly man hinh 5

Chuoung 10 Lap trinh xu ly man hinh

QUAN LY MAN HNH


Man hnh c ieu khien hieu qua nh cac chc nang cua INT 10H trong Rom Bios. Cac chc nang nay quan ly man hnh tot hn cac chc nang cua INT 21h cua Dos. Ben canh 1 so chc nang do INT 21h cua Dos cung cap, nh p, 1 so tac vu c thc hien tren man hnh nh cac chc nang trong INT 10h nh xoa man hnh, nh v con tro, thiet lap man hnh ... IBM PC ho tr 3 loai man hnh c ban co ten tuy thuoc vao loai Card man hnh cam tren Bus m rong tren ng Mianboard nh : Monochrome ch hien th text n sac; c; CGA (Color Graphic Adaptor) cho phep hien th text va o hoa; EGA (Enhanced Graphics Adaptor) hien th text va o a; hoa vi o phan giai cao hn. Ngoai ra con co card VGA (Video Graphics Array), SVGA .. .
Chuoung 10 Lap trinh xu ly man hinh 7

THU C TNH MN HNH

Chuoung 10 Lap trinh xu ly man hinh

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

Chuoung 10 Lap trinh xu ly man hinh

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.

Chuoung 10 Lap trinh xu ly man hinh

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.

Chuoung 10 Lap trinh xu ly man hinh

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

Chuoung 10 Lap trinh xu ly man hinh

THUOC TNH MAN HNH (tt)


Bat ky 1 thuoc tnh nao cung co the them Ba ky thuo tnh na co the thuoc tnh nhap nhay bang cach cho bit 7 co tr thuo tnh nha nha bang cach co la 1. Th du normal blinking 87H, bright linking la Th du 8Fh.
Card man hnh CGA va EGA khong ho tr thuoc tnh Underline nhng cho phep s dung mau trong text mode. Cac mau c chia lam 2 loai : mau ch (Foreground) va mau nen (Background).
4 6,5, Bit nen u ma :
au ch m
Bit 3

: 2,1,0 Bit

sang : o
13

Chuoung 10 Lap trinh xu ly man hinh

BANG MAU (COLOR PALETTE) NG


FOREGROUND OR BACKGROUND COLOR 000 001 010 011 100 101 110 111 BLACK BLUE GREEN CYAN RED MAGENTA BROWN WHITE 1110 1010 FOREGROUND COLOR ONLY 1000 1001 GRAY LIGHT BLUE

LIGHT GREEN 1011 1100 1101 LIGHT CYAN LIGHT RED LIGHT MAGENTA

YELLOW 1111 BRIGHT WHITE

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

Chuoung 10 Lap trinh xu ly man hinh

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 man hnh : 25 dong va 80 cot ng 25 dong va 40 cot. ng t.

che o text mot trang man hnh can toi thieu bao nhieu byte cua VIDEO Ram

25X80X2 = 4000BYTES RAM VIDEO VUNG NH NAY NAM TREN CARD MH

Chuoung 10 Lap trinh xu ly man hinh

16

CAC MODE MAN HNH

Cac Video mode thong dung : ng


Mode Mo ta

02h 03h 04h 06h 07h 0Dh 0Eh 0Fh 10h

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

Chuoung 10 Lap trinh xu ly man hinh

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

Chuoung 10 Lap trinh xu ly man hinh

20

CH

H A

Chuoung 10 Lap trinh xu ly man hinh

21

Truy xu t thi t b xu t chu n (mn hnh)

. 1. Ch n ch hi n th : Ch c nng AH = 0, ng t 10H Vo : AH = 0, AL = ki u V d : thi t l p ch vn b n mu XOR AH, AH MOV AL, 3 ; ch vn b n mu 80 x 25 INT 10H

Chuoung 10 Lap trinh xu ly man hinh

22

THAY I SIZE CON TR MN HNH

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

Chuoung 10 Lap trinh xu ly man hinh

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

Chuoung 10 Lap trinh xu ly man hinh

24

L Y V TR KCH THU C CON TR Hi N HNH

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

Chuoung 10 Lap trinh xu ly man hinh

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 .

Chuoung 10 Lap trinh xu ly man hinh

27

CAC HAM X LY MAN HNH


Cac chc nang x ly man hnh nam trong INT 10h
Chc nang (e trong AH ) nhiem vu

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

CAC HAM X LY MAN HNH


Cac chc nang x ly man hnh nam trong INT 10h
Chc nang (e trong AH ) nhiem vu

0Ah

Ghi ky t bo qua thuoc tnh ky t vao v tr con tro hien hanh.

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.

Chuoung 10 Lap trinh xu ly man hinh

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

HAM 01 INT 10H

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

Ex: Minh hoa


Thiet lap con tro co hnh khoi ac.

MOV AH , 1 MOV CH, 0 MOV CL,0CH INT 10H

e thay oi dang con tro : AH = 1 CH = TOP (dong au) CL = BOTTOM (dong cuoi)

Chuoung 10 Lap trinh xu ly man hinh

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

HAM 02H INT 10H

Thiet lap v tr hien hanh SET CURSOR POSITION

AH = 2 ; DH = CH SO DONG ; DL = CH SO COT ; BH= TRANG MAN HNH CHA CURSOR

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

HAM 03H INT 10H

Lay v tr cursor hien hanh GET CURSOR POSITION

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

Chuoung 10 Lap trinh xu ly man hinh

36

HAM 03H INT 10H

Lay v tr cursor hien hanh GET CURSOR POSITION

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

Chuoung 10 Lap trinh xu ly man hinh

37

HAM 05H INT 10H

THIET LAP TRANG MAN HNH SET VIDEO PAGE

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

HAM 05H INT 10H

THIET LAP TRANG MAN HNH SET VIDEO PAGE

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

Chuoung 10 Lap trinh xu ly man hinh

39

HAM 06H, 07H INT 10H

CUON MAN HNH SCROLL WINDOW UP AND DOWN

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.

TA CO THE CUON 1 VAI DONG HOAC CA WINDOWS.

TOAN BO WINDOWS B CUON MAN HNH B XOA. Chuoung 10 Lap trinh xu ly man hinh

40

HAM 06H, 07H INT 10H

CUON MAN HNH SCROLL WINDOW UP AND DOWN

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.

Chuoung 10 Lap trinh xu ly man hinh

41

HAM 06H, 07H INT 10H

CUON MAN HNH SCROLL WINDOW UP AND DOWN

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

Chuoung 10 Lap trinh xu ly man hinh

42

HAM 06H, 07H INT 10H

CUON MAN HNH SCROLL WINDOW UP AND DOWN

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

HAM 08H INT 10H

OC 1 KY T VA THUOC TNH KY T. READ CHARACTER AND ATTRIBUTE

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

HAM 09H INT 10H

GHI 1 KY T VA THUOC TNH KY T. WRITE CHARACTER AND ATTRIBUTE

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

AH =9 ; BH = TRANG VIDEO AL = KY T SE XUAT ; BL = THUOC TNH CUA KY T SE XUAT CX = HE SO LAP

Chuoung 10 Lap trinh xu ly man hinh

45

HAM 0AH INT 10H

GHI 1 KY T VA THUOC TNH KY T. WRITE CHARACTER AND ATTRIBUTE

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

AH =9 ; BH = TRANG VIDEO AL = KY T SE XUAT ; BL = THUOC TNH CUA KY T SE XUAT CX = HE SO LAP

Chuoung 10 Lap trinh xu ly man hinh

46

HAM 0AH INT 10H

GHI 1 KY T VA THUOC TNH KY T. WRITE CHARACTER AND ATTRIBUTE

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

AH =9 ; BH = TRANG VIDEO AL = KY T SE XUAT ; BL = THUOC TNH CUA KY T SE XUAT CX = HE SO LAP

Chuoung 10 Lap trinh xu ly man hinh

47

HAM 0FH INT 10H

LAY VIDEO MODE GET VIDEO MODE

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.

Chuoung 10 Lap trinh xu ly man hinh

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

Chuoung 10 Lap trinh xu ly man hinh

49

L P TRNH X
BN PHM

L PHM

Chuoung 10 Lap trinh xu ly man hinh

50

BN PHM

Chuoung 10 Lap trinh xu ly man hinh

51

BN PHM

Chuoung 10 Lap trinh xu ly man hinh

52

BN PHM

Chuoung 10 Lap trinh xu ly man hinh

53

BN PHM

Chuoung 10 Lap trinh xu ly man hinh

54

BN PHM

Chuoung 10 Lap trinh xu ly man hinh

55

L P TRNH X

L PHM

Ki m tra tr ng thi cc phm Ctrl, Alt, Shift :


Chng ta c th c tr c ti p t a ch 0:0417 ho c l y trong AL thng qua hm AH = 2 ng t 16H. Cch c tr c ti p XOR AX, AX MOV ES, AX MOV AL, ES:[417H] TEST AL, 01H ; ki m tra phm Shift JNZ SHIFT_DANGNHAN TEST AL, 04H ; ki m tra phm Ctrl JNZ CTRL_DANGNHAN TEST AL, 08H ; Ki m tra phm Alt JNZ ALT_DANGNHAN

Chuoung 10 Lap trinh xu ly man hinh

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

BAI TAP LAP TRNH


BAI 1 : VIET OAN CHNG TRNH LAM CAC VIEC SAU : CUON WINDOW T HANG 5, COT 10 TI HANG 20 COT 70 VI THUOC TNH MAN HNH AO. NH V CURSOR TAI HANG 10, COT 20 HIEN TH DONG TEXT DAY LA 1 DONG TEXT TRONG WINDOW SAU KHI XUAT TEXT I NHAN 1 PHM. CUON WINDOW T HANG 5, COT 15 TI HANG 18 COT 68 VI THUOC TNH THNG. XUAT KY T A VI THUOC TNH NHAP NHAY TAI GIA WINDOW. I GO 1 PHM, XOA TOAN BO MAN HNH..

Chuoung 10 Lap trinh xu ly man hinh

58

BAI TAP LAP TRNH


BAI 2 : VIET CHNG TRNH LAM CAC VIEC SAU : XUAT CHUOI GO VAO 1 KY TU THUONG : . KHI USER GO 1 KY T (KHI GO KHONG HIEN THI KY T GO RA MAN HNH) ,OI KY T NAY THANH CH HOA ROI XUAT RA MAN HNH.GIA S CH NHAP CAC KY T HP LE. KHI GO KY T M RONG SE THOAT VE DOS, NHNG CO LE BAN CON NHN THAY 1 KY T XUAT THEM TREN MAN HNH. GIAI THCH.
Chuoung 10 Lap trinh xu ly man hinh 59

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

BAI TAP LAP TRNH


BAI 3 : VIET CHNG TRNH LAM CAC VIEC SAU : CHO PHEP VE N GIAN NH CAC PHM MUI TEN TREN BAN PHM E DI CHUYEN THEO HNG MONG MUON. PHAI BAO AM XUAT CAC KY T GOC THCH HP. BIET RANG MA ASCII CUA 1 SO KY T : xem b ng ma ASCII

MA SCAN CODE CUA CAC PHM MUI TEN : TRAI 4BH PHAI 4DH LEN 48H XUONG 50H

Chuoung 10 Lap trinh xu ly man hinh

61

L P TRNH X
C B N V M T M T LU TR

L A&FILE
TRN A T .

NG D NG HI N TH SECTOR NG D NG HI N TH CLUSTER. FILE M CH TH NG.

CC CH C NNG V

QU N L A V TH M C. TRUY XU T A V I INT 13H C A ROMBIOS BI T P Gi I THI U FILE V L P TRNH X L FILE

4/4/2006

LAP TRINH XU LY DIA TU

C B N V

LU TR

TRN A T
khc

Ngn ng ASM v t tr i hn cc ngn ng v kh nng x l a.

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

LAP TRINH XU LY DIA TU

4/4/2006

LAP TRINH XU LY DIA TU

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

LAP TRINH XU LY DIA TU

CC KHI NI M TRACK, CYLINDER, SECTOR


Tracks : l cc vng trn ng tm c t o ra trn b m t a. Cylinder : t p cc tracks cng bn knh trn 1 ch ng a. M t a c bao nhiu track th s c b y nhiu Cylinder. Sector : l 1 an c a track (cung t ) c kh nng lu tr 512 bytes d li u. Cc sector c nh s b t u t 1 trn m i track trn 1 a t n t i nhi u sector cng s hi u.
4/4/2006 LAP TRINH XU LY DIA TU 7

4/4/2006

LAP TRINH XU LY DIA TU

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

TNG QUAN GI A SECTOR V T L V SECTOR LOGIC TRN A M M


M T A TRACK SECTOR SECTOR THNG TIN LOGIC

0 0 0 1 1 0

0 0 0 0 0 1

1 2-5 6-9 1-3 4-9 1-9

0 1-4 5-8 9-11 12-17 18-26

BOOT RECORD FAT Th m c g c Th m c g c D li u D li u

4/4/2006

LAP TRINH XU LY DIA TU

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

Ki m tra gi tr c a cc ph n t (entry) trong b ng FAT, ph n t no ch a gi tr (F)FF7H th cluster tng ng b Bad

4/4/2006

LAP TRINH XU LY DIA TU

11

B NG FAT FILE ALLOCATION TABLE DOS qu n l cc File nh b ng FAT. vo 1 b ng g i l

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

LAP TRINH XU LY DIA TU

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

LAP TRINH XU LY DIA TU

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 ?

n u c th n p chng vo b chng trnh m i c a HH)


4/4/2006 LAP TRINH XU LY DIA TU

nh

(g i l

14

BOOT RECORD (tt)


T a v t l : C=0, H=0, R =1 (C0H0R1) t c t i sector u tin c a track u tin, m t trn c a a u tin trong a c ng. Trong Master boot c ch a b ng PARTITION TABLE cho bi t t m a ch v t l (dung l ng) c a a lu n l.
Master boot khng thu c Partition no
4/4/2006 LAP TRINH XU LY DIA TU 15

BOOT RECORD (tt)


BOOT RECORD c ROM BIOS n p vo a ch 0000:7C00H. N u my khng b Virus th l nh u tin c a chng trnh BOOT l JMP 7C3EH, ngha l nh y n chng trnh n p m i. chng trnh n p m i (Bootstrap Loader) n p thnh ph n c t li c a DOS ln RAM trong qu trnh kh i ng MT.

4/4/2006

LAP TRINH XU LY DIA TU

16

THNG TIN TRONG MASTER BOOT


BYTEB U S BYTES THNG TIN

00H 03H 0BH 0DH 0EH 10h

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

LAP TRINH XU LY DIA TU

17

THNG TIN TRONG MASTER BOOT


BYTE B U S BYTES THNG TIN

11H 13H 15H 16H 18H 1AH 1CH 20H


4/4/2006

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

THNG TIN TRONG MASTER BOOT


BYTE B U S BYTES THNG TIN

3EH . 1BEH 1FEH 1FFH 1 1 64

Bootstrap

PARTITION TABLE Gi tr 55H Gi tr 0AAH

4/4/2006

LAP TRINH XU LY DIA TU

19

THNG TIN TRONG MASTER BOOT


T thng tin trong b ng FORMAT, ta tnh c a ch c a b ng FAT1, FAT2, Th m c g c a, a ch b t u c a vng d li u.

4/4/2006

LAP TRINH XU LY DIA TU

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

LAP TRINH XU LY DIA TU

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

LAP TRINH XU LY DIA TU

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

LAP TRINH XU LY DIA TU

23

03H 04H

starting sector parttition type :

0 Non Dos 1 cho a nh

PARTITON TABLE

12 bit FAT Entry

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

JE ACTIVE ADD SI, 16 LOOP PACTIVE NO_ACTIVE : . ACTIVE : ..


LAP TRINH XU LY DIA TU 25

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

BYTE THU C TNH x x a


d ng (Archive)

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)

r : thu c tnh ch c (Read Only)


4/4/2006 LAP TRINH XU LY DIA TU 30

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

PHN VNG TRN A


BOOT RECORD

SYSTEM FAT1 AREA

FAT2 ROOT DIRECTORY


DATA AREA
32

CLUSTERS

4/4/2006

LAP TRINH XU LY DIA TU

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

720 1,440 2,400 2,880 62,610

1,024 512 512 512 2,048

368,640 737,280 1,228,800 1,474,560 32,056,832

4/4/2006

LAP TRINH XU LY DIA TU

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

LAP TRINH XU LY DIA TU

34

M TS

HM THAO TC V I FILE V A INT 21H

HM 36H INT 21H : L ys


Input : AH = 36H DL = O63 a (0 : m c nh, 1 Output : C l i AX = 0FFFFH Khng l i : AX = s BX = s CX = s
4/4/2006

bytes cn tr ng trn a
A .

sector / cluster

cluster cn tr ng cluster trn a bytes/cluster


LAP TRINH XU LY DIA TU 35

DX = t ng s

BI T P

Vi t chng trnh t o th m c v i yu c u tn th m c (c th bao g m tn a, ng d n v tn th m c) c nh p t bn phm, cho php s a sai khi g nh m tn th m c.

4/4/2006

LAP TRINH XU LY DIA TU

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

Vi t chng trnh g p n i dung 1 file vo cu i 1 file khc.

4/4/2006

LAP TRINH XU LY DIA TU

37

LAP TRNH X LY FILE


Gi I THI U FILE CC HM CH C NNG X C A INT 21H C A DOS L FILE

4/4/2006

LAP TRINH XU LY DIA TU

38

GII THIEU FILE


Trong quan ly File, Dos vay mn khai niem Handle trong HH Unix e truy xuat File va thiet b.
HANDLE

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

LAP TRINH XU LY DIA TU

39

GII THIEU FILE


Co 5 Handle thiet b chuan c Dos nhan dang.
Handle Thiet b

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

LAP TRINH XU LY DIA TU

40

CC THAO TC X

L FILE

4/4/2006

LAP TRINH XU LY DIA TU

41

CAC CHC NANG C BAN VE X LY FILE CUA INT 21H


CAC CHC NANG NAY PHAI A VAO AH

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

LAP TRINH XU LY DIA TU

42

CHC NANG TAO FILE 3Ch CREATE FILE FUNCTION 3Ch

Chc nang : M 1 File mi e oc ghi. Neu file a co th file cu se b xoa.


AH = 3Ch DS:DX a ch cua ten File muon m (ASCIIZ String) CX = thuoc tnh File (0 normal 1 ReadOnly 2 Hidden 4 System) Xuat : khong loi CF =0 AX = File Handle Co loi CF =1. Ma loi trong AX (3,4,5).

4/4/2006

LAP TRINH XU LY DIA TU

43

CHC NANG TAO FILE 3Ch CREATE FILE FUNCTION 3Ch Ex :


CREATE_FILE : MOV AH, 3CH MOV DX, OFFSET NEWFILE MOV CX, 0 INT 21H JC DISPLAY_ERROR MOV NEWFILEHANDLE, AX ... NEWFILE DB FILE1.DOC ,0 NEWFILEHANDLE DW ?
4/4/2006 LAP TRINH XU LY DIA TU 44

CHC NANG TAO FILE 3Ch CREATE FILE FUNCTION 3Ch Ex :


CHC NANG 3Ch CO 1 KHUYET IEM LA NEU CO 1 FILE CUNG TEN(CUNG NG DAN) A TON TAI TH FILE CU SE B XOA.

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

LAP TRINH XU LY DIA TU

45

CHC NANG 5Bh TAO FILE MI CO KIEM TRA


IEU KIEN : GIONG CHC NANG 3Ch NEU FILE NAY A CO TH KHONG M FILE MI MA TRA VE LOI 50h CREATE_FILE : MOV AH,5BH MOV DX, OFFSET FILENAME MOV CX, 0 INT 21H JC ERROR . FILENAME DB FILE1.DOC , 0
4/4/2006 LAP TRINH XU LY DIA TU 46

CAC LOI KHI M FILE


MA LOI DIEN GIAI

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

10h ang tm cch xa th m c hi n th i


4/4/2006 LAP TRINH XU LY DIA TU 47

CAC LOI KHI M FILE


MA LOI 11H Khng cng thi t b 12H Khng tm c thm File no DIEN GIAI

4/4/2006

LAP TRINH XU LY DIA TU

48

CHC NANG M FILE A CO 3Dh Int 21h OPEN FILE


IEU KIEN : AH = 3DH DS:DX A CH TEN FILE AL = MODE 0: INPUT (M CH OC) 1 : OUTPUT (M E GHI) 2 : INPUT OUTPUT (M VA OC VA GHI) XUAT : KHONG LOI CF = 0 AX = FILE HANDLE CO LOI CF = 1 AX m l i (2,4,512)

4/4/2006

LAP TRINH XU LY DIA TU

49

FILE HM 3CH INT 21H

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

LAP TRINH XU LY DIA TU

50

FILE HM 3CH INT 21H

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

LAP TRINH XU LY DIA TU

51

Vi t code m 1 File m i v i thu c tnh ch c, tn File l FILE1

Fname DB FILE1,0 FHANDLE DW ? MOV AX,@DATA MOV DS,AX MOV AH,3CH MOV CL,1 LEA DX,FNAME

INT 21H MOV FHANDLE, AX JC OPEN_ERROR .

4/4/2006

LAP TRINH XU LY DIA TU

52

CHC NANG M FILE A CO S N HM 3Dh INT 21H OPEN FILE

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

LAP TRINH XU LY DIA TU

53

CHC NANG M FILE A CO S N HM 3Dh INT 21H OPEN FILE


MOV AH, 3DH MOV AL, 0 MOV DX, OFFSET FILENAME INT 21H JC DISPLAY_ERROR MOV INFILEHANDLE, AX .. INFILE DB D:\FILE1.DOC, 0 INFILEHANDLE DW ?

4/4/2006

LAP TRINH XU LY DIA TU

54

CHC NANG 3EH ONG FILE NG


IEU KIEN : AH = 3EH BX = FILE HANDLE CAN ONG XUAT : KHONG LOI CF = 0 CO LOI CF = 1 EX : MOV AH, 3EH MOV BX, INFILEHANDLE INT 21H JC DISPLAY_ERROR .. INFILE DB D:\FIEL1.DOC, 0 INFILEHANDLE DW ?
4/4/2006 LAP TRINH XU LY DIA TU 55

LOI SO 6 : INVALID HANDLE FILE HANDLE TRONG BX KHONG PHAI LA THE FILE CUA FILE A M.

CHC NANG 3FH OC FILE


OC 1 SO BYTES T FILE LU VAO BO NH

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

CO LOI, MA LOI CHA

LAP TRINH XU LY DIA TU

56

CHC NANG 3FH OC FILE


EX : OC 1 SECTOR 512 BYTES T FILE

.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

MOV CX, 512 INT 21H JC READ_ERROR


NEU CAN OC HET CAC SECTOR CHO EN HET FILE EOF CMP AX, CX JL EXIT JMP READ_LOOP

CHC NANG 40H GHI FILE


GHI 1 SO BYTES LEN FILE HAY THIET B

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

MINH H A L P TRNH FILE

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

LAP TRINH XU LY DIA TU

60

DCH CHUYEN CON TRO FILE HAM 42H INT 21H


AH = 42H AL = PHNG THC TRUY NHAP

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

DCH CHUYEN CON TRO FILE HAM 42H INT 21H


CX : DX CHA SO BYTES E DI CHUYEN CON TRO. NEU LA SO DNG CHUYEN VE CUOI FILE. NEU LA SO AM CHUYEN VE AU FILE.

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

; DI CHUYEN CON TRO FILE

MOV BX, HANDLE ; LAY THE FILE

INPUT :

THAY OI THUOC TNH FILE HAM 43H INT 21H

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

LAP TRINH XU LY DIA TU

63

Ex : thay oi thuoc tnh File thanh nh hidden file


MOV AH, 43H MOV AL, 1 LEA DX, FILENAME MOV CX, 1 INT 21H JC ATT_ERROR ; Ham lay / oi thuoc tnh File ; tuy chon thay oi thuoc tnh ; lay ten file ke ca ng dan. I; thuoc tnh Hideen ; oi thuoc tnh ; thoat neu co loi, ma loi trong AX

4/4/2006

LAP TRINH XU LY DIA TU

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

LAP TRINH XU LY DIA TU

65

Chng 13 :L P TRNH X

L M NG & CHU I

Gi I THI U C H NG DF CC L NH THI T L P V XA C H NG CC L NH THAO TC TRN CHU I M T S TH D MINH H A TH Vi N LIN QUAN N CHU I

Chng 14 L p trnh XL 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.

Chng 14 L p trnh XL Chu i

C h ng DF C nh h ng (Direction Flag) : xc nh h ng cho cc thao tc chu i.

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).

Trong DEBUG DF=0 k hi u l UP DF=1 k hi u l DN


Chng 14 L p trnh XL Chu i 3

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

Chng 14 L p trnh XL Chu i

Chng 14 L p trnh XL Chu i

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

CHU I Ch a a ch chu i ngu n

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

Yu c u xem thm cc ch c nng AH = 3FH v AH = 40H c a ng t 21H.

Chng 14 L p trnh XL Chu i

Chng 14 L p trnh XL Chu i

NH P CHU I

Chng 14 L p trnh XL 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.

STOSB (STORE STRING BYTE)

CHUY N N I DUNG AL N BYTE C TR B I ES:DI. SAU KHI L NH C TH C Hi N DI TNG 1 N U DF=0 Ho C Gi M 1 N U DF =1

LU CHU I CC BYTES

Chng 14 L p trnh XL Chu i

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.

STOSW (STORE STRING WORD)

CHUY N N I DUNG AX N WORD C TR B I ES:DI. SAU KHI L NH C TH C Hi N DI TNG HAY Gi M 2 TY VO DF.

LU CHU I CC WORD

Chng 14 L p trnh XL Chu i

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

Gi i thch : DI ch a offset c a chu i BX ch a s k t nh p 8H m ASCII c a Backspace khng lu n vo chu i tng s k t ln 1 ng li con tr DI gi m s k t nh p c

Chng 14 L p trnh XL Chu i

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.

Chng 14 L p trnh XL Chu i

14

CC THAO TC X

L CHU I

For counter Do
Hi N TH CHU I

N p chu i c n hi n th vo AL Chuy n vo DL Hi n th k t EndFor

N p 1 chu i

Chng 14 L p trnh XL Chu i

15

LODSB (LOAD STRING BYTE)

N P 1 CHU I CC BYTES

CHUY N BYTE T I A CH DS:SI SI TNG 1 N U DF=0 SI Gi M 1 N U DF =1

AL

Chng 14 L p trnh XL Chu i

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

Chng 14 L p trnh XL Chu i

17

LODSW (LOAD STRING WORD)

N P 1 CHU I CC WORD

CHUY N WORD T I A CH DS:SI AX SI TNG HAY Gi M TY TR NG THI DF

Chng 14 L p trnh XL Chu i

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

EXIT : POP SI POP DX POP CX POP BX POP AX RET DISPSTR ENDP

Chng 14 L p trnh XL Chu i

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

Chng 14 L p trnh XL Chu i

20

CC THAO TC X

L CHU I

Chuy n m t BYTE : MOVSB

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.

MOVSB ch chuy n 1 byte. V y c chu i ta lm th no ?

Chng 14 L p trnh XL Chu i

21

DF
0

Chng 14 L p trnh XL Chu i

22

MOVSW

Chuy n m t chu i cc word (2 bytes)

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

DS:SI tr n chu i ngu n ES:DI tr n chu i ch

Chng 14 L p trnh XL Chu i

23

LODSB (Load String Byte)

Chuy n byte ch b i DS:SI AL tng SI ln 1 n u DF=0 gi m SI xu ng 1 n u DF=1

Chng 14 L p trnh XL Chu i

24

DF DS:SI DS:SI 0

3A
LODSB

3A AL
Chng 14 L p trnh XL Chu i 25

Chng 14 L p trnh XL Chu i

26

STOSB (LU CHU I BYTE)

Chng 14 L p trnh XL Chu i

27

STOSW (LU CHU I WORD)

Chng 14 L p trnh XL Chu i

28

Chng 14 L p trnh XL Chu i

29

Chng 14 L p trnh XL Chu i

30

Chng 14 L p trnh XL Chu i

31

Chng 14 L p trnh XL Chu i

32

Chng 14 L p trnh XL Chu i

33

REP

Kh i t o CX v i s byte c n chuy n

Sau th c hi n l nh REP MOVSB

Sau m i l nh MOVSB, CX gi m 1 cho n khi n =0 h t chu i.


Chng 14 L p trnh XL Chu i 34

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

Bi t p : Vi t o n chng trnh chp chu i STRING1 th d tr c vo chu i STRING2 nhng theo th t ng c l i.

Chng 14 L p trnh XL Chu i

35

TH D MINH H A

Cho m ng sau ARR DW 10,20,40,50,60,? Vi t cc l nh chn 30 vo gi a 20 v 40 ( gi s r ng DS v ES ch a a ch o n d li u)

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

Chng 14 L p trnh XL Chu i

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

ArrA DB 100 DUP(0) ; khai bo m ng c 100 ph n t kh i t o b ng 0.

Chng 14 L p trnh XL Chu i

38

Chng 14 L p trnh XL Chu i

39

Chng 14 L p trnh XL Chu i

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.

Chng 14 L p trnh XL Chu i

41

M TS

BI T P MINH H A L P TRNH X L CHU I

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(?)

Chng 14 L p trnh XL Chu i

42

B1. Vi t chng trnh nh p vo 1 t , sau in t ng k t trong t theo chi u d c. Th d Nh p CONG Xu t : C O N G

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.

Chng 14 L p trnh XL Chu i

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

Chng 14 L p trnh XL Chu i

45

Chng 14 L p trnh XL Chu i

46

You might also like