You are on page 1of 570

CU TRC L P TRNH H P NG MY TNH

4/4/2006

Chuong 1 CU TRC TNG QUT CA HTMT

MUC TIEU
:

Cu trc My tnh & Lp 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. Na m c cach hoat ong,cach giao tip 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 gin phan cng, lap trnh he thong . 6. Cc khi nim c bn v virus TH - nghin cu cc k thut ly lan ca virus tin hc
4/4/2006 Chuong 1 CU TRC TNG QUT CA HTMT 2

Ti liu tham kho


Structured Computer Organization Andrew Tanenbaum Assembly Language For the IBM-PC Kip R Irvine Assembly Programming Language & IBM PC Ythayu Charles Marut Gio trnh Cu trc my tnh - Tng Vn On Lp trnh Hp ng - Nguyen Ngoc Tan -V Thanh Hin Cu trc My tnh - i hc Bch khoa

4/4/2006

Chuong 1 CU TRC TNG QUT CA HTMT

Ti liu tham kho


Computer Virus Handbook Virus Writing guide Billy Belceb The macro virus writing guide The little black book of computer viruses Mt s mu chng trnh virus (virus file, virus macro)

4/4/2006

Chuong 1 CU TRC TNG QUT CA HTMT

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

4/4/2006

Chuong 1 CU TRC TNG QUT CA HTMT

cng mn hc
Chng 1 : T chc tng qut ca h thng MT Chng 2 : T chc CPU Chng 3 : Mc logic s Chng 4 : T chc b nh Chng 5 : Xut nhp Chng 6 : Lp trnh Assembly Tp lnh Chng 7 : Cu trc iu khin & Vng lp Chng 8 : Macro & Procedure nhng CT Assembly vo ngn ng cp cao nh C Chng 9 : Lp trnh x l mn hnh-bn phm-mouse. Chng 10 : Lp trnh x l File Chng 11 : Cc khi nim c bn v Virus tin hc phn tch cc k thut ly lan chung ca VR tin hc v ly lan trn mng. Chuong 1 CU TRC TNG
4/4/2006 QUT CA HTMT 6

Chng 1 :CU TRC TNG QUT CA MT H THNG MY TNH

4/4/2006

Chuong 1 CU TRC TNG QUT CA HTMT

Mc tiu :
Nm c tng quan v cu trc my tnh. Hiu v My Turing & Nguyn l Von Neumann Bit s khi chi tit ca my tnh Nam nguyn l hot ng my tnh Bit cc component ca my tnh : Processors,Memory,Input/Output devices,Bus

4/4/2006

Chuong 1 CU TRC TNG QUT CA 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 CU TRC TNG QUT CA HTMT

4/4/2006

4/4/2006

Chuong 1 CU TRC TNG QUT CA HTMT

10

4/4/2006

Chuong 1 CU TRC TNG QUT CA HTMT

11

May tnh & S tnh toan


B x l

Memory : cha cc ch th & d liu

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

Input device : thit b nhp

4/4/2006

Chuong 1 CU TRC TNG QUT CA 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 CU TRC TNG QUT CA HTMT 13

Tng quan v cu trc my tnh


My tnh hin i ngy nay c thit k da trn m hnh Turing Church v m hnh Von Neumann.

M hnh Turing :
M hnh ny rt n gin nhng n c tt c cc c trng ca 1 h thng my tnh sau ny. Nguyn l cu to my Turing : u c ghi khi x l cha tp hu hn cc trng thi

Bng d liu v hn, d liu kt thc l b

Si
Chuong 1 CU TRC TNG QUT CA HTMT

4/4/2006

14

Nguyn l xy dng MT
MT in t lm vic theo hai nguyn l c bn : nguyn l s v nguyn l tng t. Nguyn l s s dng cc trng thi rI rc ca 1 I lng vt l biu din s liu nguyn l m. Nguyn l tng t s dng 1 I lng vt l bin I lin tc biu din s liu nguyn l o

4/4/2006

Chuong 1 CU TRC TNG QUT CA HTMT

15

Mch in trong MT
Trong MT c nhng loI mch in no ? Mch t hp : l mch in c trng thi ng ra ph thuc tc thI vo t hp ca trng thi ng vo. Ex : Mch giI m a ch Mch tun t : l mch in thc hin 1 mc ch m trng thi ng ra ph thuc vo t hp ca trng thi ng vo v trng thi ca qu kh ng vo. Ex : mch cng, tr, nhn , chia

4/4/2006

Chuong 1 CU TRC TNG QUT CA HTMT

16

Nguyn l Turing
khi x l u c ghi cha tp hu hn cc trng thi Bng d liu v hn, d liu kt thc l b

Si

Sj

My lm vic theo tng bc ri rc. Mt lnh ca my nh sau : qiSiSjXqj. Ngha l : u c ghi ang Si th s ghi Sj vo hin ti v dch chuyn hoc ng yn theo ch th l X v trng thi hin hnh ca my l qj
4/4/2006 Chuong 1 CU TRC TNG QUT CA HTMT 17

Nguyn l hoat ng my Turing


D liu ca bi ton l 1 chui cc k hiu thuc tp cc k hiu ca my khng k k hiu rng b, c ct v bng. Trng thi trong ban u ca my l q0 . u c/ghi cha k hiu u tin ca chui k hiu nhp. Trong qu trnh hot ng, s thay i d liu trn bng, s dch chuyn u c ghi v s bin i trng thi trong ca my s din ra tun theo cc lnh thuc tp lnh ca my ty theo trng thi hin ti v k hiu hin ti. Qu trnh s dng li khi trng thi trong ca my l trng thi kt thc qf.
4/4/2006 Chuong 1 CU TRC TNG QUT CA HTMT 18

Th d my Turing
Xt th d my Turing thc hin php ton NOT trn chui cc bit 0/1.Chui d liu nhp ban au l 10 tp cc k hiu ca my {0,1} tp cc trng thi trong {q0, q1} tp lnh gm 3 lnh : q001Rq0 , q010Rq0 , q0bbNq1 q0 Ban u 0 Dng q0
Chuong 1 CU TRC TNG QUT CA HTMT Kt

q0

b q1

19

4/4/2006

qu 01

Nguyn l VonNeumann
My Von Neumann l m hnh ca cc my tnh hin i. Nguyn l ca n nh sau : V mt logic (chc nng) , my gm 3 khi c bn : n v x l, b nh v h thng xut nhp. B nh nh B Trao i thng tin iu khin H xut nhp data
4/4/2006

nv v x l l n x

chng trnh
Chuong 1 CU TRC TNG QUT CA HTMT 20

Nguyn l Von Neumann (cont) Chng trnh iu khin x l d liu cng c xem l data v c lu tr trong b nh gi l chng trnh lu tr. B nh chia lm nhiu , mi c 1 a ch (nh s th t) c th chn la nh trong qu trnh c ghi d liu. (nguyn l nh a ch)

4/4/2006

Chuong 1 CU TRC TNG QUT CA HTMT

21

Nguyn l Von Neumann (cont) Cc lnh c thc hin tun t nh 1 b m chng trnh (thanh ghi lnh) nm bn trong n v x l.

Chng trnh MT c th biu din dI dng s v t vo trong b nh ca MT bn cnh d liu.

4/4/2006

Chuong 1 CU TRC TNG QUT CA HTMT

22

Typical Von Neumann Machine

A L U

4/4/2006

Chuong 1 CU TRC TNG QUT CA HTMT

23

Nguyn l hot ng MT
CPU CPU
nh ccll nh Phntch tchll nh Phn nh Th thill nh Th ccthi nh

B nh nh chnh chnh B
Lutr tr thng thngtin tin Lu Nich ch ach ch ngtrnh trnh Ni a ng CPU CPU vth th thi ccv ccthi

Kh xu nh p Kh ii xu tt nh p
Giaoti ti pv v mitr tr ngbn bnngoi ngoi Giao p iimi ng nh pd d li li u,b b nh nh ph ph xu ttnh p u, xu
4/4/2006 Chuong 1 CU TRC TNG QUT CA HTMT 24

T chc My tnh 1 CPU & 2 I/O device


CPU
ControlUnit Unit Control ALU ALU

Registers
Main Memory . .

I/O Devices
Disk Printer

Bus

Bus
4/4/2006 Chuong 1 CU TRC TNG QUT CA HTMT 25

Bus

S khi chi tit


c, phn tch, ra lnh cho cc n v chc nng thc hin

Control Unit Unit Control ALU ALU


Registers Registers

MainMemory Memory Main


C2 2tc tcv v :: /Ghi C cc/Ghi 2lo lo d li li u: 2 iid u: 1)Data Data::ss li li u uvo, vo, 1) u u k qu ,d li li utrung trunggian gian k ttqu ,d u 2)Chng Chngtr tr nh 2) nh

Php ton: s hc, lun l, so snh, dch, quay,x l bit. MI php ton cho 4/4/2006 2 kt qu

nv v giaoti ti p IO IOCard Card n giao p IODevices Devices IO

Chuong 1 CU TRC TNG QUT CA HTMT

26

Tng kt chng
My tnh c thit k trn tng ca My Turing v nguyn l Von Neumann. V mt chc nng my tnh gm 3 phn : n v x l, b nh chnh v cc thit b xut nhp.

4/4/2006

Chuong 1 CU TRC TNG QUT CA HTMT

27

Cu hi
Cu 1: Trnh by nguyn l Von Neumann. Cu 2: Cho bit s khc nhau gia m hnh Turing v m hnh VonNeumann. Cu 3: Trnh by nguyn l hot ng ca My Turing. Cu 4: Truc khi c nguyn l Von Neumann, chng trnh my tnh thc hin c u? Cu 5 : Cho bit kt qu ca 2+3 ?

4/4/2006

Chuong 1 CU TRC TNG QUT CA HTMT

28

Chng 2 : T chc CPU


Mc tiu : Nm c chc nng ca CPU Hiu c cc thnh phn bn trong CPU. Nm c cch CPU giao tip vi thit b ngoi vi. Bit c cc c tnh ca CPU h Intel

Chuong 2 : T chc CPU

2.1 Gii thiu h thng s 2.2 B x l trung tm CPU 2.3 H thng Bus 2.4 B thanh ghi 2.5 C ch nh v a ch 2.6 Cc c tnh thit k lin quan n hiu sut CPU h Intel 2.7 Cc c trng ca CPU h Intel 2.8 Cu hi n tp
Chuong 2 : T chc CPU 2

2.1 H thng s
H m nh phn bt phn thp phn thp lc phn C s 2 8 10 16 s k s 2 8 10 16 dng k s v k t biu din 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 chc CPU 3

H thng s
H thng s l g ? Vo thI im , vic dng cc que m l 1 tng v i!! Cn vic dng cc k hiu thay cho cc que m cn v i hn!!!! Mt trong cc cch biu din 1 s hin nay l s dng h thng s m decimal. C nhiu cch biu din 1 gi tr s. Ngy xa, con ngidng cc que m sau hc v cc hnh trn mtt v trn giy. th d s 5 ln u c biu din bng | | | | | (bng 5 que). Sau ch s La M bt u dng cc k hiu khc nhau biu din nhiu s gn hn. Th d s 3 vn biu din bI 3 que | | | nhng s 5 th c thay bng V cn s 10 th thay bng X.

Chuong 2 : T chc CPU

H thng s
S dng que m l 1 ngha v I thi im ny.V vic dng cc k hiu thay cho cc que m cng v i hn!!!.

Mt trong nhng cch tt nht hin nay l dng h thng s thp phn (decimal system).

Chuong 2 : T chc CPU

Decimal System

Con ngi ngy nay dng h 10 m.Trong h 10 c 10 digits 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Nhng k s ny c th biu din bt k 1 gi tr no, th d : 754

Chuong 2 : T chc CPU

V tr ca tng k s rt quan trng, th d nu ta t "7" cui th: 547 n s l 1 gi tr khc :

Chuong 2 : T chc CPU

Binary System

MT khng thng minh nh con ngI,n dng trng thi ca in t :

on and off, or 1 and 0. MT dng binary system, binary system c 2 digits: 0, 1 Nh vy c s (base) l 2. Mi k s (digit) trong h binary number c gi l BIT, 4 bits nhm thnh 1 NIBBLE, 8 bits to thnh 1 BYTE, 2 bytes to thnh 1 WORD, 2 words to thnh 1 DOUBLE WORD (t dng):

Chuong 2 : T chc 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 bin I cc s t binary system sang hexadecimal system and v ngc li, mi nibble (4 bits) c th bin thnh 1 hexadecimal digit : Ex : 1234h = 4660d

Chuong 2 : T chc CPU

Cc php ton trong h nh phn


cng : 0+0=0 tr 0+1=1 1+ 0 = 1 1 + 1 = 0 nh 1

: 0- 0=0

0 - 1 = 1 mn 1 1 0 = 1 1- 1=0

Nhn : c th coi l php cng lin tip Chia : c th coi l php tr lin tip

Chuong 2 : T chc CPU

10

Cc php ton trong h nh phn


Bng 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 chc CPU

Chuyn 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 chc CPU 12

dng

Chuyn 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 chc CPU 13

Chuyn 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 chc CPU

14

Chuyn 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 chc CPU

15

2.2 B x l trung tm CPU

Chuong 2 : T chc CPU

16

2.2 B x l trung tm CPU


CPU (Central Processing Unit) B x l trung tm Chc nng : thc hin chng trnh lu trong b nh chnh bng cach ly lnh ra - kho sat - thc hin ln lt cac lnh. 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 gm 1 s b phn tch bit : B iu khin ly lnh ra t b nh v xc nh kiu lnh. B lun l v s hc (ALU) thc hin php ton nh cng, and. Cc thanh ghi (Registers) : lu kt qu tm thi v cc thng tin iu khin.CPU giao tip vi cc b phn khc trong my tnh thng qua cc tuyn gi l Bus
Chuong 2 : T chc 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 chc CPU

18

c, phn tch lnh , ra lnh cho cc n v chc nng thc hin

S khi
CPU

Control Unit Unit Control ALU ALU


Registers Registers

MainMemory Memory Main


C22tc tcvv :: /Ghi C cc/Ghi lo d li li u: 22lo i id u: 1)Data Data::ss li u uvo, vo, 1) li u u k qu k ttqu ,, d li li utrung trunggian gian d u 2)Chng Chngtr tr nh 2) nh

Php ton: s hc, lun l, so snh, dch, quay,x l bit

nv v giaoti ti p IO IOCard Card n giao p IODevice Device IO Chuong 2 : T chc 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 chc 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 chc 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 chc 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 chc CPU

23

S phn phi thi gian cho 2 qu trnh ly lnh v thi hnh lnh ca CPU thng v CPU ng ng

Ly lnh Thi hnh lnh Ly lnh Thi hnh lnh

LNH 1 LNH 1

LNH 2 LNH 2

LNH 3 LNH 3

CPU thng
LNH 1 LNH 2 LNH 3 Thi gian tit kim c LNH 1 LNH 2 LNH 3

CPU dng c cu ng ng (piple line)


Chuong 2 : T chc 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 chc 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 chc CPU 26

Bus
Bus l cc ng truyn. Thng tin s c chuyn qua li gia cc thnh phn linh kin thng qua mng li gi l cc Bus.

Chuong 2 : T chc CPU

27

2.3 H thng Bus


Cc thit b ngoi vi kt ni vi h thng nh cc khe cm m rng (expansion slot). Bus h thng (Bus system) s kt ni tt c cc thnh phn li vi nhau. C 3 loi bus :bus d liu (data bus), bus a ch (address bus) v bus iu khin (control bus).
Chuong 2 : T chc CPU 28

Cc loi Bus
Address Bus : nhm ng truyn nhn din v tr truy xut trong thit b ch : thng tin c c t u hoc ghi vo u. Data Bus : nhm ng truyn ti data thc s gia cc thit b h thng do a ch trn address bus xc nh. rng ca data bus (s ng dy dn) xc nh data trong mi ln truyn l bao nhiu. Control Bus : nhm ng truyn cho cc tn hiu iu khin nh : tc v l c hay ghi, tc v thc thi trn b nh hay trn thit b ngoi vi, nhn dng chu k bus v khi no th hon tt tc v Chuong 2 : T chc CPU

29

Minh ha h thng Bus


Address bus

CPU CPU
Control

Data bus bus

Memory

IO devices devices IO
Chuong 2 : T chc CPU 30

A Typical Output Port

Chuong 2 : T chc CPU

31

An Input and an Output Device That Share the Same Address (a Dual I/O Port)

Chuong 2 : T chc CPU

32

Connection of the PCI and ISA Busses in a Typical PC


Industry Standard Architecture

Peripheral Component Interconnect

Chuong 2 : T chc 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 chc CPU

34

Bus PCI
PCI chun nI ghp cc thit b ngai vi vi b VXL tc cao ca Intel nh 486/Pentium
Tc ti a 33MHz Data bus 32 bits v 64 bits H tr cho 10 thit b ngoi vi Plug and Play

Chuong 2 : T chc CPU

35

Plug and Play


1.C BIOS trn mainboard v Card b sung u khng phI l Plug and Play. 2. BIOS trn mainboard Plug and Play nhng Card b sung th khng phn mm ci t s gip sp xp a ch I/O, IRQ v cc knh DMA. 3. BIOS trn mainboard v Card b sung l Plug and Play cu hnh t ng thc hin mi cng vic.

Chuong 2 : T chc CPU

36

AGP Bus Interface

Accelerated Graphic Port

Chuong 2 : T chc 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 chc CPU 38

rng Bus
rng bus chnh l s ng dy dn hp thnh bus. Vi address bus : trn mi ng dy ch c th c 1 trong 2 trng thi 0 hoc 1 nn bus c rng n th c th nhn bit c 2n a ch. Vi data bus : c thit k theo nguyn tc l bi ca 8 (8,16,32,64 bit) nh th mi ln truyn 1 byte/2 bytes/4 bytes ty theo my. B rng Data bus cng ln th data truyn cng nhanh.
Chuong 2 : T chc CPU 39

Bus PC/XT c khe cm 62 chn bao gm : Data bus D0-D7 Adrress Bus A0-A19 Cc tn hiu iu khin . Bus PC/AT : bus XT + 36 chn na lm vic vI data bus 16 bit, bus a ch 24 bit. 36 chn b sung c dng lm cc ng d liu D8-D15, cc ng a ch A21-A23, D0-D7 : l bus d liu 8 bit, 2 chiu ni gia b VXL vi b nh, I/O.
Chuong 2 : T chc CPU 40

Nhc im ca Bus ISA


Data bus b hn ch 16 bits khng th phI hp vI data bus 32 bits ca b VXL 386/486/Pentum. Address bus a ch 24 bits gii hn kh nng truy cp b nh cc i qua khe cm m rng 16MB khng th phi hp c vi bus a ch 32 bit ca 386/486/Pentium.

Chuong 2 : T chc CPU

41

Chu k Bus
Mi chu k bus l 1 tc v xy ra trn bus truyn ti data. Mi ln CPU cn lnh (hoc data) t b nh hoc I/O, chng phi thc thi 1 chu k bus c c thng tin hoc ghi thng tin ra b nh hoc ra I/O. Mi chu k bus gm 2 bc : bc 1 : gi a ch bc 2 : truyn data t a ch c nh v.

Chuong 2 : T chc CPU

42

4 chu k bus c bn : c b nh (memory Read) ghi b nh (memory Write) c I/O (I/O Read) ghi I/O (I/O Write). Cc tn hiu cn thit thc hin cc chu k bus c sinh ra bi CPU hoc DMA Controller hoc b lm ti b nh.

Chuong 2 : T chc CPU

43

Chu k Bus
Mi chu k Bus i hi ti thiu trn vn 2 xung ng h h thng. y l mc tham chiu theo thi gian ng b ho tt c cc tc v bn trong my tnh. Xung u tin gi l Address time , a ch truy xut s c gi i cng vi tn hiu xc nh loi tc v s c thc thi (c/ghi/n mem/n I/O).

Chuong 2 : T chc CPU

44

Chu k Bus
Cui xung th 2, CPU s kim tra ng tn hiu Ready. Nu thit b cn truy xut sn sng p ng tc v, thit b ny s kch 1 tn hiu ln ng Ready bo cho CPU bit v chu k bus hon tt. Khi 1 thit b khng sn sng, khng c tn hiu trn ng Ready, CPU phi ch, c th phi tiu tn thm 1 hay nhiu xung clock.

Chuong 2 : T chc 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 chc CPU 46

Chu k Bus (cont)


Ch :
Trong 1 s h thng, cho php ta Setup mt s wait states trong phn Extend Setup ca Bios. Nu ta cho gi tr ny nh th c th ngoi vi khng theo kp CPU v h thng b treo. Cn nu cho gi tr ny ln th tc chung ca h thng b chm li. Wait states mc nh l 4 cho cc v mch 8 bit v l 1 cho cc v mch 16 bit. tc truyn ti ti a : tc truyn ti = tc bus (MHz) x s bytes trong 1 ln truyn /s chu k xung clock cho mi ln truyn
Chuong 2 : T chc CPU 47

2.4 H thng thanh ghi


L cc phn t c kh nng lu tr thng tin vi dung lng 8, 16 , 32, 64 bit. c xy dng t cc FlipFlop nn c tc truy xut rt nhanh.
Phn loi thanh ghi : Thanh ghi tng qut : ch yu dng lu tr d liu trong qu trnh thc thi CT, nhng mi thanh ghi cn c 1 s chc nng ring. Thanh ghi iu khin : cc bit ca n qui nh tc v ca cc n v chc nng ca MT. Thanh ghi trng thi : lu tr thng tin m t trng thi.
Chuong 2 : T chc 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 chc nng lu tr d liu, n cn c CPU dng trong php ton s hc nh nhn, chia.
Chuong 2 : T chc 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 na cao ca thanh ghi AX Thanh ghi AL l na thp ca thanh ghi AX
Th d nu AX=1234h th AH=12H AL=34h
Chuong 2 : T chc 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 ca 1 th tc hay bin, n cng c dng thc hin cc php di chuyn s hc v d liu.
Chuong 2 : T chc 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 bit trong php nhn v php chia ngoi chc nng lu tr d liu. Ex : khi nhn DX s lu gi 16 bit cao ca tch.
Chuong 2 : T chc 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 lp. Cc lnh t ng lp li v sau mi ln lp gi tr ca CX t ng gim i 1. CL thng cha s ln dch, quay trong cc lnh dch, 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 chc 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 on c s dng nh l a ch c s ca cc lnh trong chng trnh, stack v d liu. 4 thanh ghi on : CS (Code Segment), DS (Data Segment), SS (Stack Segment) v ES (Extra Segment). CS : cha a ch bt u ca code trong chng trnh. DS : cha a ch ca cc bin khai bo trong chng trnh. SS : cha a ch ca b nh Stack dng trong chng trnh ES : cha a ch c s b sung cho cc bin b nh.
Chuong 2 : T chc 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 chc CPU

55

2.5 Thanh ghi on v s hnh thnh a ch


8088 s dng 20 bit nh a ch b nh qun l trn 1Mb b nh. Nhng 8088 li khng c thanh ghi no 20 bit, tt c l 16 bit do 1 thanh ghi ch c th nh a ch ti a l 64 kB b nh. Nh vy phi kt hp 2 thanh ghi mi a ch ho ton b b nh. 8088 s 1 trong cc thanh ghi dng chung v 1 trong cc thanh ghi on (CS,DS,SS,ES) to thnh 1 a ch 20 bit.
Chuong 2 : T chc CPU 56

S PHN ON B NH
CPU 8086 dng phng php phn an b nh qun l b nh 1MB ca n. a ch 20 bit ca b nh 1MB khng th cha trong cc thanh ghi 16 bit ca CPU 8086 b nh 1MB c chia ra thnh cc on (segment) 64KB. a ch trong cc an 64KB ch c 16 bit nn CPU 8086 d dng x l bng cc thanh ghi ca n. PHN ON B NH : l cch dng cc thanh ghi 16 bit biu din cho a ch 20 bit.
Chuong 2 : T chc CPU

57

2.5 a ch vt l & a ch lun l


a ch 20 bits c gi l a ch vt l. a ch vt l dng nh th no ? Dng trong thit k cc mch gii m a ch cho b nh v xut nhp. Cn trong lp trnh , a ch vt l khng th dng c m n c thay th bng a ch lun l (logic).

Chuong 2 : T chc CPU

58

a ch lun l
a ch ca 1 nh c xc nh bi 2 phn: Segment : offset a ch on Ex : B001:1234 Mi a ch thnh phn l 1 s 16 bit v c vit theo cch sau : Segment : offset a ch trong on ( di)

Chuong 2 : T chc CPU

59

S hnh thnh a ch
Hng Intel xut 1 phng php hnh thnh a ch. Mi a ch nh c hnh thnh t 1 php tnh tng 1 a ch c s v 1 a ch offset. a ch c s lu trong 1 thanh ghi segemnt, cn a ch offset nm trong 1 thanh ghi ch s hay thanh ghi con tr. Php cng ny s to 1 a ch 20 bit gi l a ch vt l.

Chuong 2 : T chc CPU

60

Th d minh ho hnh thnh a ch


15
ach ch Offset a Offset

15
ach ch segment a segment

0
0000

19

cng
ach ch v l20 20bit bit a v ttl
Chuong 2 : T chc CPU

61

S hnh thnh a ch tuyt i


a ch segment a ch Offset

Ga s ta c a ch

08F1 : 0100
a ch tng i

CPU t ng ly a ch segment x 10 (h 16) thnh 08F10 Sau n cng vi a ch Offset a ch tuyt i :

0100

09010
Chuong 2 : T chc CPU 62

Cch tnh a ch vt l t a ch lun l


a ch vt l = (segment*16) + offset Segment 0 + offset a ch vt l Ex : tnh a ch vt l tng ng a ch lun l B001:1234 a ch vt l = B0010h + 1234h = B1244h
Chuong 2 : T chc CPU 63

S chng cht cc on
a ch segment hay cn gi l a ch nn ca on. N cho bit im bt u ca on trong b nh. a ch offset th hin khong cch k t u an ca nh cn tham kho. Do offset di 16 bit nn chiu di ti a ca mi an l 64K.

Chuong 2 : T chc CPU

64

S chng cht cc on
Trong mi on, nh u tin c offset l 0000h v nh cui cng l FFFFh. segment B nh
offset

0000

nh c a ch segment: offset

64KB FFFF

Chuong 2 : T chc CPU

65

Mi nh ch c a ch vt l nhng c th c nhiu a ch lun l. Ex : 1234:1234 u c chung a ch vt l 13574h 1334:0234 1304:0534 Ti sao ?

Chuong 2 : T chc CPU

66

hiu r ti sao ta hy xt mi quan h gia a ch vt l vi segment v offset 00000h 0000: 00010h 0001: 00020h 0002:
Phn chng chp ca 3 segment 0000,0001,0002

0FFFFh 1000Fh 1001Fh


Chuong 2 : T chc CPU 67

Gii thch
0000:0000 00000h

Gi nguyn phn segment, tng phn offset ln 1 thnh ra a ch lun l l 0000:0001 a ch vt l tng ng l 00001h Tng t vI a ch lun l l 0000:0002 ta c a ch vt l l 00002h Khi offset tng 1 n v th a ch vt l tng 1 a ch hoc l tng 1 byte. Nh vy c th xem n v ca offset l byte

Chuong 2 : T chc CPU

68

Lm li qu trnh trn nhng gi nguyn phn offset ch tng phn segment. 0001:0000 0002:0000 00010h 00020h

Khi segment tng 1 n v th a ch vt l tng 10h a ch hoc l tng 16 bytes n v ca segemnt l paragraph

Chuong 2 : T chc CPU

69

Ta thy segment 0000 nm u vng nh nhng segment 0001 bt u cch u vng nh ch c 16 bytes, segment 0002 bt u cch u vng nh 32 bytes.. Phn chng chp 3 segment 0000,0001,0002 trn hnh v l vng b nh m bt k nh no nm trong (a ch vt l t 00020h n 0FFFFh) u c th c a ch lun l tng ng trong c 3 segment.

Chuong 2 : T chc 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 nu vng b nh no cng c nhiu segment chng chp ln nhau th cc nh trong cng c nhiu a ch lun l.

Chuong 2 : T chc CPU

71

Mt nh c bao nhiu a ch lun l Mt nh c t nht 1 a ch lun l v nhiu nht l 65536/16 = 4096 a ch lun l

Chuong 2 : T chc 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 chc 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 chc 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 chc 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 chc 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 chc 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 chc 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 chc CPU

79

A CH LUN L V THANH GHI

tham kho n b nh trong chng trnh, VXL 8086 cho php s dng cc a ch lun l 1 cch trc tip hoc thng qua cc thanh ghi ca n. Thanh ghi on dng cha segment Thanh ghi tng qut dng cha a ch trong on offset tham kho n a ch lun l c segment trong thanh ghi DS, offset trong thanh ghi BX, ta vit DS:BX
Chuong 2 : T chc CPU 80

Ex : nu lc tham kho DS = 2000h BX = 12A9h th a ch lun l DS:BX chnh l tham kho n nh 2000:12A9

Chuong 2 : T chc CPU

81

Trong cch s dng a ch lun l thng qua cc thanh ghi c 1 s cp thanh ghi lun phi dng chung vi nhau 1 cch bt buc : CS:IP ly lnh (a ch lnh sp thi hnh) SS:SP a ch nh Stack SS:BP thng s trong Stack (dng trong chng trnh con) DS:SI a ch chui ngun ES:DI a ch chui ch

Chuong 2 : T chc CPU

82

Chng trnh m VXL 8086 thi hnh thng c 3 an : an chng trnh c a ch trong thanh ghi CS. an d liu c a ch trong thanh ghi DS. an stack c a ch trong thanh ghi SS.

Chuong 2 : T chc 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 chc 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 chc 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 chc 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 chc 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 chc 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 chc 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 chc 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 chc 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 chc 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 chc 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 chc 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 chc 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 chc CPU 96

Bus ISA-8 bits : a. chy tc ng h l 8 MHz truyn ti d liu ti a 8 MB/s. b. chy tc ng h l 4.77 MHz truyn ti d liu ti a 6MB/s. c. chy tc ng h l 4.77 MHz truyn ti d liu ti a 1MB/s. d. chy tc ng h l 4.77 MHz truyn ti d liu ti a 12MB/s.

Chuong 2 : T chc CPU

97

Bus ISA-16 bits : a. chy tc ng h l 8 liu ti a 8 MB/s. 12 MHz truyn ti d

b. chy tc ng h l 32 MHz truyn ti d liu ti a 12MB/s. c. chy tc ng h l 4.77 MHz truyn ti d liu ti a 12MB/s. d. chy tc ng h l 16MHz truyn ti d liu ti a 12MB/s.

Chuong 2 : T chc CPU

98

Bus PCI : a. truyn ti d liu ti a 528 MB/s. b. truyn ti d liu ti a 128MB/s. c. truyn ti d liu ti a 512MB/s. d. truyn ti d liu ti a 64MB/s.

Chuong 2 : T chc CPU

99

Dn u v Chipset hin c trn th trng l : a.AMD b.ALI c.Intel d.Mac

Chuong 2 : T chc CPU

100

H thng Bus l h thng xa l thng tin bn trong PC gip trao i: a.thng tin gia cc my tnh b.d liu gia cc thit b ngai vi c. d liu gia b VXL v cc thit b khc d. tt c u ng

Chuong 2 : T chc CPU

101

Mi hat ng ca my tnh t CPU n b nh RAM v nhng thit b I/O u phI thng qua s nI kt c gi chung l : a.Chun giao tip b.Bus c.BIOS d.CMOS

Chuong 2 : T chc CPU

102

BI TP
Bi 1 : Cho bit gi tr chui XY c lu tr trong MT dI dng s hex v dng s bin? Bi 2 : Cho bit gi tr h 10 ca cc s nguyn c du sau : a.10000000b MOV AH,7F MOV AX,1234 MOV BH,AL MOV BL,AH b.01111111b INT 20H Hy cho bit gi tr ca cc thanh ghi AX,BX ?
Chuong 2 : T chc CPU 103

Bi 3 : Cho on code sau :

BI TP
Bi 4: Cho on code sau : MOV AL,81 ADD AL, 0FE INT 20H Gi s cc s u l s c du. Gii thch kt qu cha trong thanh ghi AL khi on code trn c thc thi. S dng gi tr h 10 gii thch.

Chuong 2 : T chc CPU

104

BI TP
Bi 5: Gi s thanh ghi trong MT ca bn di 24 bits, cho bit gi tr ca s dng ln nht m thanh ghi ny c th cha 2 h 2 v h 16? Bi 6 : Bin I a ch sau thnh a ch tuyt i a. 0950:0100 b. 08F1:0200

Chuong 2 : T chc CPU

105

MAINBOARD

Chuong 2 : T chc CPU

106

MAINBOARD

Chuong 2 : T chc CPU

107

MAINBOARD

Chuong 2 : T chc CPU

108

Chuong 2 : T chc CPU

109

Chuong 2 : T chc CPU

110

MAINBOARD

Chuong 2 : T chc CPU

111

Chuong 2 : T chc 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
h n o b o g n o tr II C S c A a o a h n a h p h n g n a d a o tm tr Do y l b m e s s A g n a b h n tr g n h c et i v p a t n ye u l r t o H
4/4/2006 Chuong 3 Debug 1

Dang ng lenh nh cua Debug


<ma lenh nh > <thong so>
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 ng lenh cua Debug


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 nh cua Debug


A <Assemble> : cho phep viet t ban phm cac lenh nh ma may di dang ng gi nh. 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 nh A


Phai nhap lenh nh vao theo tng ng dong ng mot va ket thuc bang ng Enter. Ket thuc nhap nhan Enter dong ng trong. 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 nh 2 vung ng bo nh va liet ke cac o nh co 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 ng he 16 va ASCII.
Cach goi : D <khoang>

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

4/4/2006

Chuong 3 Debug

Lenh nh F (Fill)
Cu phap : F <khoang> ng> <danh sach> ch> Cong dung ng : lap ay tr vao vung ng nh ngay 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 nh F


Lap ay vung ng nh tai a ch offset 100h 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 nh D


anh nh vao lenh nh D e xem noi dung vung ng nh 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 ng e a d lieu byte vao bo nh ngay 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 nh E


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 ng : in ra 32 bytes ma may cua chng trnh trong bo nh ra man hnh di lenh nh gi 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 nh R (Register)
Cong dung ng : xem va sa noi dung thanh ghi. 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 nh N (Name)
Cong dung ng : tao tap tin can oc hay ghi trc khi dung ng lenh nh L hay W. Cu phap : - N <ten file> [ thong so] L [a ch]

4/4/2006

Chuong 3 Debug

17

Th du minh hoa lenh nh N


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 nh W (Write)

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 nh S (Search)
Cong dung ng : tm kiem tr trong 1 vung ng bo nh. Cu phap : - S <khoang> ng> <danh sach> ch> Giai thch : tm kiem tr co hien dien trong vung ng bo 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 nh M (Move)
Cong dung ng : chep noi dung vung ng nh en 1 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 nh I (Input)
Cong dung ng : nhap 1 byte t cong ng xuat nhap va hien ra man hnh. Cu phap : - I <a ch cong> ng> a ch cong ng la so he 16 toi a 4 ch so. Ex : - I 37E EC

4/4/2006

Chuong 3 Debug

26

Lenh nh O (Output)
Cong dung ng : xuat 1 byte ra cong ng xuat nhap. p.
Cu phap :- O<a ch cong> ng> <tr> a ch cong ng la so he 16 toi a 4 ch so.

Ex : - O 378 5E

4/4/2006

Chuong 3 Debug

27

Summary
Dung ng lenh nh D e xem noi dung vung ng nh tai a ch cua ROM BIOS F000:0000. Tng t xem noi dung vung ng nh RAM man hnh a ch B800:0000; bang ng vector ngat quang 0000:0000 Go vao may bang ng lenh nh A, oan chng trnh sau a 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 nh tren bang ng lenh nh U. Chu y quan sat phan ma may. y. Tm xem cac toan hang ng tc thi va cac a ch xuat hien au trong phan ma may cua lenh. nh. Phan ma may cua 2 cau lenh nh cuoi co g khac nhaukhi dung ng cac toan t WORD PTR va BYTE PTR.
4/4/2006 Chuong 3 Debug 29

Summary
Dung ng lenh nh E nhap vao oan van ban sau vao bo nh tai a ch 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 ng xuong ng dong ng co ma ASCCI la 0D va 0A).

4/4/2006

Chuong 3 Debug

30

B 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 chc 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 chc 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 chc Memory 3

Primary Memory
Cn c gi l b nh chnh hay b nh trung tm. Chia lm 2 loi : RAM v ROM

Chng 3 : T chc Memory

RAM
RAM (Random Access Memory) b nh truy xut ngu nhin.L ni lu gi cac chng trnh va d liu khi chy chng trnh. c im ca RAM : Cho phep c/ ghi d liu. D liu b mt khi mt ngun.

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 chc 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 loi : Dynamic v Static RAM Dynamic RAM : phi c lm ti trong vng di 1 ms nu khng s b mt ni dung. Static RAM : gi c gi tr khng cn phi lm ti. RAM tnh c tc cao, c tn l b nh CACHE nm trong CPU.
Chng 3 : T chc Memory 6

RAM

Chng 3 : T chc Memory

ROM
ROM (Read Only Memory) : b nh ch c. ROM BIOS cha phn mm cu hnh v chn on h thng, cc chng trnh con nhp/xut cp thp m DOS s dng. Cc chng trnh ny c m ho trong ROM v c gi l phn do (firmware).
Mt tnh nng quan trng ca ROM BIOS l kh nng pht hin s hin din ca phn cng mi trong MT v cu hnh li h iu hnh theo Driver thit b.

Chng 3 : T chc Memory

ROM(cont)
c im ca ROM: Ch cho php c khng cho php ghi. D liu vn tn ti khi khng c ngun.

Chng 3 : T chc Memory

Cac loai Rom


PROM (Programmable Read Only Memory) : Cho php user c th lp trnh v ghi vo ROM bng cch t. EPROM (Erasable Programmable Read Only Memmory) Cho php user vit ghi chng trnh v xa ghi li. Vic xa bng cch dng tia cc tm. EEPROM (Electrically Erasable Programmable Read Only Memory) b nh c th lp trnh bng xung in c bit
Chng 3 : T chc Memory 10

Secondary Memory
L b nh ph nm ngoi hp CPU. Floppy disk, Tapes, Compact discs l secondary Memory.

Chng 3 : T chc Memory

11

S lc v Cache
Cache cp 1 (Level 1-cache) : nm trong CPU, tc truy xut rt nhanh, theo tc ca CPU.
Cache cp 2 (Level 2-cache) : thng c dung lng 128K,256K l cache nm gia CPU v Ram, thng cu to bng Ram tnh (Static Ram), tc truy xut nhanh v khng cn thi gian lm ti d liu. Cache cp 3 (Level 3-cache) : chnh l vng nh DRAM dng lm vng m truy xut cho a cng v cc thit b ngoi vi. Tc truy xut cache cp 3 chnh l tc truy xut DRAM.

Chng 3 : T chc Memory

12

Cache (cont)
T chc ca Cache :lin quan n chin lc tr m v cch thc lu thng tin trong Cache. Loi lnh phi thi hnh : Cache cha c chng trnh v d liu, khi CPU truy xut m chng c sn th truy xut nhanh. Khi CPU cn truy xut b nh, cache s kim tra xem ci m CPU cn c trong cache cha. Dung lng cache : nh vy nu 1 tp lnh nm gn trong cache (vng lp chng hn) th thc thi rt nhanh.

Chng 3 : T chc Memory

13

Cu trc Cache
Cache c cu to thnh tng hng (cache lines) , 32 bit/hng cho 386, 128 bit/hng cho 486, 256 bit/hng cho Pentium. Mi hng c km theo 1 tag lu tr a ch bt u ca on b nh m thng tin c a vo cache. Nu l cache cp 2 (SRAM), a ch bt u ca on b nh chuyn data vo cache cn c lu trong 1 vng nh ring. Mt b iu khin cache (cache controller) s iu khin hot ng ca cache vi CPU v data vo/ra cache. Chnh Cache controller phn nh chin lc tr m ca cache. Vi cache cp 1, cache controller l 1 thnh phn ca CPU. Vi cache cp 2, cache controller nm trn Mainboard.
Chng 3 : T chc Memory 14

Hiu sut ca Cache


Cache dng lm vng m truy xut nn nu CPU truy xut data m c sn trong cache th thi gian truy xut nhanh hn nhiu. Hiu qu ca cache ngoi vic cho tc truy xut nhanh cn ph thuc vo Cache hit hoc Cache miss. Cache Hit : tc data c sn trong Cache. Cache Miss : tc data cha c sn trong cache. t l cache hit v cache miss ph thuc vo 3 yu t : t chc cache , loi lnh phi thi hnh v dung lng ca cache.

Chng 3 : T chc Memory

15

Hiu sut ca 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 chc 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 chc Memory 17

A Two Level Caching System

Chng 3 : T chc Memory

18

Cc chin lc tr m trong Cache


Cc chin lc tr m lin quan n tc v c ghi t CPU. C 2 loi : 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 on ni dung trong b nh vo cache. Khi CPU ghi ra b nh qui c : WTC : CPU ghi data ra vng m ghi (write buffer) ri b tip tc vic khc, cache s ly ni dung trong buffer ri chu trch nhim 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) ri t castoof, data chuyn sang b nh qui c.

Chng 3 : T chc 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 T chc Memory ROM

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 chc 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 chc 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 chc 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 chc 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 chc 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 H N N O O B B
Chng 3 : T chc 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 chc 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 chc 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 chc 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 chc Memory 30

Stack
BEFORE HIGH MEM AFTER SP
HIGH MEM

0006

0006
00A5 SP SP giam 1

LOW MEM

Chng 3 : T chc 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 chc 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 chc 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 chc 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 chc Memory

35

Cau hoi on tap


B nh Cache nm gia : 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 chc Memory

36

Cau hoi on tap


Theo quy c, ngI ta chia b nh thnh tng vng c nhng a ch c m t bng : a) s thp phn b) s thp lc phn c) s nh phn d) s bt phn
Chng 3 : T chc 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 nh phan c ban cua Assembly Nam c cau truc cua 1 CT Assembly. Biet viet 1 chng trnh Assembly. Biet cach ch dch, lien ket va thc thi 1 chng trnh 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 ng cung nh phan mem may tnh. Nam c cach ch phan cng ng MT lam viec vi he ieu hanh nh va hieu c bang ng cach ch nao 1 trnh ng ng dung ng giao tiep vi he ieu hanh. nh. Mot MT hay mot ho MT s dung ng 1 tap lenh nh ma may rieng cung nh 1 ngon ng Assembly rieng.

4/4/2006

Chuong 5 Nhap mon ASM

Mot chng trnh viet bang ng ngon ng Assembly muon MT thc hien c ta phai chuyen thanh nh ngon ng may. y. Chng trnh dung ng e dch 1 file viet bang ng Assembly 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 ch tot nhat e hoc phan cng ng MT va he ieu hanh. nh. V cac tien ch cua no . Co the nhung ng cac chng trnh con viet bang ng ASM vao trong cacch cchng trnh viet bang ng ngon ng cap cao .
4/4/2006 Chuong 5 Nhap mon ASM 4

Lenh nh may
La 1 chuoi nh phan co y ngha ac biet no ra lenh nh cho CPU thc hien tac vu.
Tac vu o co the la : di chuyen 1 so t v tr nh nay sang v tr nh khac. c. Cong ng 2 so hay so sanh nh 2 so.
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 nh may (cont)


Tap lenh nh may c nh ngha trc, c, khi CPU c san xuat va no ac trng cho kieu CPU . Ex : B5 05 la 1 lenh nh may viet dang ng so hex, dai 2 byte. Byte au B5 goi la Opcode Byte sau 05 goi la toan hang ng Operand
Y nghacu cu ale le n hB5 B5 05 05::che che pgia giatr tr5 5va va oreg regAL AL Y ngha a n h p o

4/4/2006

Chuong 5 Nhap mon ASM

Cach ch viet 1 chng trnh Assembly


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

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 nh cong file nguon.ASM, n.ASM, ta co cac file : File listing : file VB , cac dong ng co anh nh so th t ma. 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 ng kieu cau truc <= 64 K bo nh cho ma , 64K cho d lieu. u. .Stack 100h : danh nh 256 bytes cho stack cua chng trnh . .Data : anh nh dau phan oan d lieu o cac bien c lu tr. .Code : anh nh dau phan oan ma cha cac lenh nh phai thi hanh. nh. Proc : khai bao au 1 thu tuc, c, trong Ex nay ta ch co 1 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 nh dau ket thuc thu tuc 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 nh trong 1 oan.D n.D lieu trong 1 oan Ma lenh nh nhieu hn 1 oan.D n.D lieu trong 1 oan

COMPACT Ma lenh nh trong 1 oan. n. D lieu nhieu hn 1 oan LARGE Ma lenh nh nhieu hn 1 oan D lieu nhieu hn 1 oan,kho n,khong co mang ng nao > 64K HUGE Ma lenh nh nhieu hn 1 oan D lieu nhieu hn 1 oan, n, mang ng co the > 64K

4/4/2006

Chuong 5 Nhap mon ASM

16

Dang ng lenh nh

Chuthch thch Chu

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


Nha n te nbie bie n Nha n , ,te n n Te nthu thutu tu Te n cc
Ex : MOV CX , 0 LAP : MOV CX, 4 LIST DB 1,2,3,4

Male le n hda da n g Ma n h n g g nh g iinh

Register,o onh nh Register, Tr,ha ha n g Tr, n g

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 nh INT so hieu ngat c dung ng e goi 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] n] DB | DW |.... [tr khi tao] o] La mot ten ky hieu danh nh rieng cho 1 v tr trong bo nh ni lu tr d lieu. u. Offset cua bien la khoang ng cach ch t au phan oan en bien o. Ex : khai bao 1 danh sach ch aList a ch 100 vi 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 ng nh gom 50 bytes. db 4 dup (ABC) ;12 bytes ABCABCABCABC db 4096 dup (0) ; Vung ng em 4096 bytes tat ca bang ng 0

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 ng 1 ky so t 0 en 9. Neu ky 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))


00X X 0 X X 0 0 0 X a 000X h c h n g n u 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 ng nh. Rat co ch khi lam viec vi mang ng hay chuoi. i.

4/4/2006

Chuong 5 Nhap mon ASM

31

Toan t ?
Muon khai bao 1 bien hay 1 mang ng ma khong can khi tao tr ta dung ng toan t ?
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 ng .COM


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 nh IP=100h khi CT c nap 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 ng lenh. nh. Moi lenh nh phai viet tren 1 dong ng Lenh nh co the gom [ten] [toan t] [toan hang] ng] Cac ky t phai at trong dau hay DB dung ng e nh ngha bien kieu BYTE DW dung ng e nh ngha bien kieu WORD. Co 2 cach ch xuat nhap d lieu : lien lac trc tiep qua cong ng hay dung ng cac phuc vu ngat cua DOS va BIOS.
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 nh nao gay ra loi, giai 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 nh nao gay ra loi, giai 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 ng , in 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 ng phan t vao thanh ghi DL va xuat no ra 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 nh 2 bieu thc va cho tr la true (-1) neu ieu kien cua toan t thoa, a, ngc lai la false. 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, ng, tr

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 ng bo nh khac. 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 ng trc tiep bo nh khac. 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 ng c dung ng e tnh chieu dai 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 ng cua expression neu expr la 1 bien | toan hang ng bo nh th type co 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 ng (Operand)


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 ng (Operand)


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 ca ton hng c truy xut nm ngay trong thanh ghi ca CPU.

Ex : MOV AX,BX ; chuyn ni dung ca 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]

Np ni dung ca nh m a ch Offset lu trong SI v a ch on lu trong DS vo AX. EX2 : MOV

AX, [BP]

Np ni dung ca nh m a ch Offset lu trong BP v a ch on lu trong ES vo AX.

4/4/2006

Chuong 7 Cac phep dinh vi dia chi

17

NH V TRC TIP
a ch Offset ca nh cha d liu ton hng nm trc tip trong cu lnh cn a ch segment ngm nh cha trong DS. Ex : MOV BX, [1234] Np nI 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 ca ton hng c tnh l tng ca nI dung thanh ghi BX hoc BP v 1 dch. dch l 1 s nguyn m hoc dng. a ch an l on hin ti.

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 thanhghi ghitrong trongcu cu n g1 1nho nho mkho kho n g xua hie ntrong trongcu cu n g1 1 Ca ccthanh n g m n g ccxua tthie n n g ach chhie hie udu du n g. a u n g.
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 ng (tt)


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 ng 1 array co 5 phan t


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 ng 1 array co 5 phan t


-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 nh MOV


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 nh MOV khong lam anh nh hng ng en c. Khong the chuyen d lieu trc tiep gia 2 toan hang ng bo nh vi nhau, muon chuyen phai dung ng thanh ghi trung gian. Khong the chuyen 1 gia tr tc thi vao thanh ghi oan, n, muon chuyen phai dung ng thanh ghi trung gian. 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 nh MOV


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 nh MOV


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 NI 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 nh LEA (Load Effective Address)

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 nh XCHG (XCHANGE)


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 nh PUSH 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 nh POP

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 nh IN
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 ng DEBUG e hp dch va chay chng trnh sau : Chep 3 so nguyen kieu Word a ch 0120h vao a ch 0130h. Cho biet gia tr cua AX sau khi cac lenh nh sau c thc thi : 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 nh sau c thc thi :
.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 ng lap


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 nh nhay trong lap trnh ASM. Lenh nh JMP (Jump) : nhay khong ieu kien. n. Lenh nh LOOP : cho phep lap 1 cong viec vi 1 so lan nao o. Cac lenh nh so sanh nh va luan ly. Lenh nh lap co ieu kien. n. Lenh nh nhay co ieu kien. n. Bieu dien mo phong ng cau truc luan ly mc cao. Chng trnh con. Mot so chng trnh minh hoa. a.

Chuong 8 : Cau truc DK va Vong lap

S can thiet cua lenh nh nhay


cac chng trnh viet bang ng ngon ng cap cao th viec nhay (lenh nh GoTo) la ieu nen tranh nh nhng lap trnh he thong ng th ay la viec can thiet va la iem manh nh cua 1 chng trnh viet bang ng Assembly. Mot lenh CPU phai thc thi 1 oan lenh nh nhay nh 1 cho khac vi ni ma cac lenh nh ang c thc thi. 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 ng ieu kien nay ASM cung cap 2 lenh nh JMP va LOOP.
Chuong 8 : Cau truc DK va Vong lap 3

Lenh nh JMP (Jump)

Cong dung ng :Chuyen ieu khien khong ieu kie n . phap : JMP ch n. Cu
Nhay gan (NEAR) : 1 tac vu nhay trong cung ng 1 segment. Nhay xa (FAR) : 1 tac vu nhay sang segment khac. c.

Chuong 8 : Cau truc DK va Vong lap

Cac lenh nh chuyen ieu khien


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 NH LOOP
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 NH LUAN LY


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 nh AND
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 nh AND
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 NH OR
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 NH XOR
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 NH TEST
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 NH TEST


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 NH TEST(tt)


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 nh CMP
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 NH NHAY CO IEU KIEN


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 NH NHAY CO IEU KIEN


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 NH NHAY DA TREN KET QUA SO SANH NH CAC TOAN HANG NG KHONG DAU. 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 nh = 0 Nhay neu 2 toan hang ng bang ng nhau Nhay neu ket qua so sanh nh la khac nhau. Nhay neu 2 toan hang ng khac nhau.

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 NH NHAY DA TREN KET QUA SO SANH NH CAC TOAN HANG NG KHONG DAU (ctn) .

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 NH NHAY DA TREN KET QUA SO SANH NH CAC TOAN HANG NG CO DAU .

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 NH NHAY DA TREN CAC C .

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 nh dch va quay bit


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.
v tr o a v a c e s 0 bit msb r t n a o i c g , t h g : mo ng c n a o h n t a a o Ho t cua t a h n i a C F c o a ben ph v a c o n a u c

Chuong 8 : Cau truc DK va Vong lap

26

Cac lenh nh dch va quay bit


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 nh dch phai SHR


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 nh dch phai SHR


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) hau n ng at a B ho t at e p 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 gi Macro Van e truyen thong so trong Macro. Macro long ng nhau. S dung ng Macro e goi chng trnh con. Cac toan t Macro. Th vien Macro So sanh nh viec dung ng Macro vi Procedure Mot so Macro mau.
CHUONG 9 MACRO 1

NH NGHA NGHA MACRO MACRO NH


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

LM QUEN VI MACRO
Khi ta c nhiu on code ging nhau, chng ta c th dng macro thay th, ging nh ta dng define trong C. Th d chng ta thay th an lnh sau bng macro in du xung dng.

MOV DL,13 ; v u dng MOV AH,2 INT 21H MOV DL,10 ; xung dng mi MOV AH,2 INT 21H

CHUONG 9 MACRO

Thay v phi vit li 6 dng lnh trn, ta c th to 1 macro c tn @Newline thay th on code ny :
@NewLine Macro MOV DL,13 MOV AH,2 INT 21H MOV DL,10 MOV AH,2 INT 21H ENDM Sau , bt k ch no cn xung dng, ta ch cn gi macro @NewLine. @NewLine

CHUONG 9 MACRO

MACRO (tt) (tt) MACRO


Khi hp dch noi dung nhom lenh nh nay ma ta a gan cho macro se c thay the vao nhng ni co ten macro trc khi CT c hp dch thanh nh file OBJ. Ex1 : nhieu khi ta phai viet lai nhieu lan oan lenh nh xuat ky t trong DL ra man hnh. MOV AH, 2 INT 21H Thay v phai viet ca 1 cap lenh nh tren moi khi can 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 NG CUA MACRO CO THE XEM TRONG FILE.LIST. 3 DIRECTIVE BIEN DCH SAU SE QUYET NH M RONG NG MACRO NH THE NAO. O.
.SALL (SUPRESS ALL) PHAN M RONG NG MACRO KHONG C IN. S DUNG NG KHI MACRO LN HAY MACRO C THAM CHIEU NHIEU LAN TRONG CT. .XALL CH NHNG DONG NG MACRO TAO MA NGUON MI C IN RA.TH DU CAC DONG NG CHU THCH C BO QUA. AY LA TUY CHON DEFAULT. .LALL (LIST ALL) TOAN BO CAC DONG NG TRONG MACRO C IN RA TR NHNG CHU THCH BAT AU BANG NG 2 DAU ;;
CHUONG 9 MACRO 6

NH NGHA NGHA MACRO MACRO NH


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 TRUYN 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, N1, BIEN2 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 TRUYN THNG S Th d : macro @Printstr Vit chng trnh in 2 chui 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 thy on 1 v on 2 gn ging nhau c th to 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 CHUONG MACRO 9 MACRO

13

MACRO LONG NG NHAU


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 cun g 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
I : O 0 G 1 , S A A I T G 20 A , E P * E T R EA P 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 NH GIA MACRO & THU 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 NG THAI THONG TIN KHI C GOI TOC O NHANH HN. KCH THC : KCH THC CT DAI HN
CHUONG 9 MACRO 22

CAC C LE LEN NH LAP P TRONG TRONG NH H LA CA MACRO MACRO


REP <BIEU THC> C> : ... ENDM TAC DUNG NG : LAP LAI CAC KHOI LENH NH TRONG MACRO 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 C LE LEN NH LAP P TRONG TRONG NH H LA CA MACRO MACRO


IRP <THONG SO>, >, <DANH SACH CH CAC TR TRONG NGOAC NHON> N> : ... ENDM

TAC DUNG NG : LAP LAI KHOI LENH NH TUY THEO DANH SACH CH TR. SO LAN LAP CHNH LA SO TR TRONG DANH SACH CH MOI LAN LAP LAI SE THAY <THONG SO> BANG NG 1 TR TRONG DANH SACH CH VA SE LAN LT LAY HET CAC TR TRONG DANH SACH. CH.
EX : PROCTABLE LABEL WORD IRP PROCNAME, <MOVEUP, MOVDOWN,MOVLEFT,MOVRGHT> DW PROCNAME ENDM
CHUONG 9 MACRO 24

CAC C LE LEN NH LAP P TRONG TRONG NH H LA CA MACRO MACRO


TUY NHIEN CACH CH KHAI BAO NAY RM RA HN LA 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 TP MACRO
Bi 1 : 1. Vit mt MACRO tnh USCLN ca 2 bin s M v N. Thut 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 :Vit macro chuyen tu chuoi thanh so chua trong ax ; in : DI =offset chuoi ; out : AX =so da doi

Bi 4 : Vit MACRO xut s hecxa cha trong AL ra mn hnh ; INPUT : AL cha s cn xut; OUTPUT: nothing

Bi 5 : Vit Macro in s hecxa cha trong BL ra dng binary ;Input: BL cha s cn in ;Output: Nothing

CHUONG 9 MACRO

27

Chng 9 STACK & CHNG TRNH CON


Gii thiu STACK Mt s ng dng ca STACK Cu trc ca 1 CTC C ch lm vic ca 1 CTC Vn truyn tham s Chng trnh gm nhiu MODULE

Chng 10: CHNG TRNH CON

GiI THIU STACK

STACK : l mt cu trc d liu mt chiu. Cc phn t ct vo v ly ra theo phng thc LIFO (Last In First Out). Mi chng trnh phi dnh ra mt khi b nh lm stack bng khai bo STACK. V d : .STACK 100H ; Xin cp pht 256 bytes lm stack

L 1 phn ca b nh, c t chc lu tr d liu theo c ch vo sau ra trc (LIFO).

Chng 10: CHNG TRNH CON

LP TRNH VI STACK
Trong lp trnh c khi cn truy xut n cc phn t trong STACK nhng khng c thay i trt t ca STACK. thc hin iu ny ta dng thm thanh ghi con tr BP : tr BP v nh Stack : MOV BP,SP thay i gi tr ca BP truy xut n cc phn t trong Stack : [BP+2]

Chng 10: CHNG TRNH CON

Phn t c a vo STACK ln u tin gi l y STACK, phn t cui cng c a vo STACK c gi l nh STACK. Khi thm mt phn t vo STACK ta thm t nh, khi ly mt phn t ra khi STACK ta cng ly ra t nh a ch ca nh nh STCAK lun lun b thay i.
SS dng lu a ch segemnt ca on b nh dng lm STACK SP lu a ch ca nh nh STACK (tr ti 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 phn t vo Stack ta dng lnh PUSH ly 1 phn t ra t Stack ta dng lnh POP

PUSH ngun : a ngun vo nh STACK PUSHF : ct ni dung thanh ghi c vo STACK ngun l mt thanh ghi 16 bit hay mt t nh

Chng 10: CHNG TRNH CON

POP v POPF : dng ly mt phn t ra khi STACK. C php : POP ch : a ngun vo nh STACK POPF : ct ni dung nh STACK vo thanh ghi c Ch : - y ch l mt thanh ghi 16 bit (tr thanh ghi IP) hay mt t nh Cc lnh PUSH, PUSHF, POP v POPF khng nh hng ti cc c

Chng 10: CHNG TRNH CON

MT S NG DNG CA STACK
Khc phc cc hn ch ca lnh MOV Ex : MOV CS,DS ; sai PUSH DS POP CS ; ng
Truyn tham s cho cc chng trnh con Lu tm thi gi tr thanh ghi hay bin.

Chng 10: CHNG TRNH CON

TH D 2
Nhp vo 1 chui, in chui o ngc Ex : nhp : Cong nghe thong tin xut : int gnoht ehgn gnoC

Chng 10: CHNG TRNH CON

V d minh ha : dng STACK trong thut ton o ngc th t nh sau : ; Nhp chui k t Khi ng b m c mt k t WHILE k t <> 13 DO Ct k t vo STACK Tng bin m c mt k t END_WHILE ; Hin th o ngc FOR bin m ln DO Ly mt k t t STACK Hin th n END_FOR Chng 10: CHNG TRNH CON

10

GiI THIU CHNG TRNH CON

CTC l 1 nhm cc lnh c gp li di 1 ci tn m ta c th gi t nhiu ni khc nhau trong chng trnh thay v phi vit li cc nhm lnh ny ti ni cn n chng.
Li ch

CTC lm cho cu trc logic ca ca CT d kim sot hn, d tm sai st hn v c th ti s dng m tit kim c cng sc v thi gian lp trnh.
Chng 10: CHNG TRNH CON 11

CU TRC CA CTCON
TNCTC PROC [NEAR|FAR] CC LNH CA CTC RET TNCTC ENDP

Chng 10: CHNG TRNH CON

12

MINH HA

Vit chng trnh nhp 1 s n (n nguyn dng v <9). Tnh giai tha ca n v xut ra mn hnh di dng s hex (gii hn kt qu 16 bit). Vit chng trnh tm s hon thin (gii hn 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 VIC CA CTC
C ch gi v thc hin CTC trong ASM cng ging nh ngn ng cp cao.
Khi gp lnh gi CTC th : . a ch ca lnh ngay sau lnh gi CTC s c a vo STACK. . a ch ca CTC c gi s c np vo thanh ghi IP. . Quyn iu khin ca CT s c chuyn giao cho CTC. . CTC s thc hin cc lnh ca n v khi gp RET, n s ly a ch ct trn STACK ra v np li thanh ghi IP thc thi lnh k tip.
Chng 10: CHNG TRNH CON 15

PUBLIC EXTRN GLOBAL thun li trong vic dch, lin kt chng trnh a file, Assembler cung cp cc iu khin Public, Extrn v Global.
PUBLIC

Ch cho Assembler bit nhn (label) no nm trong module ny c php s dng cc module khc. C php : PUBLIC tn nhn khai bo nhn

TN CTC TN BiN TN I TRC NHN

Chng 10: CHNG TRNH CON

16

EXTRN

Bo cho Assembler bit nhng nhn c khai bo PUBLIC cc module khc c s dng trong module ny m khng cn phi khai bo li.

C php : EXTRN Tn nhn : Kiu

BYTE WORD DWORD

DATAPTR NEAR FAR

PROC
Chng 10: CHNG TRNH CON 17

GLOBAL

THAY TH PUBLIC V EXTRN.

Vit chng trnh nm trn 2 file (2 module) vi s phn cng nh sau : Module ca chng trnh chnh (Main.ASM) c nhim v xc nh Offset ca 2 chui k t v gi CTC ni 2 chui ny v cho hin kt qu ra mn hnh. Module CTC (Sub.ASM) lm nhim v ni 2 chui v a vo b nh.

Chng 10: CHNG TRNH CON

18

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


PrintNum10 PROC ; s nguyn N nm trong AX PUSH BX CX DX MOV CX, 0 ; so lan push (so ky tu) laysodu: XOR DX, DX ; cho DX = 0 trc khi chia MOV BX, 10 DIV BX ; s d trong DX, phn nguyn trong AX PUSH DX ; lu phn d vo stack INC CX CMP AX, 0 ; ht cha? JNZ laysodu ; cha ht, ly s d tip MOV AH, 2 INSO: POP DX ADD DL, '0' INT 21H LOOP inso POP DX CX BX RET ENDP PrintNum10 Chng 10: CHNG TRNH CON

19

CHNG TRNH A FILE

Cho php nhiu user cng tham gia gii quyt 1 chng trnh ln. Sa module no th ch cn dch li module . Mi module ch gii quyt 1 vn d tm sai st.

Chng 10: CHNG TRNH CON

20

VN TRUYN THAM S
CHUYN GI TR CA THAM S T CT GI CT C GI
C 3 cch truyn tham s Thng qua thanh ghi Thng qua bin ton cc Thng qua STACK
Chng 10: CHNG TRNH CON 21

TRUYN THAM S THNG QUA THANH GHI


D N GiN THNG C S DNG I VI NHNG CT THUN TY ASM T 1 GI TR NO VO THANH GHI CTCHNH V SAU CTC S S DNG GI TR NY TRONG THANH GHI.
Chng 10: CHNG TRNH CON 22

TRUYN THAM S THNG QUA BiN GLOBAL


KHAI BO BiN TON CC. DNG N CHUYN CC GI TR GiA CT GI V CT C GI.
CCH NY THNG C DNG : TRONG 1 CT ViT THUN TY BNG ASM ViT HN HP GiA ASM V 1 NGN NG CP CAO
Chng 10: CHNG TRNH CON 23

TRUYN THAM S QUA STACK


PHC TP HN. DNG RT NHIU KHI ViT CHNG TRNH HN HP GiA ASM V NGN NG CP CAO.

Chng 10: CHNG TRNH CON

24

CHUYN GI TR T CTCON LN CT CHNH.


CNG THNG QUA CC THANH GHI,B NH V STACK.
NU GI TR TR V L 8 BIT HOC 16 BIT (CHO KHAI BO CHAR, INT, CON TR GN) TH GI TR PHI C T TRONG THANH GHI AX CA HM TRC KHI QUAY V CTCHNH.

Chng 10: CHNG TRNH CON

25

CHUYN GI TR T CTCON LN CT CHNH.


NU GI TR QUAY LI L 32 BIT (CHO KHAI BO LONG, CON TR XA) TH GI TR PHI C T TRONG THANH GHI DX,AX CA HM TRC KHI QUAY V CT CHNH.

Chng 10: CHNG TRNH CON

26

NEAR | FAR bo cho lnh RET ly a ch quay v chng trnh gi n trong STACK.

NEAR : ly a ch OFFSET (16BIT) trong STACK v gn vo thanh ghi IP. FAR : ly a ch OFFSET v SEGMENT trong STACK np vo thanh ghi CS:IP.

Chng 10: CHNG TRNH CON

27

VN BO V CC THANH GHI
CN C QUAN TM TRONG QU TRNH LP TRNH ASM. RT D XY RA CC TRNG HP LM MT GI TR CA M CT CHNH T VO THANH GHI S DNG SAU NAY KHI TA GI CTCON.

Chng 10: CHNG TRNH CON

28

CC V D MINH HA
NHP VO 1 S H HEX. IN RA S NHP VI YU CU SAU : ViT CTCON NHP S ViT CTCON XUT S CTCHNH GI 2 CTCON TRN.

Chng 10: CHNG TRNH CON

29

LUYN TP LP TRNH C10


Bi 1 : Vit chng trnh nhp 1 s nguyn n (n<9). Tnh giai tha ca n v xut kt qu ra mn hnh di dng s Hex (gii hn 16 bits). Bi 2 :Vit chng trnh nhap vao 1 chui ky tu. Hay in ra man hinh chui ky tu vua nhap theo th t o (trong mi t o tng k t).

Bi 3 :Vit chng trnh kim tra mt biu thc i s c cha cc du ngoc (nh (), [] v {}) l hp l hay khng hp l . V d : (a + [b { c * ( d e ) } ] + f) l hp l nhng (a + [b { c * ( d e )] } + f) khng hp l. HD : dng ngn xp PUSH cc du ngoc tri ( (, {, [ ) vo Stack

Chng 10: CHNG TRNH CON

30

Bi 4 : Vit chng trnh nhp vo 1 k t, cho bit k t va nhp thuc loi gi ? k t, k s ,ton t ton hc hay k t khc. Nu k t l phm Escape th thot chng trnh.

Chng 10: CHNG TRNH CON

31

Bi 6 :Vit chng trnh nhp 1 chui k t. Xut k t di dng vit hoa k t u ca tng t, cc k t cn li l ch thng Ex : Nhp : ngo phuoc nguyen Xut : Ngo Phuoc Nguyen Nhp : VU tHanh hIEn Xut : Vu Thanh Hien Bi 7 : Vit chng trnh tm s hon thin (gii hn 2 ch s). Xut cc s hon thin t s ln nht n s nh.

Chng 10: CHNG TRNH CON

32

LP 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 nh chc nang ieu khien man hnh cua INT 10h cua ROM BIOS vi chc nang cua INT 21h. Biet cach ch lap trnh quan ly man hnh trong ASM. Biet cach ch lap trnh x ly phm va 1 so ng ng dung ng cua no.

Chuoung 10 Lap trinh xu ly man hinh

MN HNH

C TRNG CA MN HNH

h n H nh. iem h n a c a m c g t PHN GII i on nha d r t o h m h c e c i g h n o n o s h e : h i h i t t i a l el ia gi x g 1 i n p n a h g om o pha p n g o n . l t r o t o . s c ) a o la 80 m e 4 h h h * t n o 0 l a 4 e 6 g x i n u p o d (th h x v tr o lng s g n a l a d v a v g don


Chuoung 10 Lap trinh xu ly man hinh 2

Chuoung 10 Lap trinh xu ly man hinh

CARD MN HNH phn gii Cung cp cc ch MH

S im ngang x s im dc x s mu (s bit mu)

CH HA

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

RAM MN HNH

Dung lng

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 nh 1 so chc nang do INT 21h cua Dos cung cap, 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 ng tren Mianboard nh : Monochrome ch hien th text n sac; c; CGA (Color Graphic Adaptor) cho phep hien th text va o hoa; a; EGA (Enhanced Graphics Adaptor) hien th text va o 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

THUC 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 ng vi thuoc tnh rieng cua ky t nay chang ng han nh ao mau, u, nhap nhay, y, chieu sang, ng, gach ch di ... 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 ng chanh nhap nhay 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 NG HIEN TH MAN HNH Vung ng hien th cua man hnh n sac a ch B000h trong Bios. Vung ng hien th video o hoa mau c ban bt au t v tr B800h cua Bios.

Chuoung 10 Lap trinh xu ly man hinh

11

THUOC TNH MAN HNH Ca nh chua nh Cac thuo thuoc t tnh chuan cu cua ma man h 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)


Ba nh na Bat ky ky 1 thuo thuoc t tnh nao cung co co the the them thuo nh nha ng ca ch cho bit 7 co thuoc t tnh nhap nha nhay ba bang cach co tr la du la 1. Th Th du normal blinking 87H, bright linking 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).
5,4 , 6 Bit en n au m :
ch u a m
Bit 3

0: , 1 , 2 Bit

g n a s : o
13

Chuoung 10 Lap trinh xu ly man hinh

BANG NG MAU (COLOR PALETTE)


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 ng dung ng thng ng dung ng INT 10h e tm Video mode hien hanh. nh. Ex: 1 ng ng dung ng thng ng muon the hien o hoa vi o phan giai cao (640x200) phai kiem tra chac chan rang ng MT hien ang s dung ng ang dung ng Card man hnh CGA,VGA hoac EGA.

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 ng va 80 cot 25 dong ng va 40 cot. 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, u, ta co the ghi vao 1 trang nay trong khi hien th trang khac hoac chuyen oi qua lai v tr gia cac trang. Cac trang c anh nh so t 0 en 7.
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 HA

Chuoung 10 Lap trinh xu ly man hinh

21

Truy xut thit b xut chun (mn hnh)

. 1. Chn ch hin th : Chc nng AH = 0, ngt 10H Vo : AH = 0, AL = kiu V d : thit lp ch vn bn mu XOR AH, AH MOV AL, 3 ; ch vn bn mu 80 x 25 INT 10H

Chuoung 10 Lap trinh xu ly man hinh

22

THAY I SIZE CON TR MN HNH

Chc nng AH = 1, ngt 10H Vo : AH = 1, CH = dng qut u, CL = dng qut cui V d : thit lp con tr vi kch thc ln nht MOV AH, 1 MOV CH, 0 ; dng bt u MOV CL, 13 ; dng kt thc INT 10H

Chuoung 10 Lap trinh xu ly man hinh

23

DCH CHUYN CON TR

Chc nng AH = 2, ngt 10H Vo : AH = 2, DH = dng mi (0-24), DL = ct mi (0-79) BH = s hiu trang V d : Di chuyn con tr n gia mn hnh 80 x 25 ca trang 0 MOV AH, 2 XOR BH, BH ; trang 0 MOV DX, 0C27H ; dng 12 ct 39 INT 10H

Chuoung 10 Lap trinh xu ly man hinh

24

LY V TR KCH THUC CON TR HiN HNH

Chc nng AH = 3, ngt 10H Vo : AH = 3, BH = s hiu trang Ra : DH = dng, DL = ct, CH = dng qut u, CL = dng qut cui V d : Di chuyn con tr ln mt dng nu n khng dng trn cng MOV AH, 3 XOR BH, BH ; trang 0 INT 10H OR DH, DH ; dng trn cng DH = 0 ? JZ exit MOV AH, 2 ; chc nng dch con tr DEC DH ; gim mt dng INT 10H exit :
Chuoung 10 Lap trinh xu ly man hinh 25

CUN MN HNH

Chc nng AH = 6, ngt 10H Vo : AH = 6, AL = s dng cun (= 0 l ton mn hnh) Ra : BH = thuc tnh cc dng trng , CH, CL = dng, ct gc tri trn DH, DL = dng, ct gc phi di ca ca s
V d : Xo en mn hnh 80 x 25 MOV AH, 6 XOR AL, AL XOR CX, CX MOV DX, 184FH ; gc phi di MOV BH, 7 INT 10H
Chuoung 10 Lap trinh xu ly man hinh 26

V d tng hp : Vit chng trnh thc hin nh sau: . Lp ch hin thi mu 80 x 25 . Xo ca s ti gc tri trn : ct 26 dng 8 v gc phi di ti ct 52 dng 16 thnh mu . . Sau hin th k t A mu cam ti 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 ng xoa man hnh. 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 ng con tro man hnh c tao ra bang ng cach ch ch nh so dong ng quet. t. Viec thay oi dang ng con tro chnh la thay oi so lng ng va v tr dong ng quet nay. y. Man hnh monochrome dung ng 13 dong ng (t 0 0Ch) Man hnh CGA,VGA dung ng 8 dong ng (t 0-7).
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 ng mac nh 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 nh vao 1 bien trc khi thay oi 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 TRON G 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

LP TRNH X L PHM
1. c phm nhn : Chc nng AH = 0, ngt 16H Vo : AH = 0 Ra : AL = m ASCII nu mt phm ASCII c nhn = 0 nu phm iu khin c nhn AH = m scan ca phm nhn

Chuoung 10 Lap trinh xu ly man hinh

49

LP TRNH X L PHM
BN 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

LP TRNH X L PHM
Kim tra trng thi cc phm Ctrl, Alt, Shift :
Chng ta c th c trc tip t a ch 0:0417 hoc ly trong AL thng qua hm AH = 2 ngt 16H. Cch c trc tip XOR AX, AX MOV ES, AX MOV AL, ES:[417H] TEST AL, 01H ; kim tra phm Shift JNZ SHIFT_DANGNHAN TEST AL, 04H ; kim tra phm Ctrl JNZ CTRL_DANGNHAN TEST AL, 08H ; Kim tra phm Alt JNZ ALT_DANGNHAN

Chuoung 10 Lap trinh xu ly man hinh

56

3. Kim tra v thit lp trng thi cc phm Caps/Num/Scroll Lock tng t nhng vi m scan khc Scroll = 10H, Num = 20H, Cap = 40H. 4. t li cc trng thi n Caps/Num/Scroll Lock, ta ch cn t li gi tr a ch 0:0417. Vd, bt n Caps Lock v i trng thi n Num Lock ta s lm nh sau: XOR AX, AX MOV ES, AX ; ES = 0 MOV AL, ES:[417H] ; c trng thi n OR AL, 40H ; bt 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. Vit chng trnh : a. Xo mn hnh, to kch thc to nht cho con tr v di chuyn n n gc tri trn b. Nu nhn phm Home : chuyn con tr n gc tri trn, End : chuyn n gc tri di, Page Dn : chuyn con tr n gc phi di, Esc : kt thc chng trnh. 2. Dch chuyn con tr n gc tri trn mn hnh nu phm F1 c nhn, gc tri di nu phm F2 c nhn. Chng trnh s b qua cc k t thng thng. 3. Vit chng trnh son tho vn bn nh sau : a. Xo mn hnh, nh v con tr ti u dng 12 b. ngi s dng nh vo cc k t. Con tr dch chuyn i sau khi hin th k t nu n khng ti l phi ca mn hnh c. Phm mi tn tri , phi, ln , xung dch con tr tng ng d. Phm Insert : chn k t, Delete : Xo mt k t , Esc : kt 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 bng 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

LP TRNH X L A&FILE
C BN V LU TR TRN A T. MT NG DNG HIN TH SECTOR MT NG DNG HIN TH CLUSTER. CC CHC NNG V FILE MC H THNG. QUN L A V TH MC. TRUY XUT A VI INT 13H CA ROMBIOS BI TP GiI THIU FILE V LP TRNH X L FILE

4/4/2006

LAP TRINH XU LY DIA TU

C BN V LU TR TRN A T
Ngn ng ASM vt tri hn cc ngn ng khc v kh nng x l a. Ta xem xt vic lu tr thng tin trn a theo 2 mc : mc phn cng/BIOS v mc phn mm/DOS. mc phn cng :lu tr thng tin lin quan n cch d liu c lu tr 1 cch vt l nh th no trn a t? mc phn mm : vic lu tr c qun l bi tin ch qun l File ca 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 LUN L & VT L CA A T


mc vt l : a c t chc thnh cc Tracks, Cylinders, Sectors. Kh nng lu tr ca a c m t bng 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 NIM TRACK, CYLINDER, SECTOR


Tracks : l cc vng trn ng tm c to ra trn b mt a. Cylinder : tp cc tracks cng bn knh trn 1 chng a. Mt a c bao nhiu track th s c by nhiu Cylinder. Sector : l 1 an ca track (cung t) c kh nng lu tr 512 bytes d liu. Cc sector c nh s bt u t 1 trn mi track trn 1 a tn ti nhiu sector cng s hiu.
4/4/2006 LAP TRINH XU LY DIA TU 7

4/4/2006

LAP TRINH XU LY DIA TU

mc lun l : a c t chc thnh cc Clusters, cc files m DOS s dng cp pht vng lu tr cho d liu cn lu tr. Cluster : l 1 nhm gm 2,4,6 cc sector k nhau. chnh l n v cp pht vng lu tr cho d liu (file). Cc cluster c nh s bt u t 0. Nu d liu cn lu tr ch 1 byte th h iu hnh cng cp pht 1 cluster. s bytes/cluster hay sector/cluster ty thuc vo tng loi a.
4/4/2006 LAP TRINH XU LY DIA TU 9

TNG QUAN GIA SECTOR VT L V SECTOR LOGIC TRN A MM


MT 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 mc gc Th mc gc D liu D liu

4/4/2006

LAP TRINH XU LY DIA TU

10

BAD SECTOR Trn b mt a c th tn ti cc sector m HH khng th ghi d liu vo hoc khng th c d liu t . Cc sector ny gi l Bad Sector. Lm sao bit sector no l bad sector

Kim tra gi tr ca cc phn t (entry) trong bng FAT, phn t no cha gi tr (F)FF7H th cluster tng ng b Bad

4/4/2006

LAP TRINH XU LY DIA TU

11

BNG FAT FILE ALLOCATION TABLE DOS qun l cc File nh vo 1 bng gi l bng FAT. Trong bng FAT c ghi cluster bt u ca File ny u ? V a cn bao nhiu Clusters trng cha cp pht. t chc lun l ca a c m t nh hnh sau : Bng Boot Bng Root data FAT2 record FAT1 directory

4/4/2006

LAP TRINH XU LY DIA TU

12

Th d v bng FAT
a mm 3.5 360K th : Sector 0 : boot sector Sector 1-4 : bng FAT Sector 5 11 : th mc gc Sector 12-719 : vng cha data

4/4/2006

LAP TRINH XU LY DIA TU

13

BOOT RECORD Cn c gi l Boot Sector. a cng gi l Master boot, l Sector u tin khi a c format. cha 1 chng trnh nh cho bit dng lu tr trn a v tn h thng MT, kim tra xem c cc file h thng IO.SYS, MSDOS.SYS, COMMAND.COM hay khng ?

nu c th np chng vo b nh (gi l chng trnh mi ca HH)


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

BOOT RECORD (tt)


Ta vt l : C=0, H=0, R =1 (C0H0R1) tc ti sector u tin ca track u tin, mt trn ca a u tin trong a cng. Trong Master boot c cha bng PARTITION TABLE cho bit tm a ch vt l (dung lng) ca a lun l.
Master boot khng thuc Partition no
4/4/2006 LAP TRINH XU LY DIA TU 15

BOOT RECORD (tt)


BOOT RECORD c ROM BIOS np vo a ch 0000:7C00H. Nu my khng b Virus th lnh u tin ca chng trnh BOOT l JMP 7C3EH, ngha l nhy n chng trnh np mi. chng trnh np mi (Bootstrap Loader) np thnh phn ct li ca DOS ln RAM trong qu trnh khi ng MT.

4/4/2006

LAP TRINH XU LY DIA TU

16

THNG TIN TRONG MASTER BOOT


BYTEBU S BYTES THNG TIN

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

3 8 2 1 2 1

ch th nhy v ni cha CT np mi Tn nh sn xut v h iu hnh Bytes/sector Sector/block (mi block >=1 sector) S lng Sectors khng dng n k t sector 0. S lng bng FAT

4/4/2006

LAP TRINH XU LY DIA TU

17

THNG TIN TRONG MASTER BOOT


BYTE BU 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 ca th mc gc a. Tng s sector ca a logic ny. Byte m t S sector cho 1 bng FAT S Sectors trong 1 track. S lng u c S lng sector n Tng s sectors
LAP TRINH XU LY DIA TU 18

THNG TIN TRONG MASTER BOOT


BYTE BU 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 bng FORMAT, ta tnh c a ch ca bng FAT1, FAT2, Th mc gc a, a ch bt u ca vng d liu.

4/4/2006

LAP TRINH XU LY DIA TU

20

BNG FAT
Bng cha cc danh sch lin kt cc clusters. Mi danh sch trong bng cho DOS bit rng cc clusters no cp pht, cc clusters no cha dng. ty theo a c th c 1 hay 2 bng FAT, bng FAT2 d phng. c 2 loi bng FAT : bng c Entry 12 bit cho a mm. bng c Entry 16 bit cho a cng.

4/4/2006

LAP TRINH XU LY DIA TU

21

64 Bytes ca Partiton table c chia lm 4, mi phn 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 bt u Partittion starting cylinder M t

PARTITON TABLE

4/4/2006

LAP TRINH XU LY DIA TU

22

PARTION TABLE Bng FDISK ca HH ta c th chia khng gian lu tr ca a cng thnh cc phn khc nhau gi l Partition. DOS cho php to ra 3 loi 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

PARTITON TABLE

1 cho a nh 12 bit FAT Entry 4 cho a ln 16 bit FAT Entry 5 Extended Dos 05H 06H 07H 08H, 0BH 0Ch,0FH
4/4/2006

Ending ni kt thc Partition Ending Cylinder Ending Sector Starting sector for partition Partition length in sectors
LAP TRINH XU LY DIA TU 24

Mt s th d
kim tra Partition Active c sector u tin ca a cng lu vo bin. kim tra offset 00 ca 4 phn t Partition trong Partition Table MOV CX, 4 MOV SI, 1BEH PACTIVE : MOV AL, MBOOT [SI] CMP AL, 80H
4/4/2006

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


LAP TRINH XU LY DIA TU 25

Mt s th d
c ni dung ca BootSector ghi vo bin dem c sector u tin ca a cng lu vo buffer. tm partition active (phn t trong bng partition c offset 80h) c byte ti offset 01h v word ti offset 02h ca phn t partition tng ng trn (head, sector, cylinder) xc nh s hiu bt u ca partition active boot sector ca a cng. c ni dung ca sector c c trn lu vo buffer.
4/4/2006 LAP TRINH XU LY DIA TU 26

Mt 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 cng MOV ES, CS ; tr v u vng buffer lu LEA BX, BUFFER INT 13H
4/4/2006 LAP TRINH XU LY DIA TU 27

TH MC GC (ROOT DIRECTORY)
L danh sch tt c cc Files c trn a, cc th mc cp 1 c. Mi phn t (32 bytes) trong bng th mc s cha thng tin v tn file hoc l th mc, kch thc, thuc tnh, cluster bt u ca file ny hoc cluster bt u ca th mc th cp (th mc con). mi bng th mc cha ti a 112 entry, mi entry l 32 bytes.
4/4/2006 LAP TRINH XU LY DIA TU 28

TH MC GC (ROOT DIRECTORY)
Offset 00H 08H 0BH 0CH 16H 18H 1Ah 1CH Ni dung tn chnh ca File phn m rng ca tn file thuc tnh ca File d tr gi thay i thng tin cui cng cluster u tin ca File Kch thc File
LAP TRINH XU LY DIA TU

Kch thc 8 bytes 3 bytes 1 byte 10 bytes 2 bytes 2 bytes 4bytes


29

ngy thay i thng tin cui cng 2 bytes

4/4/2006

BYTE THUC TNH x x a d v s h r

x : khng s dng a : thuc tnh lu tr (Archive) d : thuc tnh th mc con (Sub Directory) v : thuc tnh nhn a (Volume) s : thuc tnh h thng (System) h : thuc tnh n (Hidden) r : thuc tnh ch c (Read Only)
4/4/2006 LAP TRINH XU LY DIA TU 30

VNG LU TR
l vng dnh cho vic lu tr d liu. nh vy vic lu tr d liu trn a c cu trc l 1 danh sch lin kt m bng th mc gc l u ca danh sch lin kt. u mi cluster lun lun cha a ch ca cluster sau n cho bit phn cn li ca file l cluster no. Nu gi tr ny l 0 th cluster ny l cluster cui cng.
4/4/2006 LAP TRINH XU LY DIA TU 31

S 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 LOI 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 LNG A


Cng thc tnh dung lng a : Dung lng a (bytes) = s byte/1 sector * s sector/1 track * s track/ 1 mt a * s mt a.

4/4/2006

LAP TRINH XU LY DIA TU

34

MT S HM THAO TC VI FILE V A INT 21H


HM 36H INT 21H : Ly s bytes cn trng trn a
Input : AH = 36H DL = O63 a (0 : mc nh, 1 A . Output : C li AX = 0FFFFH Khng li : AX = s sector / cluster BX = s cluster cn trng DX = tng s cluster trn a CX = s bytes/cluster
4/4/2006 LAP TRINH XU LY DIA TU 35

BI TP

Vit chng trnh to th mc vi yu cu tn th mc (c th bao gm tn a, ng dn v tn th mc) c nhp t bn phm, cho php sa sai khi g nhm tn th mc.

4/4/2006

LAP TRINH XU LY DIA TU

36

Vit chng trnh ghi d liu vo file vi yu cu : Tn file nhp t bn phm D liu ghi vo file cng g t bn phm v kt thc vic nhp bng phm CTRL+Z

Vit chng trnh gp ni dung 1 file vo cui 1 file khc.

4/4/2006

LAP TRINH XU LY DIA TU

37

LAP TRNH X LY FILE


GiI THIU FILE CC HM CHC NNG X L FILE CA INT 21H CA DOS

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 nhp khng hp l. FH a khng hp l 10h ang tm cch xa th mc hin thi
4/4/2006 LAP TRINH XU LY DIA TU 47

CAC LOI KHI M FILE


MA LOI 11H Khng cng thit 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 li (2,4,512)

4/4/2006

LAP TRINH XU LY DIA TU

49

M FILE HM 3CH INT 21H


Truc khi s dng 1 file, ta phi m n. to 1 file mi hay ghi li 1 file c, ta s dng tn file v thuc tnh ca File. DOS tr v th file

4/4/2006

LAP TRINH XU LY DIA TU

50

M FILE HM 3CH INT 21H


AH = 3CH DS:DX a ch ca chui ASCII (chui tn File kt thc bng byte 0) CL = thuc tnh File Nu thnh cng, AX = th File Nu CF c set th c li, m li cha trong AX (li 3,4,5)

4/4/2006

LAP TRINH XU LY DIA TU

51

Vit code m 1 File mi vi thuc 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 SN HM 3Dh INT 21H OPEN FILE

AH = 3DH DS:DX = a ch ca chui ASCII (chui tn File kt thc bng byte 0) AL = m truy cp 0 : m c 1 : m ghi 2 : m c v ghi Thnh cng, AX = Fhandle C li. M li cha trong AX (2,4,5,12)

4/4/2006

LAP TRINH XU LY DIA TU

53

CHC NANG M FILE A CO SN 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 NG FILE


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 HA LP TRNH FILE

Vit chng trnh cho php User g vo tn File (c th c km theo tn a, th mc cha fiel), chng trnh s c v hin th ni 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

LP TRNH FILE 1. Vit chng trnh chp mt file ngun n mt file ch trong thay ch thng bng ch hoa. 2. Vit chng trnh c 2 file v hin th chng bn cnh nhau trn mn hnh. Ch c chc nng dng tng trang mn hnh nu file qu di. 3. Vit chng trnh ghp ni dung 1 file vo cui 1 file khc c. 4. Vit chng trnh to 1 th mc, tn th mc c g t bn phm (tn th mc c th bao gm tn a, ng dn).

4/4/2006

LAP TRINH XU LY DIA TU

65

Chng 13 :LP TRNH X L MNG & CHUI

GiI THIU C HNG DF CC LNH THIT LP V XA C HNG CC LNH THAO TC TRN CHUI MT S TH D MINH HA TH ViN LIN QUAN N CHUI

Chng 14 Lp trnh XL Chui

GiI THIU CHUI

Trong ASM 8086 khi nim chui b nh hay chui l 1 mng cc byte hay word. Cc lnh thao tc vi chui cng c thit k cho cc thao tc vi mng.

Chng 14 Lp trnh XL Chui

C hng DF C nh hng (Direction Flag) : xc nh hng cho cc thao tc chui.

DF=0 chui c x l theo chiu tng tc a ch vng nh cha chui tng dn. (chui c x l t tri qua phi).

DF=1 chui c x l theo chiu tng tc a ch vng nh cha chui gim dn. (chui c x l t phi qua tri).

Trong DEBUG DF=0 k hiu l UP DF=1 k hiu l DN


Chng 14 Lp trnh XL Chui 3

LNH LIN QUAN N C HNG

CLD (CLEAR DIRECTION FLAG) XA C HNG DF =0 STD (SET DIRECTION FLAG) THIT LP C HNG DF=1

Chng 14 Lp trnh XL Chui

Chng 14 Lp trnh XL Chui

Trc khi s dng cc lnh x l chui, ta phi xc nh hng x l chui bng cch set hay clear c hng. Lnh t c hng : CLD : xa c hng, chui c x l t tri phi STD : t c hng, chui c x l t phi tri

CON TR CHUI Cha a ch chui ngun

DS:SI ES:DI

Cha a ch chui ch
Chng 14 Lp trnh XL Chui 6

CC THAO TC X L CHUI

NHP CHUI

Input : AH = 0AH, ngt 21H DS:DX = a ch ca buffer, trong buffer[0] l kch thc ti a ca chui, buffer[1] s l kch thc d liu nhp. Output : Chui buffer cha ni dung nhp vo t buffer[2] tr i

Yu cu xem thm cc chc nng AH = 3FH v AH = 40H ca ngt 21H.

Chng 14 Lp trnh XL Chui

Chng 14 Lp trnh XL Chui

NHP CHUI

Chng 14 Lp trnh XL Chui

NHP CHUI

Ta cng c th dng hm 1 INT 21h c 1 k t t bn phm nhp 1 chui bng cch dng vng lp v lu chui bng lnh STOSB.

STOSB (STORE STRING BYTE)

CHUYN NI DUNG AL N BYTE C TR BI ES:DI. SAU KHI LNH C THC HiN DI TNG 1 NU DF=0 HoC GiM 1 NU DF =1

LU CHUI CC BYTES

Chng 14 Lp trnh XL Chui

10

NHP CHUI

Ta cng c th dng hm 1 Int 21h c 1 k t t bn phm nhp 1 chui bng cch dng vng lp v lu chui bng lnh STOSW.

STOSW (STORE STRING WORD)

CHUYN NI DUNG AX N WORD C TR BI ES:DI. SAU KHI LNH C THC HiN DI TNG HAY GiM 2 TY VO DF.

LU CHUI CC WORD

Chng 14 Lp trnh XL Chui

11

TH D

.MODEL SMALL .STACK 100H .DATA STRING1 DB 'HELLO' .CODE MAIN PROC MOV AX,@DATA MOV ES,AX LEA DI, STRING1 ; khi to ES CLD ; x l t tri phi MOV AL,'A' STOSB ; AL cha k t cn lu STOSB ; lu k t A MOV AH,4CH ; lu k t th 2 INT 21H MAIN ENDP END MAIN Chng 14 Lp trnh XL Chui

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

Gii thch : DI cha offset ca chui BX cha s k t nhp 8H m ASCII ca Backspace khng lu n vo chui tng s k t ln 1 ng li con tr DI gim s k t nhp c

Chng 14 Lp trnh XL Chui

13

NHP XUT CHUI

HiN TH CHUI

AH = 09, ngt 21H Vo : DX = a ch offset ca chui. Chui phi kt thc bng k t $. Ch : thay v dng lnh MOV OFFSET ta c th dng lnh LEA.

Chng 14 Lp trnh XL Chui

14

CC THAO TC X L CHUI

For counter Do
HiN TH CHUI

Np chui cn hin th vo AL Chuyn vo DL Hin th k t EndFor

Np 1 chui

Chng 14 Lp trnh XL Chui

15

LODSB (LOAD STRING BYTE)

NP 1 CHUI CC BYTES

CHUYN BYTE TI A CH DS:SI SI TNG 1 NU DF=0 SI GiM 1 NU DF =1

AL

Chng 14 Lp trnh XL Chui

16

TH D

STRING1 DB ABC MOV AX,@DATA MOV DS,AX LEA SI, STRING1 CLD LODSB LODSB .

NP BYTE TH 1 V TH 2

AL

Chng 14 Lp trnh XL Chui

17

LODSW (LOAD STRING WORD)

NP 1 CHUI CC WORD

CHUYN WORD TI A CH DS:SI AX SI TNG HAY GiM TY TRNG THI DF

Chng 14 Lp trnh XL Chui

18

TH D

Hin th chui nhp 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 Lp trnh XL Chui

19

CHNG TRNH HAN CHNH Vit chng trnh nhp 1 chui k t ti a 80 k t, hin th 15 k t ca chui nhp 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 Lp trnh XL Chui

20

CC THAO TC X L CHUI

Chuyn mt BYTE : MOVSB

chuyn ni dung ca byte c nh bi DS:SI n byte c ch bi ES: DI. Sau SI v DI t ng tng ln 1 nu c DF = 0 hay gim 1 nu DF = 1.

MOVSB ch chuyn 1 byte. Vy c chui ta lm th no ?

Chng 14 Lp trnh XL Chui

21

DF
0

Chng 14 Lp trnh XL Chui

22

MOVSW

Chuyn mt chui cc word (2 bytes)

Sau khi chuyn 1 word ca chui c SI v DI cng tng ln 2 nu DF=0 hoc cng gim i 2 nu DF=1

DS:SI tr n chui ngun ES:DI tr n chui ch

Chng 14 Lp trnh XL Chui

23

LODSB (Load String Byte)

Chuyn byte ch bi DS:SI AL tng SI ln 1 nu DF=0 gim SI xung 1 nu DF=1

Chng 14 Lp trnh XL Chui

24

DF DS:SI DS:SI 0

3A
LODSB

3A AL
Chng 14 Lp trnh XL Chui 25

Chng 14 Lp trnh XL Chui

26

STOSB (LU CHUI BYTE)

Chng 14 Lp trnh XL Chui

27

STOSW (LU CHUI WORD)

Chng 14 Lp trnh XL Chui

28

Chng 14 Lp trnh XL Chui

29

Chng 14 Lp trnh XL Chui

30

Chng 14 Lp trnh XL Chui

31

Chng 14 Lp trnh XL Chui

32

Chng 14 Lp trnh XL Chui

33

REP

Khi to CX vi s byte cn chuyn

Sau thc hin lnh REP MOVSB

Sau mi lnh MOVSB, CX gim 1 cho n khi n =0 ht chui.


Chng 14 Lp trnh XL Chui 34

TH D MINH HA

.DATA STRING1 DB HELLO STRING2 DB 5 DUP(?) .. CLD LEA SI, STRING1 LEA DI, STRING2 MOV CX, 5 REP MOVSB

Bi tp : Vit on chng trnh chp chui STRING1 th d trc vo chui STRING2 nhng theo th t ngc li.

Chng 14 Lp trnh XL Chui

35

TH D MINH HA

Cho mng sau ARR DW 10,20,40,50,60,? Vit cc lnh chn 30 vo gia 20 v 40 ( gi s rng DS v ES cha a ch on d liu)

10,20, ,40,50,60

Di 40,50,60 ra sau 1 v tr

30

Sau chn 30 vo
Chng 14 Lp trnh XL Chui 36

STD LEA SI, ARR+8H LEA DI, ARR+AH MOV CX, 3 REP MOVSW MOV WORD PTR[DI],30

Chng 14 Lp trnh XL Chui

37

MNG 1 CHIU

Mt dy cc phn t c cng kiu d liu, c cng 1 tn gi.

Khai bo

MKT DB MNB Dw

abcdef ; mng k t 10h,20h,30h,40h,50h,60h ; mng s

ArrA DB 100 DUP(0) ; khai bo mng c 100 phn t c gi tr khi to bng 0.

Chng 14 Lp trnh XL Chui

38

Chng 14 Lp trnh XL Chui

39

Chng 14 Lp trnh XL Chui

40

BI TP
Bi 1 : Vit chng trnh nhp 1 s t 1-12, in ra tn thng tng ng. Bi 2 : Vit chng trnh nhp 1 s t 1-7, in ra tn th tng ng.

Chng 14 Lp trnh XL Chui

41

MT S BI TP MINH HA LP TRNH X L CHUI

Nhp 1 chui di ti a 255 k t t bn phm. Cho php dng phm BackSpace sa khi nhp sai v kt thc nhp khi g phm Enter.

Hng dn : Dng hm 0AH INT 21H nhp chui DS:DX a ch ca buffer m lu chui. Byte 0 : s byte ti a c th nhp. Byte 1 : cha gi tr 0 Byte 2 tr i : trng (lu cc k t s nhp) nhp 1 chui k t vo Buffer m ta khai bo nh sau : .DATA BUFFERN DB 80,0,80 DUP(?)

Chng 14 Lp trnh XL Chui

42

B1. Vit chng trnh nhp vo 1 t, sau in tng k t trong t theo chiu dc. Th d Nhp CONG Xut : C O N G

B2. Vit chng trnh nhp vo 1 chui, sau i tt c chui thnh ch hoa v in chui ra mn hnh dng k.

B3.Vit chng trnh nhp hai chui k t , kim tra xem chui th hai c xut hin trong chui th nht hay khng. V d : Nhp chui th nht : computer information Nhp chui th hai : compute Xut: Chui th hai c xut hin trong chui th nht.

Chng 14 Lp trnh XL Chui

43

B4. Vit chng trnh nhp 1 chui k t vit hoa cc k t nguyn m, vit thng cc k t ph m. V d : Nhp chui : aBcdE Xut chui: AbCdE B5. Vit chng trnh nhp vo 2 chui k t s1, s2 v 1 s nguyn dng n. Chn chui s2 vo chui s1 v tr k t th n trong chui s1 . V d : Nhp chui s1 : abcde Nhp chui s2 : fgh Nhp n = 3 Xut kt qu : abcfghde B6. Vit chng trnh nhp vo t bn phm 1 chui v tnh s ln xut hin ca cc nguyn m (a,e,i,o,u, y), cac phu am, cac khoang trang, trong chui tng ng. V d : Nhp chui : dai hoc khoa hoc tu nhien thanh pho ho chi minh Xut : S ln xut hin ca cc nguyn m l : 14 , phu am la: 24, khoang trang la: 9
Chng 14 Lp trnh XL Chui 44

B7. Vit chng trnh nhp vo t bn phm 1 chui gm cc k t trong bng ch ci. m xem trong chui c bao nhiu t. V d : Nhp chui : hO Chi mINh Xut : chui gm c 3 t

B8. Vit chng trnh nhp vo t bn phm 4 s . Xut ra mn hnh 4 s theo th t tng dn . V d : Nhp : 14 7 26 11 Xut : 7 11 14 26 B9. Vit chng trnh nhp vo t bn phm 4 s v sau xut s ln nht v nh nht ra mn hnh. V d : Nhp : 13 21 1 49 Xut : S ln nht : 49 S nh nht : 1

Chng 14 Lp trnh XL Chui

45

Chng 14 Lp trnh XL Chui

46

You might also like