Đề tài Kiến trúc may tính

Hệ thống máyvi tính (Microcomputer) cơ bản bao gồm các thành phần sau: + Đơn vị hệ thống (System Unit) + Bànphím, chuột. + Mànhiển thị (Display Screen) + Cácổ đĩa (Disk Drives) -Đơn vị hệ thống th-ờng đ-ợc coilà Máytính (Computer). Nó chứa các bản mạchcủa hệ thống máytính. - Bàn phím, chuột, màn hiển thị th-ờng đ-ợc gọi là thiết bị vào, ra (I/O Devices). Chúng thực hiện các chức năng nhập và xuất của hệ thống. -Mạchtích hợp (Intergrated Circuit"IC") đ-ợc sử dụng để lắp ráp thành các mạch điện tử của máy tính. Mỗi chip IC có thể chứa hàng ngàn transistors. Các IC th-ờng đ-ợc gọi là các mạchđiện tử số bởi vì chúng xử lý các mức tín hiệu điện rời rạc (Hiệu điện thế cao, thấp). Chúng ta sử dụng ký hiệu "0" và "1" để biểu diễn các trạng thái thấp và caocủa hiệu điện thế. Các ký hiệu trên th-ờng đ-ợc biết nh- là các chữ số nhị phân (Binary Digit hoặc Bit).Cácthông tin đ-ợc máy tính xử lý đều biểu thị d-ới dạng các dãy số 0 và 1 và đ-ợc gọi là dãy Bit(Bit String).

pdf50 trang | Chia sẻ: banmai | Lượt xem: 1853 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Đề tài Kiến trúc may tính, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
o Byte cao cña AX (AH). + LÖnh XCHG: §•îc sö dông ®Ó tr¸o ®æi gi¸ trÞ gi÷a 2 thanh ghi, gi÷a thanh ghi vµ bé nhí. Có ph¸p lÖnh: XCHG Destination, Source Tr¸o ®æi §Ých ®Õn , Nguån VÝ dô: XCHG AX,BX This document is created with the unregistered version of Document2PDF Pilot. §æi vÞ trÝ c¸c gi¸ trÞ cña AX vµ BX lÉn nhau, AX sÏ l•u tr÷ gi¸ trÞ cña BX vµ ng•îc l¹i. XCHG AX,Word01 Tr¸o ®æi gi¸ trÞ cña AX vµ gi¸ trÞ t¹i vÞ trÝ bé nhí Word01. + §iÒu cÊm trong khi sö dông 2 lÖnh trªn: V× c¸c lý do vÒ kü thuËt, cã mét sè c¸c quy ®Þnh mµ ng•êi lËp tr×nh ph¶i tu©n theo. VÝ dô minh ho¹: Mov Word01,Word02 ; Kh«ng hîp lÖ Ph¸t biÓu lÖnh trªn lµ kh«ng hîp lÖ, kh«ng ®•îc phÐp di chuyÓn d÷ liÖu trùc tiÕp tõ vÞ trÝ bé nhí nµy sang vÞ trÝ bé nhí kh¸c. §Ó cã thÓ lµm ®•îc viÖc trªn ta ph¶i thay ®æi c©u lÖnh nh• sau: Mov AX,Word02 Mov Word02,AX C¸c kÕt hîp hîp lÖ gi÷a c¸c to¸n h¹ng trong 2 lÖnh trªn: Destination Operand Source Operand General Register Segment Register Memory Location Constant General Reg Yes Yes Yes No Segment Reg Yes No Yes No Mem Location Yes Yes No No Constant Yes No Yes No Destination Operand Source Operand General Register Memory Location General Register Yes Yes Memory Location Yes No - LÖnh ADD, SUB, INC vµ DEC + LÖnh ADD vµ lÖnh SUB ®•îc sö dông ®Ó thùc hiÖn c¸c phÐp tÝnh céng, trõ gi¸ trÞ gi÷a 2 thanh ghi, Gi÷a thanh ghi vµ bé nhí hoÆc ®Ó céng (trõ) mét sè vµo (ra) mét thanh ghi hoÆc bé nhí. Có ph¸p lÖnh: ADD Destination, Source SUB Destination, Source VÝ dô: ADD Word01,AX Céng gi¸ trÞ cã trong AX vµo Word01. KÕt qu¶ l•u trong Word01. SUB AX,DX Gi¸ trÞ cña thanh ghi DX sÏ bÞ trõ ®i gi¸ trÞ cña thanh ghi AX, KÕt qu¶ ®•îc l•u trong thanh ghi AX, Gi¸ trÞ cña thanh ghi DX ®•îc gi÷ nguyªn. ADD BL,5 Céng 5 vµo gi¸ trÞ ®· cã s½n trong thanh ghi BL. + Quy t¾c hîp lÖ: Destination Operand Source Operand General Register Memory Location General Register Yes Yes Memory Location Yes No This document is created with the unregistered version of Document2PDF Pilot. Constant Yes Yes Céng hoÆc trõ trùc tiÕp gi÷a 2 vÞ trÝ cña bé nhí lµ kh«ng hîp lÖ. VÝ dô: ADD Byte01,Byte02 ;Kh«ng hîp lÖ Gi¶i ph¸p Mov AL,Byte02 Add Byte01,AL + LÖnh INC vµ lÖnh DEC ®•îc sö dông ®Ó céng thªm 1 hoÆc bít ®i 1 tõ thanh ghi hoÆc t¹i mét vÞ trÝ « nhí nµo ®ã. Có ph¸p lÖnh: INC Destination DEC Destination VÝ dô: Inc Word01 Céng thªm mét vµo Word01. Dec Byte01 Trõ Byte01 ®i 1. - LÖnh NEG: LÖnh NEG ®•îc sö dông ®Ó thay ®æi dÊu cña gi¸ trÞ. Có ph¸p lÖnh: NEG Destination VÝ dô: Neg BX ChuyÓn ®æi gi¸ trÞ cña BX thµnh sè ©m. - TÝnh t•¬ng thÝch gi÷a c¸c to¸n h¹ng. C¸c to¸n hang trong mét c©u lÖnh 2 to¸n h¹ng ph¶i cïng mét kiÓu, c¶ hai ®Òu ph¶i lµ kiÓu Byte hoÆc kiÓu Word VÝ dô: Mov AX,Byte01 kh«ng hîp lÖ. Tuy nhiªn ch•¬ng tr×nh cã thÓ chÊp nhËn kiÓu sau: Mov AL, 'A' ;hoÆc Mov AX, 'A' 5- M« t¶ lÖnh víi ng«n ng÷ Ph¸t biÓu DÞch lÖnh M« t¶ B = A Mov AX,A Di chuyÓn A vµo thanh ghi AX Mov AX,5 Di chuyÓn 5 vµo thanh ghi AX Sub AX,A AX chøa gi¸ trÞ 5 - A Mov A,AX Di chuyÓn gi¸ trÞ trªn vµo A Neg A A = -A Add A,5 A = 5 - A Mov AX,B AX nhËn gi¸ trÞ B Sub AX,A AX nhËn gi¸ trÞ B - A Sub AX,A AX nhËn gi¸ trÞ B - 2*A Mov A,AX Di chuyÓn kÕt qu¶ vµo A 6- CÊu tróc ch•¬ng tr×nh. This document is created with the unregistered version of Document2PDF Pilot. Chóng ta biÕt r»ng, mét ch•¬ng tr×nh ng«n ng÷ m¸y tÝnh bao gåm M· ch•¬ng tr×nh, d÷ liÖu vµ ng¨n xÕp. Mçi mét thµnh phÇn ®Òu chiÕm mét phÇn trong mét ®o¹n nµo ®ã cua bé nhí m¸y tÝnh. Ch•¬ng tr×nh cña ng«n ng÷ assembly còng ®•îc tæ chøc t•¬ng tù. M· ch•¬ng tr×nh, d÷ liÖu vµ ng¨n xÕp ch•¬ng tr×nh cã cÊu tróc nh• mét ®o¹n ch•¬ng tr×nh. Mçi mét thµnh phÇn ®Òu ®•îc biªn dÞch vµ n¹p vµo tõng ®o¹n cña bé nhí. - Tæ chøc m« h×nh bé nhí: KÝch th•íc cña m· ch•¬ng tr×nh vµ d÷ liÖu ch•¬ng tr×nh cã thÓ ®•îc x¸c ®Þnh quan m« h×nh tæ chøc bé nhí th«ng qua viÖc sö dông tõ kho¸ ".MODEL". Có ph¸p: .Model Memory_model C¸c c¸ch tæ chøc m« h×nh bé nhí th•êng dïng lµ: Small, Medium,Compact vµ Large theo nh• m« t¶ trong b¶ng sau: Model M« t¶ Small M· ch•¬ng tr×nh (Code) n»m trong mét ®o¹n (Segment), D÷ liÖu (Data) n»m trong mét ®o¹n kh¸c Medium M· ch•¬ng tr×nh (Code) n»m trong nhiÒu ®o¹n, D÷ liÖu (Data) n»m trong mét ®o¹n kh¸c. Compact M· ch•¬ng tr×nh (Code) n»m trong mét ®o¹n (Segment), D÷ liÖu (Data) n»m trong nhiÒu ®o¹n kh¸c. Large M· ch•¬ng tr×nh (Code) n»m trong nhiÒu ®o¹n (Segment), D÷ liÖu (Data) n»m trong nhiÒu ®o¹n kh¸c. Nh•ng kh«ng cã m¶ng nµo lín h¬n 64 KB. Huge M· ch•¬ng tr×nh (Code) n»m trong nhiÒu ®o¹n (Segment), D÷ liÖu (Data) n»m trong nhiÒu ®o¹n kh¸c. Nh•ng cã m¶ng cã thÓ lín h¬n 64 KB. - §o¹n d÷ liÖu (Data Segment): §o¹n d÷ liÖu cña ch•¬ng tr×nh chøa tÊt c¶ c¸c khai b¸o biÕn ch•¬ng tr×nh. §Ó khai b¸o ®o¹n d÷ liÖu trong ch•¬ng tr×nh, ta dung tõ kho¸ ".DATA". VÝ dô minh ho¹: .DATA Word01 DW 2 Word02 DW 5 MSG DB 'The First Message' Mask EQU 10010010b - §o¹n ng¨n xÕp (Stack Segment) Môc ®Ých cña viÖc khai b¸o Stack Segment trong ch•¬ng tr×nh lµ ®Ó tæ chøc mét khèi bé nhí. Có ph¸p khai b¸o nh• sau: .STACK Size Size lµ kÝch th•íc cña Stack tÝnh theo Byte. VÝ dô: .STACK 100h Giíi h¹n 100h byte cho vïng stack. - §o¹n m· (Code Segment). §o¹n nµy chøa c¸c lÖnh cña ch•¬ng tr×nh (Program Instructions). Có ph¸p khai b¸o: .CODE Name Chó ý: Kh«ng cÇn ph¶i khai b¸o tªn trong Model Small. Trong ®o¹n nµy, c¸c lÖnh cã thÓ ®•îc tæ chøc thµnh c¸c ®o¹n nhá gäi lµ Procedure. C¸ch ®Þnh nghÜa Procedure nh• sau This document is created with the unregistered version of Document2PDF Pilot. Name PROC ; B¾t ®Çu Procedure ; M· ch•¬ng tr×nh Name ENDP ; KÕt thóc Procedure VÝ dô vÒ khai b¸o ®Þnh nghÜa Code Segment .CODE MAIN PROC ; B¾t ®Çu Procedure ; LÖnh chÝnh cña Procedure MAIN ENDP ; KÕt thóc Procedure ; Procedure kh¸c 7- GhÐp nèi ch•¬ng tr×nh VÝ dô sau m« t¶ c¸ch tæ chøc mét ch•¬ng tr×nh: .Model Small .Stack 100h .Data ; Khai b¸o d÷ liÖu .Code Main Proc ; C¸c c©u lÖnh Main Endp ; C¸c procedure kh¸c End Main Dßng cuèi cïng cña ch•¬ng tr×nh ph¶i cã tõ kho¸ END theo sau tªn cña Procedure. 8- ViÕt ch•¬ng tr×nh vµ ch¹y ch•¬ng tr×nh. - C¸c c©u lÖnh vµo ra. Ta ®· biÕt, CPU muèn liªn l¹c ®•îc víi c¸c thiÕt bÞ ngo¹i vi th«ng qua c¸c thanh ghi vµo ra ®•îc gäi lµ c¸c cæng vµo ra. Cã hai lÖnh IN vµ OUT cho phÐp ta truy xuÊt trùc tiÕp c¸c cæng. C¸c c©u lÖnh nµy ®•îc sö dông cÇn thiÕt khi cÇn truy xuÊt c¸c cæng mét c¸ch nhanh chãng nh• c¸c ch•¬ng tr×nh Game. Tuy nhiªn, hÇu hÕt c¸c ch•¬ng tr×nh øng dông kh«ng sö dông c¸c lÖnh vµo ra bëi v× c¸c cæng vµo ra khac biÖt nhau gi÷a c¸c hÖ thèng m¸y tÝnh, tèt nhÊt lµ sö dông c¸c ch•¬ng tr×nh con cña nhµ s¶n xuÊt. Cã 2 kiÓu tr×nh phôc vô c¸c c«ng t¸c vµo ra, ®ã lµ BIOS vµ DOS. Ch•¬ng tr×nh BIOS ®•îc chøa trong BIOS ROM vµ cã thÓ liªn l¹c trùc tiÕp víi c¸c cæng vµo ra. C¸c tiÓu tr×nh DOS cã thÓ thùc hiÖn ®•îc rÊt nhiÒu c¸c c«ng viÖc phøc t¹p vÝ dô nh• in chuçi ký tù, mÆc dï c¸c c«ng viÖc ®Òu th«ng qua c¸c tiÓu tr×nh cña BIOS. - LÖnh INT LÖnh INT (interrupt) ®•îc sö dông ®Ó gi¶i quyÕt c¸c c«ng viÖc liªn quan ®Õn c¸c tiÓu tr×nh DOS vµ BIOS Có ph¸p: INT Interrupt_Number Interrupt_Numberlµ sè hiÖu ®Ó x¸c ®Þnh ng¾t. VÝ dô Int 16h liªn quan ®Õn tiÓu tr×nh ®iÒu khiÓn bµn phÝm. + Int 21h: §•îc sö dông cho rÊt nhiÒu chøc n¨ng cña DOS. Mét chøc n¨ng ®Æc biÖt lµ thay ®æi c¸c sè hiÖu chøc n¨ng cña thanh ghi AH. C¸c chøc n¨ng nh• sau: This document is created with the unregistered version of Document2PDF Pilot. Sè hiÖu chøc n¨ng TiÓu tr×nh 1 NhËp 1 phÝm 2 XuÊt mét ký tù ®¬n 3 XuÊt chuçi ký tù Chøc n¨ng Int21h nhËp mét gi¸ trÞ vµo mét thanh ghi nµo ®ã vµ tr¶ kÕt qu¶ ra thanh ghi kh¸c. D•íi ®©y lµ m« t¶ c¸c chøc n¨ng: Chøc n¨ng 01 NhËp mét phÝm Input AH = 1 Output AL = m· ASCII nÕu mét phÝm ®•îc nhÊn = 0 NÕu kh«ng cã phÝm ®•îc nhÊn. §Ó gi¶i quyÕt vÊn ®Ò, viÕt c¸c lÖnh nh• sau: Mov AH,1 ; NhËp chøc n¨ng phÝm Int 21h ; NhËp m· ASCII vµo AL Bé xö lý sÏ chê cho ®Õn khi ng•êi dïng nhÊn mét phÝm. NÕu mét phÝm ®•îc nhÊn, thanh ghi AL sÏ nhËn ®•îc m· ASCII cña phÝm ®ã. Ký tù ®ã sÏ hiÖn lªn mµn h×nh. NÕu cã bÊt kú mét phÝm nµo kh¸c ®•îc nhÊn, vÝ dô nh• c¸c phÝm mòi tªn, Fx hoÆc t•¬ng tù, thanh ghi AL sÏ nhËn gi¸ trÞ 0. C¸c lÖnh tiÕp theo int21h sÏ ®•îc thùc hiÖn tiÕp. Chøc n¨ng 1 cña int 21h kh«ng cã dÊu hiÖu ®Ó ng•êi dïng cã thÓ nhËp d÷ liÖu, vËy ta cã thÓ sö dông Chøc n¨ng 2 nh• sau: Input AH =2 DH = m· ASCII hiÖn ký tù hoÆc ký tù ®iÒu khiÓn Output AL = m· ASCII hiÖn ký tù hoÆc ký tù ®iÒu khiÓn VÝ dô: Mov AH,2 Mov DL, "?" Int 21h HiÖn dÊu ? lªn mµn h×nh vµ hiÖn dÊu nh¾c lÖnh ®Ó chê ng•êi dïng nhËp phÝm kh¸c. Chøc n¨ng 2 cßn cã thÓ ®•îc sö dông cho c¸c chøc n¨ng ®iÒu khiÓn. NÕu thanhghi DL nhËn m· ASCII cña c¸c ký tù ®iÒu khiÓn, Int 21h sÏ hiÓn thÞ ký tù ®iÒu khiÓn ®ã. Mét sè c¸c ký tù ®iÒu khiÓn tiªu biÓu nh• sau: M· ASCII (Hex) Ký hiÖu Chøc n¨ng 7 Bel Ph¸t tiÕng beep tõ loa PC. 8 BS PhÝm lïi. 9 HT PhÝm Tab. A LF Xuèng hµng. D CR §Çu dßng míi. Trong khi xö lý, thanh ghi AL sÏ l•u gi÷ m· ASCII cña ký tù ®iÒu khiÓn. - Ch•¬ng tr×nh ®Çu tiªn: Mét ch•¬ng tr×nh hoµn chØnh víi c¸c chó thÝch ®Ó gi¶i thÝch tõng c©u lÖnh, chó ý r»ng c¸c lêi gi¶i thÝch trong ch•¬ng tr×nh thËt sÏ kh«ng sö dông ®•îc tiÕng ViÖt. Tªn ch•¬ng tr×nh Prg01.asm This document is created with the unregistered version of Document2PDF Pilot. Title Prg01: Echo Program .Model Small .Stack 100h .Code Main Proc ;HiÓn thÞ dÊu nh¾c lÖnh Mov AH,2 ;Chøc n¨ng hiÓn thÞ ký tù Mov DL,'?' ;Ký tù lµ dÊu '?' Int 21h ;Gäi dÞch vô 21h hiÓn thÞ ký tù ;NhËp ký tù Mov AH,1 ;Chøc n¨ng ®äc ký tù Int 21h ;Gäi dÞch vô 21h ®Ó nhËp ký tù vµo AL Mov BL,AL ;Ghi ký tù vµo BL ;Xuèng hµng míi Mov AH,2 ;Chøc n¨ng hiÓn thÞ ký tù Mov DL,0DH ;Con trá trë vÒ ®Çu dßng Int 21h ;Xö lý viÖc ®•a con trá vÒ ®Çu dßng Mov DL,0AH ;Xuèng dßng míi Int 21h ;Xö lý xuèng dßng míi ;HiÓn thÞ ký tù Mov DL,BL ;LÊy ký tù l•u trong BL Int 21h ;HiÓn thÞ ký tù trong thanh ghi DL ;Quay trë l¹i nÒn DOS Mov AH,4CH ;Gäi hµm tho¸t vÒ DOS Int 21h ;Tho¸t vÒ DOS Main Endp ;KÕt thóc Procedure End Main ;KÕt thóc ch•¬ng tr×nh - T¹o ch•¬ng tr×nh vµ ch¹y ch•¬ng tr×nh: Cã 4 b•íc ®Ó t¹o vµ ch¹y ch•¬ng tr×nh a- Sö dông mét ch•¬ng tr×nh so¹n th¶o text ®Ó t¹o ch•¬ng tr×nh nguån. b- Sö dông ch•¬ng tr×nh dÞch ®Ó t¹o ra 1 file m· m¸y (Object File). c- Sö dông ch•¬ng tr×nh Link ®Ó liªn kÕt c¸c ch•¬ng tr×nh liªn kÕt t¹o ra file ch¹y (Run File). d- Ch¹y ch•¬ng tr×nh. B•íc 01: T¹o ch•¬ng tr×nh nguån. Sö dông ch•¬ng tr×nh so¹n th¶o text ®Ó t¹o mét file cã tªn Prg01 cã néi dung nh• trªn. File cã ®u«i lµ *.asm. B•íc 02: DÞch ch•¬ng tr×nh Sö dông ch•¬ng tr×nh Masm ®Ó dÞch ch•¬ng tr×nh nguån thµnh mét file ®èi t•îng cã tªn lµ PRG01.OBJ. C©u lÖnh cã thÓ lµ nh• sau: C:\>Masm PRG01; Ch•¬ng tr×nh sÏ kiÓm tra lçi cña ch•¬ng tr×nh nguån. NÕu cã lçi, ch•¬ng tr×nh sÏ b¸o lçi cho ng•êi dïng biÕt. Ch•¬ng tr×nh sÏ dÞch file PRG01.ASM thµnh file ®èi t•îng cã tªn lµ PRG01.OBJ. Nªn cã dÊu ; ®»ng sau c©u lÖnh.. Th«ng th•êng, tªn cña file míi sÏ lÊy mÆc ®Þnh lµ tªn file cò víi ®u«i lµ OBJ. File danh s¸ch nguån: File sanh s¸ch nguån (*.LST) lµ mét file text hiÓn thÞ c¸c dßng This document is created with the unregistered version of Document2PDF Pilot. lÖnh vµ c¸c lÖnh m· m¸y t•¬ng ®•¬ng vµ mét sè th«ng tin kh¸c vÒ ch•¬ng tr×nh. File nµy rÊt h÷u dông cho c«ng viÖc gì rèi ch•¬ng tr×nh. File tham kh¶o chÐo (Cross-Reference File): File cã phÇn më réng (*.CRF) liÖt kª tªn hiÓn thÞ trong ch•¬ng tr×nh, h÷u dông khi x¸c ®Þnh c¸c biÕn (Variable), c¸c nh·n (Label) trong mét ch•¬ng tr×nh lín. B•íc 03: Liªn kÕt ch•¬ng tr×nh: File OBJ lµ file chøa m· m¸y nh•ng kh«ng thÓ xö lý ®•îc bëi v× nã kh«ng ph¶i lµ ®Þnh d¹ng cña file ch¹y. Ch•¬ng tr×nh Link sÏ liªn kÕt c¸c file Obj thµnh file cã thÓ xö lý ®•îc (.exe file). File d¹ng nµy cã thÓ ®•îc n¹p vµo bé nhí vµ cã thÓ ch¹y. C¸ch liªn kÕt ch•¬ng tr×nh C:\>Link PRG01 B•íc 04: Ch¹y ch•¬ng tr×nh. Khi liªn kÕt xong, ta sÏ cã file PRG01.EXE. Ta cã thÓ ch¹y file nµy trùc tiÕp tõ dÊu nh¾c lÖnh cña DOS. - Mét ch•¬ng tr×nh kh¸c. Ch•¬ng tr×nh nµy ®•îc viÕt víi môc ®Ých hiÓn thÞ mét chuçi ký tù. §Ó thùc hiÖn ch•¬ng tr×nh nµy ta cÇn biÕt thªm mét sè vÊn ®Ò kh¸c. + Hµm 9 cña ng¾t 21h HiÓn thÞ chuçi ký tù. Input DX=§Þa chØ ®é dêi cña chuçi. Chuçi ph¶i ®•îc kÕt thóc b»ng ký tù '$' + Mét chuçi cã thÓ khëi t¹o trong bé nhí nh• sau: MSG DB 'Hello!$' + LÖnh LEA (Load Affective Address). Có ph¸p: Lea Destination,Source LÖnh nµy copy ®Þa chØ ®é dêi (Offset) vµo thanh ghi c«ng dông chung. VÝ dô: Lea DX,MSG N¹p ®Þa chØ ®é dêi cña biÕn MSG vµo thanh ghi DX Tuy nhiªn ®Ó DOS cã thÓ gi¶i quyÕt ®•îc c¸c vÊn ®Ò khi ta ch¹y vµ dÞch ch•¬ng tr×nh, ch•¬ng tr×nh cÇn ph¶i thªm 2 c©u lÖnh sau: Mov AX,@Data Mov DS,AX. @Data lµ tªn cña ®o¹n d÷ liÖu ®•îc ®Þnh nghÜa bëi th• viÖn .DTA. Ch•¬ng tr×nh dÞch sÏ dÞch tªn @Data thµnh sè hiÖu ®o¹n (Segment). 2 lÖnh trªn rÊt cÇn thiÕt bëi v× sè hiÖu cña Segment cã thÓ kh«ng di chuyÓn trùc tiÕp ®Õn thanh ghi Segment. Khi thanh ghi DS ®•îc khëi t¹o, ta cã thÓ in dßng ch÷ "Hello!" b»ng c¸ch ®Æt ®Þa chØ vµo thanh ghi DX vµ gäi ng¾t 21h cña DOS. Lea DX,MSG ;LÊy th«ng tin Mov AH,9 ;Hµm hiÖn chuçi ký tù Int 21h ; Gäi ng¾t 21h cña DOS ®Ó thùc hiÖn. Toµn bé ch•¬ng tr×nh nh• sau: Ch•¬ng tr×nh PRG02.Asm This document is created with the unregistered version of Document2PDF Pilot. Title PRG02 Print String Program .Model Small .Stack 100h .Data MSG DB 'Hello!$' ;Khai b¸o biÕn MSG .Code Main Proc ; Khëi t¹o thanh ghi DS Mov AX,@Data Mov DS,AX ; Khëi t¹o thanh ghi DS ;HiÖn th«ng ®iÖp Lea DX,MSG ;N¹p th«ng ®iÖp Mov AH,9 ;Chøc n¨ng hiÖn chuçi ký tù Int 21h ;Gäi ng¾t DOS 21h ;Trë vÒ DOS Mov AH,4CH Int 21h Main Endp End Main Ch•¬ng tr×nh thªm: §æi ký tù th•êng thµnh ký tù in hoa. III- KÕt luËn. Chóng t«i ®· giíi thiÖu cho c¸c b¹n mét sè c¸ch sö dông lÖnh ®óng có ph¸p vµ ®óng quy t¾c còng nh• c¸ch thøc ®Ó c¸c b¹n cã thÓ t¹o ®•îc mét ch•¬ng tr×nhcã thÓ ch¹y ®éc lËp trªn nÒn hÖ ®iÒu hµnh. Khi viÕt mét ch•¬ng tr×nh ®Çy ®ñ, c¸c b¹n cÇn chó ý mét sè vÊn ®Ò nh• sau. Mét sè khai b¸o c¬ b¶n: Khai b¸o bé nhí qua tõ kho¸ Model .Small .Medium .Compact .Large .Huge C¸c kiÓu d÷ liÖu c¬ b¶n DB, DW, DD, DQ, DT C¸c c©u lÖnh c¬ b¶n: MOV, XCHG, ADD, SUB, INC, DEC, NEG, INT, LEA. C¸ch sö dông Ng¾t 21h (Int 21h) cña DOS. Function 1: §äc ký tù tõ bµn phÝm Function 2:HiÖn ký tù Function 9: HiÖn chuçi ký tù C¸c b•íc ®Ó t¹o mét ch•¬ng tr×nh ch¹y ®éc lËp cã ®u«i lµ *.EXE Sö dông ch•¬ng tr×nh MASM ®Ó t¹o ch•¬ng tr×nh ch¹y. a- Sö dông mét ch•¬ng tr×nh so¹n th¶o text ®Ó t¹o ch•¬ng tr×nh nguån. b- Sö dông ch•¬ng tr×nh dÞch ®Ó t¹o ra 1 file m· m¸y (Object File). This document is created with the unregistered version of Document2PDF Pilot. c- Sö dông ch•¬ng tr×nh Link ®Ó liªn kÕt c¸c ch•¬ng tr×nh liªn kÕt t¹o ra file ch¹y (Run File). d- Ch¹y ch•¬ng tr×nh. Gâ tªn File t¹i dÊu nh¾c DOS. Mét sè ch•¬ng tr×nh mÉu: PRG01.ASM, PRG02.ASM. This document is created with the unregistered version of Document2PDF Pilot. Chýõng 4: Tr¹ng th¸i bé xö lý vµ c¸c lo¹i cê. I- Giíi thiÖu c¸c cê: Mét ®Æc ®iÓm ®Æc biÖt ph©n biÖt gi÷a computer vµ c¸c laäi m¸y mãc kh¸c lµ kh¶ n¨ng quyÕt ®Þnh c«ng viÖc. C¸c m¹ch ®iÖn trong CPU cã thÓ thùc hiÖn ®•îc c¸c quyÕt ®Þnh ®¬n gi¶n dùa vµo tr¹ng th¸i hiÖn t¹i cña bé xö lý. C¸c tr¹ng th¸i ®•îc biÓu hiÖn bëi c¸c cê trong thanh ghi cê cña CPU. H×nh minh ho¹ sau cho ta thÊy cÊu tróc cña thanh ghi cê (Flag Register): 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF TF SF ZF AF PF CF T¹i c¸c Bit 0, 2, 4, 7, 11 lµ c¸c cê tr¹ng th¸i. T¹i c¸c Bit 8,9,10 lµ c¸c cê ®iÒu khiÓn. C¸c b¶ng sau sÏ m« t¶ c¸c lo¹i cê vµ c¸c ®Æc ®iÓm cña chóng: C¸c cê tr¹ng th¸i: Bit Tªn cê Ký hiÖu M« t¶ 0 Carry Flag CF M« t¶ tr¹ng th¸i d÷ liÖu ®•îc nhí ®Ó dµnh thªm vµo bit sau 2 Parity Flag PF Cê tr¹ng th¸i ®Ó kiÓm tra ch½n lÎ c¸c bits 4 Auxilary Carry Flag AF §•îc sö dông ®Ó m« t¶ tr¹ng th¸i nhí vµ tr¹ng th¸i m•în 6 Zero Flag ZF M« t¶ tr¹ng th¸i dÊu cña ch÷ sè +/- 11 Overflow Flag OF M« t¶ tr¹ng th¸i giíi h¹n cña sè. C¸c cê ®iÒu khiÓn: Bit Tªn cê Ký hiÖu M« t¶ 8 Trap Flag TF Cê bÉy 9 Interrupt Flag IF Cê ®iÒu khiÓn ng¾t 10 Direction Flag DF Cê dÉn h•íng II- M« t¶ tr¹ng th¸i cña bé xö lý. 1- Tr¹ng th¸i trµn (Overflow) §iÒu c¬ b¶n cña tr¹ng th¸i trµn sè liªn quan ®Õn thùc tÕ r»ng giíi h¹n cña c¸c sè cã thÓ hiÓn thÞ trong giíi h¹n cña Computer. Nh• ®· gi¶i thÝch ë c¸c phÇn tr•íc, giíi h¹n cña mét sè nguyªn cã dÊu cã thÓ biÓu diÔn ®•îc b»ng Word 16 bits lµ -32768 32767. Víi sè nguyªn kh«ng dÊu lµ 0 65535. NÕu kÕt qu¶ tÝnh to¸n v•ît qu¸ giíi h¹n trªn, tr¹ng th¸i trµn sÏ x¶y ra vµ kÕt qu¶ sÏ bÞ c¾t bít ®Ó cã thÓ biÓu diÔn ®•îc trong thanh ghi, do ®ã kÕt qu¶ sÏ lµ sai. §Ó cã thÓ hiÓu râ h¬n, ta cã thÓ tham kh¶o vÝ dô sau: Sè cã dÊu hoÆc kh«ng dÊu lµ tïy thao quy ®Þnh. Khi ta thùc hiÖn mét phÐp tÝnh sè häc, cã thÓ lµ phÐp céng (+), cã thÓ cã 4 tr•êng hîp x¶y ra. + Kh«ng trµn sè. + Trµn sè v× dÊu (+/-). + Trµn sè kh«ng dÊu. + Trµn sè c¶ tr•êng hîp cã dÊu vµ kh«ng dÊu. VÝ dô sau lµ vÝ dô trµn sè kh«ng dÊu. Gi¶ ®Þnh thanh ghi AX chøa gi¸ trÞ FFFFh, Thanh ghi BX chøa gi¸ trÞ 0001h, Sö dông lÖnh ADD ®Ó céng 2 gi¸ trÞ trªn. This document is created with the unregistered version of Document2PDF Pilot. ADD AX,BX 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 KÕt qu¶ ®óng cña phÐp tÝnh trªn lµ: FFFFh + 0001h = 100000h 65536 (V•ît qu¸ giíi h¹n cña sè nguyªn dïng cho Word 16 bit). KÕt qu¶ ®•îc l•u trong thanh ghi AX lµ 0000h (Sè 1 lµ sè nhí vµ ®•îc ghi trong cê Carry). VËy ta sÏ nhËn ®•îc kÕt qu¶ sai. Tuy nhiªn kÕt qu¶ sÏ lµ ®óng trong tr•êng hîp sè cã dÊu. Gi¶i thÝch nh• sau: Ta cã FFFFh = -1 0001h = 1 FFFFh + 0001h = 0 VËy kÕt qu¶ l•u trong AX lµ 0000h sÏ lµ ®óng Trµn cã dÊu kh«ng x¶y ra. Mét vÝ dô kh¸c vÒ trµn sè cã dÊu: AX vµ BX cïng chøa gi¸ trÞ 7FFFh. ADD AX,BX 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 KÕt qu¶ lµ FFFEh Ta cã 7FFFh = 32767 VËy 7FFFh + 7FFFh = 32767 + 32767 = 65534. KÕt qu¶ nµy ngoµi giíi h¹n cña sè cã dÊu. KÕt qu¶ ®•îc diÔn gi¶i theo sè cã dÊu lµ FFFEh = -2 T×nh tr¹ng trµn cã dÊu x¶y ra. - C¸ch thøc bé xö lý biÓu hiÖn tr¹ng th¸i trµn.: Bé xö lý sÏ thiÕt lËp cê OF = 1 víi trµn sè kh«ng dÊu, CF = 1 víi trµn sè cã dÊu. §iÒu nµy sÏ gióp ch•¬ng t×nh ho¹t ®éng chÝnh x¸c. nÕu kh«ng cã ho¹t déng gÝ x¶y ra ngay lóc ®ã, c¸c c©u lÖnh kh¸c phÝa sau sÏ lµm cho cê trµn sÏ ®•îc t¾t OF = 0. §Ó x¸c ®Þnh tr¹ng th¸i trµn sè, bé xö lý kh«ng dÞch kÕt qu¶ lµ sè cã dÊu hoÆc kh«ng dÊu. Hµnh ®éng lµ sÏ sö dông c¶ 2 c¸ch th«ng dÞch cho mçi phÐp to¸n vµ bËt c¸c cê CF vµ OF cho tr¹ng th¸i trµn sè kh«ng dÊu vµ trµn sè cã dÊu. NÕu TÝnh to¸n lµ sè cã dÊu, chØ cã OF ®•îc ®Ó ý vµ CF sÏ bÞ lê ®i, Ng•îc l¹i, CF sÏ ®•îc ®Ó ý vµ OF sÏ bÞ lê ®i. - C¸ch thøc bé xö lý x¸c ®Þnh tr¹ng th¸i trµn. Cã thÓ cã nhiÒu lÖnh lµm x¶y ra tr¹ng th¸i trµn sè nh•ng ®Ó ®¬n gi¶n vÊn ®Ò, ta chØ giíi h¹n ë c¸c lÖnh céng vµ trõ. + Trµn sè kh«ng dÊu: Trong phÐp to¸n céng, Trµn sè kh«ng dÊu x¶y ra khi cã sè nhí trªn Bit MSB (Most Significant Bit). §iÒu ®ã cã nghÜa lµ kÕt qu¶ ®óng lín h¬n sè kh«ng cã dÊu. vÝ dô nh• FFFFh cho 1 Word vµ FFh cho 1 Byte. Trong phÐp trõ, Trµn sè kh«ng dÊu x¶y ra khi ph¶i m•în thªm mét sè h¹ng tõ MSB vµ kÕt qu¶ sÏ ph¶i nhá h¬n 0. + Trµn sè cã dÊu: PhÐp céng c¸c sè cïng dÊu, tr¹ng th¸i trµn sè x¶y ra khi kÕt qu¶ cã dÊu kh¸c. §iÒu nµy x¶y ra nh• trong vÝ dô céng hai sè 7FFFh lµ hai sè d•¬ng vµ ®•îc kÕt qu¶ lµ sè ©m FFFEh. PhÐp trõ c¸c sè kh¸c dÊu còng gièng nh• phÐp céng c¸c sè cïng dÊu. VÝ dô A - ( - B) = A + B vµ -A-(+B) = (-A) + (- B). Trµn sè cã dÊu x¶y ra nÕu kÕt qu¶ cã dÊu kh¸c víi mong muèn. This document is created with the unregistered version of Document2PDF Pilot. Trong phÐp céng víi c¸c sè kh¸c dÊu, hiÖn t•îng trµn sè kh«ng x¶y ra v× kÕt qu¶ bao giê còng nhá h¬n. t•¬ng tù nh• víi phÐp trõ hai sè cïng dÊu. 2- C¸ch thøc ¶nh h•ëng cña c¸c lÖnh ®Õn c¸c cê Mçi khi bé xö lý thùc thi c¸c lÖnh, c¸c cê ®•îc thiÕt lËp ®Ó ph¶n ¸nh kÕt qu¶. Tuy nhiªn, mét vµi lÖnh kh«ng cã chót ¶nh h•ëng nµo tíi c¸c cê, chØ ¶nh h•ëng ®Õn mét sè cê hoÆc ®Ó mÆc chóng. Bëi v× c¸c c©u lÖnh nh¶y dùa vµo c¸ch thøc thiÕt lËp cê. §iÒu nµy rÊt quan träng ®Ó cã thÓ x¸c ®Þnh mçi lÖnh lµm viÖc víi cê. Quay l¹i mét sè lÖnh c¬ b¶n, chóng cã thÓ ¶nh h•ëng ®Õn c¸c cê theo b¶ng sau: LÖnh C¸c cê cã ¶nh h•ëng MOV, XCHG Kh«ng cã cê nµo ADD, SUB TÊt c¶ c¸c cê INC, DEC TÊt c¶ c¸c cê ngo¹i trõ CF NEG TÊt c¶ c¸c cê (CF = 1 ngo¹i trõ kÕt qu¶ lµ 0. OF = 1 nÕu Word lµ 8000h hoÆc Byte lµ 80h) Chóng ta nghiªn cøu mét vÝ dô ®Ó râ h¬n c¸c ¶nh h•ëng nµy: AX chøa FFFFh, BX chøa FFFFh LÖnh ADD AX,BX FFFFh FFFFh 1FFFEh KÕt qu¶ l•u trong AX lµ FFFEh = 1111 1111 1111 1110 SF = 1 V× MSB lµ 1. PF = 0 V× cã 7 bit trong Byte thÊp cña kÕt qu¶. ZF = 0 KÕt qu¶ kh¸c 0. CF = 1 V× cã mét sè nhí ngoµi MSB tron phÐp céng. OF = 0 dÊu cña kÕt qu¶ cïng dÊu víi sè sÏ ®•¬c céng thªm 3- C¸c lÖnh ®iÒu khiÓn ho¹t ®éng. §Ó cã kh¸i niÖm vÒ c¸c lÖnh nh¶y, kh¶o s¸t ch•¬ng tr×nh minh ho¹ sau: 1 Title PRG03: Display Character 2 .Model Small 3 .Stack 100h 4 .Code 5 Main Proc 6 Mov AH,2 ; Chøc n¨ng hiÖn ký tù 7 Mov CX,256 ;Sè ký tù sÏ hiÓn thÞ 8 Mov DL,0 ; DL chøa m· ASCII rçng (Null) 9 Prn_Loop ; Nh·n dµnh cho lÖnh nh¶y 10 Int 21h ; HiÖn ký tù 11 Inc DL ;LÊy ký tù tiÕp theo 12 Dec CX ;Gi¶m vßng ®Õm (Counter) 13 Jnz Prn_loop ;TiÕp tôc xö lý tõ nh·n cho tíi khi nµo CX=0 14 ;Tho¸t ra nÒn DOS 15 Mov AH,4CH 16 Int 21h 17 Main Endp This document is created with the unregistered version of Document2PDF Pilot. 18 End Main Cã 256 ký tù trong bé ký tù IBM, m· tõ 32 127 lµ c¸c m· chuÈn ASCII cã thÓ hiÓn thÞ. C¸c m¸ cßn l¹i ®•îc hiÓn thÞ d•íi d¹ng ®å ho¹ (??????…). §Ó hiÓn thÞ c¸c ký tù, ta sö dông mét vßng lÆp (Dßng 9 dßng 13). Tr•íc khi b¾t ®Çu vßng lÆp, thanh ghi AH ®•îc khëi t¹o lµ 2 (chøc n¨ng hiÓn thÞ mét ký tù ®¬n cña Ng¾t 21h) vµ thanh ghi DL thiÕt lËp gi¸ trÞ 0 (m· ASCII ®Çu tiªn). Thanh ghi CX ®•îc sö dông ®Ó lµm bé ®Õm vßng lÆp. Nã ®•îc khëi t¹o lµ 256 tr•íc khi vµo vßng lÆp vµ sÏ gi¶m dÇn khi mçi ký tù ®· ®•îc hiÓn thÞ. C©u lÖnh ®iÒu khiÓn vßng lÆp ë ®©y lµ c©u lÖnh JNZ (Jump If Not Zero). NÕu gi¸ trÞ cña CX sau khi bÞ gi¶m ®i (DEC) ch•a lµ 0 th× lÖnh JNZ sÏ chuyÓn ®iÒu khiÓn ®Õn nh·n Prn_Loop. NÕu CX = 0 ch•¬ng tr×nh sÏ xö lý tiÕp c¸c lÖnh cßn l¹i tõ 14 trë ®i. 4- C¸c lÖnh nh¶y cã ®iÒu kiÖn. Ta cã lÖnh JNZ lµ mét lÖnh nh¶y cã ®iÒu kiÖn. Có ph¸p cña c¸c lÖnh nh¶y cã ®iÒu kiÖn nh• sau: Jxxx Destination_label Jxxx lµ mét sè lÖnh nh¶y b¾t ®Çu b»ng "J". Destination_Label Lµ nh·n mµ lÖnh cÇn ®iÒu khiÓn. NÕu ®iÒu kiÖn ®Ó nh¶y lµ True (§óng), LÖnh tiÕp theo cÇn ®•îc thùc hiÖn lµ nh·n ®· ®•îc khai b¸o. Ng•îc l¹i lÖnh kÕ tiÕp cña lÖnh nh¶y sÏ ®•îc thùc hiÖn. - C¸ch thøc CPU thùc hiÖn lÖnh nh¶y cã ®iÒu kiÖn: §Ó thùc hiÖn lÖnh nh¶y, CPU t×m trong thanh ghi cê. NÕu ®iÒu kiÖn cña lÖnh nh¶y lµ ®óng, CPU sÏ ®iÒu chØnh thanh ghi con trá lÖnh (IP) trá ®Õn nh·n lÖnh. NÕu ®iÒu kiÖn cña lÖnh nh¶y lµ sai (False), CPU sÏ kh«ng ®iÒu chØnh thanh ghi IP vµ dßng lÖnh kÕ tiÕp sÏ ®•îc thùc thi. 5- So s¸nh víi c¸c ng«n ng÷ lËp tr×nh bËc cao Ta ®É biÕt, c¸c c©u lÖnh Jump cã thÓ ®•îc sö dông ®Ó thùc hiÖn lÖnh ph©n nh¸nh vµ lÖnh lÆp. Tuy nhiªn chóng t•¬ng ®èi phøc t¹p nhÊt lµ ®èi víi nh÷ng ng•êi dïng míi trong viÖc viÕt m· lÖnh. Ta cã thÓ so s¸nh víi mét sè cÊu tróc cña ng«n ng÷ bËc cao h¬n ®Ó cã thÓ hiÓu râ vÒ c¸ch thùc thi chóng. a- CÊu tróc ph©n nh¸nh: - If - Then CÊu tróc If - Then cã thÓ ®•îc m« t¶ nh• sau: If ®iÒu kiÖn ®óng Then xö lý c©u lÖnh ®óng theo ®iÒu kiÖn EndIf §iÒu kiÖn lµ mét ph¸t biÓu cã thÓ ®óng hoÆc sai. Trong tr•êng hîp ®óng, C©u lÖnh bªn trong sÏ ®•îc thùc thi. Ng•îc l¹i, c©u lÖn bªn trong sÏ kh«ng ®•îc thùc hiÖn. VÝ dô: §Æt vµo thanh ghi AX mét sè, m« t¶ nh• sau: If AX < 0 Then thay thÕ AX b»ng - AX EndIf M· nh• sau ;If AX < 0 This document is created with the unregistered version of Document2PDF Pilot. Cmp AX,0 ;So sanh AX va 0? JNL EndIf ;Khong, thoat ;Then Neg AX ; Dung, thay doi dau End_If §iÒu kiÖn AX<0 ®•îc kiÓm tra bëi lÖnh CMP AX,0 Dïng lÖnh nh¶y JNL (jump If Not Less) ®Ó nh¶y ®Õn nh·n End_If nÕu AX kh«ng nhá h¬n kh«ng. - If - Then - Else If ®iÒu kiÖn ®óng Then xö lý c©u lÖnh theo ®iÒu kiÖn ®óng Else Then xö lý c©u lÖnh theo ®iÒu kiÖn sai EndIf VÝ dô: Thanh ghi AL vµ BL chøa m· ASCII hai ký tù nhau, hiÓn thÞ ký tù cã sè m· nhá h¬n. If AL <= BL Then HiÓn thÞ ký tù trong AL Else HiÓn thÞ ký tù trong BL EndIf M· lÖnh cã thÓ nh• sau Mov AH,2 ; ChuÈn bÞ hiÓn thÞ ; if AL <= BL Cmp AL,BL ; AL <= BL JNBE Else_ ; Khong, hien thi BL ;then Mov DL,AL ;Chuyen ky tu de hien thi JMP Display ; Nhay den Display Else_: Mov DL,BL ;Chan bi de hien thi BL Display: Int 21h ;Hien thi - Case: Case Phatbieu Giatri1: Lenh1 Giatri2: Lenh2 GiatriN: LenhN End_case Trong cÊu tróc nµy, Phatbieu ®•îc kiÓm tra NÕu gi¸ trÞ lµ thµnh viªn cña giatri1, lenh1 ®•îc thùc hiÖn… VÝ dô: AX chøa 1 sè ©m, n¹p -1 vµo BX, NÕu AX chøa 0, n¹p 0 vµo BX, NÕu AX chøa sè d•¬ng, N¹p 1 vµo BX Case AX <0 N¹p -1 vµo BX =0 N¹p 0 vµo BX >0 N¹p 1 vµo BX This document is created with the unregistered version of Document2PDF Pilot. End_Case M· ch•¬ng tr×nh nh• sau: ;Case AX CMP AX,0 ;Kiem tra AX JL So_am ;AX<0 JE Bang_0 ;AX=0 JG So_duong ;AX>0 So_am: Mov BX,-1 JMP End_case Bang_0: Mov BX,0 JMP End_case So_duong: Mov BX,1 End_case - And §iÒu kiÖn vµ ®•îc coi lµ ®óng nÕu c¶ hai thµnh phÇn so s¸nh ®Òu ®óng VÝ dô: §äc ký tù, hiÓn thÞ khi chóng lµ Ký tù in hoa: §äc ký tù vµo thanh ghi AL If ('A' <= Kytu) And (Kytu<= 'Z') Then Hien ky tu Endif M· ch•¬ng tr×nh nh• sau: ; Doc Ky tu Mov AH,1 ; Chuan bi doc ky tu Int 21h ; Doc ky tu vao AL ; If ('A' <= Kytu) And (Kytu<= 'Z') Cmp AL,'A' ; Ky tu >= A JNGE End_if ; Khong, thoat Cmp AL,'Z' ; Ky tu <= Z JNLE End_if ; Khong, thoat ; Hien thi ky tu Mov DL,AL ; Nhap ky tu Mov AH,2 ; Chuan bi hien thi Int 21h ; Hien thi End_if - OR C©u lÖnh Or ®óng khi mét trong hai diÒu kiÖn thµnh phµn ®óng, sai khi c¶ hai diÒu kiÖn thµnh phÇn sai. VÝ dô: §äc ký tù. NÕu lµ 'y' hoÆc 'Y' th× hiÖn chóng, nÕu kh«ng ph¶i th× tho¸t khái chuong tr×nh. §äc ký tù vµo AL If (Kytu= 'y') OR (Kytu= 'Y') Then hiÓn thÞ Else Ng•ng ch•¬ng tr×nh This document is created with the unregistered version of Document2PDF Pilot. End_if M· ch•¬ng tr×nh ; Doc ky tu Mov AH,1 ; Chuan bi doc Int 21h ; Ky tu trong AL ;If (Kytu= 'y') OR (Kytu= 'Y') Cmp AL, 'y' ; Ky tu la y? JE Then ; Dung, hien thi y Cmp AL, 'Y' ; Ky tu la Y JE Then ; Dung, hien thi Y Jmp Else_ Then: Mov AH,2 ; Chuan bi hien thi Mov DL,AH ; Nhan ky tu Int 21h ; Hien thi JMP End_if ; Thoat Else_: Mov AH,4Ch Int 21h ; Thoat ra DOS End_if 6- C¸c lÖnh lÆp. C¸c c©u lÖnh lÆp m« t¶ c¸c lÖnh cã thÓ ®•îc thùc thi nhiÒu lÇn tuú thuéc vµo ®iÒu kiÖn ®Ó kÕt thóc vßng lÆp. LÖnh lÆp FOR M« t¶ For §iÒu kiÖn lÆp Do C¸c c©u lÖnh End_for LÖnh Loop cã thÓ ®•îc sö dông cho lÖnh lÆp Loop Nh·n Sè ®Õm cho lÖnh lÆp ®•îc ®Æt trong thanh ghi CX, C¸c xö lý cña lÖnh Loop sÏ lµm cho gi¸ trÞ trong thanh ghi CX gi¶m mét c¸ch tù ®éng cho ®Õn khi gi¸ trÞ nµy b»ng 0. Sö dông lÖnh Loop, c©u lÖnh lÆp For ®•îc phat biÓu nh• sau: ;Khëi t¹o thanh ghi CX Top: C¸c LÖnh Loop Top VÝ dô: HiÓn thÞ mét hµng 80 h×nh sao *. M« t¶: For 80lan Do Hienthi '*' End_for M· ch•¬ng tr×nh Mov CX,80 ; So l•¬ng dau * Mov AH,2 ;Chuc n¨ng hien thi Mov DL,'*' ; Ky tu se hien thi This document is created with the unregistered version of Document2PDF Pilot. Top: Int 21h ; Hien thi * Loop Top B¹n ph¶i chó ý ®Õn ®iÒu nµy. Khi sö dông lÖnh Loop, it nh©t mét lÇn lÖnh lÆp ®•îc thùc hiÖn. Thùc sù nÕu CX chøa 0 khi lÖnh Loop cã hiÖu lùc, lÖnh Loop sÏ lµm cho thanh ghi CX gi¶m tíi FFFFh, vµ lÖnh Loop l¹i tiÕp tôc xö lý FFFFh = 65535. §Ó tr¸nh ®iÒu nµy, lÖnh JCXZ (Jump if CX=0) cã thÓ ®•îc sö dông Có ph¸p lÖnh nh• sau: JCXZ Nh·n Ta cã thÓ ph¸t biÓu lÖnh nh• sau: ……………………….. JCXZ Skip Top: LÖnh Loop Top Skip: - While. LÖnh Loop tuú thuéc vµo ®iÒu kiÖn Ph¸t biÓu While dieukien Do C¸c c©u lÖnh End_while VÝ dô: ViÕt mét vµi m· lÖnh ®Ó ®Õm sè ký tù trong mét hµng M« t¶: Khëi t¹o vßng ®Õm Count §äc ký tù While Kytu Enter do Count=Count+1 Doc ky tu End_while M· ch•¬ng tr×nh Mov DX,0 ; Khoi tao DX=0 Mov AH,1 ; Doc ky tu Int 21h ; Ky tu trong AL While_: Cmp AL,0Dh ; Enter? JE End_while ; Dung, thoat Inc DX ; Tang DX Int 21h ; Doc ky tu Jmp While_ - Repeat. M« t¶: Repeat C¸c lÖnh Until §iÒu kiÖn VÝ dô: §äc c¸c ký tù cho tíi khi gÆp kho¶ng tr¾ng: M« t¶: This document is created with the unregistered version of Document2PDF Pilot. Repeat Doc ky tu Until Ky tu la khoang trang M· ch•¬ng tr×nh: Mov AX,1 ; Chuan bi doc Repeat: Int 21h ;Ky tu trong AL ; Until Cmp AL, ; AL = Space JNE Repeat This document is created with the unregistered version of Document2PDF Pilot. Chýõng 5: C¸c lÖnh Logic. I- Giíi thiÖu Kh¶ n¨ng thao t¸c víi tõng bit d÷ liÖu lµ mét lîi thÓ cña ng«n ng÷ Assembly. Chóng ta cã thÓ thay ®æi tõng bit ®äc lËp b»ng c¸ch sö dông c¸c lÖnh logic. Gi¸ trÞ nhÞ ph©n la 0 vµ 1 t•¬ng øng víi c¸c diÒu kiÖn §óng (True) hoÆc Sai (False) VÝ dô minh ho¹ c¸c lÖnh Logic. 1 0 1 0 1 0 1 0 And 1 1 1 1 0 0 0 0 = 1 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 OR 1 1 1 1 0 0 0 0 = 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 Xor 1 1 1 1 0 0 0 0 = 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 Not = 0 1 0 1 0 1 0 1 II- C¸c lÖnh Logic c¬ b¶n. 1- LÖnh And, Or, Xor, Not: C¸c lÖnh nµy thùc hiÖn c¸c thao t¸c theo tªn Logic cña chóng. Có ph¸p lÖnh: AND Dich, Nguon OR Dich, Nguon XOR Dich, Nguon KÕt qu¶ ®•îc l•u trong Dich. Dich phai la thanh ghi hoÆc « nhí. Nguon cã thÓ lµ Thanh ghi, Bé nhí hoÆc h»ng sè. Tuy nhiªn viÖc di chuyÓn gi÷a « nhí vµ « nhí lµ kh«ng ®•îc. - ¶nh h•ëng ®Õn C¸c cê: SF, ZF, PF Ph¶n ¸nh kÕt qu¶ AF Kh«ng x¸c ®Þnh CF, OF Gi¸ trÞ 0. Mét chøc n¨ng cña c¸c lÖnh And, Or, Xor lµ cã thÓ lµm thay ®æi tõng bit cña Dich. §Ó lµm ®iÒu ®ã, ta ph¶i x©y dùng chøc n¨ng bit nguån nh• lµ mét mÆt n¹ (Mask). C¸c bit Mask ®•îc chän ®Ó x¸c ®Þnh c¸c bit t¹i Diak ®•îc thay ®æi ®óng vÞ This document is created with the unregistered version of Document2PDF Pilot. trÝ khi lÖnh ®•îc xö lý. §Ó chän Bit Mask, ta ph¶i chän c¸c ®Æc tÝnh cña And, Or hoÆc Xor. b And 1 = b b or 0 = b b Xor 0 = b b And 0 = 0 b or 1 = 1 b Xor 1 = ~b (Bï 2 cña b) Tõ ®ã ta cã: + LÖnh And cho phÐp ta xo¸ c¸c bit cña DichNh•ng cã thÓ ®Ó nguyªn mét sè bit kh¸c. Mask bit b»ng 0 xo¸ bit t¹i vÞ trÝ t•¬ng tù , Mask bit b»ng 1 sÏ ®Ó nguyªn c¸c bit t¹i vÞ trÝ t•¬ng tù. + LÖnh OR sö dông ®Ó thiÕt lËp c¸c bit ®Ých vµ gi÷ nguyªn c¸c bit cßn l¹i. Mask bit lµ 1 lµm thay ®æi bit ®Ých, Mask bit b»ng 0 gi÷ nguyªn c¸c bit ®Ých t¹i vÞ trÝ t•¬ng øng. + LÖnh XOR cho phÐp ta lËp m· bï 2 dèi víi c¸c bit ®Ých vµ ®Ó nguyªn c¸c bit kh¸c. Mask bit b»ng 0 sÏ gi÷ nguyªn c¸c bit ®Ých t¹i vÞ trÝ t•¬ng øng. VÝ dô: + Xo¸ bÝt dÊu cña thanh ghi AL, gi÷ nguyªn c¸c Bit kh¸c Sö dông lÖnh AND víi 01111111=7Fh lµ Mask And AL,7Fh + Thay ®æi bit dÇu tiªn vµ cuèi cïng cña thanh ghi AL Sö dông lÖnh OR víi 10000001=81h lµ Mask Or AL,81h + Thay ®æi bit dÊu cña DX Sö dông lÖnh XOR víi 8000h lµ Mask XOR DX,8000h §Ó tr¸nh gâ sai, nªn ®æi tõ nhÞ ph©n sang Hex nhÊt lµ c¸c Mask 16 bits. - ChuyÓn ®æi ký tù ASCII thµnh sè: Chóng ta biÕt r»ng khi ch•¬ng tr×nh ®äc ký tù tõ bµn phÝm, AL sÏ nhËn ký tù m· ASCII.vÝ dô, khi ta nhÊn phÝm sè 5, AL sÏ nhËn m· 35h chø kh«ng ph¶i sè 5. §Ó nhËn sè 5 trong AL, ta ph¶i lµm nh• sau Sub AL,30h Mét c¸ch kh¸c ta sö dông lÖnh And ®Ó xo¸ bá 4 bit cao cña AL. And AL,0Fh Lý do lµ M· cña 0 tíi 9 lµ 30 39h, ph•¬ng ph¸p nµy chuyÓn ®æi c¸c m· ký tù ASCII sang gi¸ trÞ sè. B»ng c¸ch sö dông lÖnh And thay cho lªnh Sub, chóng ta nhÊn m¹nh viÖc thay ®æi ®Æc ®iÓm bit cña AL vµ ®iÒu ®ã gióp cho ch•¬ng tr×nh dÔ ®äc h¬n. - ChuyÓn ký tù th•êng thµnh ký tù in hoa: M· ASCII cña 'a' 'z' lµ 61h 7Ah, 'A' 'Z' lµ 41h 5Ah. NÕu DL chøa m· ký tù th•êng, ta cã thÓ ®æi chóng thµnh ký tù in hoa nh• sau. Sub DL,20h Tuy nhiªn, nÕu ta so s¸nh m· nhÞ ph©n cña c¸c ký tù t•¬ng øng gi÷a ch÷ th•êng vµ ch÷ in ta sÏ cã Ký tù M· Ký tù m· A 01100001 a 01000001 B 01100010 b 01000010 Z 01111010 Z 01011010 So s¸nh trªn cho ta thÊy, khi chuyÓn ®æi kiÓu ký tù ta chØ cÇn xo¸ bit sè 5. ViÖc chuyÓn ®æi rÊt dÔ dµng khi ta sö dông lÖnh Andvíi Mask lµ 11011111b=0DFh. This document is created with the unregistered version of Document2PDF Pilot. Ta cã And DL,0DFh - Xo¸ thanh ghi Ta ®· biÕt cã hai c¸ch ®Ó xo¸ thanh ghi nh• sau Thanh ghi AX Mov AX,0 (1)hoÆc Sub AX,AX (2) Theo lÖnh XOR 1 Xor 1=0 vµ 0 Xor 0=0 vËy ta cã c¸ch thø 3 Xor AX,AX (3) M· m¸y cña ph•¬ng ph¸p 1 lµ 3 byte, ph•¬ng ph¸p 2 vµ 3 lµ 2 Byte, vËy ®Ó xo¸ gi¸ trÞ mét thanh ghi ta nªn sö dông ph•¬ng ph¸p 2 hoÆc 3. Tuy nhiªn ®Ó xo¸ bé nhí, ta ph¶i sö dông ph•¬ng ph¸p 1. 2- LÖnh Not LÖnh not thùc hiÖn thao t¸c m· bï ®èi víi ®Ých. ®Þnh d¹ng nh• sau Not Dich LÖnh kh«ng ¶nh h•ëng ®Õn c¸c thanh ghi tr¹ng th¸i. VÝ dô: Not AX 3- LÖnh Test: LÖnh Test sö dông phÐp to¸n And ®èi víi ®Ých vµ nguån nh•ng kh«ng lµm thay ®æi gi¸ trÞ cña ®Ých. Môc ®Ých cña lªnh Test lµ thiÕt lËp tr¹ng th¸i cho c¸c cê: Có ph¸p: Test Dich, nguon ¶nh h•ëng ®Õn c¸c cê tr¹ng th¸i: SF, ZF, PF Ph¶n ¸nh kÕt qu¶ AF Kh«ng ®inh nghÜa CF, OF Gi¸ trÞ 0 KiÓm tra c¸c bits LÖnh Test cã thÓ ®•îc sö dông ®Ó kiÓm tra tõng bit trong mét to¸n h¹ng. Mask ph¶i chøa 1 t¹i vÞ trÝ cÇn kiÓm tra. Lý do 1 And b=b vµ 0 and b=0 Test Dich, Mask VÝ dô: Nh¶y tíi nh·n Below nÕu AL chøa sè ch½n Byte chøa sè ch½n nÕu bit 0 cã gi¸ trÞ 0 Mask 00000001b=1 Test AL,1 ;AL Ch½n? JZ Below ; Dung, nhay den Below. This document is created with the unregistered version of Document2PDF Pilot. Chýõng 6: C¸c lÖnh dÞch chuyÓn vµ quay. I- Giíi thiÖu C¸c lÖnh dÞch chuyÓn (Shift) vµ quay (Rotate)sÏ dÞch chuyÓn ®Ých 1 hoÆc nhiÒu vÞ trÝ sang tr¸i hoÆc ph¶i tuú thuéc lÖnh. Víi c¸c lÖnh Shift, bit cuèi cïng sÏ bÞ mÊt. Víi c¸c lÖnh Rotate, bit cuèi cïng sÏ dÞch chuyÓn sang ®Çu bªn kia. C¸c lÖnh nµy cho phÐp ta thùc hiÖn c¸c phÐp to¸n nh©n, chia hoÆc b×nh ph•¬ng mét gi¸ trÞ. Vµ chóng ta cã thÓ sö dông chóng ®Ó tiÕn hµnh c¸c thao t¸c vµo ra sè nhÞ ph©n hoÆc Hexa. II- C¸c lÖnh c¬ b¶n. 1- C¸c lÖnh dÞch (Shift). a- SHL (Shift Left "" DÞch sang tr¸i) LÖnh cho phÐp ta dÞch mét hoÆc nhiÒu bit sang bªn tr¸i Có ph¸p: SHL Dich,1 Gi¸ trÞ 0 sÏ ®•îc g¸n vµo bit 0, gi¸ trÞ t¹o bit cao nhÊt cña Dich sÏ ®•îc l•u trong cê CF. NÕu muèn dÞch nhiÒu bit, ta ®•a gi¸ trÞ sè lÇn dÞch chuyÓn vµo CL SHL Dich,CL ¶nh h•ëng ®Õn cê SF, PF, ZF Ph¶n ¸nh kÕt qu¶ AF Kh«ng ®Þnh nghÜa. CF Bit cuèi cïng bÞ ®Èy ra OF 1 lµ kÕt qu¶ thay ®æi dÊu cña bit cuèi cïng VÝ dô: DH chøa gi¸ trÞ 8Dh, CL chøa gi¸ trÞ 3 . VËy gi¸ trÞ cña DH vµ CF lµ bao nhiªu khi ta sö dông c©u lÖnh SHL DH,CL Tr¶ lêi: Gi¸ trÞ tÝnh theo nhÞ ph©n cña DH lµ 10001010b Sau khi dÞch tr¸i 3 lÇn, gi¸ trÞ cña DH sÏ lµ 01010000b=50h vµ gi¸ trÞ cña CF sÏ lµ 0. b- Nh©n b»ng lÖnh SHL Gi¶ sö ta cã sè 235 nÕu ta dÞch tr¸i 1 lÇn (Thªm 0 vµo sè trªn vµo bªn ph¶i) ta sÏ ®•îc 2350 = 235 x 10 Còng t•¬ng tù nh• vËy, DÞch tr¸i sè nhÞ ph©n gièng nh• nh©n cho 2. VÝ dô: AL chøa sè 5=00000101b dÞch tr¸i ta sÏ cã 00001010=10, dÞch tr¸i tiÕp ta cã 00010100=20 c- SHL (Shift Right "DÞch sang ph¶i"): T•ng tù nh• lÖnh dich tr¸i, lÖnh dich ph¶i còng cã c¸c thao t¸c t•¬ng tù, Sù kh¸c nhau lµ chiÒu dÞch cña c¸c bit. 2- C¸c lÖnh quay (Rotate). a- ROL(Rotate left "Quay tr¸i") LÖnh thao t¸c dÞch bit sang tr¸i. Bit ®Çu tiªn sÏ mang gi¸ trÞ bit cuèi cïng, CF sÏ chøa gi¸ trÞ cña bit ®•îc ®Èy ra. Có ph¸p lÖnh: ROL Dich,1 Vµ This document is created with the unregistered version of Document2PDF Pilot. ROL Dich,CL b- ROR(Rotate Right "Quay ph¶i") T•¬ng tù nh• lÖnh quay tr¸i, chØ cã ®iÒu c¸c bit dÞch chuyÓn qua bªn ph¶i, bit cuèi cïng sÏ mang gi¸ trÞ cña bit ®Çu tiªn. Cê CF sÏ mang gi¸ trÞ cña bit bÞ ®Èy ra. Có ph¸p lÖnh ROR Dich,1 Vµ ROR Dich,CL Trong c¸c lÖnh ROL vµ ROR, CF ph¶n ¸nh bit bin ®Èy ra, Kh¶o s¸t vÝ dô sau ®©y: VÝ dô: Sö dông lÖnh ROL ®Ó ®Õm sè l•îng bit mang gi¸ trÞ 1 cua rthanh ghi BX mµ kh«ng thay ®æi gi¸ trÞ thah ghi BX. Gi¶i ®¸p n»m trong thah ghi AX. Xor AX, AX ; AX vÒ 0 Mov CX,16 ; Bé ®Õm lÆp Top: ROL BX,1 ; CF= bit bÞ ®Èy ra JNC Next ; 0 Bit INC AX ; 1 bit, t¨ng sè l•îng Next: Loop Top ; LÆp cho tíi khi kÕt thóc. Trong vÝ dô nµy ta sö dông JNC (Jump If No Carry) sÏ thùc thi khi CF=0. c- RCL LÖnh RCL dÞch chuyÓn c¸c bit cña Dich sang tr¸i, Bit cao nhÊt chuyÓn vµo cê CF vµ gi¸ trÞ trong CL sÏ ®•îc chuyÓn vµo bit thÊp nhÊt. Còng gièng lÖnh ROL nh•ng CF lµ mét thµnh phÇn. Có ph¸p: RCL Dich,1 vµ RCL Dich,CL d- RCR Gièng lªnh RCL nh•ng bit dÞch chuyÓn sang bªn ph¶i. Có ph¸p: RCR Dich,1 RCL Dich,CL This document is created with the unregistered version of Document2PDF Pilot. Chýõng 7: C¸c chÕ ®é lµm viÖc víi m¶ng vµ ®¸nh ®Þa chØ I- Giíi thiÖu Trong nhiÒu øng dông, viÖc nhãm c¸c gi¸ trÞ thµnh tõng tËp hîp lµ rÊt cÇn thiÕt. VÝ dô chóng ta cÇn ph¶i ®äc mét t©ph hîp c¸c kÕt qu¶ vµ tÝnh to¸n ra gi¸ trÞ trung b×nh cña chóng, ®Ó lµm viÖc nµy ta th•êng ph¶i l•u gi÷ c¸c kÕt qu¶ thµnh mét d·y ®•îc s¾p xÕp theo gi¸ trÞ t¨ng dÇn. Trong c¸c ng«n ng÷ lËp tr×nh, cã mét cÊu tróc d÷ liÖu ®•îc gäi lµ m¶ng. Ta cã c¸c lo¹i m¶ng mét chiÒu, m¶ng hai chiÒu vµ m¶ng ®a chiÒu. Sau ®©y ta sÏ lÇn l•ît kh¶o s¸t c¸c lo¹i m¶ng trªn ®Ó cã thÓ hiÓu ®•îc c¸ch tæ chøc nhãm gi¸ trÞ trong bé nhí vµ c¸ch thøc sö dông ng«n ng÷ lËp tr×nh ®Ó thao t¸c víi chóng II- C¸c lÖnh øng dông. 1- M¶ng 1 chiÒu (1 Dimensional Array). M¶ng 1 chiÒu lµ mét danh s¸ch c¸c thµnh phÇn ®•îc s¾p xÕp theo thø tù, tÊt c¶ c¸c thµnh phÇn ®Òu cã cïng mét kiÓu d÷ liÖu. NÕu A lµ mét m¶ng, c¸c thµnh phÇn th•êng ®•îc m« t¶ lµ A[1], A[2], A[3], A[4]…VÝ dô vÒ khai b¸o mét m¶ng MSG DB 'abcde' §Þa chØ cña biÕn m¶ng ®•îc gäi lµ ®Þa chØ c¬ së cña m¶ng. NÕu ®Þa chØ ®é dêi (Offset) ®•îc g¸n cho lµ W (Word) lµ 0200h, trong bé nhí, m¶ng ®•îc s¾p xÕp nh• sau: §Þa chØ Offset Ký hiÖu ®Þa chØ Gi¸ trÞ thËp ph©n 0200h W 10 0202h W+2h 20 0204h W+4h 30 0206h W+6h 40 0208h W+8h 50 020Ah W+2A 60 2- To¸n h¹ng DUP Chóng ta cã thÓ ®Þnh nghÜa nhiÒu m¶ng m¸ c¸c thµnh phÇn chia sÎ gi¸ trÞ khëi t¹o b»ng c¸ch sö dông to¸n h¹ng DUP (Duplicator). §Þnh d¹ng cña chóng nh• sau Repeat_Count DUP(Value) VÝ dô: Gamma DW 100 DUP(0) Tæ chøc mét m¶ng gåm 100 Words, Mëi t¹o b»ng 0, t•¬ng tù Delta DB 212 DUP(?) Tæ chøc mét m¶ng 212 Words, kh«ng cã gi¸ trÞ khëi t¹o. 3- ChÕ ®é ®¸nh ®Þa chØ C¸ch thøc mét to¸n h¹ng ®•îc x¸c ®Þnh lµ nhê vµo chÕ ®é ®¸nh ®Þa chØ (Addressing Modes). ChÕ ®é ®¸nh ®Þa chØ mµ chóng ta kh¶o s¸t tõ tr•íc tíi giê lµ + ChÕ ®é thanh ghi (C¸c to¸n h¹ng lµ thanh ghi) + ChÕ ®é tøc th× (C¸c to¸n h¹ng lµ h»ng sè) + ChÕ ®é Trùc tiÕp (C¸c to¸n h¹ng lµ biÕn) VÝ dô: Mov AX,0 (Thanh ghi, h»ng sè) Add Alpha,AX (BiÕn, thanh ghi). Cã 4 chÕ ®é ®¸nh ®Þa chØ trong hÖ thèng 8086: 1- Thanh ghi gi¸n tiÕp (Register Indirect) This document is created with the unregistered version of Document2PDF Pilot. 2- C¬ së (Based) 3- Index 4- Base Index C¸c chÕ ®é trªn ®•îc sö dông ®Ó ®¸nh ®Þa chØ bé nhí mét c¸ch gi¸n tiÕp. 4- ChÕ ®é dïng thanh ghi gi¸n tiÕp Trong chÕ ®é nµy, ®Þa chØ ®é dêi cña to¸n h¹ng ®•îc chøa trong thanh ghi. Ta cã thÓ nãi c¸c thanh ghi hµnh ®éng nh• mét con trá trá ®Õn bé nhí. §Þnh d¹ng nh• sau: [Thanh ghi] C¸c thanh ghi BX, SI, DI hoÆc BP. Víi thanh ghi BX, SI, DI, sè hiÖu ®o¹n (Segment number) cña to¸n h¹ng ®•îc chøa trong DS. Víi BP, SS , trùc tiÕp chøa sè hiÖu ®o¹n. VÝ dô: SI chøa 0100hvµ Word t¹i 0100h chøa gi¸ trÞ 1234h: Mov AX,[SI] + CPU sÏ kiÓm tra SI vµ lÊy ®Þa chØ Offset 100h, + Sö dông ®Þa chØ DS:0100h ®Ó lÊy gi¸ trÞ 1234h + ChuyÓn gi¸ trÞ 1234h sang thanh ghi AX So s¸nh víi: Mov AX,SI + §¬n thuÇn lµ chuyÓn gi¸ trÞ ®Þa chØ 0100h tõ SI vµo AX 5- ChÕ ®é c¬ së vµ chÕ ®é chØ sè ®Þa chØ. Trong c¸c chÕ ®é nµy, ®Þa chØ Offset cña to¸n h¹ng ®•îc t×m thÊy b»ng c¸ch thªm vµo mét sè ®•îc gäi lµ Displacement ®Õn néi dung cña thanh ghi. Displacement cã thÓ lµ:: + ®Þa chØ Offset cña biÕn + H»ng sè (D•¬ng hoÆc ©m) + ®Þa chØ Offset cña biÕn trõ ®i hoÆc céng thªm mét h»ng sè. NÕu A lµ biÕn, ta cã: A (®Þa chØ Offset cña biÕn) -2 (H»ng sè) A + 4 (§Þac chØ Offset cña biÕn céng víi h»ng sè) Có ph¸p cña to¸n h¹ng: [Thanh ghi + Displacement] [Displacement + Thanh ghi] [Thanh ghi] + Displacement Displacement + [Thanh ghi] Displacement[Thanh ghi] C¸c thanh ghi ph¶i lµ BX, BP, SI hoÆc DI. Trong tr•¬ng fhîp c¸c thanh ghi BX, SI hoÆc DI ®•îc sö dông, DS chøa sè hiÖu segment cña ®Þa chØ to¸n h¹ng. NÕu sö dông BP, SS chøa sè hiÖu Segment. ChÕ ®é ®¸nh ®Þa chØ ®•îc gäi lµ c¬ së (Based) nÕu BX hoÆc BP ®•îc sö dông, ChØ sè (Index) nÕu SI hoÆc DI ®•îc sö dông. VÝ dô: W lµ m¶ng Word, BX chøa 4. Mov AX,W[BX] Displacement lµ ®Þa chØ Offset cña biÕn W. C©u lÖnh chuyÓn thµnh phÇn t¹i ®Þa chØ W + 4 vµo thanh ghi AX. §©y lµ thanh phÇn thø 3 cña m¶ng. C©u This document is created with the unregistered version of Document2PDF Pilot. lÖnh trªn cã thÓ ®•îc viÕt theo c¸c ®Þnh d¹ng kh¸c nh• sau: Mov AX,[W+BX] Mov AX,[BX+W] Mov AX,W+[BX] Mov AX,[BX] - W Mét vÝ dô kh¸c: SI chøa ®Þa chØ m¶ng W. Mov AX,[SI + 2] Displacement lµ 2. C©u lÖnh di chuyÓn néi dung cña W+2 lµ thµnh phÇn thø 2 cña m¶ng vµo AX. C©u lÖnh cã thÓ ®•îc viÕt theo c¸c ®Þnh d¹ng sau: Mov AX,[2+SI] Mov AX,2+[SI] Mov AX,2[SI] Mov AX,[SI]+2 6- ChÕ ®é ®¸nh ®Þa chØ c¬ së chØ sè. Trong chÕ ®ä nµy, ®Þa chØ Offset cña to¸n h¹ng lµ tæng cña: + Néi dung thanh ghi BX, BP. + Néi dung thanh ghi SI, DI. + §Þa chØ Offset cña biÕn + H»ng sè (©m hoÆc d•¬ng). NÕu BX ®•îc sö dông, DS chøa sè hiÖu Segment cña ®Þa chØ to¸n h¹ng. NÕu BP ®•îc sö dông, SS chøa sè hiÖu Segment. To¸n h¹ng cã thÓ ®•îc biÓu diÔn theo nhiÒu d¹ng nh• sau: + Vatiable[Base_register][Index_register] + [Base_register + Index_register + Variable + Constant] + Variable[Base_register+Index_register+Constant] + Constant[Base_register+Index_register+Variable] Thø tù trong dÊu [] cã thÓ thay ®æi. This document is created with the unregistered version of Document2PDF Pilot. Chýõng 8: Ng¾t BIOS I- Giíi thiÖu Trong c¸c phÇn tr•íc, chóng ta ®· ®Ò cËp ®Õn viÖc sö dông lÖnh Int ®Ó gäi c¸c tiÓu tr×nh. Trong ch•¬ng nµy, chóng ta ®i vµo nghiªn cøu nhiÒu lo¹i ng¾t kh¸c nhau ®Ó tiÕp cËn tèt h¬n vãi c©u lÖnh Int. 1- DÞch vô ng¾t a- Ng¾t cøng (hardware Interrupts) Ng¾t cøng cho phÐp thiÕt bÞ ng•ng c¸c thao t¸c cña CPU. VÝ dô nh• Khi bµn phÝm ®•îc bÊm, CPU nhËn ®•îc tÝn hiÖu ®äc m· phÝm vµo bé ®Öm bµn phÝm. + Mét thiÕt bÞ phÇn cøng cÇn dÞch vô ®Ó göi tÝn hiÖu yªu cÇu ng¾t (Interrupt Request) tíi bé xö lý. + CPU ng•ng c«ng viÖc ®ang thùc hiÖn, xö lý yªu cÇu vµ chuyÓn ®iÒu khiÓn cho tiÓu tr×nh ng¾t (Interrupt Routine). + DÞch vô ng¾t phôc vô thiÕt bÞ phÇn cøng b»ng c¸ch thùc hiÖn mét sè thao t¸c vµo ra. + §iÒu khiÓn ®•îc tr¶ vÒ t¸c vô gèc t¹i thêi ®iÓm nã bÞ ng¾t (CPU xö lý tiÕp ch•¬ng tr×nh bÞ ng•ng lóc ®Çu). TÝn hiÖu ng¾t cã thÓ ®Õn bÊt cø thêi ®iÓm nµo, CPU kiÓm tra tÝn hiÖu yªu cÇu ng¾t ngay khi xö lý xong mét lÖnh. Trong qu¸ tr×nh kiÓm tra ph¸t hiÖn tÝn hiÖu ng¾t, CPU ®¸p tr¶ b»ng c¸ch ®•a ra tÝn hiÖu NhËn biÕt (Interrupt Acknowledge Signal). ThiÕt bÞ ng¾t ®¸p tr¶ b»ng c¸ch göi mét sè 8 bit trªn BUS d÷ liÖu (Interrupt Number). Mçi thiÕt bÞ sö dông mét sè hiÖu ng¾t ®•îc x¸c ®Þnh bëi chÝnh chóng. ViÖc göi vµ nhËn tÝn hiÖu ®•îc gäi lµ B¾t tay (Hand Shaking). §iÒu nµy rÊt cÇn thiÕt ®Ó x¸c ®Þnh thiÕt bÞ yªu cÇu ng¾t b- Ng¾t mÒm (Software Interrupt) Ng¾t mÒm ®•îc sö dông bëi c¸c ch•¬ng tr×nh ®Ó yªu cÇu dÞch vô hÖ thèng. Mét ng¾t mÒm x¶y ra khi mét ch•¬ng tr×nh gäi tiÓu tr×nh ng¾t sö dông lÖnh INT. §Þnh d¹ng cña lÖnh INT nh• sau: INT Interrupt_Number CPU xö lý ng¾t mÒm t•¬ng tù nh• xö lý víi ng¾t cøng c- Lo¹i trõ xö lý (Processor Exception): Lo¹i ng¾t thø ba mµ ta ®Ò cËp ®Õn lµ Lo¹i trõ xö lý (Processor Exception). Ng¾t nµy x¶y ra khi ®iÒu kiÖn t¨ng nhanh trong CPU nh• Trµn phÐp chia (Chia cho 0), ®iÒu nµy yªu cÇu ®iÒu khiÓn ®Æc biÖt. Mçi ®iÒu kiÖn ®¸p øng mét lo¹i ng¾t duy nhÊt. VÝ dô Trµn phÐp chia lµ 0, do ®ã khi viÖc trµn x¶y ra trong lÖnh chia, CPU tù ®éng xö lý ng¾t 0 ®Ó ®iÒu khiÓn viÖc trµn sè. 2- B¶ng Vector ng¾t: C¸c sè hiÖu ng¾t trong 8086 lµ c¸c gi¸ trÞ Byte kh«ng dÊu, do ®ã cso tíi 256 lo¹i ng¾t. Kh«ng ph¶i sè hiÖu ng¾t nµo cóng ®•îc ®¸p øng bëi tiÓu tr×nh ng¾t. C¸c nhµ s¶n xuÊt m¸y tÝnh cung cÊp c¸c dÞch vô ng¾t cøng trong ROM, chóng lµ c¸c tiÓu tr×nh ng¾t BIOS. C¸c tiÓu tr×nh ng¾t hÖ thèng bËc cao nh• Int 21h lµ 1 thµnh phÇn cña hÖ ®iÒu hµnh DOS ®•îc n¹p vµo bé nhí ngay khi m¸y tÝnh khëi ®éng. Mét vµi sè hiÖu ng¾t ®•îc dµnh riªng bëi hÖ thèng cña IBM dµnh cho c«ng viÖc dau nµy. C¸c ng¾t cßn l¹i dµnh cho ng•êi dïng. This document is created with the unregistered version of Document2PDF Pilot. Ng¾t 0 1Fh C¸c ng¾t BIOS Ng¾t2 0 3Fh C¸c ng¾t DOS Ng¾t 40 7Fh C¸c ng¾t ®Ó dµnh Ng¾t 80 F0h C¸c ng¾t ROM Basic Ng¾t F1h FFh Kh«ng sö dông CPU kh«ng t¹o ra ®Þa chØ ng¾t trùc tiÕp tõ sè hiÖu ng¾t , v× vËy c¸c tiÓu tr×nh ng¾t ph¶i ®•îc l•u tr÷ t¹i mét vÞ trÝ cè ®Þnh trong c¸c hÖ thèng m¸y tÝnh. C¸c tiÓu tr×nh ng¾t ®•îc l•u trong mét ®Þa chØ bé nhí ®· ®•îc ®Æt tr•íc vµ ®•îc gäi lµ B¶ng Vector ng¾t (Interrupt Vector). C¸c Vector ng¾t ®•îc l•u trong b¶ng Vector ng¾t, nã chiÕm vÞ trÝ t¹i 1 KB ®Çu tiªn cña bé nhí. Mçi Vector ng¾t ®•îc ®¸nh ®Þa chØ Segment:Offset vµ cã ®é dµi 4 bytes. 4 Byte ®Çu tiªn cña bé nhí lµ Vector ng¾t 0. §Ó x¸c ®Þnh ®•îc Vector nµo cho tiÓu tr×nh ng¾t, chóng ta chØ viÖc nh©n sè hiÖu ng¾t víi 4. §iÒu nµy x¸c ®Þnh vÞ trÝ cña bé nhí chøa Offset cña tiÓu tr×nh ng¾t. §Þa chØ Segment cña tiÓu tr×nh n»m trong Word kÕ tiÕp. VÝ dô: Ng¾t 9 (Keyboard) §Þa chØ Offset ®•îc l•u trong 9 x 4 = 36 = 00024h §Þa chØ Segment lµ: 24h + 2 = 26h BIOS khëi t¹o c¸c Vector ng¾t khi m¸y tÝnh ®•îc bËt. C¸c ng¾t DOS ®•îc khëi t¹o khi DOS ®•îc n¹p. II- C¸c ng¾t BIOS. 1- Ng¾t lo¹i 0h 7h C¸c ng¾t tõ 0 ®Õn 7 ®•îc dµnh riªng cho Intel. Tõ 0 ®Õn 4 ®· ®•îc ®Þnh s½n. IBM sö dông 6 vµ 7. a- Ng¾t 0 - Divide Overflow: X¶y ra khi sö dông c¸c lÖnh DIV hoÆc IDIV g©y ra trµn sè. TiÓu tr×nh ng¾t 0 hiÓn thÞ th«ng b¸o "Divide Overflow" vµ tr¶ ch•¬ng tr×nh vÒ DOS b- Ng¾t 1- Single Step: Ng¾t 1 x¶y ra khi cê TF ®•îc bËt. c- Ng¾t 2- Nonmaskable Interrupt: Ng¾t 2 lµ ng¨t cøng vµ nã kh«ng thÓ che b»ng c¸ch xo¸ cê IF, IBM sö dông ng¾t nµy ®Ó b¸o hiÖu lçi Parity cho bé nhí (Bad Chip). d- Ng¾t 3- Breakpoint: LÖnh "Int 3" lµ lÖnh mét Byte (CCh) trong khi c¸c lÖnh kh¸c lµ lÖnh 2 Bytes. Ta cã thÓ ®Æt lÖnh Int 3 bÊt k× n¬i nµo trong ch•¬ng tr×nh ®Ó thay thÕ Opcode. Ch•¬ng tr×nh Debug sÏ sö dông lÖnh nµy ®Ó thay thÕ lÖnh G (Go). e- Ng¾t 4- Overflow: t¹o ng¾t bëi lÖnh INTO (Ng¾t nÕu bÞ trµn) khi OF ®•îc thiÕt lËp. f- Ng¾t 5- Print Screen: ChuyÓn th«ng tin tõ mµn h×nh ra m¸y in. LÖnh Int 5 sÏ ®•îc thùc thi khi nhÊn PrintScreen trªn bµn phÝm. 2- Ng¾t lo¹i 8h Eh a- Ng¾t 8- Timer: M¹ch Timer cña hÖ thèng IBM t¹o ra mét ng¾t mçi 54.92 This document is created with the unregistered version of Document2PDF Pilot. ms. Ng¾t BIOS sè 8 phôc vô m¹ch ®ång hå. Sö dông tÝn hiÖu ®ång hå ®Ó l•u gi÷ ngµy giê hÖ thèng. b- Ng¾t 9- Keyboard: Ng¾t sinh ra mçi khi mét phÝm ®•îc nhÊn. TiÓu tr×nh trong BIOS sÏ ®äc m· quÐt vµ l•u tr÷ lªnh bé ®Öm bµn phÝm. c- Ng¾t Eh- Diskette Error: DiÒu khiÓn lçi æ mÒm. 3- Ng¾t lo¹i 10h 11h: Cã thÓ ®•îc gäi bëi ch•¬ng tr×nh øng dông ®Ó thùc hiÖn c¸c thao t¸c vµo ra vµ kiÓm tra tr¹ng th¸i. a- Ng¾t 10h- Video: tiÓu tr×nh ng¾t BIOS 10h ®iÒu khiÓn hiÓn thÞ. b- Ng¾t 11h- Equipment Check: kiÓm tra cÊu h×nh hÖ thèng PC. M· tr¶ vÒ l•u trong AX. c- Ng¾t 12h- Memory Size: Tr¶ l¹i thanh ghi · dung l•îng bé nhí c¬ së. d- Ng¾t 13h- Disk I/O: ®iÒu khiÓn æ ®Üa, cho phÐp c¸c øng dông thao t¸c vµo ra víi c¸c æ ®Üa. e- Ng¾t 14h- Communication: §iÒu khiÓn truyÒn th«ng qua cæng tuÇn tù. f- Ng¾t 15h- Cassette: Sö dông cho giao diÖn Cassette cña c¸c hÖ thèng cò. Víi c¸c hÖ thèng AT vµ PS/2 ®•îc sö dông cho rÊt nhiÒu dÞch vô. g- Ng¾t 16h- Keyboard I/O:§iÒu khiÓn bµn phÝm. h- Ng¾t 17h- Printer I/O: §iÒu khiÓn m¸y in. tiÓu tr×nh nµy gåm cã 3 chøc n¨ng tõ 02. Chøc n¨ng 0 göi ký tù ra m¸y in. NhËp AH=0, AL=Ký tù, DX Sè hiÖu m¸y in.. Chøc n¨ng 1 Khëi t¹o cæng m¸y in. NhËp AH=1, DX=Sè hiÖu m¸y in. Chøc n¨ng 2 nhËn l¹i tr¹ng th¸i m¸y in, NhËp AH=2, DX = Sè hiÖu m¸y in. Tr¹ng th¸i sÏ ®•îc l•u trong thanh ghi AH. i- Ng¾t 18h- BASIC:ChuyÓn ®iÒu khiÓn cho ROM BASIC. j- Ng¾t 19h- Bootstrap: Reboot hÖ thèng. k- Ng¾t 1Ah- Time Of Day: Cho phÐp ch•¬ng tr×nh lÊy hoÆc thiÕt lËp bé ®Õm ®ång hå. l- Ng¾t 1Bh- CRTL-Break:§•îc gäi bëi lÖnh INT 9 khi tæ hîp phÝm CRTL-Break ®•îc nhÊn. TiÓu tr×nh BIOS chØ chøa cã mét chøc n¨ng IRET. m- Ng¾t 1Ch- Timer tick: §•îc gäi bëi lÖnh INT 8 mçi khi m¹ch Timer sinh ng¾t. n- Ng¾t 1Dh - 1Fh: C¸c vector ng¾t trá tíi d÷ liÖu thay v× c¸c lÖnh. C¸c vector ng¾t 1Dh, 1Eh vµ 1Fh trá ®Õn c¸c tham sè khëi t¹o Video, Diskette, Ký tù ®å ho¹ mµn h×nh. This document is created with the unregistered version of Document2PDF Pilot. This document is created with the unregistered version of Document2PDF Pilot.

Các file đính kèm theo tài liệu này:

  • pdfComarch08_20050429_013838.pdf
Tài liệu liên quan