You are on page 1of 233
Chuong 4 . GIGI THIEU HOP NGU CHO IBM PC. Téng quan. Chuong nay bao gém céc bude cén thiét dé tao ra, hdp dich va thyc hién m6t chutdng trinh Hgp nga. Dén cudi chung, ban da cé thé viét duge cdc chuting trinh don gin nhung kha thi vi, thyc hién mét sé céng viée hiu ich va chay chting trén may tinh. Ciing nhu véi batt cit ngén ngit nao khée, bude dau tién ta phai hoc ci phap. Diéu nay déi vdi Hyp ng@ tuong ddi don gidn. Tiép theo, ching téi sé chi ra cach Khai bao bién va gidi thiéu cdc lénh s6 hgc va dich chuyén s6 ligu co ban. Cuéi cing ching téi sé trinh bay cach té chite chung trinh. Ban sé thay cac chuong trinh Hgp ngit bao gém ma lénh, sé liéu va ngan xép gidng nhu_chuong L trinh ma may Béi vicac lénh cha Hop ngit qua co ban nén thu hién cac thao tac vao/ra trong Hgp ngd khé khan hon nhiéu so véi cic ngén ngit bac cao. Chung téi sit dung cdc ham cia DOS cho céc thao tac vao/ra vi chting kha dé dang va di nhanh cho hau hét cdc yéu cu ting dung. Mét chuong trinh Hgp ng truée khi c6 thé thuc hién phai duge chuyén sang dang ma may. Myc 4.10 sé gidi thich cée bude. Né minh hoa vai ky thuat lap trinh chugn bang Hop ngit va nhu la mau cho-céc bai tap. 4.1 Cu phap cua Hop ngir. Céc chung trinh Hgp ngi duge dich ra céc chi thi may bang mét chutong trinh bién dich vi thé chéing phai duge viét ra sao cho pha hgp véi céc khuén miu cia trinh bién dich 46. Trong cuén sich nay chting tdi sé sit dung trinh bién dich MICROSOFT MACRO ASSEMBLER (MASM). Ma lénh Hgp ng néi chung khéng phan biét chit hoa hay thuténg nhung chting t6i sit dung chit hoa dé phan biét ma lénh véi phan cén lai ca chuong trinh. Cac dong Iénh. Cac chuong trinh bao gém cac dong lénh, méi dong lénh trén mét dong. \ dang Iénh i mét lénh ma trinh bién dich sé dich ra ma may hay 1a mot huéng dan bién dich dé chi din cho trinh bién dich thyc hién mgt vai nhiém vu dac biét nao d6, chang han danh ché cho mét bién nhé hay khai bao mot chuong trinh con. Méi lénh hay huéng dan bién dich thudng cé 4 trudng: Tén Toan tt Toan hang Léi binh Céc truéng phai duge phan céch nhau bang it nhat mot ky tu trong hay TAB. Cing khong bat bugc phai xdp xép cdc trudng theo cét nhung chung nhat dinh phai xudt hién theo ding thi ty néu trén. Vi dy mét lénh: START: MOV CX,5 ikhdi tao b6 dém. ‘Trong vi du nay, truéng tén 1a nhdn START, todn tit 1A MOV, toan hang 1A CX va { 5.181 binh Ja” khdi tao bo dém’ Vi du vé huéng dan bién dich: MAIN PROC MAIN 1a tén va toan hang 1a PROC. Dan hudng chuong trinh con cé tén PROC. dich nay khai bao mot 4.1.1 Trung tén. ‘Trudng tén duge sit dung lam nhn Iénh, cdc tén tha tye va céc tén bién. Chuong trinh bién dich sé chuyén cac tén thanh cac dia chi bé nhé. Céc tén cé thé 6 chiéu dai tit 1 dén 31 ky tut, 06 thé chita céc chit cdi, chit sé va cdc ky ty. dic bigt (7. @ _ $ % ). Khong duge phép chén dau tréng vao gitta mot tén. Néu stt dung dau chém (.) thi né phai dig dau tién. Cac tén khéng duge bat déu bing m6t chit s6. Chugng trinh bién dich khdng phan biét chit hoa va chit thuéng trong tén. Vi du cae tén hgp | COUNTER1 75 @character SUM_OF_DIGITS $1000 DONE? TEST Vi du cae tén khéng hgp 1é: TWO WORD chia mbt khoang trong > 2abe bat adu bang mat chit od A45.28 d&u chm khOng phdi la ky tu dau tién YOUSME chia mt ky tu khdng hop |é | 4.12 Trwéng todn tu. Trong mét lénh, trudng todn tit chita ma lénh dang tvgng trung. Chuong trinh bién dich s8 chuyén. ma lénh dang tugng trung sang mi lénh cia ngén ngi may. Tung trung cla ma lénh thudng biéu thi chit nang cla cdc thao téc. Vi dy nhu: MOV, ADD, SUB. ‘Trong mét huéng dan bién dich, trudng todn tu chita oan tit gid (pseudo- op). Céc toan tit gid sé khong duge dich ra ma may ma don gian chting chi béo cho trinh bién dich lam mét viée gi d6. Chang han ton tit gia PROC duge ding dé tao ra mOt thi tuc. t 4.1.3 Trudng todn hang. Déi véi mét chi thi, trudng toan hang xéc dinh di ligu sé duge cac thao tac tac déng lén. Mét chi thj 06 thé khéng c6, c6 1 hoae 2 ton hang. Vi du: NOP khéng ton hang, khong lam gi cA. INC AX mot todn hang, cong 1 vao ndi dung AX. ADD WORD1,2 haitodnhang, céng 2 vao tinh WORD1. ‘Trong mét chi thj hai toan hang, toan hang dau tién goi la toan hang dich. Né cé thé la mét thanh ghi hodc mét 6 nhé, 1a noi chita két qua (luu ¥ mot sé chi thj khéng hu git? két qua). Toan hang tht hai la toan hang nguén. Cac chi thi thutng khéng lam thay déi toan hang nguén. Déi voi mot huéng dan bién dich, trudng toan hang thudng chia thém théng tin vé viée din huéng. 16 4.1.4 Trudng ldi gidi thich. 4.2 Ngudi lap-trinh thudng sit dung trudng Jéi gidi thich cla m@t dong lgnh dé gidi thich ding lénh dé lam cai gi. Mé dau trudng nay 1a mOt dau chim phy () va trinh bién dich b3 qua moi cdi duge danh vao sau déu chéam phay nay. Lai gidi thich c6 thé tuy ¥ (¢6 hoc khéng) nhung vi Hgp ngit 1a ng6n ngit bac tha'p cho nén ta hau nhu khéng thé hiéu duge mét chong trinh viét bing Hgp ngit khi khong cé di binh. Trén thyc té dién céc Idi gidi thich vio hau hét cdc dong lgnh la mot phuong phép hoc lap trinh tét, Nghé thuat chi gidi sé duge phat trién cing véi qua trinh thyc hanh. Khong nén viét nhiing diéu da qué rd rang nhu: MOV cx, 0 ;chuyén 0 vao CX. ‘Thay vao dé, ta nén su dung céc Idi giai thich dé dat cée chi thi vao trong ngit cinh cia chong trinh: MOV. cx,0 7CX dém sé vong 1lap,khdi tao 0 Ciing c6 thé tao nén cA mét dong ghi chu va ding ching dé tao ra céc dong tréng trong chuong trinh: 7khéi tao cac thanh ghi. MOV AX,0 MOV BX,0 Dir ligu chuong trinh. Bé vi xit ly chi thao tac vdi dit liu nhj phan, vi thé trinh bién dich phai chuyén déi tat c& cdc dang di li¢u khéc nhau thanh céc sé nhj phan. Tuy nhién trong mt chuong trinh Hgp ngit ching ta cé thé biéu dién dit dudi dang cde 86 nhj phan, thap phan, sé hex va tham chf cd céc ky ty. Cac sé. nhj phan due viét nhu 1A mt chudi céc bit két thie bang chit cai ‘B’ hay ‘b’.Vidy 1011b. . 7h ‘Mét 80 thap phan 1a chuéi cdc chit sé thap phan két thuc bang chit cdi ‘D’ hay ‘d’ (hodc khéng cé6). M6t sé hex phai bit dau bing mét chit s thap phan va két thie bang chit cai ‘H’ hay ‘h’. Vi dy OABCH (véi cach nay, trinh bién dich c6 thé biét duge ky hiéu ‘ABCH’ biéu dién mét bién cé tén ‘ABCH’ hay sé hex ABC). Tat cA cdc 6 ké trén c6 thé c6 du tuy ¥. Sau day 1a c&c vi dy céc 36 hgp 1é va khong hop 1é trong MASM: So 1100 1100b 12345 -3568D 1,234 1B4DH 1B4D FFFFH OFFFFh Cac ky ty. Kiéu thap phan nhj phan thap phan thap phan khéng hgp 1é, chita ky tu khéng 18 chit so sé hex s6 hex khong hgp 16, khong két thtic 18 'h’ 36 hex khéng hop 1é, khong bat dau bang mét chit sé thap phan sé hex Cfc ky tut va chubi cdc ky tu phai duge bao trong dau nhay don hay nhay kép. Vi du “A”, “hello. Cac ky tu duge trinh bién dich dich ra ma ASCII cha chung. Vi vay chutong trinh khéng phan biét gitfa ‘A’ va 41h (la ma ASCII cia ‘a). Bang 4.1 Cac toan ti gid dinh nghia sé ligu. Toan tir gia Biéu dién DB Dinh nghia byte Dw Binh ngbia word 8 Sareea 4.3 pp Dinh ngbia tit kép DQ Dinh nghia 4 word (4 tit lién tiép) DT Dinh nghia 10 byte (10 byte lién tiép) Cac bién. Trong Hop ngit cae bién cé vai trd giéng nhu trong céc ngén ngit bac cao. Méi bién c6 mét kiéu dit ligu va duge chuong trinh gén cho mét dia chi bé nhé. Cée toan tit gid dinh nghia sé ligu va ¥ nghia cia chung duge liét ké trong bang 4.1, Méi toan tit gid c6 thé duge ding dé thiét lap mét hay nhiéu dit ligu cda kiéu dé dude dua ra. Trong phan nay chting ta sit dung DB va DW dé dinh nghia cac bién kiéu byte va céc bién kiéu word. Cac toan tit gid khac duge ding trong chong 18 66 lién quan dén cac thao tac véi s6'c6 dé chinh xéc kép va s6 khong nguyén. 4.3.1 CAc bién kiéu byte. DAn huéng dinh nghia mét bién kiéu byte cia trinh bién dich c6 dang sau day: Tén DB gid_tri_khéi_tao Trong dé todn tix gia DB duge hiéu la “dinh nghia byte” Vi du: ALPHA DB 4 Véi din,huéng nay, Hgp ngit sé gan tén ALPHA cho mét byte nhé va khdi tgo né gia tri 4, Mét dau chéfm héi (2) dat 6 vi trf cita gid tri khdi tgo sé tao nén mét byte khéng duge khdi tao. Vi du: BYTE 0B ? Gidi han thap phan cia cdc gid tri khdi tao nim trong khodng tix -128 dén 127 véi kiéu c6 dau va ti 0 dén 255 vi kiéu khong dau. Cac kkhoang nay vita ding gid tri ciia mét byte. 4.3.2 Cac bién kiéu word. s Dan huéng dinh nghia mét bién kidu word cia trinh bién dich o6 dang sau day: Tén Dw gid_tri_khéi_tao 79 ‘Toan tit gia DW c6 nghia la “dinh nghia word”. Vi du: wWRD DW -2 Ging nhu véi bién kidu byte mét d&u chém héi 6 vi tri gid tri khdi tao c6 nghia 1A word khéng duge khéi tao gia tri dau. Gidi han thap phan cia gid tri khdi tao duge xée dinh tit -32768 dén 32767 déi voi kiéu c6 dau va tit 0 dén 65535 déi voi kiéu khong dau. 4.3.3 Cac mang. 80 Trong ngén ngi hgp ngi, mang chi la mot chudi céc byte nhé hay tit nhé. * Vi du dé dinh nghia mang 3 byte cétén B_ARRAY véi cac gia tri khdi tao 1a 10h, 20h, 30h chting ta 6 thé viét: B_ARRAY DB 10h, 20h, 30h Tén BLARRAY duge gan cho byte déu tién, BLARRAY+1 cho byte thi hai va B_ARRAY+2 cho byte thit ba. Néu nhu trinh bién dich gan dia chi offset 0200h cho B_ARRAY thi b6 nhé sé nhu sau: Phan tv Dia chi Néi dung B_ARRAY 0200h 10h B_ARRAY+1 0201h 20h B_ARRAY+2 0202h 30h Mang cc word c6 thé duge dinh nghia m6t cach tuong ty,.Vi du: W_ARRAY Dw 1000, 356, 248,13 88 tao nén mét mang c6 4 phan tit véi cdc gid tri khdi tao 1a 1000,356,248,13. TY dau tién duge gan véi ten W_ARRAY, tit tiép theo gan'vdi W_ARRAY+2, réi dén W_ARRAY+4.v.v. Néu mang bt dau tai 0300h thi b6 nhé sé nhu sau: Phan ty Dia chi N@i dung W_ARRAY 0300h 10004 WLARRAY+2 0302h 356d W_ARRAY+4 0304h 248d W_ARRAY+6 0306h 134 vine sieiabeas Byte thip va byte cao trong mét word. Déi khi ching ta mun tham chiéu dén byte thép va byte cao cha bién word. Gia sit ta dinh nghia: * WORD1 bB 1234H byte théip cla WORD] 88 chia 34h cdn byte cao chita 12h. Byte th&p cé dia chi ky higu 1a WORD1, cén byte cao c6 dia chi ky higu la WoRD1+1. Cac chusi ky ty. Mét chudi ky ty cd thé duge khéi tao bing mang cdc ma ASCII: Vidy: LETTER DB "ABC! tuong duong véi: LETTER DB 41h, 42h, 43h ‘Trong mt chuéi, irinh bién dich phén bigt cdc chiz hoa va chit thudng. Vi vay chuéi ‘abe’ duge dich ra 3 byte véi cdc gid tri 61h,62Hi va 63h. Cing cé thé két hop cae ky ty va cdc sé trong mét dinh nghia. Vi du: MSG DB ‘HELLO', OAh, 0Dh, 'S* tuong duong voi: MsG DB 48h, 45h, 4Ch, 4Ch, 4Fh, OAh, 0Dh, 24h 4.4 Cac hing co tén. Dé tao ra cdc ma lénh Hop ng dé hiéu, ngudi ta thudng ding céc tén thigng trung dé biéu dién céc hang 86. EQU (EQUates: coi bang nhu, coi nhu) . Dé gan tén cho hang, chiing ta cé thé sit dung todn tit gid EQU. Ca phap: Tén EQU hang_sé Vi du: 7 LF EQU QAh 88 gan tén LF cho OAh, la ma ASCII cia ky ty xudng dong. Ten LF bay gid ob thé duge ding dé thay cho OAh i b&t cit dau trong chuong trinh. Trinh bién dich sé djch céc lgnh: 81 0 Mov DL, OAH va: Mov DL, LE ra cing mét chi thj may. Phan ti bén phai EQU cing cé thé la mét chudi. Vi du: PROMPT EQU "TYPE YOUR NAME" Sau dé thay vi: MSG DB “TYPE YOUR NAME" Ta c6 thé viét MSG DB PROMPT Chiiy; B@ nhé khéng dinh ché cho cac hing cé tén (khi bién djch, noi nao chita tén hang thi 6 dé sé duge thay déi béi gia tri cha hing). Hinh 4.1 Mov AX,WORD1 Trudc lénh MOV Sau lénh MOV 0006 ' 0008 AX AX 0008 0008 WORD1 WORD1 45 V jénh co ban. He lenh cia b6 vi xit ly 8088 c6 dén hon mét tram lénh, trong 46 06 eéc lenh duge thiét ké danh riéng cho cc bé vi xit ly cao c&ip (xem chung 20). Trong phan nay chting ta s® xem xét 6 lénh tign dung nhét cho viée chuyén di ligu va thu hign cée phép tinh s6 hoc. Céc lgnh ma chiing t6i duta ra 6 day c6 thé ding duge cho ca céc toan hang byte va word. ‘Trong phén sau day, WORD1 va WORD? la cae bién kiéu word, BYTE1 va BYTE? Ia cdc bién kiéu byte. Nhu 44 néu trong chuong 3, AH 1a byte cao cha thanh ghi AX; BL la byte thap cba BX. 82. ee, Hinh 4.2 XCHG AH,BL True XCHG Sau XCHG , 1A 00 05 00 AH AL ARG ALS 00 05 00 1A BH BL BH BL 4.5.1 MOV va XCHG. Lénh Mov duge sit dung dé chuyén dit liéu gitta cdc thanh ghi, gitia mét thanh ghi va mét 6 nhé hoac chuyén truc tiép mt sd vao mét thanh ghi hay 6 nhé. Ct phap: MOV dich,nguén Sau day 1a mét vai vi du: MOV AX, WORDL Lénh nay doc 1a “chuyén WORD1 vao AX”. Néi dung cia thanh ghi AX duge thay bang néi dung cia 6 nhé WORD1. NOi dung cia WORD! khéng bi thay déi. Néi mét céch khéc, mt ban sao cia WORD1 duge giti vao AX (Hinh 4.1). MOV AX, BX AX lay gié tri chifa trong BX, con BX khong bi thay déi: MOV AH,’ WY Lénh nay chuyén s6 41h (ma ASCII cia ‘A’) vao thanh ghi AH, Gia trj truée dé cata thanh ghi AH bi viét dé lén (thay bang gia trj méi). Lénh XCKG (héén chuyén) duge ding dé hodn chuyén ngi dung cia hai thanh ghi, thanh ghi va mét 8 nbd. Cit phép la: XCHG dich, nguén Vi du: 83 XCHG AH,BL Lénh nay sé hon chuyén ndi dung cia hai thanh ghi AH va BL, nhu vay AH sé chia ndi dung trée day caa BL cn BL lai chita ngi dung truée day cha AH (Hinh 4.2). Mét vi dy khac: XCHG AX,WORD1 Lénh sé hodn chuyén n@i dung cia thanh ghi AX va 6 nhé WORD1. Bang 4.2 Cée kha nang két hop cho phép etia cdc ton hang trong lénh MOV va XCHG Chi thi} MOV Toan hang Thanh ghi céng| dich dung chung | Thanh ghi Onhe Hang s6 Ton hang doan Inguén, Thanh ghi céng dung| YES YES YES NO chung Hang sé YES NO YES Chi thi XCHG Toan hang Thanh ghi ich céng dung Onhé Toan hang ngudt chung Thanh ghicongdung | YES | Yes Cc han ché cla MOV va XCHG. 84 Vi ly do ky thuat, c6 mét vai han ché khi sit dung lénh MOV va XCHG. Bang 4.2 chi ra cdc kha nang két hop cho phép. Céin cht § rng céc chi thi MOV va XCHG khong hop 1¢ trong trudng hgp hai todn hang cling lA céc 6 nhé vi du : MOV WORD1,WORD2 — ;khéng hop Jé Nhung chting ta c6 thé gidi quyét vain dé nay bing cach sit dung céc thanh ghi, ching han: MOV AX,WORD2 MOV WORD1,AX 4.5.2 Cac chithi ADD, SUB, INC va DEC. C&c chi thi ADD va SUB duge sit dung dé céng hode triv néi dung cia hai thanh ghi, m@t thanh ghi va mét 6 nhé hoie céng (tru) mot s6' vao (ti) mét thanh ghi hay m6t 6 nhé. Cu phap: ADD dich, nguén SUB dich, nguén Vi du: ADD WORD1, AX Chi thj nay “cng AX vao WORD1”, sé cOng n6i dung cia thanh ghi AX véi noi dung cia 6 nh6 WORD! va chia tng trong WORD1. AX khéng bj thay déi ( Hinh 43). SUB AX, DX ‘Trong vi du nay “trir DX tix AX”, gid tri cla AX triv di gid tri cha DX, két - qua duge chita trong AX, thanh ghi DX khéng bi thay déi ( Hinh 4.4) ADD BL,5 Chi thj nay cdng sé 5 vao ni dung cia thanh ghi BL. Cang giéng nhu trudng hgp Nov va XCHG, c6é mét vai han ché khi két hgp cae ton hang cia ADD va SUB. Cac truéng hgp cho phép duge téng két trong bang 4.8. Phép cong hay trit tryc tiép gitta céc 0 nhé 1a khong hop Ié. Vi dy: . ADD —- BYTE1,BYTE2 ~ jkhéng hgp Ié Cé mét gidi phap 1a chuyén BYTE2 vao m6t thanh ghi truéc khi cng: MOV’ AL,BYTE2 sAL lay gid tri BYTE2 85 ADD BYTE1,AL je6ng vao BYTE INC (INCrement) dutge ding dé céng 1 vao néi dung cia mt thanh ghi hay 6 nhé , DEC (DECrement) trif 1 tit néi dung cia mét thanh ghi hay 6 nhé. Ca phap: Inc dich DEC dich Vi du: INC WORD1 c6ng 1 vao néi dung cua WORD1 (Hinh 4.5). DEC BYTE1 tri 1 ti bién BYTE1 (Hinh 4.6). Bang 4.3. 86 Cac két hgp cho phép cia cae ton hang trong phép cng va phép triz. Toan hang dich Toan hang nguén | Thanh ghi cong dung chung O nh Thanh ghi céng yes yes dung chung -4-4---4---4 Hang sé Hinh 4.3. ADD WORD1,AxX Truéc lénh ADD - Sau lénh ADD 01BC 01BC AX AX 0523 [oopr | WORD1 WORD1 Hinh 4.4. SUB AX,DX ‘Trude lénh SUB Sau lgnh SUB (0000 FFFF AX AX 0001 0001 DX DX Hinh 4.5. INC WORD1 Truée INC Sau INC 002 0003 WORD1 WORD1 Hinh 4.6. DEC BYTE1 Trude DEC Sau DEC 2 1 BYTEL BYTE1 Hinh 4.7, NEG BX Truée NEG Sau. NEG 0002 FFFE BX BX 4.5.3 NEG NEG dang dé phi djnh ndi dung cia todn hang dich. DEC sé thay thé néi dung béi phan ba 2 cha n6. Cu phap: 87 NEG dich ‘Toan hang dich cé thé 14 m@t thanh ghi hay mét 6 nhé. Vi dy: NEG BX : ‘Sé phi dinh nOi dung cia thanh ghi BX ( Hinh 4.7). Kiéu quy uéc ota cdc toan hang. Cae toair hang ciia cdc Iénh hai toan hang da néu phai v6 cdg kiéu, tite 1a cing 1a byte hoc word. Vi thé mgt lgnh nhu sau: MOV AX,BYTE1 chong hgp Ie la Kh6ng duge phép. Tuy nhién trinh.bién dich chap nhén ca hai }énh sau day: MOV AH,’A’ va MOV AX,’A’ Trong trudng hgp dau, trinh bién djch xét thay do toén hang dich AH la mét byte nén toan hang nguén cing phai 1a mét byte va né chuyén 41h vao AH. Dén trudng hgp sau, vi ton hang nguén 1a mét tit, né gid thiét toan hang dich cfing nhut vay va chuyén 0041h vao AX. ~ 4.6 Dich tir ngén ngit bac.cao sang Hop ngif . Dé cdc ban hiéu r5 hon nhing lénh dA néu.d trén, ching téi sé djch vai dong Ignh gan cia ngén ngit bac cao sang Hyp ngit . Chting t0i chi sit dung céc Iénh MOV, ADD, SUB; INC, DEC va NEG mée di trong vai trudng hgp néu ta ding cic Iénh néu sau nay sé thyfc hign t6t hon. Trong cde vi dy, A va Bla cdc bin word: Dong lénh Dich B=A MOV AX,A;chuyén A ‘vao AX MOV B,AX;r6i sang B Nhu da chi ra, chuyén true tigp gitta cée 6 nhé la khéng hgp lé, do vay ching ta phai chuyén ngi dung cia A sang m@t thang ghi truée khi chuyén sang B. . AP5-A, MOV AX,5. sdua 5 vao AX SUBAX,A sAX chita 5-A MOV A,AX dua né vio A 88 4.7 Vi dy nay minh hoa mét phuong phép dich cae lénh gan: thuc hién eée thao tac s6 hoc trong mt thanh ghi (chang han AX), sau d6.chuyén két qua vao bién dich. Trong vi dy nay cé mét céch khée ngdn hon: NEGA ADD A,5 sas Vi du tiép theo sé chi ra phudng phap nhan véi mét hing 86, A=B-2*4, MOV AX,B sAX chita B SUB AX,A sAX chita B-A SUB AXA sAX chita B-2*A. MOV A,AX jluu két qua vao A Cau tric chuong trinh. Nhu chyiong 3 da néu, cc chung trinh bang ngén ngit may gém c6 ma, d@ liu va ngan xép. Méi phdn chiém mét doan b6 nhé. Chuong trinh bing Hgp ngit cling c6 té chtte nhu vay. Trong trudng hgp nay, ma dit ligu va ngan xép duge edu trie nhu cée doan chuong trinh. Méi doan chuong trinh sé duge dich thanh mét doan b6 nhd béi trinh bién dich, Ching ta sit dyng cdc ding nghia doan don gidn hoa ma a duge ding cho MASM 6.0. Ta sé thao luan kg hon trong chung 14 cing véi cdc dinh nghia doan toan phin. 4.7.1 Cac ché d6 bé nhé. ich thuée cha doan ma va di ligu trong mt chitong trinh cé thé duge xéc dinh bang cach chi ra ché 4 bé nhé nhé sit dung din hung bién dich MODEL Ca phap: «MODEL kiéu_bé nhé . Cae ché dé bd nhé thudng sit dung nhat la: SMALL, MEDIUM, COMPACT va LARGE. Ching dutge trinh bay hinh 4.4. Tri khi c6 rat nhigu mé lénh hay s ligu, kigu thich hgp nhét 1a SMALL. Din huéng bién dich MODEL phdi duge dua vio truée bat ky mt dinh nghia doan nao.. Bang 4.4, Cac kiéu b6 nho, Kiéu Miéu ta SMALL Ma lénh trong mot doan Di liéu trong m6t doan. 89 MEDIUM compact LARGE HUGE 4.7.2. Doan di liéu (Data segment). Ma 16nh Dir ligu Ma 1énh Di 1iéu Ma 2énh De liéu chiém trong trong chiém chiém chiém Khéng c6 mang Ma 1énh De liéu chiém chiém nhiéu hen mot doan. mot dean, mét doan. nhiéu hon mét doan. nhiéu hon mt doan, nniéu hon mét doan, néo 16n hon 64 Kbyte. nhiéu hon mét doan. nhiéu hon mét doan, Cac ming cé.thé 1én hon 64 Kbyte. Dogn dit Tigu cia m@t chung trink chita tat c& cAe dinh nghia bin, Cang nhu vay céc dinh nghia hing cling thuéng ditge tao ra 8 day nhung chting cing 6 thé duge dua vio mgt ché khae trong chuong trinh bi vi khéng 06 6 nhé nao lién quan dén n6. Dé Khai bad mot doan di ligu ching ta sit dung din huéng bién dich .DATA, theo sau 1a céc khai bao bién hay hing. Vi dy: -DATA WORDL WORD2 MSG MASK DW 2 bw 5S DB ‘THIS IS A MESSAGE’ EQU 10010010B 4.7.3 Doan ngan xép (Stack segment). Mue dich cia khai bao dogn ngan xép 14 tao ra mt khdi bo nhé (ving ngan xép) 48 chita ngin xép, Ving ngan xp co thé di lén dé chita angan x€p véi kich thuéc lén nbat cha no. Cu phap khai bao nhu sau: -STACK kich_thuge Trong dé kich thuée 1a mét sé tu §, xae dich kich thuse eiia ving ngan xép tinh theo byte. Vi du: «STACK 100n 90 sé tuo ra 100h byte cho ving ngan xép ( kich thude hgp 1¥ cho hdu hét cdc ehuong trinh ting dung ). Néu kich_thitde bj bé qua, 1 Kbyte sé duce thiét lap cho vung ngéin xép. 4.74 Doan ma (Code segment). “‘Dogn ma chtta cde Iénh cha chuong trinh. Ci phap khai bao la: ;CODE tén Trong dé tén 1a mot tén doan tuy ¥ (khéng cAn thiét phai cé tén trong mét chugng trinh ding kiéu bé nhé .smaiL béi vi nhu. vay trinh bién dich sé phat sinh mét 1di). Bén trong doan ma, cac lénh duge té chite nhu cde thi tue, Mét dinh nghia tha tuc don gidn nhat 1a: Tén_tha_tuc PROC #than cla thi tuc Tén_tha_tuc ENDP) 4 day Tén_thi-tue IA tén cia thi tue; PROC va ENDP IA céc tofin tf gid danh déu bat dau va két thc tha tue. Sau day 1A m6t vi dy dinh nghia dogn ma: CODE MAIN PROC zede 1énh cla chuong trinh chinh MAIN ENDP | feae thi tuc khac 4.7.5 Téng hgp lai. Gid day sau khi dé nghién citu tat cd cde doan chugng trinh, ching ta e6 thé chi ra khuén méu chung cho mét chuong trinh dang kigu bé dhé . SMALL. Chi véi vai thay déi nhé, mau nay c6 thé ding cho tat cd céc chagong trinh ting dung: -MODEL SMALL -STACK 100H DATA icc G@jnh nghia s6 liéu & day ee 91 48 CODE MAIN PROC . zeac lénh & day MAIN ENDP yeac thi tuc khde 3.day . END MAIN Dang cudi cing cia chtiong trinh phii la din huéng bién dich END, theo sau la tén ca chuong trinh chinh. Cac lénh vao ra. ‘Trong chuong 1 ban da biét rang CPU lién‘lac véi cde thiét bi ngoai vi ‘théng qua cde thanh ghi vao/ra hay cén duge goi IA cée cdng vaolra. C6 hai lénh 6 thé tray nhp tre tiép edie ong 46 la IN va OUT. Céc lénh nay duge sit dung khi yéu c&u tée d6 cao, vi dy nhu trong cdc chudng trinh trd choi. Tuy nhién hau hét cde chugng trinh ting dung khéng ding céc Iénh IN va OUT bdi vi tht “nhat 1A cde dia chi céng thay déi gitta cae loai may tinh va sau nifa lap trinh vdi cc chudng trinh phuc vy duge cung eép béi cée nha san xudt d& hon nhiéu. Co hai loai chong tinh phue vu vaolra: Cée chutong trinh cia DOS va BIOS (asic Input Output System). Cac chuang trinh BIOS duge chita trong ROM va tac dong truc ti€p téi cée edng vao/ra. Trong chudng 12, ching ta sé ding ching dé thyc hign cée thao tae eg ban véi man hinh nhu di chuyén con tré hay cud man hinh. Céc chuong trinh cia DOS c6 thé thuc hién cdc.cong viéc phic tap han, vi dy nhw in mt chudi ky ty. Thue ra chting sit dung cée chugng trinh cia BIOS dé thyc hign cAc thao tée vao/ra true tiép. Lénh INT. - Lénh INT duge ding dé goi cac chuong trinh ngAt cia DOS va BIOS. Né c6 dang sau: INT s6_hiéu_ngat 4 day, s6_higu_ngét 1a mét con sé xc dinh mét chung trinh. Vi du: INT 16,8 ggi cde phuc vu ban phim cia BIOS. Chuong 15 sé trinh bay vé lénh INT mét cach chi tiét hon. Sau day ching ta sé sit dung mt chuong trinh dic biét ca DOS, phuc vu ngdt 21h. 4.8.1 Ngat 21h Ngdt 21h duge ding dé goi rit nhiéu ham etia DOS (xem phy luc C). Mai ham duge goi bing céch dat s6 ham vao trong thanh ghi AH va goi INT 21h. Ching ta hay xem xét cc ham sau day: S6 hiéu ham Chuong trinh 1 Vao mét phim . 2 Dua mot ky ty ra man hinh 9 . Dua ra mét chudi ky ty Céc ham cia ng&t 21h nhan dif ligu trong cac thanh ghi nao d6 va tra vé két qué trong cée thanh ghi khde. Céc thanh ghi nay sé duge ligt ké khi ching ti m6 ta méi ham. Ham 1: "" Vao.mét phim. Vao: AH=1 Ra: AL= Ma ASCII néu mét phim ky tu duge = 0 Néu mét phim diéu khién hay chtic nang duge nhanj Dé goi phue vu nay, ban hay thc hign cde lénh sau: MOV AH,1 sham vao.mét phim INT 21h #m& ASCII trong aL B6 vi xit ly 68 doi ngudi ett dung én mot phim_néu cn thiét. Néu mot phim * ky tt duge én, AL 56 nh§n ma ASCII va'ky ty duge hign Ién-trén man hinh, Néu mét phim khée duge én, chang han phim mii tén, F1-P10.., thi AL 6 chita ©. Trong céc lgnh tiép theo INT 21h cé thé kiém tra AL va thuc hién tac va thich hgp. Bai vi ham 1 ofa ngit 21 khong duta ra théng béo dé nguii sit dung vao mot phim nén ban sé khong biét duge la may tinh dang doi nhép 36 ligu hay dang lam cde céng viéc khac. Ham tiép theo cb thé duge'ding 46 dua ra cée thong bao nhap 86 ligu: 93 thi mét ky tut hay thi hanh mét ehite nang diéu khién. Vac: AH=2 DL= ma ASCII cia ky tu hién thi hay ky ty diéu khién. | + Ra; AL= ma ASCII cda ky ty hién thj hay ky ty diéu khién. Dé ding ham nay hién thi mét ky tu, ta dat ma ASCII cda né trong “DL. Vi dy ede Jénh sau day sé lam xuat hién dau chém héi trén man hinh: MOV AH,2 MOV DL," 2" INT 21h Sau khi ky ty duce hién thi, con tré man hinh dich sang vi tri tip theo ela dong (nu 6 cudi dong, con tré man hinh sé dinh chuyén sang déu dong tiép theo). Ham 2 ciing cé thé duge ding dé thuc hién mét chite néng diéu khién. Néu nhu DL chita ma ASCH cla kf ty digu khién, ham nay sé thi hanh chiie nding diéu khién dé, Cac ky tu diéu khién quan trong dude chi ra sau day: M& ASCI(Hex) Ky higu Chite nang 7 BEL phat tiéng bip (beep). 8 BS Tdi lai mét vi tri. 9 HT tab. A LE xudng ding. D cR xuéng ding va vé.dau déng. Khi thue hign, AL nhan m& ASCII cba ky tu diéu khién. 4.9 Chuang trinh dau tién. Chuong trinh d4u tién cia ching ta sé doc mét ky ty tit ban phim va hién thi n6 & ddu dang tiép theo. Ching ta bat du bang vige hién thi mét dau cham héi: MOV AH,2 ; ham hién thi ky tu MOV DL,’ ?’ 3s ky tu la %?” 94 INT 21h 7 hién thi ky tu Lénb thi hai chuyén 3Fh (ma ASCII cia ‘?) vao thanh ghi DL. Tiép theo ta hay doc mét ky tu: MOV AH, 1 7 ham doc mét ky ty INT 21h * ky tu trong AL Bay gid ching cfin hién thi ky tu d dong tip theo. Trude khi thye hién diéu nay, ky tu phai duc cat vao mét thanh ghi khéc (chung tdi sé gidi thich diéu nay trong chéc lat). MOV BL,AL ; c&t ky ty trong BL Dé dich chuyén con trd man hinh dén vj tri déu dong tiép theo ching ta phai thuc hién cde tac vy xudng dng va vé dau dong, Ching ta cé thé thyc hién cdc ham nay bing cach dua ma ASCII cita ching vao DL va goi ngdt 21h. MOV AH, 2 # ham hién thi ky ty MOV DL,ODh i vé déu déng INT 21h * thuc hién vé déu dong MOV DL, OAh # xudng dong INT 21h # thuc hién xuéng dong Ly do ma chiing ta phai dua ky ty ti AL vao BL la ham 2 eda ngét 21h lam thay déi AL. Cuéi cung ching ta da afin sing bién thi ky tu: MOV DL,BL j;lay ky ty INT 21h iva nién thi no Sau day la chudng trinh day di: . Chuong trinh PGM4_1.4SM TITLE PGM4_1:SAMPLE PROGRAM -MODEL SMALL «STACK 100H - CODE MAIN PROC 95 MOV AH, 2 ; ham hién thi ky ty MOV DL,‘ 2?" 7 ky ty 1a %?” i INT 21h 7 nién thi ‘ky ty jvao mét ky ty . Mov AH,1 7 ham doc mot ky ty INT 21h + ky ty trong AL MoV BL, AL ; c&t ky tu trong BL ' ixudng dong méi: > i MOV AH, 2 7 ham hién thi ky ty MOV DL, ODh 7 vé @&u dong INT 21h 7 thyc hién vé dau dong MOV DL, OAh ; xuéng déng . INT 21h ; thye hién xu6éng dong phign thi ky tu: . MOV DL, BL pldy ky ty INT 2ih iva hién thi no ytx& vé DOS ! MOV AH, 4CH yham thodt vé DOS 1 INT 21H #thoat vé DOS ‘ MAIN ENDP . END MAIN Do khéng ding cac bién nén ta bé qua doan dit ligu. Két thac mét chung trinh. Hai dong cuéi cing ca chuong trinh MAIN cén c6 d6i Idi gidi thich. Khi mét chuong trinh két thic, né phai tra didu khién vé cho DOS. Chiing ta c6 thé thyc hién diéu nay bing cach goi ham 4Ch eda ngat 21h. 4.10 Tao lap va chay mot chuong trinh. Bay gid ching ta da sin sang dé xem.xét cdc butéc tao lap va chay mot chuong trinh, Chuong trinh néu 4 trén nhut 1A mét wi du dé khao sat. C6 4 bude cu thé (hinh 4.8): 1, Dang mét chuong trinh soan thao van ban tao ra mét file chuong trinh nguén (source program file). 2. Dung mét chudng trinh bién dich tgo ré file déi tugng ngon-ngit may (object file) 2, Ding mét chuong trinh bién dich tao ra file d6i tugng ngon nga may (object file). 3. Dang chyong trinh LINK (sé trinh bay chi tiét sau) lin két m6t hay nhiéu file d6i tutgng tao ra cdc file chong trinh (run file). 4. Cho chay file chuong trinh. Trong chi d&n nay, céc file céin thiét (chvong trinh bién dich va chuong trinh lién két) 06 trong 6 dia C, cae dia cia nguéi lap trinh trong 6 dia A. Chiing ta dit 6 dia A 1a 6 dia mic dinh dé cac file tao ra s& duge chita trong dia __ cia ngudi lap trinh. Buc 1. Tao lap file churang trinh nguén. Chiing ta da sit dung mt chutong trinh sogn théo van ban tao chutong trinh 6 trén véi tén la PGM4_1.ASM. Phan mdi réng .ASM duge quy uéc ding dé inh nghia mét file nguén cia Hop nga. Buéc 2. Hgp dich chuong trinh. Ching ta sit dung MASM (Microsoft Macro Assembler) dé dinh file nguén PGM4_1.ASM sang file doi tugng ngén ngit may PGM4_1.0BJ, Lénh don gién nhat (cAu tré 1di cla ngudi sit dung xuat hién trong ving dém) la: AOC:MASM PGM4_1; Microsoft (R) Macro Assembler Version 5.10 Copyright (C) Microsoft Corp 1981, 1988.- All -right reserved. : 50060 + 418673 , Byte symbol space free 0 Warning Errors 0 Severe Errors ‘Sau khi in ra céc thong tin ban quyén, MASM kiém tra cdc Idi ci php cha file nguén. Néu tim thay mét 16i nao dé né s& hién thi s6 dong cia méi di va mét huéng din ngain gon. Trong trudng hgp nay do khéng cé 16i nao, MASM sé dich ma Hgp ngit thanh file 46i tugng ngén ngit may véi ten PGM4_1.0BJ. Hinh 4.8 Cac buéc lap trinh. a tgo lap chung tink gud : File ASM Y File OBJ lién két chuong trinh OBJ File .EXE Dau cham phay theo sau céu lénh cé nghia la ching ta khéng muén phat sinh thém cdc file khéc naa. Ta hay bé n6 di va xem cdi gi xdy ra: gp dich chugng trinh nguén A>C:MASM PGM4_1 Microsoft (R) Macro Assembler Version 5.10 Copyright (C) Microsoft Corp 1981, 1988. All right reserved. Object filename [ PGM4_1.0Bd ]..: Source listing. [NUL.LST] ¢ PGM4_1 cross_reference [NUL.CRF ]: © PGM4_ 1 50060 + 418673 Byte symbol space free 0 warning Errors 0 Severe Errors Lan nay MASM in ra cdc tén file e6 thé duge tg0 nén va dgi ching ta dua vao tén méi. Cc tén mée dinh duge viét trong d&u ngaéc vuéng. Muén chap nhaén mét tén chi cn nbéin phim Return, Tén mic dinh NUL c6 nghia la sé khong tao tén file dé néu ta khong dua vao mot tén, do vay 4 day ta tra Idi véi ten PGM4_1. File nguén listing. File nguén listing ( file LST) 1A m6t file vin ban cée dong duge dénh 36 hién thi ma Hgp nga bén canh ma may tudng ting déng thai dua ra cae thong tin khac vé chuong trinh. Diéu nay dac biét cé ich cho cde muc dich gd r6i bai vi cae 16i cla MASM dua ra kém theo a0 dong. File tham khao ngang (Cross_reference file). Fie tham khéo ngang (file CRF) 1a mét bang ligt ké cée tén xudt hign trong chufong trinh va sé thit tu cac dong ma né cé mat. N6 cdn thiét khi xdc dinh cae bién va cae nhan trong mt chudng trinh én. Vi dy vé cdc file LST va .CRF duge chi ra trong phy lye D cing véi cae phan chon khée cha MASM. Buséc 3. Hop dich chuong trinh. File .OBJ duge tgo lap 4 bude 2 1a mét file ngon ng’ may nhung né khong thé thyc hién duge bdi 1é khuén mau cia né cha thich hgp véi mot File chugng trinh: . 1, No khong biét duge noi ma chuong trinh sé dude nap vao trong bd nhé dé thi hanh, va dia chi ma méy cé thé chuta duge dién vao. 2. Mét vai tén ding trong chung trinh cé thé chifa dude djnh nghia. Vi du: trong mt chuong trinh lén cé thé cén phai tao ra vai file, va mét tha tuc trong mét file nay cé thé tham tro téi mot tén duge dinh nghia trong file Kha. Chuong trinh LINK sé gém mét hay nhiéu file déi tugng, dién vao moi dia chi cdn thiéu va két hop céc file déi tuong thanh mét file kh thi duy nh&tt ( file -EXE). File nay 06 thé duge nap vao trong bé nhé va chay luén. Dé lién két chuong trinh ban hay danh vao: BOC:LINK = PGM4_ Giéng nhy trén, néu khong c6 dau chim phy, chuong trinh lién két sé dua ra thong bao dé ban vAo cdc tén cita cfc file phat sinh (xem phy lye D), Butie 4. Chay mét chuong trinh. Dé chay mot chudng trinh ban chi céin danh vao tén File chuong trinh cé ho§c khéng cé phan mé rong .EXE. A> PGM4_} 2A a Chuang trinh in ra dau‘? va dgi chting ra dua vao mét ky ty. Ta dénh vio A va chuong trinh lap lai né 4 dong ti€p theo. - 4.11 Hién thj mét chudi. ‘Prong chuong trinh déu tién, ta ding cac ham 1 va 2 cha ng&t 21h dé doe va hién thj mét ky ty. Sau day 1A mot ham khéc cua ng&t 21h dude ding dé hién thi mét chudi cac ky ty: Ngat 21h, Ham 9: Hién thi mét chudi. Vio: DX=dia chi tuong déi (offset) clia chudi. ; Chudi phai két thie bang ky tu ‘S ‘ Ky ty '8 ‘ danh dau két thie chudi va khong duge hién thi. Néu nut chuéi chita ma ASCII cia ky tu diéu khién thi cdc chic nang diéu khién sé duge thi hanh. Bé lam vi dy cho ham nay, ching ta sé viét mt chuong trinh in chudi “HELLO?” ra. man hinh, L4i chae- nay duge dinh nghia trong doan di ligu : MSG DB “HELLO! $” 1 AOQ Lénh Lea. Ham 9 cia ng&t 21h yéu céu dia chi tuong doi cha chudi ky ty chia trong DX. Dé thuc hién diéu nay ching ta sé ding mot lénh mdi: LEA dich, nguén ‘Trong dé dich la mét thanh ghi cong dung chung, nguén la mét 6 nhé. LEA ¢6 nghia la “Load Effective Address” (nap dia chi thyc). Né sé ldy ra va chép dja chi tugng déi cia nguén sang dich. Vi du: LEA Dx, MSG sé nhap dia chi tuong di cia bién MSG vao DX. . _-Boi vi chutong trinh thi hai cia ching ta cé chia doan dit liéu nén né sé f duge bat ddu vét lénh khdi tao DS. Phan tiép sau day sé gidi thich tai sao cae lénh dé 1a cin thiét. Doan md dau chuong trinh, Khi mét chutong trinh duge nap vao b§ nhé, DOS sé danh cho né 256 byte doan mé dau chuong trinh (PSP_Program Segment Prefix). PSP chita cdc théng tin vé chudng trinh vi thé chuang trinh cé thé truy nhép vang nay. DOS sé dua Gia chi ciia PSP vao cA trong DS dn ES truée khi thi hank chuong trinh. Két ( qua Ja DS khong chtia dja chi cha doan dif ligu. Dé chay dang, m6t chuong trinh 6 chita doan dit ligu sé duge bat dau véi hai lénh sau: Mov AX, @DATA Mov DS, AX @parta la tén cia doan dit ligu duge dinh nghia béi .DATA. Chuong trinh bién dich s& dich @DATA thanh ja chi. Ta phai ding hai lénh vi JA mét a6 (dia chi dit ligu) khong thé chuyén tryc tiép vao mOt thanh ghi doan. Véi thanh ghi DS da duge khdi tao, chting ta ¢6 thé in'ra léi chao“HELLO! bang céch dua dia chi cia né vao thanh ghi DX réi goi ngat 21h: LEA DX, MSG i lay théng bao MOV AH,9 : ham hién thi chuéi INT 21h + nién thi chuéi Sau day 1a chutong trinh day dit Chuong trinh PGM4_2.ASM 101 Sau day 1a chuong trinh day di Chuong trinh PGM4_2.ASM TITLE PGM4_2: Chuong trinh in chuéi ky ty. MODEL SMALL STACK 1008 DATA MSG DB “HELLO! $” = CODE MAIN PROC rkadi tao DS MOV AX, @DATA Mov DS, AX rhién thi théng bdo LEA DX,MSG ; léy théng bdo MOV AH, 9 + ham hién thi chudi INT 21h 7 hién thi chudi wtrd vé DOS . Mov AH, 4CH INT 21H MAIN ENDP END MAIN ° Va day 1a két qua khi chay chuong trinh: A> PGMA 2 HELLO! 4.12 Mat chuong trinh déi chit thudng thanh chit hoa. Bay gid ching ta sé téng két cdc kién thite trinh bay trong chuong nay vio mét chuong trinh duy nh&t, Chuong trinh nay sé bat dau bing viée nhac ngwi sit dung duta vao mét chit thudng, trén ding tiép theo n6 96 dua ra mgt thong bao khac vdi chit da duge ddi sang dang in hoa. Vi du: ENTER A LOWER CASE LETTER : a IN UPPER CASE IT IS : A Chang ta ding cac tén CR va LF dé dinh nghia cac hang s6.0DH va OAH. MSG1 DB ‘ENTER A LOWER CASE LETTER : $¢ MSG2 DB CR,LF,’IN UPPER CASE IT IS : CKAR DB 2,75 ° Khi dinh nghia MSG2 va CHAR’ ching ta sit dyng m6t manh khoé hitu hiéu: Béi vi chuong trinh phai hién thi thong bdo thit hai va mét chi cai (sau khi da déi thanh chit hoa) trén dong tiép theo, MSG2 bat dau vdi ma ASCTI cia ‘ky tu xudng dong va trd vé déu dong. Khi MSG2 duge hién thi bing ham 9 cia ng&t 21h cde chtte nang diéu khién nay sé duge thi hanh va thong bao duge hién. thj 6 dong tiép theo, Do MSG2 khéng két thtc bang ky ty ‘S', ngat 21h sé hién thi cd ky ty chita trong CHAR. Chuong trinh cia ching ta bat déu vdi viée hién thj théng béo thit nhat va dye kg tu: LEA DX,MSG1 ; lady théng bao dau tién MOV AH, 9 7 ham hién thi chudi INT 2th + nién thi théng bao déu tién MOV AH, 1 7 ham doc m6t ky tu INT 21h + doc mét chit thuéng vao AL Sau khi dé doc vao chit thutng, chuong trinh phai déiné sang dang cho hoa. Trong bang ma ASCII, cae chit thudng bat ddu tai 61h va céc chi hoa bit dau tai 41h, vi vay dé déi kidu chit chi edn lay néi dung AL triz di 20h: ° SUB AL, 20H ; @éi thanh chit hoa MOV CHAR, AL. 7 va luu trip no Bay gid chuong trinh sé hién thi thong béo thé hai va chét 6 dang in hoa; DX, MSG2 3 ldy théng bao tha hai . AH, 9 3 ham hién thi chudi 2ib ; hién thi théng bao thir hai 7 va chit hoa 2” sau day 1A chutong trinh day di: Chuwong trinh PGM4_3.ASM TITLE PGM4_3:SAMPLE PROGRAM 103 -MODEL SMALL -STACK 1008 DATA cR EQU ODH LF EQU OAH : MSG1 DB ‘ENTER A LOWER CASE LETTER: $° MSG2 DB CR,LF,! IN UPPER CASE IT IS 3" CHAR DB 2S > . CODE MAIN — PROC Fkndi tao DS MOV AX, @DATA MOV DS, AK yin dong nhac ngudi sit dung LEA DX,MSGL ;14y théng bao dau tién MOV AH, 9 yham hién thi chudi INT 21h phién thi thong bao dau tién jvao mot ky tu va déi thanh chit hoa Mov AH, 1 pham doc mot ky ty INT 21h ;doc mot chit thuéng vao AL SUB AL,20H ;d6i thanh cht hoa MOV CHAR,AL va luu trit né phién thi trén déng tiép theo LBA DX, MSG2 ;ldy théng bao tht hai MOV AH, 9 yham hién thj chuéi* INT 2in phién thi théng bdo thir ;hai va chit hoa jtrd vé DOS MoV AH, 4CH INT 218 MAIN ENDP END MAIN TONG KET: + Cae chuong trinh bing Hyp nga duige tao nén tiv cdc dong Ignh. Méi dong lénh c6 thé 1A mét Iénh sé duge may tinh thi hinh hay mot ddmehudng cho chong trinh bién dich. Cae déng lénh bao gém céc trudng tén, tofn ti, (cae) toan hang va truéng 18) binh. MOt tén ob chita d&n 31 ky ty. Cac ky ty 06 thé 1a che chit efi, chit s6 hay cc ky higu je bigt nao dé. Cfc sé 06 thé duge viét d dang nhj phan, thap phan hay hex. Cfc ky ty va chudi ky ty phai duge bao boc béi dtu ngofe don hay ngode kép. Cac dan huéng DB va DW duce ding dé dinh nghia céc bién byte va cae bién word, 5QU sit dung khi muén gan tén cho hing. Néi chung mét chutong trinh chita mt doan ma, mét doan dif ligu vA mét doan ngan xép. MOV VA XCHG duge ding dé chuyén sé ligu. C6 mét vai han ché khi sit dung céc lénh nay, vi du chting khong thé thao tac truc tiép gitia cde 6 nhé. ADD, SUB, INC, DEC va NEG 1a cdc lénh 86 hoc cd ban. Cé hai c&ch xudt va nh§p di ligu 46i voi IBM PC : lién lec truc tiép vdi cc thiét bj ngoai vi théng qua cdng va sit dung cdc phye vy ngat cla DOS va BIOS. Phuong php tryc ti’p khé lap trinh va phu thuge vao cfc vi mach phan céing nhat dinh. Xudt vi nhip cdc ky ty hay céc chudi cé thé thy hién’ nhd phye vu ngét 21h cia DOS. Ham 1 cia ngét 21h doc mot kf ty tit ban phim vao thanh ghi AL. Ham 2 caa ngat 21h hién thj ky ty cé ma ASCII chita trong thanh ghi DL. Néu DL chita ma ASCII cata mét ky ty diéu khién thi ehitc nang diéu khién 86 duge thi hanh. . Ham 9 cia ngét 21h hién thj chudi 6 dja chi tuong déi trong DX. Chudi phai dude két thtic bing ky ty ‘S‘ 105 Thuat ngit tiéng Anh Array assembler directive CODE segment .CRF file DATA segment destinasion operand .EXE file instruction AST file memory MODEL object file ‘M6t chudi céc byte hay tix nhd. Din huéng bién dich: Din hvéng cho chudng trinh bién dich thye hign mét vai nhigm vy dc biét. Doan ma. Vang chung trinh chita cdc lénh. File tao nén bai trinh bién dich trong dé ligt ké cée tén xuéit hign trong chung trinh va sO cia cée dang ma ching xust hign. Doan da ligu. Vang chugng trinh chifa céc bién. ‘Toan hang dich. Toan hang dau tién cia lénh. NO sé chifa két qua tra vé. Gidng nhu File chuong trinh, Lénh hay chi thj. M@t ding lgnh duge chuong trinh bién dich djch ra ma may. File c6 cdc dong duge dénh sd tao bdi trinh bién dich trong d6 chita ma H¢p ngit, nd may vA cdc théng tin khéc vé chuong trinh. Kiéu bo nhé, T6 chic cla mot chung trinh cho biét téng sé c&c ma va dit ligu. File doi tugng. File ngén ngit may duge chong trinh bién dich tao rd ti file chung trinh ngudn. PSP (program segment prefix) Doan mé ddu chuong trinh :Vang 256 byte pseudo_op run file source operand source program file 106 détng trude chuong trinh trong bg nhé chia céc théng tin vé chuong trinb, ‘Toan tit gid. Din huéng bién djch. File chyong trinh. File ngén ngd may kha thi tao ‘nén béi chung trinh LINK. ‘Toan hang nguén. Toan hang thi hai, thuéng khong thay déi khi thyc hién enh. ‘Tép chuong trinh nguén. Tép van ban chung trinh tgo ra bling mét chong trinh sogn thao van ban. STACK segment variable Cac 1énh méi Doan ngan xép. Phdn cita chudng trinh chita ngan x@p hién hanh. - Bign. Tén tugng trung cho mot 6 nhd chia dit Tigu. ADD Int NEG DEC LEA SUB INC MOV XCHG Cac toan tix gid ‘mo. . CODE . MODEL EQU . DATA . STACK Bai tap: “1. Tén nao trong cdc tén sau day la hgp Ié trong Hgp ngit cho IBM PC ? a. TWO_WORD b. 21 c. Two_word d @ e, $145 f. LET’'S_GO g. TS. 2. 86 nao trong cdc s6 sau day 18 hgp 18. Néu ching hgp 18, hay chi r6 ching la sé nhi phan, thap phan hay sé hex. . 246 . 246h 1001 |. 1,101 e. 2A8h f. FFF Eh h. bh g. Oah i: 1110b Boge 3. Hay néu toan tt gid dinh nghia dif ligu cho cdc bién va hang sau day néu nhu chung hgp 18: a. Mét bién kiéu word duge khdi tao véi gid tri 52. b. Mot bién kiéu word WORDI, khéng dugc khii tao. c, Mét bién kiéu byte B dude khdi tao véi gid tri 52h. d. Mét bién kiéu byte C1 khéng duge khdi tao. e, Mot bin kiéu word WORD? dutge khdi tao véi gid tri 65536. £ Mot mang kiéu word duge khéi tao v6i 5 gid tri déu nguyén (tif 1 dén 5). g. Mét hing BEL bing 07h. h. Mét hing MSG bing‘ THIS 1S A MESSAGE $*. 4. Gia thiét rang cac sé ligu sau day duge nap vao bé nhé bat dau tai vi tri offset O000h: A DB 7 B DW 1ABCh c DB ‘HELLO’ 108 a. Hay cho biét céc dia chi offset cia cdc bién A, B va C, b. Hay cho biét ngi dung ciia byte tai offset 0002h dudi dang sohex. ¢. Hay cho biét noi dung cla byte tai offset 0004h duéi dang sé hex. d. Hay cho biét dja chi offfset ciia ky ty ‘0’ trong ‘HELLO’. 5. Hay cho biét mdi lénh dudi day Ia hgp Ié hay khéng hgp Ié, trong dé W1 va W2 [a cdc bién WORD; B1, B2 ia cdc bién BYTE. a. yov DS, AX b. Mov DS, 100h c wov DS, ES da. Mov WL, DS e. XCHG = W1,W2 f SUB 5,81 B ADD B1,B2 bh. ADD AL, 256 i. Mov W1,BL 6. Chi dung cdc I¢nh MOV, ADD, SUB, INC, DEC va NEG hay dich cac dong lénh gan ola ngén ngit bac cao sau day sang Hop ngit véi A, B, Ca cae bién kiéu word. Bon e. 77. Hay viét cae lénh ( khong phdi cae chung trinh day di) thuc hin cac céng viée sau day: a. Doc mét ky tu va hign thi né d vi trf tiép theo trén cng mot dong. b, Doc mét chit hoa (bd qua viée kiém tra 16i) va hién thj no 6 vj tri tiép theo trén cling mét dong dudi dang chit thuéng. 8, Viet mot chung trinh thyc hign cdc céng viée sau day: a, Hién thi dau hdi chéim (2). b.Doc hai chi sé thap phan c6 téng nhé hdn 10: e. Hign ilij vac 80 dé véi tong cia chting véi ding thong bao tuong ting, Vi du: 227 Tong caa 2'va 7189. 9. Hay viét mét chuong trinh thy hién cdc céng vie sau day: a. Dua ra thong bdo cho nguai sit dung. b. Doc 3 chit cai diiu cia ho, tén dém, tén cia mot ngudi. ¢. Hign thi ching ty trén xudng trén 1é trai. . Vi du: Ban hay vao 3 chit cAi ddu: NTB N Tt B 10. Vigt m6t chuong trinh doc mét chit s6 hex trong khong (A-F) r6i hign thi né tren dang tiép theo dang nhj phan. Vi du: Ban vao mét chi s6‘hex: C Dang thap phan oda né la: 12 11. Vit m6t chuong trinh hién thi m6t bang 10x10 dién day d&u sao. Goi y: Khai bao mot chudi xde dinh hép trong doan dit-ligu réi hién thi no bang ham 9 cia ngat 21h. 12. Viét mot chuang trinh: a. Hign thi dau". b. Doe 8 cha cdi. ©. Hign thi ching trong mOt bing 11x11 duge dién day cde dafu sao. 4, Phat ting kéu bip eda may tinh. 10 Chitong 5 TRANG THAI CUA BO XU LY VA THANH GHICO Téng quan ‘Mot diém khéc biét quan trong gitta may tfnh va eéc logi may khée d6 1A may tinh ¢6 kha nang quyét dinh. Cac mgch trong may tinh cé kha nang thyc hién nhiing quyét dinh don gian dya trén trang thai hign tai cia bd xit ly. Doi véi bd vi xi ly 8086, trang théi cha bé vi xit ly duge thé hign trong 9 bit riéng biét goi la céc cB. Moi quyét inh cita bé vi xi ly déu dua trén gid tri eda cde cd nay. Cc ed duge d&t trong thanh ghi cd vA ching duge phn thanh 2 logi cd trang thai va cd diéu khién, Cd trang thai phan anh két qua ciia cfc phép tinh, Trong chuong nay chting ta sé thy ching bi Anh huéng ra sao béi cdc chi thi may. ‘Trong chuong 6 ching ta sé nghién cifu viée st! dung ching dé xay dung céc chuong trinh c6 nhiéu lénh ré nhanh va ving lap. Cé diéu khién duge sit dung 48 cho phép hoc khéng cho phép mét thao tac nao dé eda b@ vi xit ly, chting sé duge mé ta 4 ede chitong eudi. Trong phan 5.1 chung téi sé gidi thigu chudng trinh DEBUG cua DOS, ching ta sé thay cach ait dung DEBUG dé thyc hign tig lénh trong ghutong trinh cia nguéi sit dung, hién thj cdc thanh ghi, cdc od va cdc 6 nhé. 5.1 Thanh ghi co . Hinh 5.1 cho thay cdu tric cia thanh ghi cd, Cac od trang thai nim 4 cfc bit 0, 2, 4, 6, 7 va 11 edn cae od diéu khién nim 6 céc bit 8, 9 va 10. cée bit khac khong cé y nghia. Chu y rang khéng cdn nhé cd nao nim 4 bit nao, Bang 5.1 trinh bay tén cdc 8 va ky hidu cia ching. Trong chuong nay ching ta sé tap trung vao céc cd trang thai. li ; 1141312 11109 8 7 6 6 4 3 210 LI "pF be tr FF be er [pr PF | FF | Hinh 5.1 Thanh ghi co Cac c6 trang thal Nhu da n6i trén, bé xit ly sit dung cd trang thai dé phan anh két qua cia mot phép tinh, ching han khi lénh SUB AX,AX duoc thc hign cd ZF s€ duge thiét lap 1 nhd vay né chi ra ring két qua bing 0 da duge tao ra. Bay gid chting ta hay xem céc cd trang thai. : C8 nhé (Carry Flag- CF) C8 CF dude thiét lap 1 khi c6 nhé ti bit msb trong phép cong hay c6 vay vio bit mab trong phép triy. Nguge lai no bang 0. C CF cing bj anh hudng béi eée Iénh quay va dich (xem chong 7). Cé chan Ié (Parity Flag- PF) Ca PF duge thiét lap 1 néu byte thélp cata két qua cé 86 chin cae bit 1(parity chin). N6 bang 0 néu byte thiip c6 sf 1é bit 1(parity 1é). Vi dy két qua cha mét 7 phép-céng cée word la FFFEh, nhu vay byte thiip 6 7 bit 1 do d6 PF=0 Cé nhe phy (Auxillary Flag- AF) Ci AF duge thiét lap 1 néu e6 nhé tix bit 3 trong phép cng hoke c6 vay vio bit 3 trong phép tri. Ca AF duge sit dung trong cée thao tée véi sf thap phan ma hod nhj phan (s6' BCD). C& Zero (Zero Flag- ZF) C8 ZF dutgc thiét lap 1 khi két qué bing 0 va nguge lei. Cé dau (Sign Flag- SF) C8 SF duge thiét lap 1 khi bit msb cia két qué bing 1 6 nghia 1a két qua lA am néu ban lam vige véi af c6 défu. Ngugé lai SFO néu bit msb ota két qua bang 0. 112 Cé tran (Gwerflow Flag OF) Ca OF duge thiét lap 1 khi xy ra tran nguge lai no bang 0, khai niém tran sé duge gidi thich sau day. Ga trang thai Bit | Tén got Kyhigu | 0 | cannes cr 2 | Cochanis PF 4 Cé nhé phy AF 6 | cazERO aE 7 | caddu SF 11] Catan oF Cé diéu khién [Be], Teg | Kyhiee | 8 | Cabay "Fr 9 | Cangat IF 10 | C&inh hung DF : Bang 5.1 Tén cd vA cae ky hiéu. 5.2Hléntugngtran : : Hién tugng tran gan lién véi mét su that 14 pham vi cia cdc s6 biéu dién trong may tinh cé gidi han. . Chuong 2 da chi ra ring pham vi cita cde 36 thap phan c6 délu c6 thé biéu dién bing m9t word 16 bit 1A tit -32768 dén 32767, véi mot byte 8 bit thi pham vi la tit -128 dén 127, Déi vai cae sO khéng dau thi pham vi la ti 0 dén 65535 cho mét word va tit 0 dén 255 cho mét byte, Néu két qud cia mét phép tinh nam ngoai pham vi nay thi hign tugng tran sé xay ra va két qué nhan dude bi cat bot s& khéng phai la két qua dting. 113 Cac vi du vé hién tugng tran Su tran e6 dau va khéng 6 difu Ia cfc hign tung de lap nhau. Khi ching ta thuc hién mét thao tac 56 hoe nhu cong hay trit, c6 4 kha nang xdy ra la: (1) khong tran, (2) chi tran c6 défu, (3) chi tran khong déu, (4) tran c6 dau va khong | défu déng thai. Day 1a mét vi dy yé hién tugng tran khong d&u nhung khéng tran c6 dau: Gia sit AX chtta FPFFh, BX chia 0001b va lénh ADD AX,BX duge thuc ' hién, Két qua dang nhj phan nhu sau: . qqi1 1111 1112 1111 + 0000 0000 0000 0001 ee 1 0000 0000 0000 0000 : : Néu chting ta lam viée vdi cée 's6 khong da&u, két qua ding phai 1a an 100000h= 65536, nhung két qua nay nim ngoai pham vi biéu dién cia mét * word nén két qué cdn lai trong thanh ghi AX 1a Oh, day 14 mgt két qua sai, nhu \ vay hign tugng tran khong dau da Say va, Nhung két qua nhgn duge lai ding vai cde 86 06 déu, FFFFh =-1 khi hiéu 1a 60 cd détu, trong khi 46 0001h = 1 vay téng etia chiing bing 0, r3 rang hign tugng tran c6 dau da khéng xay ra. Bay gid chang ta hay xem mOt-vi du vé hién tugng tran c6 du nhung lai khong tran khéng dau, Gid'stt AX va BX cing chifa 7FFFh, hay thue hién phép cong ADD AX,BX. DEBUG A:PGM5_1.EXE DEBUG sé dap lai bing d&u nhac cia né: “-*, va doi lénh dua vao. Trude hét ching ta cé thé xem cdc thanh ghi bang cach dénh yao Iénh "R”. -R AX=0000 BX=0000 CX=001F DX=0000 SP=000A BP=0000 Si=0000 Dt=0000DS=0EDS ES=0ED5 SS-0EES CS=0EE6 1P=0000 NV UP DI PL NZ NA PO NC 0EE6:0000 Ba0040 MOV AX, 4000 ‘Trén man hinb cho thay noi dung ca cée thanh ghi d dang hex, tai dong thit 3 chiing ta thay: OBES: 0000 B80040 MoV AX/'4000 FE6:0000 La dja chi cia lénh tiép theo sé duge thyc hign cho duéi dang segment :offset. 890040 1a ma may cia lénh dé. Doan OEE6 1a noi DOS quyét dinh nap chwong trinh yao, néu ban thi lam vi dy nay 06 thé ban s@ nbn duge dja chi kkhée, 8 c&p chit xudt hign bén phai cia ding thif 2 1A trang thai hin tai ofa che 3, Céc c3 xuétt hién theo trinh ty: OF, DF, IF, SF, ZF, AF, PF va CF. Bang 5.2 trinh bay eéc kg higu DEBUG sit dung cho cée 03. Cae ban 06 thé thity cite «8 da bi DEBUG xoa, ¥ nghia eta ede 0d di va chuong 15. 1 khién sé duge gidi thich 6 chung 11 Dé ting bude thuc hi n chudng trinh. chting ta sit dung lénh "T (Traces, trude khi lam diéa dé hay hién thi lai noi dung cdc thanh ghi mét lin naa 000 CX=001F Dx=0000 SP-000R BP=000 sT=0000 SODS=0EDS eS-ORDS ss=0ERS BE6 1P=0000 NV UP pI pi. We NA PO NC . . . OEEO:9000 BROuaS MOV AX, 4000 Cc Lénh dau tién la MOV AX .4000h ——_. - 000 SP= SUB AX, PEFF Bay gid AX chita 4000h + 4000h = 8000h. SF tré thanh LONG) dé chi ra két gua 18 s¢ din. Dau higu tran duge chi ra béi OF = 1 (OV) vi chiing ta cng 2 36 duong vA nban duge mot sé am. PF dit bling 1 (PE) vi byte thap cba két qua khéng cé bit 1 nao. Bay gid ching ta thyc hign lénh SUB AX,OFFFFh: 121 -T AX=8001 BX=0000 CX=001F DX=@000 SF=000A BP=0000 S1=0000 DI=0000DS=0EDS FS=0EDS SS=0FES CS 0g N¥ UP DE NG NZ c pO cy OEEE: 0008 FID, NEG AK AX chia 8000h- FFFFh - 001h. OF déi trd lai thanh O (NV), vi chung ta trit 2 cing d&u khéng thé xdy ra hig tugng tran c6 déu. Tuy nhién CF = 1 chi ra rang da c6 hign tugng tran khdng du vi ching ta da tri mgt 36 khéng dau ton hon ti mét s6 nhé hon. khi€n-cho ¢6 sul vay vao bit msb, PF = 0 vi byte thap cla AX c6 mov bit 1 duy nhat. Bay gid chung ta tiép tuc vdi lenh NEG AX: 7 AX=7PFF BK=0000 CX=001F Dx-G000 S DI=O000DS*CEDS ES=OEDS SS=0EES CS=OEE6 T AC PE CY OCA BP-000¢ SI=0000 =000A NV UP DL PL NZ (EE6:000A 40 INC * AX AX chia s6'bi 2 effa 8001h = 7FFFh. Doi véi Iénh NEG CF luon bang 1 tit khi két qua bing 0 nhung trudng hop nay lai khéng xiy ra 6 day, Cd OF = 0 vi két qua khéng phai la 8000h. Cuéi cing chting ta thy hién Ignh INC AX; -T AX=8000 BX=0000 CX=O01F DX=0000 SP-000A BP=0000 $1-0000 EDS ESpgmé weatloe!rtougt () t+, ./012345678» Aint Patsy Ort bl orl ae BIN> 6.2. Cac lénh nhay cé diéu kién. JN% 1a mot vi dy cia lénh nhay c6 diéu n, Cu phap: Nz, nhan_dich Néu nh diéu kién eda lénh nhay dutge thod man. lénb ¢6 nhan nhan_dich sé duge thi hanh, Lénh nay cé thé 6 truée hoge sau lénh nhay. Néu diéu kien khong tho mn, lénh ngay sau lénh nhay duge thi hanh, Véi lénh JNZ diéw kién 18 két qua cia lénh trutéc 6 khac 0. Pham vi ctia lénh nhay cé diéu kign. Cu trae ma may cia lénh nhay ¢6 diéu kién doi hdi nha. dich phai duing y khong qua 126 byte hode diing sau khéng qué 127 byte (chung t0i sé chi ra céch dé vugt qua gidi han n: au ). CPU thyc hign mét lénh nhay nhu thé nao?. Dé thye hién mét lénh nhay, CPU nhin vio thanh ghi cd. Ta da bit rang thanh ghi phan anh két qua cong viée gn nhét ma bé vi xit ly thue hién. Néu diéu kign cita lénh nhay ( duge phat biéu nhu mét t6 hgp céc sy l4p cB trang thai) thoa man, CPU diéu chink iP tré dén nhan dich va nhu thé lénh 6 sau nhan nay 88 duge thi hanh tiép theo. Néu diéu kign nhay khong thoa man, IP Khong bi sila déi, Digu nay 6 nghia la lénh trén dong tgp theo sé duge thi hanh, ‘Prong chung trinh trén. CPU thi hanh Iénh JNZ PRINT_LOOP phy thuée vao ZF, Néu ZF=0 diéut khién 8 duge chuyén téi nhan PRINT_LOOP: néu ZF=1 chyong trinh tiép tye thyc hiém I¢nh MOV AH,1Ch, 130 Bang 6.1 chi ra cée lénh nhay e6 diéu kign, C6 ba loai dé 1a: (1) Cac Iénh nhay 06 dau duge diing khi két qua tra vé 1A cée sé 66 dau (2) Cac lénb nhiiy khéng dau ding vii eae sd khong dau. (3) Cae In nhay diéu kién dun: diéu kign phu thudc vao mét c& riéng bit. Luu ¥: Cée lenh nhay ty n6 khéng anh hudng ti ede cd Cot dau tign trong bang 6.1 1a ma l@nh nhiy. Rat nhiéu Iénh nbay cé hai ma lenh. Vi dy: JG va JNLE. Ca hai ma inh nay cé cing mot ma may. Khi thue hign chung cho két qua hoan toan gidng nhau. Bang 6.1. Cac lénh nhay cé diéu kié Cac lénh nhay cé dau. Kyhigu Che nang . Diéu kien nhay JG/INLE nhay néu Idn hon ZF=0 va SF=OF nhay néu khdng nhé hon hay bang JGE/INL — nhay néu l6n hon hay bang SF=OF nhay néu khéng nhd han JL/INGE — nbiy néu nh hon SPOOF nhay néu khéng ln hon hay bing JLE/ING — nhay néu nhé hon hay bang ZB=1 hay SF=OF nhay néu khéng |én hen C&c lénh nhay khéng dau. Ky higu Chic nang Diéu ki ohay JA/INBE — nhay néu lén hon CF=0 va ZF=0 nay néu khong nhé hon hay bing JAE/INB nhity néu lén hon hay bang nhay néu khéng nhé hon JB/JNAE — nhdy néu nhé hon CF=1 nhay néu khong Ién hon hay bang 131 | i \ i \ j 5 1 ; i JBE/JNA nhéy néunho hon hay bang nhay ueu khéng ldn hon Cac lénh nhay diéu kién don. Ky higu JE/OZ JNE/INZ Rio JP/IPE INP/JPO Lénh CMP. Cae diéu kién nhay thudng duge cung cap bdi enh CMP ( compare). Né c6 dang sau cME Lénh nay so sanh toan tit dich véi todn ui nguén bing cach lay todn tit dich rir di todin ti ngudn, Két qua khong duge luu lai nhung cae cd bj anh hudng. Cac toan hang cia lenh CMP khong thé cing fa cfc 6 nhé, Toan hang dich khong duge phép la hing sd. Chu y: CMP gidng hét nhu SUB ngoai tri viée toan hang dich khéng bi thay déi. Chie nang nhay néu bing nhay néu bang 0 nhiy néu khéng bing nbily néu khée 0 nhay néu e6 nhé nhay néu khong nhé nbay néu néu tran nhay néu khong tran nhay néu dau am nhay néu d&u duong nhay néu ¢3 chan nhay néu 8 16 dich, nguén CF=1 hay ZF=1 iéu kign nhay CPST CF=0 OF=1 OF=0 sro PFF1 Vi du. Gia thiét chuong trinh chtta hai dong jénh sau day: crm JG 132 AX, BX BELOW 6 day AX=7FFFh, BX=0001. Két qua so sinh AX va BX lA 7FFFh- 0001h=7FFEh. Bang 6.1 chi ra rang diéu kién nhay cho lénh JG da duge thoa man béi vi Z2¥F=SF=OF=0, va do dé diéu khién duge chuyén dén nhan BELOW. h cde lénh 6 diéu kién. ‘Trong vi dy vita néu, khi xem xét o: khién sé duge chuyén lénh nhay c6 diéu hig cé sau lénh CMP ta théy ring diéu én nhan BELOW. Dé cing 1A cach CPU thy hién mét Ngudi lap trinh khong cin thiét 1a phai suy nghi nhiéu vé cae ci, ban ¢6 thé chi ding tén eta lénh nhay dé quyét dinh viéc chuyén diéu Khién dén nhan dich. Cac lénh sau day: CMP AX, BX JG BELOW Néu nhu AX lén hon BX (coi 14 s6 c6 déu) thi JG Gump if greater than) sé chuyén dén BELOW, Dac biét e4 khi nghi ring lénh CMP duge thiét ké chi dang cho cdc lénh uhay cé diéu kign, chting van e6 thé di kém vdi cdc inh khée nhu trong chuong trinh PGM6_1. Mét vi du khée: DEC AX JL THERE trudng hgp nay néu néi dung cia AX (coi 1a sé c6 du) nhé han 0, diéu khién sé dude chuyén dén THERE. So sanh cac lénh nhay cé dau va khéng dau. Méi lénk nhay c6 dau déu tang ting vai mot lénh nhay khéng déu. Vi du lénh nhay 6 dau JG va lénh nhay khéng du JA. Ding léah nhay cé défu hay khong dau tuy thuge vao kiéu s@ duge dua ra. Trén thuc té, nhu bang 6.1 chi ra, cac lénh nay thao tae véi ede cd khéc nhau: ede lénh ahdy ¢6 difu sit dung cae 0 ZESF va OF trong khi cac Iénh nhdy khéng défu lai dang céc od ZF va CF. St dyng khang dting loni cé thé dua dén két qua sai, Vii du. gid thiét ring ching ta lam viée véi cae s& khong dau. Néu nhu AX=7FFFh va BX=8000h, khi ta thyc hién: CMP AX, BX JA BELOW 133 tham chi 7FFFh > 8000h trong dang eé dau, chugng trinh van khong nhay dén nhan BELOW. Nguyén nhan a day lA 7FFFh < 8000h 6 dang khéng dau 3 day chting ta Iai ding lénh nhay khong du JA Lam viéc véi cdc ky ty. Khi lam viée véi tap hop ky ty ASCII chutin ed cae lénh nhay c6 diéu kién va khong diéu kign déu ¢6 thé duge sit dung bdi 1é bit difu cia byte chita ma ky ty ludn 1a 0. Da sao thi ede iénh nhay khong dau phai duge sit dung khi so sinh i cde ky ty ASCH mé rng ( ma ti 80h déin Fh). j Vi du 6.1. j Gia stt AX va BX chita cae 36 c6 dau. Hay viét cae lénh dé dua sé lén nhat a vao CX : Tra loi: MOV cx, AK 7 dua AX vdo CX CMe BX, CX Bx Lon nem? SLE NEXT } khOng, tiép tus MOV CX, BK } ding, dua BK vao Cx NEXT: 6.3. Lénh JMP. Lénh JMP (jump) din dén viée chuyén diéu khién khong diéu kién ( nhay khong diéu kign), Cai pap: cMB di it nhfin trong cling mét doan vdi IMP ( xem phu luc F véi ich phai la chi dan chi tiét hon), IMP ¢6 thé duge ding dé khae phuc khoang gidi han cia lénh nhay cé diéu kién. Vi du: gid sit ching ta muén thue hién ving lap: TOP: 7 than véng lap DEC CK + giam bo dé oNZ TOP i lap néu cx >0 MOV AX, BX nhung than vong lap lai chita qué nhiéu lénh dén mtte nhin TOP ndm ngoai ~ khoang gidi han cba lénh JNZ (nhiéu hon 126 byte truée JNZ TOP). Ching ta c6 thé sifa lai: TOP: 7 than véng lap DEC CX i gidm bé dém UNZ BOTTOM 3 lap néu CX >0 UMP BXTT : IMP TOP EXIT: MOV AK, BX 6.4. Cac cau trac ngén ngif bac cao. Chiing t0i da cé ln néi rling effu trie nhdy 6 thé duge ding dé thye hién cae cong vide ré nhanh va lap. Tuy nhién do cée énh nhay qué so khai nén rat khé ma hod mét thuat tofin (e6 hoge khéng c6 ede dong hudng dan) nhét 1a adi vdi nhang nguéi mdi lap trinh. Bi vi da sO cdc ban dA 6 chtit it_kinh nghiém vé cdc cfu trie cha ngén ngit bac cao nhu cu trie chon Iya IF_THEN_ELSE hay cdc vong lap WHILE, ching toi sé néu ra edch gid lap cae iu trie nay trong ng6n ngit Hgp ngit ‘Trong trudng hop dau tién chéing (i sé dua ra cdu tric cae toan tii gid ea ngon ngit bac cao. 6.4.1 Cac cau tric ré nhanh. ‘Trong cae ngén ngit bac cao, cde cu trae ré nhaénh cia mot chuong trinh dé chon cée duéng din khée nhau va phy thude vao cae diéu kién, Phan nay chiing ta sé xem xét 3 cau trite IF_THEN C&u tric IF_THEN e6 thé duge khai bao du6i dang tofin ti gi nhu sau: IF diéu_kién THEN nhanh_dong END_LE Xem hinh 6.2. Digu_kién 1 mot biéu thie 6 thé ding hofe sai, Néu n6 ding, nhanb_dung sé duge thue hién. Nguge lai, edu trae khong thye hign Jénh nao, chuvng trinh tiép tue véi cac lénb theo sau Vi du 6.2. Thay sé trong AX biing gid tri tuyét adi cua né. ‘Tr li : Mot thugt todn véi ma lénh gid IF Ax>0 ‘THEN thay AK bing -AX 135 i N6 c6 thé duge ma hoa nhu sau: ; if axco CMP AK,O 3 AX Diéu kign AX <0 duige kiém tra bdi lénh CMP AX0. Néu AX khéng nhé hon 0, ta khong phai lam gi ea, INL dutge ding dé nhay qua Iénh NEG AX. néu diéu kign AX <0 thod man, chuong trinh tiép tuc thuc hién Iénh NEG AX, TP_THEN_ELSE. IF diéu_kién THEN nhanh dang ELSE nhanh_sai END_. Xem hinh 6.3 . ‘Trong céiu trde nay néu diéu_kign la ding. nhém lénh nhanh_diing sé duge thi hanh. Con néu diéu_kign sai, nhém lénh nhanh_sai sé duge thi hanh. 136 ea Hinh 6.3. IF_THEN_ELSE Vi dy 6.3. Gi sit AL va BL chita céc ky ty ASCII mé rong. Hay hién thi ky ty ding true trong bing ma. Tra li IP AL<=BL THEN, nién thi ky ty trong AL ELSE hién thi ky ty trong BL , END_IF ‘Ta 6 thé ma hod n6 nhy sau: MOV AH, 2 wehudn bj nién thi gif AL<=BL CMP AL, BL * ALS=BL ? JNBE ELSE_ tkhéng, hién thi ky ty trong BL ithen ;ALS=BL MOV DL, AL iehuyén ky ty vac DL.dé hidn thi JMP DISPLAY st6i DISPLAY ELSE_: 7 BL < AL MOV DL, BL yohuyén ky tu vdo DL dé hién thi DISPLAY: INT 21h 7 ign thi no. jEND_IF Cha ¥; Ta ding nhan ELSE_vi ELSE 1a ty danh riéng. Diéu kign ALS=BL dite kiém tra béi lémh CMP AL.BL. Néu né sai, chung trinh 98-nhay qua nhanh_ding téi ELSE_. Ching ta sit dung iénh nhay khéng dau JNBE béi le ching ta.dang so aanh cae ki tu md rong Néu AL<=BL thod man, nhénh_duing duge thue hién. Luu y rang chi thi JMP DISPLAY a can thiét dé nhay qua nhanh_sai. Diéu nay khac trong véi ngon nga bac cao: nhanb_sai duge ty dong nhay qua néu nhénb-dving dude thye hign. CASE. CASE la mt cau trite da nhanh, né kiém tra cde thanh ghi, cée bién hay bidu thife véi céc gia tri riéng ré trong mién gid tri. Dang téng quat cla né CASE phat_biéu gié_tri_1: dong _1énh_1 qié_tri_2: déng_iénh 2 gia tri n: ddng_iénb_n END_CASE Xem hinh 6.4 Trong c&u tric nay phat_biéu duoc kiém tra, néu gia tri clia né bang vdi gid_uri_i thi déng_lénh _i sé duge thi hanh. Ta gid thiét tap hop gia_tri_i... gid_tri_n tach biét nhau Hinh 6.4. CASE 138 Vi du 6.4, Néu AX chia mét s6'dm, hay nhap +1 vao BX, néu AX chtta 0, cho BX bing 0, néu AX duong déi BX thanh 1. Lai gidiz <0: gan BX bang -1 gan BX bang 0 >0: gan BX bang 1 END. ‘Ta c6 thé ma hod nhy sau: pcase AX CMP AX, 0 7 kiém tra AX Ji NEGATIVE oy AX0 NEGATIVE MOV BX, = } mh&p -1 vao BX SMP _END_CASE 7 réi thoat ZERO: MOV Bx, 0 ; nhap 0 vao BX JMP END_CASE i r6i thoét POSITIVE: MOV BK, 1 i nhap 1 vao BK END_CASE: Cac nhanh véi diéu kién kép. . Doi khi diéu kién nhénh cia IF hay CASE c6 dang: diéu_kién 1 AND diéu_kién 2” hay digu_kign.1 OR diéu_kien 2 139 6 day diéu_kign_1 va digu_kién_2 c6 thé duing ho¥e sai, Dau tin ching ta hay xem xét diéu kién AND (AND condition), sau dé dén diéu kién OR (OR condition). Cac diéu kién AND. iéu kién AND chi dung khi c& hai diéu kign: diéu_kién_1 va diéu_kién_2 cung ding. Ngugc lai néu mt trong chting sai, diéu kign AND ciing sé sai. Vi du 6.6. Doc mot ky tu. Néu 1 chit hoa thi hin thi no. Lai gidi: - poo mot ky ty ( vae DL) Tr (OM <= kyty) va ( ky_ty <= 42) THEN nién thi ky ty END_IF Dé na hoa, dau tién ching ta kiém tra xem ky ty trong AL c6 ding sau ‘A’ trong bang ma hay khéng, néu sai ta ¢6 két the. Néu dting, truée khi hién thi kg ty ta vin cdn phai kiém tra ky ty c6 ding truée ‘2! hay khéng. Sau day 1A mé lenh: rdoc mOt ky ty MoV AH, 1 7 chudn bi doc - inT 21h 7 ky tu vao AL pif) (CAD <= ky_ty) va ( ky_tu <= '2) CMP OAL," AY a ky_tu os ‘a? INGE END_IF + khOng, thodt ra CMP AL,’ 2! a kytu <=*2! ? JNLE END_IF ; khéng, thoaét ra ; then hién thi ky ty MOV DL, AL 7 i8y ky tu MoV AH,2 ; chudn bi hién thi INT 2th ; hién thi ky tu BND_IF: 140 Cac diéu kién OR. Diéu_kién_1 OR diéu_kién_2 1a ding khi diéu_kign_1 hoae diéu_kién_2 ting. Né chi sai khi cA hai diéu kién thanh phéin cung sai. Vi du 6.7. Doc mét ky ty. Néu la 'y’ hay ‘Y thi hién thi nd. Néu nguge lai, ket thtie chugng trinh. Loi giai: Doc mot ky ty (vao AL). Te (ky tw - ‘y') hoae (ky tu ='¥y THEN nién thi ky ty ELSE két thic chuong trinh. END_IF ‘ DE ma hoa. d4u tién chung ta kiém tra ky_ty = ‘y’ 2, Néu thoa man, diéu kign OR dung va chting ta ¢6 thé thue higén dong lénh THEN, Neguge lai van co héi dé diéu kign OR ding, dé 1a khi ky_ty bang ‘Y, va dong lénh THEN duge thi han. Néu diéu nay van sai, diéu kign OR la sai va ching ta s8 thye hién dang ignh ELSE. Sau day 1a ma Iénh: Fdoe mot ky ty Mov | AHL 7 ehuda bi doc INT 21h "7 RY tu.trong AL jaf C ky tu = ‘y") bode ( kycty ate y CMP AL,’ y’ i ky tu = sy 2 JE THEN, + dang, chuyén dén hién thi ky tur CMP AL," " i ky soy . JE THEN # dang, chuyén dén hign thi ky tu IMP ELSE_ 7 sai, két thuc TREN: MOV AH, 2 # chudn bi hién thi MOV DL, AL + lay ky ty INT 21h + 7 hién thi ne UMP ENDIF pova thoat ra ELSE_: MoV AH, ach ; 141 INT 21h 7 urd vé DOS END_IF: 6.4.2. Cac cau trac lap. M6t vong lap 1a mot chudi cde lénh duge lap lai, Sé lan Kip co thé da xde dinh truéc hoae phu thude vao cde diéu kién. Véng lap FOR. Day JA mot cau tric ip ma s6 lan lap lai dc dong lénh da biét trude ( vong lap diéu khién bing bién dém). Dang ma lénh gift FOR s6_lén_lap DO cae déng leah END_ FOR Xem hinh 6.5 _ Khdi tao dém 3 Thuc hién céc lénh Hinh 6.5: Vong FOR 142 ‘Ya e6 thé sit dyng lénh LOOP dé thy hién vong lap FOR. Lénh nay 06 dang: LOOP nhan_dich B6 dém vong lap 1a thanh ghi CX duge khdi tao bang s6_lan_lap, Méi lan thue hién lénh LOOP , thanh ghi CX ty déng gidm di 1 va néu CX khac 0 thi diéu khién duge chuyén téi nhan dich. Néu CX = 0, Jénh tiép sau lénh LOOP sé duge thi hanh. Nhan dich phai 6 truée lénh lap khéng qua 126 byte. Vong lip FOR c6 thé duge thye hién nha lénh LOOP nhu sau: ikndi tao Cx bang sé_l4n_lap TOP: : j; than véng lap oor TOP Vi du 6.8. Viet mot vong lap diéu khién bing bién dém hién thi mét ding 80 dau sao. Loi gidi: FOR 80 times DO hién thi‘? END_FOR Ma lénh 1a: MOV CX, 80 # 86 cée d&u sao duge hiés thi MOV AH, 2 p ham hién thi ky tw MOV pL, 3 ky tu hién thi TOP INT 21h 7 hién thi mot du sao Loop TOP ; lap lai 80 14n Ban hay hiu ¥ ring vong lap FOR thyc hién béi lénh LOOP sé duge thuc hién it nhat mét lan. Thue ra néu CX bang 0 khi vao véng lap, Ignh LOOP giam CX thanh OFFFFh va lénh LOOP sé duge thye hién OFFFFh = 65536 Min nia. Dé khéc phuc diéu nay, 1énh JCXZ (jump if CX is zero) duge dat trude vong lap, Ci phap cua no 1a: 3CxXZ° nhan_dich 143 Néu CX bing 0, diéu khién sé duge chuyén dén nhan dich. Nhu vay vong lap sé bj bé qua néu CX bang 0: JCX2 SKIP TOP: than vong lap LOOP TOP SKIP: Vang lap WHILE. Diy 1a vong lip phy thude vao mét didu kign. Dang ma lénh gid: WHILE didéu_kién bo c4c dang lénh END WHILE Xem hinh 6.6 Diéu_kién duge kiém tra 6 ddu vong lp. Néu né dung thi ede dong lénh sé duge thi hanh. Nauoc lai néu diéu_kign sai, chung trinh tigp tue thyc hign lénh 6 sau vong lap. R&t c6 thé ngay khi khdi dau diéu_kién da khong thot man. Trong trung hgp nay than vong lap sé khéng duge thue hién lan no. Vong lip tiép tue duge thucchién khi diéu kign edn ding. : ’ Vi du 6.9, Viét cdc Iénh dé dém 86 ky ty-trong mét dong. Léi gidi: khéi tao bé dém bang 0, doc mot ky ty : WHILE ky tu <> ky ty vé ddu déng DO dém = dém + 1 doc mot ky tu END_WHILE Cf lénh la: MOV DX, 0 ; DX dém #6 ky ty MoV AH, 1 7 chudn by doc 144 INT 2th 7 ky tu trong AL WALLE_: CMP AL, ODA 7 eR? oe )_ WHT LE : ding, thodt ra TNC DX 4 khéng phai CR, tang bé INT 21h doc moe ky tu IMP WHINE _ lap lai END_WHILE: Latu y la do vong lap WHILE kiém tra digu kign két thie d ddu vong lap nén ban ean chie chén ring bat ett bin nao lién quan dén diéu kién vong lap déu phai duge khdi go trude khi vao vong lap. Vi vay ban phai doc mét ky ty trude khi vao vong lip réi lai phai doe ky tu khac 6 cudi né, Ta dang nhan WHILF_ vi WHILE la tur dinh riéng. Hinh 6.6. Vong lap WHILE }<——___________ Sai eS Dung ¥ cde dong lénh ‘ Vong lap REPEAT C6 mét vong Nip e6 diéu kién khée do 1A ving lap REPEAT. Dang ma lénh gid cia né la: REPEAT eéc déng 1lénh UNTIL diéu_kién Xem hinh 6.7, 145 ‘Trong mot ving ap REPEAT ...UNTTE, cde déng Jénh duge thi hank sau a6 moi kiém tra diéu Irién. Néu diéu_kién dung, vong lap két thiic, néu né sai digu khién ré nhanh dén déu vong lap. Vi du 6.10. Viet cdc lénh dge vao ede ky taf, KEL the khi gap mot ky ty trang. ‘Loi giai: REPEAT doc mot ky ty UNTIL ky ty trang Hinh 6.7 Vang lip REPEAT cae déng lénh Sai Cae Jénh la: Mov AR, L } chudn bi doc REPEAT: mv 2th 7 RY ty trong AL pintil CMe AL,’ i ky ty tréng ? JNE REPEAT ; khong, doc tiép 146 So sanh WHILE va REPEAT. Trong nhiéu trudng hop khi can mot vong idip ¢6 diéu kién, sit dung vong lap WHILE hay REPEAT la tuy ¥ thich méi ngudi, Uw diém cia vong lip WHILE a vong lap e6 thé duge bé qua khi diéu kién két thic khéi tao véi gid tri logic sai, trong khi dé eée Iénh trong ving lap REPEAT ludn ditge thyc hign ft nhét mt lan. Tuy nhién eéc Iénh cho mot vong lap REPEAT 6 vé ngdn hon doi chit boi 1é n6 chi cé mét lénh nhay c6 diéu kign 6 cuéi trong khi vong lap WHILE cé nhiing hai: mét Jénh nhay 06 diéu kign 6 dau va lénh JMP 6 cudi 6.5. Lap trinh vdi cac cau tric bac cao. Dé chi ra mét chung trinh €6 thé duge phat trién tit cde todn tit gid bac cao +h Hgp ngtt (Assembly) nhu thé nao, ching ta hay giai quyét van thanh cae 1é dé sau day Yéu edu: Thang bao cho ngudi st dung nhap vao mét déng van ban. Hién thi trén dong tip theo chit hoa dau tién va sau cing tinh theo thu ty ma ASCII cua chudi vita nhap. Néu khéng c6 chi hoa nao duge nhap vao thi hién thj thong bao ' Khong c6 chit hoa |‘, Mét vi dy khi thie hién chong trinh: Ban hay vao mot dong van 64 DONG CHAY THU CHUONG TRINH! dau tién A Chit hoa sau cing = U DE gidi quyét van dé nay ching ta sé sii dung phuong phap thidt ké chuiong trinh top_down (Ui trén xudng) ma ban d& 66 thé gap trong lap trinh ngén ngit bac cao. ‘rong phudng phap nay, vin dé nguyén thuy dutge chia thanh mét chudi cic van dé con ma thuc hién méi trong chting don gian hon nhiéu so véi van dé ban dau. Méi véin dé con Iai c6 thé duge chia nhé hon nia Cu tiép tue nhu thé cho dén khi mdi van dé con 6 thé duge ma hoa true tidp. Vige st dung cae chutong trinh con cé thé phat trién phuong phdp nay - Sy phan chia du tién: 1. Hién thj théng bao ban dau. 2. Doe va xit ly dong van ban, 147 8. Hién thi két qua. Buéc 1. Hign thi théng bao ban dau. Bude nay c6 thé ma hod ngay tite khée: MOV AH, 3 chite néng bién thi chndi LEA DX,PROMPT ; ldy théng bdo ban dau int 21h p hién thi né ‘Thong béo cé thé chiia trong doan dit Higu nhu sau: . PROMPT DB ‘Ban hay vao mét déng van bdn’,GDh,0Ah ,’$* Ta dua vao cd ky tu xudng dong va vé déu dong dé chuyén con tré xudng div dong tiép theo va nhu vay ngudi st dung ¢6 thé danh vao toan bé mét déng van ban. . Buséc 2. Dgc va xir ly déng van ban. Bude nay the hién hdu hét cde cong viée ctia chusng trinh. N6 thuc hii nhap ti ban phim, tra vé céc cht cai thod man tné cing dufa ra thong bao néu Khong c6 chit hoa nao duge dye vao). Sau day 1A fie bude thy hign: Doe mot ky tir WHILE khéng phdi ky ty xuéng dong D0 TF ky tu la chit hoa (*) THEN IF ding truéc chit hoa dau THEN cht hoa @8u = ky ty END_IF, IP dig sau chi hoa cuéi, THEN chit hoa cuéi = ky ty END_IF EDN_IF doc mot ky tu END_WHILE Dong (*) thye chat 1a mgt diéu kign AND: TR (CA <= ky te) AND (RY tu <=82 ) 148 Buée 2 c6 thé duge ma hoa nhy sau: MOV AH,1 : INT 21k j WHILE i while khong phdi ky tu xuéng CMP AL, 0Dh : JE END_WHILE : vif ky tu 1a chir hoa CMP AL," : UNGE “END_IF ; CMP AL, 2! : SNLE ENDIF ; sthen vif ky ty dmg teuée chir hoa ddu CMP AL, FIRST ; JRL CHECK_LAST then chit hoa du = ky ty MOV FIRST, AL : CHECK LAST: iif ky tu dimg sau chit hoa cudi CMP AL, LAST UNG ENDIF i then chit hoa cuéi = ky ty MOV LAST, AL ; yend_ if END_IF: doc mot ky te INT 21h ; SMP WHILE ; END_WHILE: ham doc ky ty ky ty trong AL dong do CR? dang, thoat ra ky tu >= Ww 2 khéng phai chir hoa ky tu <= 2 khSng phdi chir hoa ky ty < FIRST ? khéng, kiém tra tiép FIRST = ky ty ky ty > Last? khéng, cho qua LAST = ky tu ky tu trong AL ap lai . Cac bién FIRST vA LAST phai duge khdi tao truée khi vao vong lap WHILE. Ching c6 thé duge dinh nghia trong doan dit liéu nhu sau: FIRST DB 1 LAST DB ‘er 149 Cae gid wi khéi tgo “<0 duge chon béi vi'[! démg sau ‘2’ va @ ding trade “A”. ‘Theo cach nay. chi hor isu tién duge dia vao sé bién. fim thay doi gid tri cla ca hai Véi bude 2 di duge ma hoa, chting ta c6 thé tiép tye dén bude cudi cung, Bude 3. Hién thi két qua: iF khéng 6 chit hoa, hiéu thi ‘Khéng cé chit hoa ft * ELSE hién tas ait hoa déu va cudi. END_IF y 6 thé hién thi mét trong hai théng bao: NOCAP_MSG néu khéng cé chi hoa nao duge dénh vio hay CAP_MSG néu nguge lai, Chung ta c6 thé Ichai bao ching trong doan dit liéu nhw sau NOCAP_MSG DB * Khong cé chit hoa | CAP_Ms¢ DB * Chit hoa dw tien = * . : PIRST pao DBO} Cho hoa sau cing = + Las! DBO SY . Khi CAP_MSG duge hién thi, né sé dua ra théng bao * Chi hoa dau tién =", sau 46 1a gi (ri cua FIRST réi dén ‘Chi hoa cudi cing = ‘va gid ui cia LAST. Chuing ta da sit dung ky thuat nay trong chudng urn cudi eding etia chuong 4. Chuong trinh cia ching ta sé kiém tra bién FIRST biét c6 chi hon nao duge doe vao hay khéng. Néu FIRST chits °(' 1 gid uri khéi déu cua né thi 66 nghia la khong doe vao chi hoa nao ca. : Butde 3 ¢6 thé duge ma hoa nhu sau MOV AH, 9 ¢ ham hién thi chudi fit khéng cé cht hoa cMP FIRST ,‘{* FIRST = 1 2 ONE CAPS + khéng, hién thi két qua pthen . LEA DX, NOCAP_MSG IMP DISPLAY CAPS: . 150 LEA Dx, DISPLAY: CAP_MSG INT 2th 7 bién thi théng bao end = Sau day Li chung tinh day da: Chuong trinh PGM6_2.ASM. TTT. PGM6_2: Chit hoa déu va cuéi. . L SMALL . . . STACK 1908 | . DATA PROMPT DB’ Ban“hay vao mét ding van ban’ ,ODU, OAH," $* NOCAP MSG DB ODH,OAH,* Khéng cé chit hoa [ $* CAP_MSG DR ‘ Chir hos dau tién = * FIRST DB we OB * Ch@ hoa sau oc . OB. ‘es % MATN PROC ; khdi tao Ds Mov ‘AX, @DATA Mov 98, Ax ; ¢ hién thj Lhéng bao ban dau MOV AH, & 3 chive nang hién thi chuéi LEA DX, PROMPT ¢ gy thong bao ban dau 7 INT 21h 3 niém thi no ¢ doc va xt ly mét déng van ban MOV AH, 1 ¢ ham doc xy tu INT 2th 7 kY tu trong AL ey xudng dos do CMP OAL, . JE END WHLLE : ra vit it hoa on poky tye CAD ¢ khOng piss chit hoa. : poky tues tery 5 khéng phai ch!? hoe IS} then gif ky tu dimg teute chi hoa adu CMP AL, FIRST 7 ky ty < FIRST + CONL CHECK_LAST 4; khéng, kiém tra tidy sthen chit hoa dau = rend if CHECK_LAST: ky ty MOV FIRST, AL rif ky ty ding sau chit hoa cudi OMP AL, LAST UNG = ENDIF pthen chit hoa cui MOV LAST, AL jend_if END_IF: idoc mot ky tu INT 21h UMP WRTDE_ END_WBILE: 7 bién thi két qua MOV AH,9 vif kh6ng cé chit hoa 7 ky tu > LAST? 2 kh&ng, cho qua ky ty LAST = ky ty ky tu trong AL lap lai 7 ham hién thi chudi CMe FIRST ,’(’ ; FIRST = I" 2 khong, hién thi két qua hién thi théng b4o SNE CAPS jthen LEA DX, NOCAP_MSG IMP DISPLAY CAPS: LEA’ DX, CAP_MSG DISPLAY: INT | 21h pend_if rtrd vé DOS MOV AH, 4CH INT 21h MAIN ENDP END MAIN 152 TONG KET, . Cé hai lai lénh nhdy: \nh nay 6 didu kigén va lénh nhay khong diéu kign. Lénh nhay 06 diéu kign duge chia thinh cée lénh nhay cé difu, khong du va ede lénh nhay diéu kign don. Cée lénh nhiy 06 diéu kién duge thue hién dia vao viée thiét lap cde 3 trang thai, Lénh CMP ( compare) chi ding dé thiét lap c@ trude cae lénh nhay. Nhan dich cia lénh nhay 6 diéu kin phai ditng trude khong qua 126 byte hofe diing sau khong hon 127 byte ké tix I@nh d6, M6t lénh JMP thugng duge ding dé nhay qua gidi han nay, ‘Trong trac chon lya IF-THEN, néu diéu kién kiém tra ta dung, cdc dong lénh nhanh_ding sé duge thuc hién. Trong trudng hop nguge lai, dong lénh theo sau edu tric duge thye hign, Trong mét cfu trie chon lua IF-THEN_ELSE, néu diéu kién kiém tra a dting cae dong Iénh nhénh_diing sé duge thyc hién. Trong trudng hyp ngude gi cde déng Ignh nhanh_sai sé duge thye hién. Cain phai c6 lénh IMP 6 cudi nhAnh_dung dé nhay qua cdc démg lénh cia nhanh_sai. Trong mét cu tric CASK, viée ré nhanh duge diéu khién bai mot biéu thtte. Cac nhanh tudng ting véi c4c gid tri cé thé cia biéu thie, Vong lap FOR duge thyc hign vdi s6 lan lap biét trude, No ¢6 thé duce tad lap béi Ienh LOOP, Truéc khi vao vong lp, CX phai duge khéi tgo bing 86 ldn lap lai cia ving lap. Trong mét ving lap WHILE, diéu kién lép duge kiém tra 8 du vong lip. Cac dang lénh cia vong lip duge lap Igi khi diéu kign diing. Néu diéu kign kkhdi dau 1a sai, céc dong lénh nay sé khong dutge thijc hign lan nao, ‘Trong mét vong lap REPEAT, diéu kién lap duge kiém tra 8 cudi ving lap. Cée déng lénh cia véng lap dutge lap lai dén khi diéu ching. Do diéu kign kiém tra 6 cudi ving lap nén cde dong Iénh cha vong lap nay sé duge thye hién ft nhat mot lan. 153 Thuat Agi tiéng Anh AND condition Phép vai logic hai diéu kign. condition jump instruction Lénh nhay cé diéu kin, Mot 1h nhay c6 loop OR condition signed jump single_flag jump digu kién duge thuc hign dua vio viée thiét lap ef c& trang thi Vong lap. Mgt chu6i ede lénh duye Jap lat Phép'hode logic hai diéu kién, Nhay c6 dau. Lénh nhay 6 diéu kien ding voi che 86 6 déu. Nhay diéu kign don. Lénh nhay cé diéu kign thao te dja trén mét cd ridng biet. top_down program design Thiét ké chuong trinh tit trén xudng. Khai uncondition jump unsigned jump Cac lénh mai: 154 JA/INBE JAE/INB JB/INAE gc oBE/TNA trién chuong trinh bing cach phan nhé mét vén dé Jan thamb raft nhiéu ede vain dé dan gian hon. Nhay khéng diéu kién. Sy chuyén diéu khién Khong didu kién. Nbay khong dau. Lénh nbay 06 diéu kign dung véi cae sé khong ditu. SCXZ JLE/ING JE/IZ MP JG/INLE. onc IGE/INL + ONE/INZ SL/INLE LOOP 1. Viét cac lénh Hop ngtt cho méi cu trite chon hia sau day: Ya. IP Ax <0 TREN OFFh =o END_TP ©. Gia thiét DE chita m& ASCIT cha mot ky TP (DE >=.) AND (DL <= 12 THEN Wién thi DL END_IF THEN IF Bx = 0 END_iv BND_TF e. IF (AX < BX} OR (BX = s8 chia DO tang thuong sé trir bét sé chia ti sé bi chia END WRILE Hay viét cac lénh thuc hién chia AX cho BX rdi cét thutong trong CX. 156 6. Thuat ton sau day cé thé sit dung dé nhan hai s6 duong M va N bang eéch lap lai phép cong: khéi dong tich sé bing 0 REPEAT céng M vao tich sé giam UNTIL N= 0 Hay viet céc lénh thye hién nhan AX véi BX réi est tich trong CX. Ban cé thé bd qua truéng hgp tran. ~ 7. Ta.c6 thé tao lap mot ving lap diéu khién bai bign dém ma né edn tidp tue thi hanh Khi diéu kign duge thod man. Cac lénh: LOOPE nhan + 1ap khi bang va LOOPZ, nhan ; 1l8p khi bang ZERO sé lam gidm CX. Sau dé néu CX <> 0 va ZF =1, diéu khién sé chuyén dén Iénh sau nban dich, Néu nhu CX =0 hoje ZF = 0, lénh d sau vng lip duge thye hién. Tuong ty nhu vay, cde lénh: LOOPNE nhan 7 lap khi khénh bang va LOOPNZ ~~ nhan 7 18p khi bang khéc ZERO sé lam giém CX. Sau d6 néu CX <> 0 va ZF = 0, diéu khién 98 chuyén dén lénh sau nhn dich, Néu nhu CX =0 hoic ZF = 1, Ignh 6 sau vang lap duge thye hién. & Hay sit dung vong lap LOPE viét cdc lénh doc oée ky tu dn khi mot kj tu Ithéc ky uy trdng duge dah vao hoite da nhap dit 80 ky ty. b. Dung ving lap LOOPNE viét cée lgnh doe cae ky ty dén khi mot ky tut vé dau dong duge dinh vao hose 44 nhap di 80 ky ty. 157 Chuong 7 CAC LENH LOGIC, DICH VA QUAY Téng quan Trong chuong nay chung ta s€ nghién citu vé cae chi thi ding dé thay déi dén timg bit trong byte hay word, Kha nang thao tac véi céc bit thuéng khéng cé 6 trong cde ngon ngit bac cao ( trit ngdn ngit C ), va dé cing la mét ly do quan trong dé lap trinh bing Hop ngit . Trong phan 7.1 chting t6i sé gidi thigu céc Iénh logic AND, OR, XOR va NOT. C&e lénh nay c6 thé sit dyng dé x04, thiét lap va kiém tra ting bit trong cée thanh ghi hay cée bin, Chiing ta sé sit dyng céc lénh nay dé thye hign mgt so céng viée da quen thuge nhu déi chit thudng thanh chit hoa hay con mdi nhu xée dinh xem mét thanh ghi chita 6 chan hay lé. 1 Phiin 7.2 86 trinh bay vé cac lénh dich, cdc bit ¢6 thé duge dich phi hoge trai trong thanh ghi hay trong mét 6 nhd. Khi mdt bit bi dich ra khoi thanh ghi n6 sé duge chtta trong cd CF, Vi dich trai cing c6 nghia 1a nhéin déi s6 va dich phai 6 nghia 1a chia déi né, Iénh nay cho phép chirig ta thye hign phép nhan va chia cho mét lug thiva cia 2. Trong chudng 9 ching ta s¢ sti dung ede Iénh MUL va DIV dé thuc hién cc phép nhan va chia mét céch téng quét hon, tuy nhién cae Iénh nay cham hon nhiéu se vdi cac lénh dich. ‘Trong phin 7.3 ching téi sé gidi thigu cae lénh quay. Cac lénh nay lam vige gidng nhu cdc lénh dich ngoai trv mot digu 1A khi mét bit bi ra khéi mot phia cdia ton hang no sé duge dua trd vé phia kia cia toan hang dé. Céc lénh nay c6 thé duge sit dung trong cc trudng hgp chting ta muén kiém tra hoae thay déi che bit hay nhém cae bit. ‘Trong phan 7.4 chting ta sé sit dung cae Iénh logic, dich va lénh quay dé thuc hign ede thao tae vao ra véi sé nhi phan va s@ hex. Kha nang doc va viét cfc sé cho phép chiing ta gidi quyét rat nhiéu van dé khée nha. 158 7.1 Cac lénh légic Nhu da néi 6 trén kha nang thao tae véi titng bit riéng biét 1a mét trong nhéing uu diém cla hop ngit. Chung ta cé thé thay déi titng bit trong may tinh biing céc lénh légic. Céc gia tri nhj phan 0 va 1 duge xem nhu Ia cae gid tri logic ‘TRUE hoiic FALSE. mét each tuong ting. Bang 7.1 1a bang su that cdia cée todn tir logic AND, OR, XOR( hoge phii djnh- exclusive OR ) va NOT. Khi Ignh logic duge ap dung véi ede toan hang 8 va 16 bit két qué nhan duge bang céch 4p dung chung véi ting bit mot. Vidu 71 Thyc hign cac thao tac logic sau day: 1. 10101010 AND 11110000 210101010 OR 11110000 3. 19101010 XOR 11110090 4, NOT 10101010 Tra li: L 10101010 AND 11110000 10100000 2. . 10101010 oR 11110000 31111010 3 10101010 “XOR 11110000 = 01011010 4 10101010 NOT 01010101 159 SI be I ° Bang 7.1 Bang sy that cla cc lénh logic AND, OR, XOR va NOT (0= TRUE, 1 = FALSE) 1 Cac lénh AND, OR va XOR Cae Iénh AND, OR va XOR thye hign cde thao tc logic nhut tén goi cita - ching. Ca phap nhvt sau: AND pich, nguén oR Dich, nguén XOR Dich, nguén Két qué cia thao tae duge chtta trong toan hang dich, né phai 1a mét thanh ghi hay mét 6 nhé. Toan hang ngudn cé thé la hang 86, thanh shi hay 6 nhé. Tuy nhién céc thao tac gitta 2 6 nhd la khong hgp 1é. Anh hung téi cd: SF, ZF, PF phan anh két qua cta 1énh AF khéng xée dink cr, OF = 0 Khi sit dung cac Iénh AND, OR va XOR ching ta c6 thé thay déi mét cach ¢6 chon loc cac bit ctia ton bang dich. Dé lam diéu dé chung ta tgo lén mét mau Dit duge goi J mat na (MASK). Céc bit cia mat na duge chon dé sao cho cae bit, tuong ting cia to4n hang dich duge thay di ding nhu ching ta mong mudn khi lenh logic duge thue hign. Dé chon cée bit mat ng chting ta sit dung cdc tinh chat sau day ciia cde }énh AND, OR va XOR. Tit hinh 7.1 ching ta thay, néu b biéu dién mét bit (0 ho&e-1) thi: b AND 1l=b b AND 1=b OR 0 =b, b XOR 02=b OR 2=1, b XOR 1 = 76543210 CF byte Hinh 7.3 Lénh SHR Lénh SAR Lénh SAR (shift arimethic right ) lam vige gn ging lénh SHR véi mot diém khéc bigt 14 bit msb cia toan hang dich gitt nguyén gid tri ban dau cia né, ( xem hinh 7.4). Ci phap nhu sau: SAR todn hang dich,t SAR Todn hang dich,cL Céc cd bj tae dong gidng nbu trong !énh SHR ARAARAAAARAARARAA 1514131211109 876543210 CF Word AARARAAAN 76543210 CF Byte Hinh 7.4 Lénh SAR. Thye hién phép chia bang cach dich phai Vi viée dich trai nhan déi gia tri cita toan hang dich cho nén cting 6 ly khi doan rang vige dich phai sé@ chia déi né. Diéu do ding cho cée s& chan, déi voi cée 86 16, dich phai sé chia déi né va lam tron xudng 36 nguyén gan nat. Vi du néu BL chita . 00000101b = 5 thi sau khi dich phai BL sé chia 0000010 = 2. Phép chia khéng dau va c6 dau ‘Trong phép chia bing cach dich phai ching ta phai phan biét 2 trudng hop d6i vdi cde 36 khéng dau va c6 dau. Néu dang lam viée véi céc s6 khong dau chting ta phai sit dung Ignh SHR cdn khi lam viée vdi si ¢6 dau ching ta phai sit dung len’ SAR vi ignh nay gilt nguyén dau. 169 Vid 7.10 Sit dung cée phép dich phai 4 thy hign phép chia sé khong 4 dau 65143 cho 4, thugng sé chifa trong AX. \ Tra loi: Dé chia cho 4 chting ta cdn-dich phdi 2 Min, do sé bi chia 1a s6 khong dau chting ta sé sit dyng lénh SHR. Dogn Iénh nhu sau: MOV AX, 65143 % chtta s6 bi chia Mov CL,2 X chiia s6 Jan djch phai SHR AX,CL Chia cho 4 Vidyu 7.11 Gia sit AL chita -15, hay cho biét gid tri thap phan cua AL sau khi thye hign nh SAR AL,1 Tra loi: 4 Lénh SAR chia s6 cho 2 va lam tron xudng, Chia -15 cho 2 ching ta nhan duge -7,5 sau khi lAm trén chting ta nhan duge -8. Dudi dang sé nhj phan chung ta co -15 = 11110001b. Sau khi dich phai chting ta c6 11111000b = -8. Cac phép nhan va chia t6ng quat hon Ching ta da thay rang viée nhén va chia cho lug thita cia 2 6 thé thuc hién bing céc lénh dich trai va phai. Dé nhén véi mét 86 bat ky nhu 10d chting ta cé thé két hop cdc lénh dich va cong (xem chudng 8). : ‘Trong chuang 9 chiing ta 8 hge céc lgnh MUL va IMUL, DIV va IDIV. Chung” khong bj giéi hgn trong vige nhan hay chia céc luy-thita cita 2, nhuing Tai clsm hon nhiéu so véi cae lénh dich 7.3 Cac lénh quay Lénh quay trai Lénh ROL (rotate left) dich céc bit sang bén tréi, Bit msb duge dich vao bit bén phai nhét, déng thai duge dua vao c& CF. Cae ban cé thé tung tugng cae bit cda ton hang dich tgo thanh mét vong tron véi bit Isb theo sau bit msb, xem hinh 7.5. Cit phap : ROL todn hang dich, va ROL toan hang dich,Cch 170 Lénh quay phai Lénh ROR (rotate right) lam viée giéng nhu lénh ROL tri mét diém khée bigt 1a cdc bit duge dich sang phai, bit bén phai nhat duge dich vao bit msb déng thdi ciing duge dua vao ed CF. Ca phap cia lénh: ROR todm hang dich,1 va ROR todn hang dich,cL. 4 aAnanAnAnARAAN CH LL CF 1514231211109 876543221 Word C++ CF 76543210 Byte Ley 6) _£\ MN Hinh 7.5 Lénh ROL fanaaaaaanananad LI TITTELR _L 1514131211109 876543210 CF Word WAARAAAA 765423210 CF Byte Hinh 7.6 Lénh ROR wat Trong céc lénh ROL,ROR cé CF ehia bit bj dich ra khéi toan hang. Vi du sau sé trinh bay mGt phyong php dé xc dinh cae bit trong mét byte hay word ma khong lam thay déi ndi dung caa ching, Vidu7.12 Sit dung lénh ROL dé dé so bit 1 wong thanh ghi BX ma khOng lam thay déi ndi dung cita n6, chtta két qué trong AX. Lai giai: XOR AX, AX FAX dé bit MOV CX,16 iBién dém vong lap WOR: ROL BX,1 ;CF chua bit bj dua ra INC NEXT pbit 0? INC AX ikhéng phai tang sé bit 1 NEXT: LOOP TOP ;14p lai cho @@n khi lam xong ‘Trong vi dy trén day, chting ta da sit dung’lénh JNC (Jump if No Carry), lénh nay thuc hién viée nhay néu CF = 0. Trong phan 7.4 chung ta sé sit dung dé dua ra ngi dung cia m@t thanh ghi dudi dang nhj phan. Lénh quay trai qua co nho Lénh RCL (Rotate Carry Left) dich eéc bit ca toan hang dich sang tréi. Bit msb duge dat -vao ed CF, gid tri ch cla CF duge dua vao bit phai nhat cla toan hang dich. Ndi cach khéc RCL lam viée giéng nhu ROL ngoai trix mot diéu 18 63 CF ciing 1& mét phn cia vong tron tao lén bdi cae bit dang dude quay (xem hinh 7.7), et phap cia lénh: RCL todén hang dich,1 va RCL todn hang dich,cL Lénh quay phai qua cd nhé Lenh RCR (Rotate Carry Right) hoat dng gidng nhy lénh RCL, nhung cée bit duge quay sang phai (xem hinh 7.8), ci php cia 1énh nhu sau RCR todén hang @ich,1 Va RCR todn hang dich,CL 172 AL 1614131211109 8 76543210 Word ray 76543210 Byte Hinh 7.7 Lénh RCL AAAA 1514131211109 8 76543210 Word Hinh78 — Lénh RCR 173 Vidyu7413 Gia sit DH chita 8Ah, CF = 1, va CL chita 8. Cho biét ngi dung caja DH va CF khi thu hién lénh RCR DH,CL? ° Tra léi: DE Céc gid tri ddu [7 ]10001010 Sau 1 1an djch 11900101 Sau 2 1d4n dich o1100010 Sau 3 1an dich 10110001 Nhy vay sau khi thyc hign lénh DH chia 10110001b = B1h ‘Tae déng cia cdc lénh quay dén cd SF, PF, ZF phan anh két qua AF khong xae dinh . CF = bit cudi cing bj dich ra khéi toan hang OF = 1 néu két qua déi défu trong ldn quay cudi cing. Mat cg dung: Dao cdc mau bit Ching ta hay xem xét van dé ddo céc mu bit trong mt byte hoe mot word dé iam mét vi du vé ting dung cia céc 1énh quay va dich. Chang han AL chia, 11011100 ching ta muén 4éi lei thanh 00111011. Mét phuong phap don gidn 1a sit dung lénh SHL dé dich cée bit ra khéi déu bén trai cha AL rdi dig lénh RCR dé dita né vao dau bén tréi cha mot thanh ghi khéc nhu BL chang han. Sau khi lgp lai céng viée dé 8 ln BL sé chtta cée mau Bit da dao nguge ctia AL va c6 thé chép lai ndi dung cia né vao AL. Doan lénh nhv sau: MOV CX,8 786 1dn can thyc hién REVERSE: SHL AL,1 cr RCR BL, né'vao BL LOOP REVERSE khi DO xong MOV AL,BL ;AL chita mdu bit ddo ngugc 7.4 Vao ta v6i cdc 86 nhi phan va sé hex. Mgt tmg dung khé tin lgi eta ede Jénh quay va dich 1a thy hién cfc thao tae vaolra véi cdc sf nhj phan va 8 hex. 174 Nhap cac $6 nhi phan Dé nhap céc 86 nhj phan chting ta gia thiét ring chugng trinh doc vao cftc 36 nhi phan ti ban phim két thc bing phim ENTER. Cac s6 thue su 6 dang chudi cdc chit sé 0 va 1. Khi mdi ky ty duge nh&p chting ta phai déi chting ra gid tri cla ting bit réi két hgp cae bit vao trong thanh ghi. Thuat toan sau thuc hién vige doc mét sé nhi phan ti ban phim réi sau dé luu né vao thanh ghi BX. Thu4t todn nh§p sé nhj phan Xod BX /* BX s@ gitt k@&t qua */ Nhap mOt ky tu /* '0' hoac ‘1¢ */ WHILE ky tu <> CR DO péi ky tu ra gid tri nhi phan Dich trai BX Chén. gid trj nhan duoc vao bit 1sb cia Bx Nhap ky tu END_WHILE Biéu dién vdi viéc nhap 110 Xod BX BX=0000 0000 0000 9000 ' Nhap vac ky ty ‘1’, @6i né thanh 1 Dich trdi BX BX=0000 0000 0000 9000 Chén gia tri nh@n duge vao bit lsb cia BX BX=0000 0000 0000 0001 { Nhap vao ky ty ‘1’, déi né thanh 1 | Dich trai Bx BX=0000 0000 0000 0010 i Chén gia tri nhgn duge vao bit lsb cha BX BX=0000 0000 0000 0011 i Nhap vao ky ty ‘0’, a6i né thanh 0 Dich trdi BX BX=0000 0000 0900 oi10 chén gia trj nhan duge vao bit lsb cia BX BX=0000 0000 0000 O110 BX chia 110b ‘Thugt ton trén day da coi rang cdc ky ty nh4p vao chi la mot trong 3 ky ty ‘T’, ‘ ‘0’ hay CR va cé nhiéu nhat 16 ky ty duge nh4p. Khi mét ch@ sé méi duge nhap : vao, cae bit ¢6 sin trong thanh ghi BX phai diige dich trai dé gianh ché cho n6. i Do dé 6 thé ding lénh O R dé chén bit méi vao BX. Céc Iénh hop ngd nhu sau: 175 XOR BX, BX 7X0 BX Mov AH,1 ;Ham con doc ky ty tu ban phim INT 21H FDec ky ty WHILE_: CMP AL, 0DH CR? JE END_WHILE ;Dting !,két thric AND. AL,OFH ;Kh6ng!d6i ra gid tri nhj phan SHL —-BX,1 ;Gianh chd cho gid tri méi OR BL, AL han gid tri méi vao BX INT 21H 7Doc tiép ky ty JMP WHILE_ +Lap lai END_WHILE: Vige xudt cdc gid tri nhj phan Vige duta ra ngi dung cia BX dudi dang nhj phan ciing ding cdc lénh dich. Duéi day ching ti chi dua ra thudt ton, cén phén chuong trinh bang hgp ngit gianh cho cc ban lam bai tap. Thuat to4n.dua ra sé nhi phan FOR 16 14n, DO: Quay tr4i BX /* BX chia gid trj dua ra, bit msb dua vao CF */ i IF CF=1 ‘THEN Dua ra ‘1’ ELSE Dua ra ‘0° END_IF END_FOR Nhap cc sé hex Viéc nhap cdc sé hex bao gém chit sé tit “0’ dén “9” va cde chit cdi tit “A” dén “F két thac bing ky tu OR. Dé don gidn chiing ta gid thiét : - Chi sit dung cae chit hoa - Ngudi sit dung chi dita vao t6i da 4 chit a6 hex. Qué trinh aéi cdc ky ty thanh tri nhj phan phic tgp hon so véi tru’ng hgp nhgp 88 nhj phan, ngoai ra BX phai dtige djch 4 Mdn dé gianh chd cho mét gid tri hex. 176 Thuat toan nhap s6 hex Xod BX /*BX sé chia gig tri nhap vaoty Nhap ky tu hex WHILE, “ky tuescr po Bei ky ey ra tri nhi phan Dich tréi Bx 4 14n Chén gid tri méi vao 4 bit thap cia ax Nhap' ky tu END_WHILE Biéu dién vige nhap GABh Xod BX BX=0000 0000 0000 og00 Nhap vao "6", a8i thann O110 Dich tréi Bx 4 1an BX=0000 0000 0000 o000 Chén gid trj nhan auge vao 4 bit thép ctia Bx . BX=0000. 0000 0000 o119 : Nhap vao “a”, adj thanh ah=1019 Dich tréi Bx 4 1ldn BX=0000 0000 0110 0000 Chen gid tr} nhén auge vao 4 bit thap cha Bx BX=0000 0000 0110 1010 Nh@p vao “B*, a6i thanh Bhe1012 Dich trai Bx 4 14n BX=0000 0110 1010 oo00 Chén gid trj nhan duge vao 4 bit thép cla ax BX=0000 0110 1010 i013, BX chita O6aBh. Doan chuong trinh XOR BX, BX iXo& BX MOV CL,4 #BO dém 4 1an djch MOV AH,i Ham con nhap ky tu tu ban phim INT 2in iNhap m6e ky ty WHILE_: CMP AL, ODH CR? JE END_WHILE Ding! ket thu iDOL ky tu va gig tri nhi phan CMP AL, 39H 7B6 1A chit sé 2 SS LETTER: iKhdng phait, a6 1a mot |cnit c4i iNhap mét sé 5 W7 to AND AL, OFH 7 JMP SHIFT y LETTER: * . SUB AL, 37K SHIFT: 7 SHL BX,CL ;dua gid tri vao BX OR BL, AL INT 21H JMP WHILE_ END_WHILE: , khéng. Dua ra sé hex FOR 4 14m DO VIF DL<10 j THEN ELSE END_IF END_FOR 178 - 746i cht, s® ra gid tri nhj phan ;Dem chén vao BX ;D6i chit céi ra tri nhj phan ;Gianh chd cho gid tri méi ;Chén gid tri méi vao 4 bit thdp peta BX. . ;Nh4p ti€ép ky ty ti ban phim ;Lap Tai cho d@n khi phim ENTER rduge an - Chui ¢ ring chvong trinh khéng kiém tra xem cdc ky tu nh4p vao cé hgp 1é hay BX chia a6 16 bit bang gid tri cia s6 hex 4 chit sé. Dé dua ra ndi dung cia BX, ching ta bat dau tu bén trdi, Idy ra tig nhom bit cha mdi chit sé rdi ddi n6 thanh chit o hex tuong ting sau dé dua ra. ‘Thuat toan dua ra s6 hex Chuyén BH vao DL /*BX chia gid tri dua ra*/ Dich DL vé bén phdi 4 lan pi thanh mot trong céc ky tu: “Om, 22.09" péi thanh mot trong cde cht cdi: aM Re Dua ky ty ra Quay Bx 4 1an vé bén trai Biéu dién vige dua ra sé 4CA9h trong BX | : BX=4CA9h=0100 1100 1010 1001 Chuyén BH vao DL DL=0100 1100 Dich phai DL 4 14n DL=0000 0100 péi thanh ky tu va dua ra DL=0011 0100=34h= +4/ Quay BX 4 1dn vé bén trdi BX=1100 1010 1002 0100 i } Chuyén BH vao DL DL=1100 1010 Dich phdi DL 4 1an DL=0000 1100 péi thanh ky ty va-dua ra DL=0100 001%=243h= ‘cr S Quay BX 4 1d4n vé bén tréi BX=1610 1001 6100 1100 Chuyén BH vao DL DL=1010 1001. Dich phdi DL 4° 1an pL=0000 1010 péi thank ky ty va dua ra DL=0100°0010=42h= 'BY Quay BX 4 .1an-vé bén trdi BX=1001 0100 1100 1010 Chuyén BH vao. ‘DL Du=1001 0200 Dich phai DL 4 14n | DL=0000 1001 péi thanh ky tu va dua ra DL=0011'1001=39h= ‘9° Quay BX 4 1an vé bén tréi BX=0100 1100 1010 100i= Gia trj ban dau. ' Vige lap chwong trinh theo thuat ton nay ching t6i gidnh cho céc ban. 179 | i TONG KET 180 ‘Trong chuong nay chung ta da hoc duge: + 5 lénh logic 14 AND, OR, XOR, NOT va TEST Lénh OR duige stt dung dé thiét lap cdc bit riéng biét cia ton hang dich hay dé kiém tra xem todn hang dich c6 bang 0 hay khéng. Lénh XOR duge ding dé lay bi cde bit riéng bigt cla toan hang dich hay dé x08 né vé 0. Lénh NOT dang dé lay bi 1 ciia toan hang dich. Lénh TEST ding dé kiém tra ting bit riéng biét cia toa hang dich. Chang han né cé thé kiém tra xem mét sé'la chin hay lé. Cac lénh SHL va SAL dich ting bit cia ton hang dich sang trai mot vi tri, Bit msb duge dua vao cd CF va mot gid tri 0 dude dua vao bit lab. Lénh SHR dich tiing bit cata toan hang dich sang phai 1 vi tri, bit msb duge dua vao cd CF va mét gid tr] 0 dutoc dua vao bit Isb. Ténh SAR hoat ding tuong ty nhu lénh SHR nhung bit msb duge gid nguyén gia tj. Cac lénh dich ¢6 thé ding dé nhan hode chia cho 2. Céc Jénh SHL va SAL nhan déi gid tri trv khi co hién tuong tran xdy ra. Cac lénh SHR va SAR chia d6i gia tri cia toan hang dich néu né lA s6 chan. Trong trudng hgp né la 86 1é cdc Iénh nay chia déi gid tri cia né va lam tron xudng s6 nguyén gan nhat. Lénh SHR ding cho s6 hoc khéng du va lénh SAR diing cho s6 hoe c6 dau. Lénh ROL dich titng bit cia ton hang dich sang trai, bit msb duge dua vao vj tri cda bit Isb, Déi voi lnh ROR ting bit dich.sang phai mét vi tri, bit Isb duge dua vao vj tri cia bit msb. Trong cd 2 trudng hgp cd CF chita bit eudi cing duge dich ra khéi toan hang dich. Cae I¢nh RCL va RCR hoat dong ging nhu céc lénh ROL va ROR nhung bit bj quay ra khdi toan hang dich duge dua vao cd CF cén ndi.dung cila cd CF duge dua vao toan hang dich Cing c6 thé thc hign cée phép dich va quay nhiéu lin cing m6t lic, khi 46 CL phai chita s@/ldn dich hogc quay edn thu hién Céc Iénh dich va quay duge sit dung rat hitu higu dé vao/ra vdi cée sé nhi phn va s6 hex. : Cac thuat ngir tiéng Anh Clear Xod - déi gid tri thanh o Complement Lay ba - Déi tir 0 vé 1 va t veo Mask Mat ng - Mot miu bit dahg trong céc thao tae 16 Bic €6 x08, thiét lgp hay kiém tra ede bit xde dinh trong 1 toan hang, SET Thiét l4p - Déi gig trj cia bit thanh 1 Céc lénh méi 181 Bai tap 1, Thu hign eae phép tinh légic sau day a. 10101111 AND 10001001 40110001 OR 01001001 61111200 XOR 11011010 . NOT 01011110 aoe 2, Viét cdc Wenh logic dé thuc hign cde cong vige sau day. f Kod ede bit d vi tri chin cha AX, gitf nguyén cae bit khéc. b. Thiét lap ofc bit Isb va msb eda BL trong khi gid! nguyén cée bit khée. mk ¢, Dio bit msb cia BL, gitt nguyén céc bit Khée. 4. Thay n6i dung cia bién word! bing s6'bit 1 cha n6. 3, Dang lénh TEST dé : a. Thiét lap od ZF néu ngi dung cia AX bang 0. +b, Xod ed ZF néu noi dung cia 1a mgt 36 1e, ¢. Thiét lap SF néu DX chia s6 am. d. Thiét lap ZF néu DX chia 36 dudng hogc 0. ¢, Thiét lép PF néu BL chita m@t o6 chin céc bit 1. 4, Gid of AL chéta 1100101 1b va CF=1, cho biét moi dung mai cia AL kbi mai lgnh sau duige the hign, Diéu kign du ding cho tat of ce phan cia cau hoi. a. SHL AL,1 . SHR ALL c ROL AL,CL trong d6 CL chia 2 4. ROR AL,CL trong d6 CL chita 3 ec. ‘SAR ALCL trong 46 CL chtta 2 f 8 RCL ALL RCR AL,CL_ trong 46 CL chita 3 5. Viét 1 hay nhiéu lénh 46 thue hign ede cbng vio sau, gid oit khong c6 hign tong tran xdy ra: ‘a, Nhan d6i mét bign kiéu byte c6 gid tr] Boh b. Nhan néi dung ca AL véi'8. ¢, Chia 32142 cho 4 va tu két qua trong AX. 4. Chia -2145 cho 16 va lu két qua trong BX. 6, Viét cdc lénh thyc hién cdc céng vige sau: . a. Gia oft AL chia gid tri nbd hon 10, bay déi n6 than mot eh 6 thap phan. b. Gia su DL chta ma ASCII caa mét chit hoa, hay déi né thanh chit thudng. 182 7. Viét céc Ignh thyc hién ede cong viée sau: a. Nhén ndi dung cia BL véi 10d, gid als khong e6 hign tung tran. b. Gid sit AL chita 86 Am, hay chia né cho 8 va Iau 86 du vao AH. (G¢i ¥ :diing lénh ROR) - Cc bai tap lap trinh 8. Viét mt chuong trinh théng bao cho ngutdi sit dung vao mét ky tu, in va trén cae dang lién tiép nhau ma ASCII cia ky tit d6 dudi dang nhj phan, sO céc chit sf 1 trong ma ASCII duéi dang nhi phan ¢6, Vidy: Danh vao mét ky ty: A Ma ASCII cia A dudi dang nhj phan 1401000001 SS ede bit 11a 2 . 9. Viét chong trinh théng bao cho ngudi st dung d4nh vao mét ky tu va in ra ma ASCII cia ky tu duéi dang hex d dong tiép theo. Lap lai cho dén khi ngudi sit dung danh ENTER, Vidy: Danh vao mot ky tt Z Ma ASCII cia Z duéi dang hex la 5A Danh vao mét ky ty: 10. Viét chudng trinh théng béo cho ngudi sit dung dénh vao mot sé hex nhé hon hay bing 4 chit s6. Dua ra sé dui dang nhj phan 4 dong ké tiép. Khi ngudi sit dung dua vao mét ky ty khong hgp 1, théng béo dé ho vao li, Chudng trinh chi nhan céc chit in hoa. Vi dy: Danh vao mét s6 hex(0..FFFF): 1a Chil sé hex khéng hgp lé, fily vao lai :|ABC Duéi dang nhi phan né bang: 0001101010111100 Chung trinh cia ban eé thé bé qua cde ky tu sau 4-ky ty dau tién. 11.Viét chuong trinh théng bao cho ngudi sit dung danh vao mét 86 nhj phan 6 nhd hon hay bing 16 chi s6. Dua ra so dudi dang hex & dong ké tiép. Khi ngudi st dung dua vao mét ky ty khéng hop 16, théng bao dé ho vao lai. Vi du: Danh vao mt 96 nhj phin (nhiéu nhét 16 chit sé):111000001 Dui dang hex né bing:E1 Chuong trinh cia ban cé thé bé qua cae ky ty sau 16 ky tu dau tién, 12.Viét m@t chuong trinh théng bao cho ngudi sit dung dita vao 2 s@ nhj phan, mdi a6) ©6 8 chi 96, in ra man hinh 4 dng tiép theo tdng cia chting duéi dang nhj phan, M6i khi ngudi sit dung dénh vao mét ky ty khéng hgp 16 sé 06 théng béo yéu edu» 183 vio lai, Méi s6 duge nban sau khi ngudi sit dung sif dung danh ENTER. Vidu: ‘Danh vao mét 6 nhj phan & chi s6:11001010 Panh vao mét sO nhj phan 8 chit s6:10011100 Téng ciia ching dang nhj phan b&ng:101100110 113.Vigt mét ehwong trink thong béo cho hgudi sit dung dua vao 2 0 hex khong dau trong khoang tit 0 dén FFFFh, in ra man hinh 4 dong tiép theo tng cha ching dui dang hex. Méi khi ngudi sit dung danh vao mt ky tu khéng hgp Je sé c6 thong bao yéu edu vio lai. Chuong trinh cia ban phai co kha nding kiém oat hién tugng tran khéng déu, Mai s6 duge nhan sau khi ngudi sit dung sit dung danh ENTER. Vidu: Danh vao mét sé hex, 0 - FFFF:21AB Danh vao mét s0 hex, 0 - FFFF:FEO3 ‘Teng cita ching la 11FAE 14. Viét mOt chudng trinh théng bao cho ngudi sit dung danh vao mt chudi céc chit sé th4p phan két thc bing phim ENTER, va in ra man hinh d dong ké tiép téng cha chting 6 dang hex. Néu nguii sit dung dénh vao mét ky ty khéng hgp 1é phai thong bao dé ho vao lai. Vidu: Danh vao mét chudi cdc chit s6 thap phan: 1299843 r ‘Téng cia cfc chit sf dudi dang hex 1a 0024 Chuang 8 NGAN XEP VA CAC THU TUC * Téng quan. 8.1. Doan ngan xép cita chudng trinh ding dé luu trit tam thai cdc di ligu va dia chi, Trong chong nay ching tdi trinh bay vé cée thao tée véi ngan xép vA céch thie sit dung ngan xép dé Khai béo cée thii tue. ‘Trong mye 8.1, chting tai gidi thigu vé cdc Iénh dé céft vao va lay ra dit ligu ti ngén xép: PUSH va POP. Vi tit cudi cing ct vao ngan xp 88 duge lay ra ddu. tién nén ngan xép cé thé ding dé dao nguge thi tu mét day dif lig. Tinh chat nay sé duge khai thac trong myc 8.2. Cée thi tye la phan hét ste quan trong trong lap trinh ngén ng dae cao, diéu nay cing ding v6i ngén nga Hyp ngit. Myc 8.3 va 8.4 56 trinh bay nhing diém cg ban cia cdc thit tuc trong ngén ngi Hop ngit. Vé mat ky thuat, ching ta c6 thé biét chinh xée mét tha tue duge goi va tré vé chuang trinh goiné nhu thé nao. Trong muc 8.5, chting tdi sé dita ra vi dy mt thi tuc thue hign phép nhan nbj phan bing phuong phép cng va dich bit. Qua vi dy nay ban sé hoc thém duge chit it vé chuong trinh DEBUG. Ngan xép. Ngan xép (LIFO) la cu trie di lidu mét chiéu. Cac phén ti duge cat vao va lay ra tix mOt dau cia célu tric, tite 1A né duge xit ly theo phuong thite ‘vao - ‘trude, ra sau’ (LIFO: Last-In, First-Out). Phén tit duge efit vao cuéi cing gi la dinh ciia ngan xép. Ta 6 thé hinh dung ngiin xép nhu mét chéng dia: chiéc dia cudi cing duge xép vao nim trén dinh va chi c6 né méi 6 thé duge Iéy ra déu tién, 185 ‘Méi chuong trinh phai danh ra mét khéi bé nhé dé lam ngan xép. Ching ta thye hién digu nay khi khai bao dogn ngan xp. Vi dy: STACK 100h Khi chutong trinh duge bién dich va nap vio bé nhd, SS sé chita dia chi doan ng&n xép. Trong khai béo ngan xép néu trén, con tré ngan xép SP duge khdi tao bang 100h. Diéu nay Jam phat sinh mOt vi tri ngén xép réng. Khi ngan xép khéng réng, SP chita dia chi offset cita dinh ngan xép. PUSH va PUSHF. Hinh 8.1.a Ngan xép réng: — Lénh PUSH duge ding dé thém mét tit méi vao trong ngan xép. Ca phap: PusH onguén day nguén 1 m6t thanh ghi 16 bit hod mét ti nhé. Vi du: E BUSH AX Lénh PUSH thue hign ede céng viée sau day: 1, Gidm SP di 2. 2. Mét ban sao cia ndi dung cia toan hang nguén duge chuyén vao dia chi xAe dinh béi $$ ; SP. Toan hang nguén khéng bi thay déi. 186 Lénh PUSHF Khéng c6 toan hang efit ni dung cha thanh ghi cd vao ngan xép. Ban du, SP chita dja chi offset cla 6 nhé theo sau doan ngin xép. Lénh PUSH déu tién gidm SP di 2 lam cho con tré chi dén tif cudi cng cia trong - doan ngan xp, Bdi vi lénh PUSH lam gidm SP nén ngan xép phat trién vé phia dinh b6 nhé, Hinh 8.2 chi ra lénh PUSH lam viée nhu thé nao. Hinh 8.1.b Sau lénh PUSH AX POP va POPF. Lénh POP duge ding 4é lay ra phdin ti dinh ngin xép. Cai phép: PoP dich ; trong dé toan ti dich 1A mét thanh ghi 16 bit ( trix IP) hogc la mét tif nhd. Vi du: POP BX Lénh ‘POP thuc hién cdc céng viéc sau day: 1. Noi dung cia 6 nhé SS; SP (dink ngan xép) duge chuyén t6i todn tit dich. 3 2. SP tang lén 2. Hinh 8.2 chi ra m6t Iénh POP Jam viéc nhu thé nao. Lénh POPF dua vao thanh ghi cd néi dung cha dinh ngiin xép. C&c lénh PUSH, PUSHF, POP va POPF déu kchéng anh hudng dén cd. Liu ring cic lénb PUSH va POP chi thao téc voi cae WORD, vay nén néu ding v6i cdc byte nhut sau: PUSH DL ;khéng nop 16 * 1a khong hgp Ié. Ciing nhu vay v6i 06 ligu tre tiép: PUSH 2 ikhéng hgp 1@ - \ Chit ¥; Ct mét 86 ligu tryc tiép 1 duge phép ddi véi cdc bé vi xii ly 80186, 80486, Cac bé vi xit ly nay 88 duge trinh bay 4 chung 20. Ngoai chong trinh cda ngudi aif dung, hé diéu hanh cing sit dung ngan xép cho cée mye dich cia riéng né. Vi du'dé thyc hién ham INT 21h, DOS ghi lai moi thanh ghi ma né dang dén vo ngi x€p va phuc hdi chting khi phuc vy ngdt-duge hoain thanh, Ngudi sit dung khéng efin quan tam dén vin dé nay bai"! vi tat ca céc gié tri ma DOS edt trong ngan xép 88 dugc lay ra hét truée khi tra diéu khién cho chutong trinh cia ngudi sit dung. . Hinh 8.2A. Trude 189 Hinh 8.2C, Sau lénh POP DX. 8.2. Mot Ung dung cua ng&n xép. Béi vi ngan xép hoat dong theo phuong thie vao truéc-ra sau nén thit tu cla cfc phan tif c&t vao ngan xép sé bi dao nguge khi lay ra. Chuang trinh sau day sé sit dung tinh chat nay dé doc mét chudi ky tu va hién thj ching theo thit tu nguge lai trén dong tiép theo. Thuat toan dao ngugc thir tu. Hién thi ddu '?" Khdi dOng bO dém bang 0. Boe mot ky ty. WHILE khéng phai ky tu vé dau déng DO c&& ky tu vao ngan xép. Tang bién dém Poc mot ky tu. END_WHILE Chuyén con tré xuéng déng mdi. FOR bién dém DO Lady mt ky tu tu ngan xép. Hién thi nd. i END_FOR Sau day 1A chuong trinh: Chuong trinh PGM8_1.aSM sdting, thodt khdéi véng lap ds TITLE — PGM8_1:REVERSE INPUT 2 MODEL © SMALL 3: STACK 100H a cope 5: MAIN PROC 6: shign thi loi adc ngusi st dung a - MOV AH,2 iehudn bi hién thi B: Mov DL,'?" sky tu a@ nign thi a: INT 21h shién thir?’ khdi déng bign dém ky tu KOR CX,CX doe mot ky ty MOV AH,1 ichudn bi dee INT 23h doc mot ky tu while khéng phdi ky tu xudng dang do 16: WHILE : : CMP AL, ODh iCR? 18 JE END_WHILE 19: rcdt ky ty vao ngan x@p va tang bién dein 20: PUSH AX sc&t vao ng&n xép 2a: Inc Cx id@m = dém+1 22: idoe mot ky tu 23: INT 21h doc mot ky ty 24: SMP WHILE i tré vé ving lap 28: : 26 uEngddng tiép theo ar: Mov AH,2 28: Mov DL, 0Dh 29: INT 21h 30: MOV DL, OAn al: INT 2h ;thi hanh 32: Cx2 EXIT ithodt néu dém=0 335 for bién dém do wy TOP: 35: 1éy mot ky tu tu ngan xép 36: POP DK : lay mét ky tu tt ngan xép 191 38: 39: 40: 4: 42: 43: 44a: 37: phién thi nd INT 21h shién thi nd LOOP TOP yend_for EXIT: MOV AH, ACH INT 21H MAIN ENDP END MAIN Bai [é sO cdc ky tu nhap vao 1a khéng xac dinh trude, chung trinh ding CX dé dém né6. Sau 46 CX diéu khién vong l§p FOR hién thi cée ly ty theo thi ty nguge lai ‘Trong ede dong 16-24, chutong trinh ding mt vong lap WHILE dé ciit cae kg ti ngan xép va doe cée ky ty méi cho dén khi ky ty vé ddu dong duge danh vo. Mac da cdc ky ty chi chifa trong AL, chting ta van phdi céit cd AX vao ngin xp béi vi toan tit trong lénh PUSH phai la mét WORD. Khi chung trinh thoat khdi vong lip WHILE ( dang 25), tat cA cic ky tt déu da duoc cit vao ngan xép véi byte thilp cla dinh ngan xép chia ky ty cat yao sau cing, AL chiia ma ASCII cia ky tu vé déu ding. Dong 82 chuong trinh kiém tra xem e6 ky ty nao duge doc vio hay khéng, Néu khéng thi CX bing 0 va chugng trinh nhay tré vé DOS. Néu it nhat mgt ky tu duge doe, chuiong trinh di vao vong lap FOR, trong dé cdc lénh POP lp Jai sé 4 dua vao DX sé ligu lay tit ngan x€p (do dé DL chita ma cia ky ty) va hiéh thi cae ky ty. Mét vi dy khi chay chwong trinh: c>PRG8_1 ?THIS IS A TEST TSET A SI SIRT > PRGB_1L > (chi ky tu vé dau déng duse danh vo) Cc 8.3. Cac thuat ngif cia tha tuc. ‘Trong chuong 6 ching toi da dé cp dén § tudng lap trinh tiv trén xuéng, Néi dung cila y tuéng nay 1a phan tich vin dé ban dau thanh chuéi cde van dé con dé thue hién hon. Céc ngén ngit bac cao thudng dung cde thi tue dé gidi quyét cée vain dé con nay va ching ta cing 6 thé lam tuong ty déi v6i Hyp ned. Nhu vay m@t chung trinh Hgp ngit c6 thé duge tao nén bang céch két hgp cac thil tye, ‘Trong 86 cde thi tuc sé c6 mét thi tue chinh, né chita diém xudt phat coa chuong trinh. Dé thye hign mét nhiém vu, tha tue chinh goi mot trong thu tue edn lai. Rét 6 thé céc thit tuc nay lai goi ce tha tue khée hay mét tha tue goi chinh né. cde Khi mét thi tuc goi mt thi tuc khac, diéu khién duge chuyén dén thir tue duge goi va cde Iénh cia né duge thi hanh. Tha tue duge goi luén trd diéu khién vé cho th tue goi tai lenh tiép theo ca ding lénh goi (Hinh 8.3). Trong céc ngOn ngit bée cao co ché goi ya trd vé la an doi vdi ngudi lap trinh con trong Hop ngii chiing ta c6 thé thay 16 né lam vige nhu thé nao (xem myc 8.4), Khai bao thd tuc. RET Ca phap khai bao mét tha tue nhu sau: name PROC type pthan thi tue RET mame ENDP { ‘Trong d6, name 1a tén cia thi tue dink nghia béi ngudi sit dung. Toan hang tuy chon tyBe e6 thé la NEAR hay FAR (NBAR duge ngdm dinh néu bé qua type). NEAR cé nghia 1a dong lénh goi thé tye & cing doan véi tha tue dé, nguge Iai tuy chon FAR eé nghia dong lénh goi d trong mét doan khée, Che phén sau day ta gid thidt moi thi tye déu cd kiéu NEAR. Cac thai tye FAR s@ duge trinh bay trong chutong 14. \ Dé tra didu khién vé chuong tiinh goi ta sii dung lénh RET ( return). Moi tha tuc (ngoai tr¥ tha tue chinh) déu phai c cé mot lénh RET 6 dau do. ‘Thutng thi né 1a lénh cudi ciing eta thi tue. | smu eroe MAIN PROC CALL PROC1 >| Lénh tiép theo PROC1 PROC Lénh dau tién RET Lién lac giita cac thi tuc ‘Mét tha tuc phai cé cach nao dé dé nhfn cae gid tri va tra vé két qua cho thai tuc goi né. Khéc véi cdc thi tye cla ngén ng bac cao, cde tha tuc eda Hop ngit khéng cé danh sach tham sé, vi thé cée l4p trinh vién phai nghi cach cho vide lién lac gitta cae tha tuc. Vi du néu chi ¢6 vai so’ ligu-vao. ra ta ¢6 thé chia chting trong céc thanh ghi. Phuong phap chung cho viéc lién lac gitta cac tha tue sé duge trinh bay trong chuong 14. Cha giai cdc thd tuc. Negoai cdc yéu cdu vé cti phap. méi tha tyc cing nén eé nhitng ldi gidi thich dé b&t ky ai doc chuang trinh nguén déu cé thé hiéu duge cae thi tyc lam gi, né lay s6 ligu va tra vé két qua d dau. Trong cuén sach nay, thong thudng chting t6i chti gidi cdc tha tyc nhu bang khéi 13i binh nhu sau: ; (miu ta thd tue lam gi) ; Vao: (ndi ly théng tin tit chufong trinh goi) ; Ra: (ndi tra vé théng tin cho chudng trinh goi) ; SU dung: ( Cée chugng trinh ma thi tuc goi) 8.4. CALL va RET. h CALL ditge ding dé goi mét thi tue. Cé hai kiéu goi thd tue 1A goi truc tiép va gin tiép. Ca php ciia 1énh goi tha tuc tryc tiép: CALL name 194

You might also like