huong dan su dung emu8086

27
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

Upload: drakenguyen

Post on 29-Jun-2015

427 views

Category:

Documents


25 download

TRANSCRIPT

Page 1: Huong dan su dung emu8086

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

Page 2: Huong dan su dung emu8086

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.

Page 3: Huong dan su dung emu8086

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

Page 4: Huong dan su dung emu8086

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

Page 5: Huong dan su dung emu8086

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

Page 6: Huong dan su dung emu8086

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.

Page 7: Huong dan su dung emu8086

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:

Page 8: Huong dan su dung emu8086

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.

Page 9: Huong dan su dung emu8086

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.

Page 10: Huong dan su dung emu8086

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:

Page 11: Huong dan su dung emu8086

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.

L­u ý: ViÖc so¹n th¶o ch­¬ng tr×nh cã thÓ viÕt hoa hoÆc viÕt th­êng nh­ng 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.

L­u ý: 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).

Page 12: Huong dan su dung emu8086

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

Page 13: Huong dan su dung emu8086

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

Page 14: Huong dan su dung emu8086

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:

Page 15: Huong dan su dung emu8086

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:

Page 16: Huong dan su dung emu8086

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

Page 17: Huong dan su dung emu8086

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

Page 18: Huong dan su dung emu8086

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 tr­ng 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

Page 19: Huong dan su dung emu8086

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

Page 20: Huong dan su dung emu8086

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Ï l­u ®å 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=$)

Page 21: Huong dan su dung emu8086

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

Page 22: Huong dan su dung emu8086

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.

Page 23: Huong dan su dung emu8086

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

Page 24: Huong dan su dung emu8086

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: $"

Page 25: Huong dan su dung emu8086

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

Page 26: Huong dan su dung emu8086

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

Page 27: Huong dan su dung emu8086

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.