Thiết kế giao tiếp máy tính với KIT 8085, chương 6

Chia sẻ: Nguyen Van Dau | Ngày: | Loại File: PDF | Số trang:32

0
67
lượt xem
23
download

Thiết kế giao tiếp máy tính với KIT 8085, chương 6

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Khi học vi xử lý, thì mọi sinh viên đều phải học về số Hẽ, đổi số giữa các hệ, các số bu,…`, các phép toán số học và logic trên các biến. Ngoài ra, còn phải học môt loại ngôn ngữ máy khó nhớ, chỉ được viết bằng các ký tự Hẽ, để nạp vào Kit. Một cách khác để tạo ra các ký tự khó nhớ này là sử dụng một chương trình dịch Asembler để dịch từ một file có phần mở rộng là “am”' sang một file có phần mở rộng “prn” chứa ngôn ngữ máy....

Chủ đề:
Lưu

Nội dung Text: Thiết kế giao tiếp máy tính với KIT 8085, chương 6

  1. Chương 6: VIEÁT CHÖÔNG TRÌNH VAØ DÒCH SSEMBLER CHO CAÙC CHÖÔNG TRÌNH VI XÖÛ LYÙ TAÏI SAO PHAÛI SÖÛ DUÏNG CHÖÔNG TRÌNH DÒCH ASSEMBLER? Khi hoïc vi xöû lyù, thì moïi sinh vieân ñeàu phaûi hoïc veà soá Hex, ñoåi soá giöõa caùc heä, caùc soá buø,…, caùc pheùp toaùn soá hoïc vaø logic treân caùc bieán. Ngoaøi ra, coøn phaûi hoïc moât loaïi ngoân ngöõ maùy khoù nhôù, chæ ñöôïc vieát baèng caùc kyù töï Hex, ñeå naïp vaøo Kit. Moät caùch khaùc ñeå taïo ra caùc kyù töï khoù nhôù naøy laø söû duïng moät chöông trình dòch Assembler ñeå dòch töø moät file coù phaàn môû roäng laø “asm” sang moät file coù phaàn môû roäng “prn” chöùa ngoân ngöõ maùy. Ñaây laø lyù do phaûi söû duïng moät chöông trình dòch Assembler. Vôùi muïc ñích naøy, ngöôøi söû duïng khoâng caàn thieát phaûi bieát nhieàu veà ngoân ngöõa Assembly maø chæ caàn moät soá kieán thöùc nhoû ñeå goïi chöông trình dòch. Ñaây chính laø caùch chính ñeå giaûm thieåu thôøi gian trong vieäc dòch vaø nhaäp döõ lieäu vaøo Kit. I. Moät soá ñieàu caàn löu yù khi söû duïng chöông trình dòch Assebler: Ñeå vieát moät chöông trình vaø nhaäp vaøo Kit, thì ñaàu tieân phaûi bieát yeâu caàu cuûa chöông trình, vieát löu ñoà toång quaùt, löu ñoà chi tieát vaø tieán haønh vieát chöông trình. taát caû caùc böôùc treân ñeàu phaûi söû duïng laïi vôùi caùch laøm maø ñeà taøi naøy neâu leân. Tuy nhieân, töø böôùc dòch töø ngoân ngöõ gôïi nhôù sang maõ maùy thì coù nhieàu ñieåm khaùc nhau: 1) Khi vieát chöông trình ôû ngoân ngöõ gôïi nhôù (ngoân ngöõ Assembly), caàn phaûi tuaân thuû moät soá qui ñònh rieâng ñeå coù theå duøng moät chöông trình dòch Assembler.
  2. a)Phaûi duøng töø khoùa “Org” ôû ñaàu vaø “End” ôû cuoái chöông trình, nhôù chöõ end khoâng coù chaám cuoái caâu. b)Taát caû caùc leänh ôû daïng gôïi nhôù phaûi ghi chính xaùc. c) ÔÛ cuoáimoät soá Hex phaûi ghi kyù töï ‘h’ khoâng keå in hay thöôøng. d)Neáu moät soá Hex baét ñaàu baèng moät kyù töï Alphabet, thì phaûi theâm lieàn ngay tröôùc soá hex ñoù moät con soâ ‘0’. e)Moät nhaõn khai baùo khoâng ñöôïc vöôït quaù 6 kyù töï. f) Vaø moät soá qui ñònh khaùc. 2) Nhaäp chöông trình vaøo maùy tính: ñeå nhaäp deå daøng vaø thuaän tieän, coù theå söû duïng Norton ôû cheá ñoä Edit, vaø löu thaønh moät file coù phaàn môû roäng laø “asm”. 3) Duøng chöông trình dòch Assembler ñeå dòch file treân thaønh moät file môùi coù phaàn môû roäng la “prn”, file cuõ khoâng thay ñoåi. 4) Sau ñoù duøng chöông trình download ñeå naïp file vaøo Kit. Taát caû caùc yeâu caàu treân ñeàu raát deã nhôù nhôø ñi theo moät trình töï nhaát ñònh moät caùc töï nhieân. Norton laø moät chöông trình tieän ích raát phoå bieán. Chöông trình Download coù giao dieän ñaõ ñöôïc toái giaûn nhaát. II. FILE *.PRN, NOÄI DUNG, ÑAËC ÑIEÅM, VAØ DÖÕ LIEÄU CHÍNH: Chöông trình dòch seõ dòch töø moät file x.asm sang moât file x.prn. Xem noäi dung moät file coù phaàn ôû roäng prn trong ví duï sau:
  3. Giaû söû dòch file x.asm sau: Org 0000h MVI A,00h STA 0A001h MVI A,80h STA 0A001h MVI A,06h STA 0A000h HLT END Thì seõ ñöôïc file x.prn sau: MACRO-80 3.4 01-Dec-80 PAGE 1 Org 0000h 0000' 3E 00 MVI A,00h 0002' 32 A001 STA 0A001h 0005' 3E 80 MVI A,80h 0007' 32 A001 STA 0A001h 000A' 3E 06 MVI A,06h 000C' 32 A000 STA 0A000h 000F' 76 HLT MACRO-80 3.4 01-Dec-80 PAGE S Macros: Symbols: No Fatal error(s) Trong ñoù, noäi dung caàn naïp vaøo Kit laø: 3E 00 32 A001
  4. 3E 80 32 A001 3E 06 32 A000 76 Nhöng vôùi thöù töï laø: 3E 00 32 01 A0 3E 80 32 01 A0 3E 06 32 00 A0 76 Vaán ñeà ñaët ra laø laøm theá naøo ñeå loïc ra ñöôïc noäi dung chæ treân theo thöù töï ñuùng nhö noäi dung naïp vaøo Kit. Vaán ñeà naøy seõ ñöôïc giaûi quyeát ôû chöông keá: Chöông trình DownLoad.
  5. Chöông VI: CHÖÔNG TRÌNH DOWNLOAD
  6. I. ÑOÂI NEÙT VEÀ NGOÂN NGÖÕ C: I.1. Nguoàn goác: C ñöôïc phaùt minh vaø caøi ñaët ñaàu tieân bôûi Dennis Ritchie chaïy treân heä ñieàu haønh Unix, ñöôïc Martin Richards phaùt trieån trong thaäp nieân 70. C söû duïng chuaån ANSI ñöôïc ñeà nghò laàn cuoái cuøng vaøo naêm 1989. I.2. C laø ngoân ngöõ baäc trung: Ñöôïc xem laø ngoân ngöõ baäc trung vì C toå hôïp nhöõng thaønh phaàn toát nhaát cuûa caùc ngoân ngöõ baäc cao vôùi söï ñieàu khieån vaø tính linh hoaït cuûa ngoân ngöõ Assembly. C cho pheùp thao taùc treân caùc bit, caùc byte vaø caùc ñòa chæ – nhöõng phaàn töû cô baûn vôùi caùc chöùc naêng cuûa maùy tính, maõ cuûa chöông trình C cuõng mang tính khaû chuyeån. I.3. C laø ngoân ngöõ cuûa laäp trình vieân: C ñöôïc caùc laäp trình vieân laøm vieäc thaät söï taïo ra, thuùc ñaåy vaø kieåm tra, ñeå roài C laïi mang veà cho hoï nhöõng gì hoï mong muoán: ít haïn cheá, ít lôøi phaøn naøn, caùc caáu truùc khoái, caùc haøm ñôn leû, vaø moât taäp ñoùng kín nhöõng töø khoùa. II. CAÙC PHÖÔNG PHAÙP LAÄP TRÌNH: II.1. Phöông phaùp laäp trình leänh:  Chöông trình laø moät daõy caùc leänh.  Laäp trình laø xaùc ñònh caùc leänh cuøng vôùi thöù töï caùc leänh ñoù.  Phöông phaùp naøy chæ coù giaù trò vôùi chöông trình leänh ( < 100 leänh). II.2. Phöông phaùp laäp trình thuû tuïc:  Chöông trình laø moät heä thoáng caùc thuû tuïc vaø haøm, moãi thuû tuïc hay haøm laø moät daõy caùc leänh.  Laäp trình laø ñi xaùc ñònh nhöõng thuû vaø haøm, vaø xaùc ñònh caùc leänh beân tring thuû tuïc vaø haøm ñoù.
  7.  Phöông phaùp naøy tieán boä hôn phöông phaùp treân. II.3. Phöông phaùp laäp trình ñôn theå:  Chöông trình laø moät heä thoâng caùc ñôn theå (module).  Moãi ñôn theå laø moät heä thoáng thuû tuïc, haøm coù cuøng yù nghóa naøo ñoù. Moãi thuû tuïc vaø haøm laø moät daõy caùc leänh.  Caùc ñôn theå coù ñöôïc löu tröõ vaø bieân dòch phaân caùch, neân deã daøng laép gheùp. Tuy nhieân phöông phaùp naøy coøn thieáu töï nhieân, ngaøi ra neáu chöông trình quaù roäng vaø quaù saâu thì khoâng theå quaûn lyù ñöôïc. II.4. Phöông phaùp laäp trình höôùng ñoái töôïng:  Chöông trình laø moät heä thoáng caùc ñoái töôïng, caùc ñoái töôïng trong thöïc teá ñöôïc dieãn taû baèng ngoân ngöõ tin hoïc.  Laäp trình laø ñi xaùc ñònh nhöõng ñoái töôïng cuøng nhöõng quan heä cuûa chuùng.  Tính töï nhieân cuûa phöông phaùp naøy laøm noù trôû neân sinh ñoäng, moãi ñoái töôïng coù thuoäc tính vaø haønh ñoäng rieâng nhö trong thöïc teá do ñoù deã hình dung, deã quaûn lyù. Ngoaøi ra, nhôø döïa treân caùc ñoái töôïng neân tính tieán hoùa vaø môû roäng raát cao. Trong phaàn vieát chöông trình giao dieän vi tính, ngöôøi vieát ñaõ choïn phöông phaùp laäp trình höôùng ñoái töông. Nhôø nhöõng öu ñieåm treân, phöông phaùp naøy cho pheùp boå sung moät caùch deã daøng, taïo ñieàu kieän thuaän lôïi cho vieäc boå sung sau naøy neáu caàn. III. PHÖÔNG PHAÙP LAÄP TRÌNH HÖÔÙNG ÑOÁI TÖÔÏNG TRONG C
  8. III.1. Caùc khaùi nieäm: Theá giôùi thöïc Phöông phaùp laäp Ngoân ngöõ laäp trình trình Ñoái töôïng baát kyø Ñoái töôïng Bieán coù kieåu lôùp trong theá giôùi thöïc (töông töï kieåu caáu truùc) Khaùi nieän chung Lôùp ñoái töôïng Kieåu lôùp(Class- cuûa moät ñoái töông töông töï kieåu caáu truùc) Thuoäc tính ñöôïc Thuoäc tính Thaønh phaàn döõ lieäu quan taâm cuûa ñoái cuûa kieåu lôùp töôïng Khaû naêng coù theå Haønh ñoäng Thuû tuïc, haøm cuûa thöïc hieän cuûa moät kieåu lôùp ñoái töông III.2. Phöông phaùp: III.2.1. Xaùc ñònh caùc lôùp ñoái töôïng, quan heä qua caùc lôùp naøy (xaây döïng sô ñoà lôùp) III.2.2. Thieát keá caùc lôùp (bieåu dieãn treân maùy tính)  Thaønh phaàn döõ lieäu (thuoäc tính).  Thaønh phaàn xöû lyù (haønh ñoäng). III.2.3. Caøi ñaët caùc lôùp: Vieát haøm main() III.2.4. Thöû nghieäm. IV. Thöïc hieän vieát chöông trình DownLoad: IV.1. Yeâu caàu cuûa giao dieän:  Cho pheùp choïn file seõ truyeàn.  Baèng caùch goõ vaøo teân file  Baèng caùch click chuoät ñeå choïn
  9.  Xem tröôùc vuøng nhôù caàn thieát seõ söû duïng ôû RAM ôû Kit 8085  Choïn coång truyeàn.  Truyeàn file coù kieåm tra. IV.2. Choïn ngoân ngöõ laäp trình:  Choïn ngoân ngöõ C vieát ôû moâi tröôøng Dos  Lyù do: yeâu caàu thieát bò (maùy tính) khoâng cao, phuø hôïp kieán thöùc ngöôøi vieát.  Öu ñieåm: C laø moät coâng cuï laäp tình goïn nheï, chaïy nhanh, hieäu quaû vaø kheùp kín. Vì söû duïng C ôû moâi tröôøng Dos neân khoâng caàn phaûi kieåm soaùt caùc driver nhö neáu vieát ôû moâi tröôøng Windows. Ngoân ngöõ C cho pheùp truy caäp tröïc tieáp caùc port, deå daøng kieåm soaùt töøng bit döõ lieäu.  Khuyeát ñieåm: Vuøng nhôù troáng ôû moâi tröôøng Dos chæ coù 640Kbyte, vaø sau khi khôûi ñoäng xong (ôû maøn hình dos) thì chæ coøn laïi treân döôùi 400Kbyte, khoâng cho pheùp taïo moät giao dieän phöùc taïp. Ñoä phaân giaûi ôû cheá ñoä graph trong Dos khoâng theå so saùnh vôùi moâi tröôøng Windows. IV.3. Chöông trình Download: Danh saùch caùc lôùp: Teân lôùp Coâng duïng Button.hp Taïo caùc nuùt nhaán, vaø chöùa caùc haønh ñoäng lieân p quan Disklist.hp Lieät keâ caùc oå ñóa trong maùy, vaø chöùa caùc haønh p ñoäng lieân quan List.hpp Ñeå veõ baûng lieät keâ caùc thö muïc vaø file, vaø chöùa caùc haønh ñoäng lieân quan
  10. Mouse.h Chöùa caùc thao taùc veà chuoät Screen.h Chöùa caùc tham soá veà giao dieän maøn hình, vaø chöùa caùc haønh ñoäng lieân quan Textbox.h Veõ khung nhaäp lieäu (teân file, loaïi file,..) , vaø chöùa pp caùc haønh ñoäng lieân quan Xuat.hpp Chöùa caùc thao taùc, haønh ñoäng lieân quan ñeán truyeàn file Löu ñoà cuûa haøm Begin main(): InitGraphics() InitValues(…) InitScreen() InitMouse(…) Khôûi taïo S CT baùo loãi thaønh coâng Ñ Ñoùng cheá ñoä Mainpro() ñoà hoïa closegraph() Thoaùt End
  11. Hình 13: löu ñoà haøm Main() cuûa chöông trình DownLoad. Giaûi thích löu ñoà:  Chöông trình baét ñaàu ôû begin.  InitGraphisc():Khôûi taïo cheá ñoä ñoà hoïa, vì chöông trình naøy coù söû duïng maøn hình ôû cheá ñoä ñoà hoïa trong moâi tröôøng Dos. Neáu khôûi taïo khoâng thaønh coâng thì thoâng baùo loåi khôûi taïo vaø thoaùt khoûi chöông trình.  InitValues(…): haøm naøy coøn khôûi taïo caùc giaù trò ban ñaàu cho maøn hình: kích thöôùc cöûa soå, kích thöôùc kyù töï.  InitScreen(): Veõ maøn hình vôùi caùc giaù trò ñaõ khôûi taïo  InitMouse(): Khôûi taïo chuoät.  Khôûi taïo thaønh coâng: kieåm tra, neáu khôûi ñoäng chuoät thaønh coâng thì tieáp tuïc coâng vieäc, neáu khoâng thaønh coâng thì xuaát ra thoâng baùo loãi vaø thoaùt khoûi chöông trình.  MainPro laø chöông trình quaûn lyù moïi thao taùc cuûa toaøn boä chöông trình, töø caùc thao taùc nhaäp xuaát ñeán caùc thao taùc löïa choïn caùc tuøy choïn.  Closegraph(): Ñoùng cheá ñoä ñoà hoïatröôùc khi thoaùt khoûi chöông trình.  End: keát thuùc chöông trình. Haøm Main() naøy ñöôïc vieát baèng ngoân ngöõ C : void main(void) { InitGraphics();
  12. InitValues("Chuong trinh truyen du lieu ra RAM"); InitScreen(); if (!InitMouse(&MainWindow.rViewPort)) { OutMessage("Mouse driver not found. Init mouse and return"); getch(); closegraph(); exit(1); } ShowMouse(); MainProgram(); closegraph(); } void main(void): void cho bieát raèng haøm main() khoâng traû veà moât giaù trò naøo, nghóa laø trong haøm main naøy khoâng coù leänh return() hoaëc leänh laø moät leänh return khoâng coù tham soâ. (void) cho bieát haøm main khoâng caàn ñoái soá ñöa vaøo. Löu ñoà haøm Begin Mainpro(): Khôûi taïo caùc giaù trò cho caùc oâ nhaäp text Khôûi taïo caùc giaù trò cho caùc nuùt choïn A
  13. A Xuaát caùc oâ nhaäp text ra maøn hình Xuaát caùc nuùt choïn ra maøn hình GetEvent() Click vaøo Goïi chöông trình oâ Open File nhaäp vaøo ñöôøng daãn Click Nuùt Goïi chöông trình pull down xuaát cöûa soå choïn file Click nuùt Xaùc ñònh Send file choïn Click nuùt Xaùc nhaän Exit thoaùt Truyeàn Nhaán Esc Return file
  14. Hình 14: Löu ñoà cuûa haøm MainPro(). Giaûi thích löu ñoàhaøm MainPro():  Khôûi taïo caùc giaù trò cho caùc oâ nhaäp text: treân maøn hình seõ coù khung cho pheùp goõ vaøo teân file, chöông trình con naøy seõ khôûi taïo caùc toïa ñoä, maøu chöõ cho text.  Khôûi taïo caùc giaù trò cho caùc nuùt choïn: cuõng gioáng nhö treân, nhöng ñoái vôùi caùc nuùt Send, Exit vaø nuùt Pulldown.  Xuaát caùc oâ nhaäp text ra maøn hình.  Xuaát caùc nuùt choïn ra maøn hình.  GetEvent: chöông trình con laán bieán coá chuoät. Bieán coá naøy chöùa caùc thoâng tin veà toïa ñoä chuoät, phím naøo cuûa chuoät ñöôïc click, thôøi gian click laàn cuoái, … ñeå xaùx ñònh caùc leänh keá tieáp caàn thöïc hieän.  Click vaøo oâ Open File: neáu bieán coá click chuoät xaåy ra taïi toïa ñoä cuûa cuûa oâ Open file thì keát quaû click vaøo oâ naøy laø TRUE, thöïc hieän chöông trình con nhaäp vaøo file caàn xuaát. Ngöôïc laïi thì boû qua.  Click vaøo nuùt Pulldown: neáu bieán coá click chuoät xaåy ra taïi toïa ñoä cuûa cuûa nuùt Pulldown thì keát quaû click vaøo oâ naøy laø TRUE, goïi chöông trình xuaát ra cöûa soå choïn File, ngöôïc laïi thì boû qua.
  15.  Click nuùt Send: neáu bieán coá click chuoät xaåy ra taïi toïa ñoä cuûa cuûa nuùt Send thì keát quaû click vaøo oâ naøy laø TRUE, thöïc hieän xaùc nhaän file xuaát ñaõ nhaäp vaøo chöa, neáu file xuaát chöa nhaäp vaøo thì baùo loãi vaø boû qua leänh Send, neáu file xuaát ñaõ coù teân roài thì xuaát file.  Click nuùt Exit: neáu bieán coá click chuoät xaåy ra taïi toïa ñoä cuûa cuûa nuùt Exit thì keát quaû click vaøo oâ naøy laø TRUE, thöïc hieän xaùc nhaän muoán thoaùt khoûi chöông trình, neáu xaùc nhaän ñuùng thì thoaùt, ngöôïc laïi thì boû qua leänh Exit.  Nhaán Esc: neáu ngöôøi duøng nhaán vaøo nuùt Esc treân baøn phím thì bieán coá Nhaán Esc seõ laø TRUE, thöïc hieän xaùc nhaän muoán thoaùt khoûi chöông trình, neáu xaùc nhaän ñuùng thì thoaùt, ngöôïc laïi thì boû qua leänh thoaùt baèng nuùt Esc. Sau ñoù, chöông trình laïi thöïc hieän voøng laëp taïi haøm laáy bieán coá chuoät cho tôùi khi coù thao taùc môùi. Giaû söû click chuoät vaøo oâ Open File, oâ naøy seõ ñoåi traïng thaùi, caùc kyùtöï trong oâ seõ ñoåi maøu baùo traïng thaùi chôø nhaäp, nhaäp vaøo moät teân fie coù phaàn môû roäng laø “prn” vôùi ñaày ñuû ñöôøng daãn, sau ñoù goõ phímEnter thì teân file seõ ñöôïc löu vaøo moät bieán toaøn cuïc, vaø caùc ñòa chæ ñaàu vaø ñòa chæ cuoái cuûa chöông trình ngoân ngöõ maùy seõ ñöôïc hieän leân ôû khung “Free memory request”, vaø moät doøng thoâng baøo beân döôùi baùo cho bieát click Send ñeå truyeàn file. Giaû söû tieáp tuïc click Send thì moät thoâng baùo xaùc nhaän seõ xuaát hieän, muoán xaùc nhaän coù chaéc laø ngöôøi duøng muoán truyeàn file khoâng. Neáu traû lôøi Ok thì chöông trình truyeàn file seõ ñöôïc goïi thi haønh. Sau ñaây laø löu ñoà cuûa chöông trình con thöïc hieän vieäc truyeàn File. Giaûi thích löu ñoà:
  16.  Goïi chöông trình caét file: chöông trình caét file thöïc chaát laø moät chöông trình con coù nhieäm vuï loïc ra nhöõng thoâng tin quan troïng trong file “x.prn” seõ ñöôïc truyeàn ñi, vaø löu chuùng trong moät file “x.tmp” chæ xuaát hieän trong khoaûng thôøi gian chöông trình ñang caét file. Sau ñoù file “x.tmp” naøy seõ bò xoaù ñi khi quaù trình truyeàn file hoaøn taát. Quaù trình truyeàn file phaûi söû duïng böôùc naøy ñeå caùc quaù trình baét tay giöõa maùy tính vaø Kit ñöôïc oån ñònh (thöïc nghieäm), vaø vieäc vieát chöông trình ñöôïc roõ raøng hôn.  Goïi chöông trình xuaát file: chöông trình naøy seõ ñoïc file coù teân laø “x.tmp” ñöôïc taïo töø chöông trình caét file. Chöông trình naøy seõ tuaàn töï ñoïc file, nhaän tín hieäu baét tay vaø gôûi döõ lieäu cho ñeán khi heát file.  Trong quaù trình truyeàn file, neáu coù söï coá, giaû söû khoâng baét tay ñöôïc vì lyù do naøo ñoù, thì chöôn trình seõ ñôïi, thôøi gian keùo daøi seõ coi nhö vieäc truyeàn file bi loãi, vaø thoâng baùo loãi seõ xuaát hieän.  Neáu truyeàn Begin thaønh coâng thì thoâng baùo hoaøn taát coâng vieäc.  Return: Goïi chöông trình Quay trôû veà chöông trình MainPro. Caét file Trong haøm MainPro(), caàn quan taâm chöông trình con truyeàn file. Goïi chöông trình xuaát file Sai Thaønh coâng Ñuùng Thoâng baùo hoaøn Thoâng baùo loãi taát coâng vieäc coâng vieäc Return.
  17. Hình 15: Löu ñoà chöông trình con coù nhieäm vuï truyeàn file. Trong phaàn naøy, ta quay laïi coâng vieäc caét file ñaõ giôùi thieäu ôû muïc III cuûa chöông V. Chöông trình con caét file laø ñeå taïo ra moät file taïm thôøi coù phaàn môû roäng .tmp. file naøy seõ laø moät file coù caáu truùc ñôn giaûn hôn file .prn raát nhieàu nhaèm ñeå giuùp cho vieäc truyeàn file theâm ñôn giaûn. Tröôùc heát haõy khaûo saùt moät file *.prn, file naøy ñöôïc dòch ra bôûi 1 chöông trình dòch Assembler. Trong chöông trình, byte leänh ñeàu tieân baét ñaàu ôû ñòa chæ 0000hex. Nhaän xeùt raèng moãi doøng leänh baét ñaàu bôû moät ñòa chæ boä nhôù, vaø lieàn sau ñòa chæ naøy laø moät daáu nhaùy ñôn, maø daáu
  18. nhaùy ñôn ñaàu tieân chæ xuaát hieän taïi ñòa chæ cuûa doøng leänh ñaàu tieân.  ñeå tìm ñòa chæ ñaàu tieân thì coù theå tìm daáu nhaùy ñôn ñaàu tieân. Coøn ñòa chæ cuoái cuøng laø ñòa chæ cuûa byte cuoái cuøng cuûa doøng leänh cuoái cuøng. Doøng leänh cuoái cuøng laø doøng leänh naèm gaàn töø “Macros” nhaát. Töø macros naøy cuõng laø töø macros duy nhaát.  caùch tìm ñòa chæ cuoái cuøng nhö sau:  Tìm töø Macros  Doø ngöôïc trôû veà phíc treân cho ñeán khi gaëp daáu nhaùy ñôn ñaàu tieân  Tieáp tuïc doø ngöôïc veà tröôùc, neáu trong voøng 10 kyù töï maø gaëp moât kyù töï xuoáng doøng thì thì daáu nhaùy ñôn vöøa roài naèm ngay sau doøng leänh cuoái cuøng.  Trong doøng leänh cuoái cuøng, tìm byte cuoái cuøng seõ tính ñöôïc ñòa chæ cuoái cuøng. Caùch tìm moät doøng leänh:  Khi gaëp moät daáu nhaùy ñôn, thì tìm moät kyù töï khaùc daáu nhaùy ñôn hoaëc khoaûng traéng.  Khi gaëp kyù töï ñaàu tieân, ñoù chính laø kyù töï ñaàu tieân cuûa byte leänh.  Neáu sau 2 kyù töï cuûa leänh laø moät khoaûng traéng thì 2 kyù töï vöøa roài chính laø moät maõ leänh.  Neáu sau 2 lyù töï cuûa moât byte leänh khoâng coù khoaûng traéng naøo, thì 2 kyù töï vöøa roài chính laø 2 cuûa 4 kyù töï baùo moät ñòa chæ.  Neáu sau 2 kyù töï tính töø luùc baét ñaàu moät leänh laø 2 khoaûng traéng trôû leân thì 2 byte vöøa roài laø 2 byte cuoái cuøng cuûa moät doøng leänh.  Baét ñaàu moät chu kyø môùi tìm doøng maõ leänh. Löu maõ leänh vaøo file *.tmp:  Ñaàu tieàn löu ñòa chæ ñaàu, ñòa chæ cuoái vaøo file.
  19.  Neáu gaëp maõ leänh (2 kyù töï) thì ghi tieáp vaøo file.  Neáu gaëp maõ ñòa chæ thì ñoåi choå 2 kyù töï sau vôùi 2 kyù töï tröôùc cuûa ñòa chæ.  Ñeán khi gaëp ñòa chæ cuoái cuøng thì ghi vaøo 2 kyù töï cuoái cuøng vaø ñoùng file. MACRO-80 3.4 01-Dec-80 PAGE 1 Org 0000h 0000' 3E 00 MVI A,00h 0002' 32 A001 STA 0A001h 0005' 3E 80 MVI A,80h 0007' 32 A001 STA 0A001h 000A' 3E 06 MVI A,06h 000C' 32 A000 STA 0A000h 000F' 76 HLT MACRO-80 3.4 01-Dec-80 PAGE S Macros: Symbols: No Fatal error(s) Coâng vieäc treân ñöôïc moâ taû baèng löu ñoà sau:
  20. Begin Nhaän ñòa chæ ñaàu Nhaän ñòa chæ cuoái Môû file nguoàn Môû file ñích Tìm daáu “ ‘” Ñoïc 2 kyù töï leänh Xeùt kyù töï tieáp theo Ñ Khoâng laø Ñoïc 2 kyù töï tieáp theo khoaûng traéng S Löu 2 kyù töï sau Laø moät Ñ Löu 2 kyù töï khoaûng traéng S S 2 khoaûng traéng Ñ S > ñòa chæ cuoái Ñ End
Đồng bộ tài khoản