huong dan su dung emu8086
TRANSCRIPT
Gi¸o tr×nh thùc hµnh Vi xö lý
1
Sö dông phÇn mÒm EMU 8086 viÕt ch¬ng tr×nh
cho Vi xö lý 80x86
I. Môc tiªu bµi häc
BiÕt ®îc mét sè phÇn mÒm lËp tr×nh hîp ng÷, sö dông thµnh th¹o phÇn mÒm
EMU 8086 ®Ó so¹n th¶o, hîp dÞch, söa lçi vµ m« pháng cho VXL 80x86.
- VËn dông lµm c¸c vÝ dô, bµi tËp cho vi xö lý trªn EMU 8086
II. Néi dung bµi häc
1. Híng dÉn sö dông phÇn mÒm EMU 8086.
1.1 Híng dÉn cµi ®Æt phÇn mÒm EMU 8086
- Nh¸y ®óp chuét vµo File cã tªn lµ Setup.exe cã trong bé cµi EMU 8086. Mét
cöa sæ hiÖn lªn th«ng b¸o chµo mõng b¹n ®Õn víi ch¬ng tr×nh m« pháng cho vi
xö lý vµ b¸o cho b¹n lµ ch¬ng tr×nh ®ang chuÈn bÞ cµi ®Æt, ®Ó tiÕp tôc b¹n chon
Next
H×nh 1 Cöa sæ chµo mõng cña phÇn mÒm cµi ®Æt EMU 8086
- TiÕp theo phÇn mÒm ®a ra th«ng b¸o yªu cÇu ngêi sö dông ®äc kü tríc khi
tiÕn hµnh cµi ®Æt tiÕp, ®Ó tiÕp tôc b¹n chän Next
Gi¸o tr×nh thùc hµnh Vi xö lý
2
H×nh 2 C¸c th«ng tin sö dông phÇn mÒm
- Hép tho¹i tiÕp theo th«ng b¸o cho ngêi cµi ®Æt thiÕt lËp ®êng dÉn cho th
môc mµ ch¬ng tr×nh sÏ cµi ®Æt ra, b¹n nªn ®Ó mÆc ®Þnh vµ chän Next.
H×nh 3 Th«ng b¸o lùa chän ®êng dÉn cµi ®Æt
- Hép tho¹i kÕ tiÕp b¸o ch¬ng tr×nh ®· s½n sµng cµi ®Æt, b¹n tiÕp tôc chän Install
H×nh 4 C¸c th«ng tin cµi ®Æt
- Khi ®ã ch¬ng tr×nh sÏ tiÕn hµnh cµi ®Æt lªn m¸y b¹n.
Gi¸o tr×nh thùc hµnh Vi xö lý
3
H×nh 5 TiÕn tr×nh cµi ®Æt
- Sau khi cµi ®Æt xong ch¬ng tr×nh hiÖn lªn hép tho¹i th«ng b¸o qu¸ tr×nh cµi ®Æt
®· hoµn tÊt, ®Ó kÕt thóc chän Finish.
H×nh 6 Th«ng b¸o kÕt thóc qu¸ tr×nh cµi ®Æt
- B¾t ®Çu sö dông ch¬ng tr×nh chän: Start/Program/Emu8086/emu8086
khi ®ã ch¬ng tr×nh hiÖn lªn hép tho¹i
H×nh 7 Yªu cÇu cËp nhËt phÇn mÒm
§Ó tiÕp tôc chän Later
- §¨ng ký b¶n quyÒn phÇn mÒm chän About trªn thanh c«ng cô, khi ®ã ch¬ng
tr×nh hiÖn lªn hép tho¹i
Gi¸o tr×nh thùc hµnh Vi xö lý
4
H×nh 8 Th«ng tin b¶n quyÒn phÇn mÒm
- §Ó nhËp CD key b¹n nh¸y chuét vµo ‚Click here to enter the registration
key...‛ lóc nµy ch¬ng tr×nh ®a ra hép tho¹i víi hai dßng ®Ó nhËp tªn ngêi sö
dông vµ m· b¶n quyÒn.
- Khi ®¨ng ký hoµn tÊt ch¬ng tr×nh ®a lªn hép tho¹i cho biÕt phÇn mÒm ®·
®îc ®¨ng ký còng nh phiªn b¶n cña phÇn mÒm.
1.2. Sö dông phÇn mÒm EMU 8086
1.2.1. Khëi ®éng ch¬ng tr×nh vµ c¸c menu cña ch¬ng tr×nh.
- Khëi ®éng ch¬ng tr×nh chän tõ biÓu tîng gäi t¾t trªn mµn h×nh hoÆc tõ
Start/Programs/EMU8086/EMU8086, khi ®ã ch¬ng tr×nh hiÖn lªn hép tho¹i cho
phÐp lùa chän nh sau.
H×nh 9 C¸c tïy chän lµm viÖc víi EMU 8086
Gi¸o tr×nh thùc hµnh Vi xö lý
5
C¸c menu chÝnh cña ch¬ng tr×nh.
- Menu File:
+ New : cho phÐp më bµi míi d¹ng *.COM, *.EXE, d¹ng Bin vµ d¹ng Boot.
+ Examples : cho phÐp më c¸c vÝ dô cã s½n cña ch¬ng tr×nh
+ Open : cho phÐp më c¸c bµi tËp ®· ®îc ghi vµo trong m¸y hay trªn ®Üa.
+ Save : cho phÐp ghi l¹i ch¬ng tr×nh hiÖn t¹i ®ang lµm
+ Save as : cho phÐp ghi l¹i ch¬ng tr×nh ®ang lµm víi tªn kh¸c hoÆc ®êng dÉn
kh¸c ®i.
+ Export to HTML : cho phÐp b¹n xuÊt file cña ch¬ng tr×nh ®ang lµm thµnh file
cã ®u«i HTML.
- Menu Edit:
+ Undo: phôc håi l¹i mét lÖnh mµ b¹n võa thao t¸c
+ Redo: phôc håi l¹i mét lÖnh võa thao t¸c vÒ phÝa tríc
Gi¸o tr×nh thùc hµnh Vi xö lý
6
+ Cut: xo¸ mét ®o¹n ch¬ng tr×nh ®îc b«i ®en
+ Copy: sao chÐp mét ®o¹n ch¬ng tr×nh ®îc b«i ®en
+ Paste: d¸n l¹i phÇn võa thùc hiÖn lÖnh copy hay lÖnh cut
+ Select all: lùa chän toµn bé ch¬ng tr×nh (®¸nh dÊu)
+ Find: t×m kiÕm ký tù hay ®o¹n v¨n b¶n trong ch¬ng tr×nh
+ Find next: t×m kiÕm c¸c ký tù tiÕp theo tõ vÞ trÝ con trá hiÖn hµnh
+ Replace: t×m kiÕm mét hay nhiÒu ký tù vµ thay thÕ nã bëi ký tù míi
+ Go to line: ®a con trá tíi dßng ®îc nhËp tõ bµn phÝm
Ngoµi ra trong tap menu nµy cßn mét sè tÝnh n¨ng kh¸c.
- Menu Bookmark: ®¸nh dÊu c¸c ®o¹n ch¬ng tr×nh ®ang viÕt.
- Menu Assembler: chøa c¸c tÝnh n¨ng sau
+ Compile: hîp dÞch ch¬ng tr×nh.
+ Compile and load in the emulator: hîp dÞch ch¬ng tr×nh vµ n¹p file ch¹y cña
ch¬ng tr×nh vµo vïng m« pháng.
+ Set output directory: ®Æt ®êng dÉn cho ®Çu ra.
Gi¸o tr×nh thùc hµnh Vi xö lý
7
- Menu Emulator:
+ Show emulator : cho phÐp quan s¸t cña sæ m« pháng cña ch¬ng tr×nh
+ Asssemble and load in the emulator: hîp dÞch ch¬ng tr×nh vµ t¶i ch¬ng tr×nh
vµo vïng m« pháng
- Menu math: cho phÐp thùc hiÖn mét sè phÐp to¸n sè häc
+ Multi base calculator: cho phÐp quan s¸t kÕt qu¶ cña qu¸ tr×nh m« pháng díi
d¹ng c¸c hÖ ®Õm.
+ Base convertor : chuyÓn ®æi c¸c hÖ ®Õm nh hÖ thËp ph©n, nhÞ ph©n, hexa.
- Menu ASSCII codes: Cho phÐp quan s¸t m· ASSCII t¬ng øng cña c¸c ký
tù trªn bµn phÝm m¸y tÝnh vµ c¸c ký tù ®Æc biÖt kh¸c. B¹n cã thÓ quan s¸t m· cña
ký tù díi d¹ng sè Hexa hay thËp ph©n b»ng c¸ch nh¸y chuét ra mµn h×nh ®Ó
thay ®æi.
D¹ng Hexa:
Gi¸o tr×nh thùc hµnh Vi xö lý
8
- Menu Help:
Trî gióp vÒ c¸ch sö dông ch¬ng tr×nh, tËp lÖnh 8086, c¸c ng¾t vµ mét sè bµi tËp
mÉu.
b. C¸c thanh c«ng cô cña ch¬ng tr×nh.
+ New: më bµi míi
+ Open: më bµi ®· cã
+ Examples: më c¸c bµi vÝ dô cã s½n cña ch¬ng tr×nh.
+ Save: ghi l¹i bµi ®ang lµm.
+ Compile: hîp dÞch ch¬ng tr×nh
+ Emulate: chuyÓn ch¬ng tr×nh sang chÕ ®é m« pháng
+ Calculator: quan s¸t kÕt qu¶ díi d¹ng c¸c hÖ ®Õm kh¸c nhau
+ Convertor: chuyÓn ®æi c¸c hÖ ®Õm
+ Option: tuú chän c¸c tÝnh n¨ng øng dông cña ch¬ng tr×nh
+ Help: trî gióp
+ About : cung cÊp c¸c th«ng tin c¬ b¶n vÒ phÇn mÒm EMU 8086.
1.2.2. So¹n th¶o ch¬ng tr×nh
Ch¬ng tr×nh cho vi xö lý 8086 ta cã thÓ viÕt díi hai d¹ng khung ch¬ng
tr×nh ®ã lµ khung ch¬ng tr×nh d¹ng COM vµ khung ch¬ng tr×nh d¹ng EXE. V×
vËy khi b¾t ®Çu vµo viÕt ch¬ng tr×nh cho bÊt kú mét øng dông nµo ph¶i lùa chän
khung ch¬ng tr×nh. Nh¾c l¹i lµ viÖc lùa chän khung ch¬ng tr×nh phô thuéc vµo
dung lîng, quy m« (®é lín) cña ch¬ng tr×nh. NÕu viÕt ch¬ng tr×nh cho vi xö
lý sö dông mét sè phÇn mÒm kh¸c th× ph¶i ta khai b¸o khung cho ch¬ng tr×nh,
phÇn mÒm EMU 8086 ®· t¹o kÕt cÊu cã s½n øng víi c¸c khung ch¬ng tr×nh nµy.
Gi¸o tr×nh thùc hµnh Vi xö lý
9
+ Chän khung ch¬ng tr×nh d¹ng COM (cho c¸c øng dông nhá). Chän më
bµi míi vµ chän vµo tïy chän COM.
Khi ®ã ch¬ng tr×nh sÏ cho ta khung cña ch¬ng tr×nh d¹ng COM nh sau:
ViÕt néi dung ch¬ng tr×nh chÝnh vµo vÞ trÝ ®îc b«i ®en ‚Add your code here‛
+ Chän khung ch¬ng tr×nh d¹ng EXE (cho c¸c øng dông tõ nhá tíi lín).
Chän më bµi míi vµ chän vµo tïy chän EXE.
Gi¸o tr×nh thùc hµnh Vi xö lý
10
Ch¬ng tr×nh më ra mét file míi cã giao diÖn nh sau:
ViÕt néi dung ch¬ng tr×nh chÝnh vµo vÞ trÝ ®îc b«i ®en ‚Add your code here‛.
Sau khi ®· cã ®îc lùa chän vÒ cÊu tróc khung cña ch¬ng tr×nh hîp ng÷
cÇn lµm cho øng dông ta sÏ tiÕn hµnh so¹n th¶o ch¬ng tr×nh cho VXL:
Gi¸o tr×nh thùc hµnh Vi xö lý
11
Khi tiÕn hµnh so¹n th¶o ch¬ng tr×nh cÇn theo qui íc cña lËp tr×nh hîp ng÷ vÒ
cÊu tróc cña dßng lÖnh, tªn nh·n, lÖnh, to¸n h¹ng, chó thÝch. Ch¬ng tr×nh chÝnh,
ch¬ng tr×nh con ph¶i viÕt ®óng cÊu tróc.
Lu ý: ViÖc so¹n th¶o ch¬ng tr×nh cã thÓ viÕt hoa hoÆc viÕt thêng nhng nªn
thèng nhÊt mét c¸ch viÕt trªn mét bµi, kh«ng nªn sö dông ph«ng tiÕng ViÖt trong
lóc so¹n th¶o. Nªn ph©n biÖt gi÷a ch¬ng tr×nh chÝnh vµ ch¬ng tr×nh con (b»ng
c¸c chó thÝch, g¹ch nèi, ...) ®Ó dÔ cho viÖc quan s¸t vµ söa lçi.
Tríc khi tiÕn hµnh so¹n th¶o nªn ghi l¹i ch¬ng tr×nh ®Ó tr¸nh c¸c rñi ro
do mÊt ®iÖn, treo m¸y. ViÖc ghi l¹i b»ng c¸ch chän Save trªn menu hay trªn
thanh c«ng cô. MÆc ®Þnh ®êng dÉn cña ch¬ng tr×nh lµ
C:\EMU8086\Mysource.
Lu ý: kh«ng nªn ®Æt tªn file dµi qu¸ 8 ký tù, kh«ng ®îc cã dÊu chÊm, dÊu g¹ch
gi÷a c¸c ký tù. §©y lµ qui íc cña ch¬ng tr×nh hîp dÞch hîp ng÷.
1.2.3. DÞch vµ liªn kÕt ch¬ng tr×nh
+ Hîp dÞch ch¬ng tr×nh:
§Ó tiÕn hµnh hîp dÞch, trong Menu Assembler chän compile trªn thanh c«ng cô
cña ch¬ng tr×nh. Khi ®ã ch¬ng tr×nh ®a ra hép tho¹i yªu cÇu ghi tªn file ch¹y
(.exe hoÆc .com) mµ tr×nh hîp dÞch sÏ t¹o ra.
Chän ®êng dÉn vµ ®¸nh tªn cho øng dông muèn t¹o ra (cã thÓ ®Ó ®êng dÉn
mÆc ®Þnh cña ch¬ng tr×nh vµ tªn trïng víi tªn mµ tríc ®ã ®· ®Æt cho file
nguån).
Gi¸o tr×nh thùc hµnh Vi xö lý
12
NÕu ch¬ng tr×nh kh«ng cã lçi vÒ có ph¸p (lçi ®¸nh m¸y, sai cÊu tróc dßng lÖnh)
th× m¸y tÝnh sÏ ®a ra th«ng b¸o qu¸ tr×nh hîp dÞch thµnh c«ng vµ dung lîng
ch¬ng tr×nh ®îc t¹o ra.
+ Söa lçi : lËp tr×nh viªn thêng m¾c ph¶i hai d¹ng lçi c¬ b¶n ®ã lµ lçi gi¶i thuËt
vµ lçi có ph¸p.
§èi víi lçi có ph¸p th× nguyªn nh©n cña viÖc m¾c c¸c lçi nµy lµ do ®¸nh
m¸y, sai cÊu tróc c©u lÖnh, sai chó thÝch, sai cÊu tróc ch¬ng tr×nh, v.v. M¾c ph¶i
lçi nµy, khi hîp dÞch ch¬ng tr×nh m¸y tÝnh sÏ b¸o lçi vµ dùa vµo th«ng b¸o lçi
sÏ biÕt nguyªn nh©n vµ vÞ trÝ lçi.
VÝ dô mét ch¬ng tr×nh viÕt sai có ph¸p, khi hîp dÞch ch¬ng tr×nh m¸y tÝnh ®a
ra th«ng b¸o:
Th«ng b¸o qu¸ tr×nh hîp dÞch thµnh c«ng
Gi¸o tr×nh thùc hµnh Vi xö lý
13
M¸y ®a ra th«ng b¸o lçi ë dßng thø 15 vµ lçi dßng lÖnh lµ: ‚move ax,data‛. Dùa
trªn th«ng b¸o lçi nµy cã thÓ ph¸n ®o¸n dßng lÖnh ®îc nhËp sai m· lÖnh. §Ó
söa lçi nµy, nh¸y ®óp vµo th«ng b¸o lçi ®ã, lóc nµy ch¬ng tr×nh sÏ ®¸nh dÊu vÖt
®en vµo vÞ trÝ cña dßng lÖnh lçi. Sau khi söa xong ph¶i tiÕn hµnh hîp dÞch l¹i
tríc khi cã thÓ ch¹y ch¬ng tr×nh hay m« pháng ch¬ng tr×nh.
+ §èi víi lçi gi¶i thuËt: Víi lçi nµy m¸y tÝnh kh«ng b¸o lçi, hiÖn tîng
khi m¾c ph¶i lçi nµy lµ ch¬ng tr×nh kh«ng ch¹y hoÆc ch¹y kh«ng ®óng yªu cÇu
mong muèn. Nguyªn nh©n cña lçi nµy thêng do sai gi¶i thuËt ch¬ng tr×nh, sai
Gi¸o tr×nh thùc hµnh Vi xö lý
14
cÊu tróc ch¬ng tr×nh. §Ó t×m vµ söa lçi nµy cÇn ch¹y tõng bíc vµ quan s¸t kÕt
qu¶ thùc hiÖn tõng lÖnh.
1.2.4. M« pháng vµ ch¹y ch¬ng tr×nh
§Ó m« pháng b¹n cã thÓ chän ngay c«ng cô RUN cña ch¬ng tr×nh khi
tiÕn hµnh hîp dÞch mµ kh«ng gÆp lçi hoÆc còng cã thÓ chän c«ng cô Emulate
trªn thanh c«ng cô. Sau khi lùa chän ch¬ng tr×nh ®a ra c¸c cöa sæ sau:
Cöa sæ Emulator cho phÐp m« pháng ch¬ng tr×nh vµ cña sæ Original source
code hiÓn thÞ m· vµ vÞ trÝ lÖnh ®ang ®îc thùc hiÖn.
+ Giíi thiÖu vÒ cöa sæ Emulator:
Gi¸o tr×nh thùc hµnh Vi xö lý
15
Cöa sæ nµy hiÓn thÞ c¸c thanh ghi cña vi xö lý nh AX, BX, CX, DX, v.v. , ®Þa
chØ c¸c lÖnh trong bé nhí, m· nhÞ ph©n t¬ng øng cña lÖnh, c¸c dßng lÖnh vµ
nhiÒu c«ng cô hç trî cho viÖc m« pháng kh¸c.
Chän screen ®Ó quan s¸t mµn h×nh.
Chän source ®Ó quan s¸t m· nguån cña ch¬ng tr×nh. Chän reset ®Ó khëi ®éng
l¹i qu¸ tr×nh m« pháng.
Chän aux ®Ó quan s¸t:
Gi¸o tr×nh thùc hµnh Vi xö lý
16
- Bé nhí ( memory)
- Khèi xö lý to¸n häc (ALU)
Chän var ®Ó quan s¸t c¸c biÕn, h»ng...
Chän debug ®Ó quan s¸t c¸c lÖnh cña ch¬ng tr×nh díi d¹ng tr×nh gì rèi debug
Gi¸o tr×nh thùc hµnh Vi xö lý
17
Chän Stack ®Ó quan s¸t ng¨n xÕp
Chän Flags ®Ó quan s¸t c¸c cê
C¸c c«ng cô hç trî cho qu¸ tr×nh m« pháng
+ Load: n¹p mét file ch¹y vµo ch¬ng tr×nh m« pháng
+ Reload: n¹p l¹i mét ch¬ng tr×nh hiÖn hµnh.
+ Step back: ch¹y lïi l¹i mét bíc
+ Single step: ch¹y tiÕn mét bíc
+ Run: ch¹y toµn bé ch¬ng tr×nh
+ Step delay ms: cho phÐp chän tèc ®é m« pháng ch¬ng tr×nh
Gi¸o tr×nh thùc hµnh Vi xö lý
18
C¸c c«ng cô ¶o trî gióp m« pháng: ®Ó nhanh chãng kiÓm tra ho¹t ®éng cña
ch¬ng tr×nh khi kÕt nèi phÇn cøng ch¬ng tr×nh hç trî kÕt nèi c¸c thiÕt bÞ ®ã
díi d¹ng ¶o. Mçi thiÕt bÞ ®Òu cã mét ®Þa chØ x¸c ®Þnh tîng trng cho thiÕt bÞ
ngo¹i vi bªn ngoµi vµ khi lËp tr×nh ®Ó xuÊt hay nhËp d÷ liÖu th× chóng ta còng
lµm t¬ng tù nh lËp tr×nh cho ®èi tîng thËt.
Chän Virtual Device:
Led 7 ®o¹n: cã ®Þa chØ lµ port199
M¸y in ¶o cã ®Þa chØ lµ port 130
M« pháng robot cã ®Þa chØ port lµ 9
M« pháng ®éng c¬ bíc cã ®Þa chØ lµ port 7
Gi¸o tr×nh thùc hµnh Vi xö lý
19
M« pháng qu¸ tr×nh kiÓm so¸t nhiÖt ®é cã ®Þa chØ lµ port 125-127
M« pháng ho¹t ®éng cña m¹ch giao th«ng cã ®Þa chØ lµ port 4
1.3. VÝ dô vµ bµi tËp c¬ b¶n lËp tr×nh cho vi xö lý 8086
C¸c bíc viÕt ch¬ng tr×nh cho vi xö lý trªn EMU 8086
BÍC 1: X¸c ®Þnh, ph©n tÝch yªu cÇu cña bµi to¸n tõ ®ã vÏ gi¶i thuËt cña
ch¬ng tr×nh cho bµi to¸n ®ã.
Gi¸o tr×nh thùc hµnh Vi xö lý
20
B2: Khëi ®éng ch¬ng tr×nh EMU8086, më bµi míi, so¹n th¶o vµ ghi l¹i
ch¬ng tr×nh.
B3: Hîp dÞch vµ söa lçi ch¬ng tr×nh nÕu cã.
B4: Ch¹y ch¬ng tr×nh hoÆc thùc hiÖn tõng bíc ®Ó quan s¸t kÕt qu¶ thùc
hiÖn lÖnh, söa lçi gi¶i thuËt.
VÝ dô 1:
ViÕt ch¬ng tr×nh cho vxl hiÓn thÞ dßng th«ng b¸o " chao mung cac ban den voi
EMU 8086" ra mµn h×nh m¸y tÝnh.
Bíc 1:
Ph©n tÝch: §Ó thùc hiÖn ®îc yªu cÇu trªn th× b¹n cÇn ph¶i nhí l¹i vÒ hµm ng¾t
sè 9 cña ng¾t INT 21h ®Ó hiÓn thÞ mét chuçi ch÷ ra mµn h×nh.
§èi víi mét ch¬ng tr×nh lín, tiÕn hµnh vÏ lu ®å gi¶i thuËt, c¸c ch¬ng nhá th×
cã thÓ bá qua.
Bíc2: ViÕt ch¬ng tr×nh
name "hien thi" ;ten chuong trinh
;Chuong trinh viet dang EXE
.MODEL small ;khai bao mo hinh bo nho su dung cho chuong trinh
.DATA ;khai bao doan du lieu
du_lieu db "Chao mung cac ban den voi EMU8086 $"
.STACK 100 ;khai bao doan ngan xep
;***********************
.CODE ;khai bao doan ma
Main Proc ;bat dau chuong trinh chinh
;xac lap gia tri cho thanh ghi doan du lieu
mov ax,data
mov ds,ax
lea dx,du_lieu ;nap du lieu vao dx
mov ah,9 ;ngat xuat du lieu lam trong ds ra man hinh( du lieu bat ;buoc
;ket thuc=$)
Gi¸o tr×nh thùc hµnh Vi xö lý
21
int 21h
; ngat cho doi nhan phim
mov ah, 0
int 16h
mov ax, 4ch ; thoat khoi chuong trinh
int 21h
Main endp
end Main ;ket thuc chuong trinh
Sau khi so¹n th¶o ch¬ng tr×nh, tiÕn hµnh dÞch vµ ch¹y ch¬ng tr×nh ®Ó
kiÓm tra kÕt qu¶.
VÝ dô 2:
ViÕt ch¬ng tr×nh cho vi xö lý 80x86 thùc hiÖn phÐp to¸n sau: (5+10)-1=? Vµ
hiÓn thÞ kÕt qu¶ ra mµn h×nh m¸y tÝnh díi d¹ng sè nhÞ ph©n.
Bíc1:
Ph©n tÝch: §Ó thùc hiÖn ®îc yªu cÇu trªn cÇn sö dông c¸c lÖnh céng, trõ vµ viÖc
hiÓn thÞ kÕt qu¶ ra mµn h×nh díi d¹ng sè nhÞ ph©n ®ßi hái ph¶i hiÓn thÞ néi dung
cña tõng bit sau ®ã thªm ch÷ b ®Ó th«ng b¸o ®ã lµ hÖ nhÞ ph©n.
Bíc2: ViÕt ch¬ng tr×nh
name "cong va tru" ;ten chuong trinh
;chuong trinh viet theo khung dang COM
org 100h ;khai bao dia chi bat dau chuong trinh
mov al, 5 ; nap gia tri cho al =5
mov bl, 10 ; nap gia tri cho al =10
; 5 + 10 = 15 (decimal) hoac hex=0fh hoac bin=00001111b
add bl, al ;cong al voi bl
; 15 - 1 = 14 (decimal) hoac hex=0eh hoac bin=00001110b
sub bl, 1 ;tru bl di 1
;hien thi ket qua ra man hinh duoi dang so nhi phan
Gi¸o tr×nh thùc hµnh Vi xö lý
22
;day la so nhi phan 8 bit do do toi su dung vong lap 8lan
;dua 1 bit co trong bl ra man hinh su dung len xoay trai
;roi kiem tra co c, c=1 thi in 1, c=0 thi in 0. su dung
;ngat 2 cua int 21h de dua tung ky tu
mov cx, 8 ;so bit can dua ra
lap_in:
mov ah,2 ;ngat hien thi tung ky tu
clc ;xoa co c
rol bl,1 ;xoay trai thanh ghi bl 1 vi tri
jc hien_thi1 ;kiem tra co c=1
mov dl,'0' ;hien thi bit0
int 21h
jmp giam_cx
hien_thi1:
mov dl,'1' ;hien thi bit1
int 21h
giam_cx:
loop lap_in
;in them chu B sau cac so nhi phan
mov dl, 'b' ;nap ky tu can in
int 21h ;ngat dua 1 ky tu ra man hinh
; ngat cho doi nhan phim:
mov ah, 0
int 16h
ret ;ket thuc chuong trinh
VÝ dô 3:
ViÕt ch¬ng tr×nh cho vi xö lý 80x86 hiÓn thÞ dßng th«ng b¸o "Hay nhap ky tu tu
ban phim, nhap E de thoat" ra mµn h×nh m¸y tÝnh vµ thùc hiÖn chøc n¨ng nh
th«ng b¸o trªn.
Gi¸o tr×nh thùc hµnh Vi xö lý
23
Bíc 1:
Ph©n tÝch: §Ó thùc hiÖn ®îc yªu cÇu trªn th× b¹n cÇn ph¶i nhí l¹i vÒ hµm
ng¾t sè 9 cña ng¾t INT 21h ®Ó hiÓn thÞ mét chuçi ký tù ra mµn h×nh vµ hµm ng¾t
sè 1 cña INT 21h ®Ó nhËn ký tù tõ bµn phÝm, hµm ng¾t sè 2 cña INT 21h ®Ó hiÓn
thÞ tõng ký tù.
Bíc 2: ViÕt ch¬ng tr×nh
name "NHAP PHIM" ;ten chuong trinh
;Chuong trinh viet dang EXE
.DATA ;khai bao doan du lieu
du_lieu db "Hay nhap ky tu tu ban phim, nhap E de thoat$"
.STACK 100 ;khai bao doan ngan xep
.CODE ;khai bao doan ma
MAIN PROC
;dat cac thanh ghi doan
mov ax,data ;muon AX de nap dia chi du lieu vao thanh ghi doan du lieu
mov ds,ax
lea dx,du_lieu ;nap du lieu vao dx
mov ah,9 ;ngat xuat du lieu lam trong ds ra man hinh( du lieu bat buoc
;ket thuc=$)
int 21h
lap:mov ah,1 ;ngat nhan ky tu tu ban phim
int 21h
cmp al,'E' ;so sanh ky tu nhap vao trong Al voi E de thoat
je thoat ;neu bang thi thoat
mov dl,al ;chuyen sang dl de hien thi ra man hinh
mov ah,2
int 21h ;hien thi ky tu do ra man hinh
jmp lap
thoat:
; ngat cho doi nhan phim
Gi¸o tr×nh thùc hµnh Vi xö lý
24
mov ah, 0
int 16h
mov ax, 4ch ; thoat khoi he mo
int 21h
MAIN ENDP
END MAIN ;ket thuc viec hop dich chuong trinh
VÝ dô 4:
ViÕt ch¬ng tr×nh cho VXL 8086 hiÓn thÞ th«ng b¸o: ‚ Day la chuong
trinh thuc hien cong hai so nguyen duong co mot chu so duoc nhap tu ban phim
de hien thi ket qua ra man hinh‛, ®ång thêi thùc hiÖn ®îc chøc n¨ng cña dßng
th«ng b¸o trªn.
Bíc 1: Ph©n tÝch
+ Ch¬ng tr×nh cÇn kiÓm tra m· ASCII cña c¸c sè nguyªn d¬ng tõ 0-9.
NÕu lµ c¸c sè nguyªn tõ 0-9 th× tiÕp tôc thùc hiÖn, nÕu sai yªu cÇu nhËp l¹i.
+ ChuyÓn ®æi tõ sè nhÞ ph©n sang m· ASCII vµ ngîc l¹i.
+ HiÓn thÞ kÕt qu¶ ra mµn h×nh
Bíc 2: ViÕt ch¬ng tr×nh
name "Cong hai so nguyen duong co mot chu so" ;ten chuong trinh
.model small ;khai bao quy mo su dung chuong trinh
.stack 100 ;khai bao doan ngan xep
.data ;khai bao doan du lieu
thong_bao:
db " Day la chuong trinh thuc hien cong hai so nguyen duong co mot chu so
duoc nhap tu ban phim de hien thi ket qua ra man hinh $"
thong_bao1:
db " Hay nhap so a: $"
thong_bao2:
db "Hay nhap b: $"
Gi¸o tr×nh thùc hµnh Vi xö lý
25
thong_bao3:
db "Ket qua a+b= $"
.code ;khai bao doan ma
Main Proc ;bat dau chuong trinh chinh
mov ax,@data
mov ds,ax
lea dx,thong_bao
mov ah,9
int 21h
lap: lea dx,thong_bao1
mov ah,9
int 21h
call nhap_so
mov bl,al
lea dx,thong_bao2
mov ah,9
int 21h
call nhap_so
mov bh,al
lea dx,thong_bao3
mov ah,9
int 21h
add bl,bh
mov al,bl
mov bl,10
mov ah,0
div bl
add ah,30h
mov bl,ah
add al,30h
Gi¸o tr×nh thùc hµnh Vi xö lý
26
mov dl,al
call hien_thi
mov dl,bl
call hien_thi
jmp lap
nhap_so:
mov ah,0
int 16h
cmp al, ‘0’
jng nhap_so
cmp al,"9"
jg nhap_so
mov dl,al
call hien_thi
sub al,30h
ret
hien_thi:
mov ah,2
int 21h
ret
mov ah,4ch ;ngat tro ve dos
int 21h
main endp ;ket thuc chuong trinh chinh
end main ;ket thuc chuong trinh
Bµi tËp:
Bµi tËp 1: ViÕt ch¬ng tr×nh ®Ó hiÓn thÞ tªn cña b¹n trªn mµn h×nh
Gi¸o tr×nh thùc hµnh Vi xö lý
27
Bµi tËp 2: Cho vi xö lý thùc hiÖn phÐp to¸n sau (15+255+75) *25 vµ in kÕt qu¶ ra
mµn h×nh d¹ng sè nhÞ ph©n
Bµi tËp 3: ViÕt ch¬ng tr×nh cho vi xö lý thùc hiÖn phÐp to¸n sau:
(15/5)+3*4 vµ in kÕt qu¶ ra mµn h×nh díi d¹ng sè hexa
Bµi tËp 4: ViÕt ch¬ng tr×nh thùc hiÖn nh©n hai sè tù nhiªn tõ 0-9 bÊt kú nhËp
vµo tõ bµn phÝm. HiÓn thÞ tÝch lªn mµn h×nh.
Bµi tËp 5: ViÕt ch¬ng tr×nh thùc hiÖn céng hai sè tù nhiªn tõ 0-99 bÊt kú nhËp
vµo tõ bµn phÝm. HiÓn thÞ tæng lªn mµn h×nh.