Bài giảng Kỹ thuật vi xử lý và lập trình hợp ngữ

Tài liệu Bài giảng Kỹ thuật vi xử lý và lập trình hợp ngữ: ĐẠI HỌC CễNG NGHỆ THễNG TIN VÀ TRUYỀN THễNG THÁI NGUYấN KHOA CễNG NGHỆ TỰ ĐỘNG HểA phạm đức long Bài giảng kỹ thuật vi xử lý và lập trình hợp ngữ (Tài liệu này cú thể tải về ở dạng file .PDF trong trang liu v Bi ging/Forms/AllItems.aspx) Thái Nguyên 7-2013 Phạm Đức Long BM Cụng nghệ &Thiết bị Tự động Khoa CN Tự động húa – ĐHCNTT&TT Thỏi Nguyờn BÀI GIẢNG MễN HỌC VI XỬ Lí VÀ LẬP TRèNH HỢP NGỮ MỤC LỤC Trang Ch−ơng 1. Giới thiệu chung 1.1 Sự ra đời và phát triển của các bộ vi xử lý 4 1.2 Sơ đồ khối cấu trúc và hoạt động của hệ vi xử lý 4 Ch−ơng 2. Bộ nhớ bán dẫn 2.1 Phân loại bộ nhớ 7 2.1.1 Bộ nhớ cố định (ROM, PROM) 7 2.1.2 Bộ nhớ bán cố định (EPROM, EEPROM, FLASH) 8 2.1.3 Bộ nhớ đọc ghi (SRAM, DRAM) 10 2.1.4 Bộ nhớ ngoài 10 2.2 Phân cấp bộ nhớ 10 2.3 Cấu trúc của mạch nhớ tĩnh SRAM 2.3.1 Giới thiệu công nghệ 12 2.3.2 Cấu trúc mạch nhớ SRAM 12 2.3.2.1 Bit nhớ 12 2.3.2.2 Thanh ghi 14 2.3.2.3 Bộ giải mã 15 2.3.2.4 Mạch nhớ ...

pdf165 trang | Chia sẻ: honghanh66 | Lượt xem: 809 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Bài giảng Kỹ thuật vi xử lý và lập trình hợp ngữ, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG THÁI NGUYÊN KHOA CÔNG NGHỆ TỰ ĐỘNG HÓA ph¹m ®øc long Bµi gi¶ng kü thuËt vi xö lý vµ lËp tr×nh hîp ng÷ (Tài liệu này có thể tải về ở dạng file .PDF trong trang liu v Bi ging/Forms/AllItems.aspx) Th¸i Nguyªn 7-2013 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ MỤC LỤC Trang Ch−¬ng 1. Giíi thiÖu chung 1.1 Sù ra ®êi vµ ph¸t triÓn cña c¸c bé vi xö lý 4 1.2 S¬ ®å khèi cÊu tróc vµ ho¹t ®éng cña hÖ vi xö lý 4 Ch−¬ng 2. Bé nhí b¸n dÉn 2.1 Ph©n lo¹i bé nhí 7 2.1.1 Bé nhí cè ®Þnh (ROM, PROM) 7 2.1.2 Bé nhí b¸n cè ®Þnh (EPROM, EEPROM, FLASH) 8 2.1.3 Bé nhí ®äc ghi (SRAM, DRAM) 10 2.1.4 Bé nhí ngoµi 10 2.2 Ph©n cÊp bé nhí 10 2.3 CÊu tróc cña m¹ch nhí tÜnh SRAM 2.3.1 Giíi thiÖu c«ng nghÖ 12 2.3.2 CÊu tróc m¹ch nhí SRAM 12 2.3.2.1 Bit nhí 12 2.3.2.2 Thanh ghi 14 2.3.2.3 Bé gi¶i m· 15 2.3.2.4 M¹ch nhí SRAM (C¸c thµnh phÇn, quy tr×nh ®äc ghi, biÓu ®å thêi gian) 18 2.3.3 ThiÕt kÕ thÎ nhí SRAM 18 2.4 CÊu tróc cña m¹ch nhí DRAM 18 Ch−¬ng 3. C¸c bé vi xö lý và vi điều khiển 3.1 Giíi thiÖu bé vi xö lý 8 bit tæng qu¸t 22 3.2 Bé vi xö lý 8 bit (8086/8088) 3.2.1 S¬ ®å khèi bé vi xö lý 8 bit 22 3.2.2 C¸c thanh ghi của 8086/88 23 3.2.3 BiÓu ®å thêi gian cña chu kú ®äc ghi sè liÖu 26 3.2.5 GhÐp nèi c¸c ch©n tÝn hiÖu 8088 28 3.2.6 HÖ lÖnh cña bé vi xö lý 8 bit 30 3.3 Giíi thiÖu c¸c bé vi xö lý tiªn tiÕn dòng 80x86 77 3.4 Vi ®iÒu khiÓn 8x51/52 77 3.5 Vi ®iÒu khiÓn thÕ hÖ míi AVR Thái Nguyên 7-2013 1 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ 3.5.1. Giíi thiÖu chung vÒ AVR 92 3.5.2. Bus I2C vµ SPI 98 3.5.3. AVR 90S8535 101 3.6 C¸c hÖ thèng trªn mét chip cã kh¶ n¨ng t¸i cÊu h×nh (SoC) 3.6.1. SoC lµ g×? 101 3.6.2. Giíi thiÖu PSoC 103 3.6.3. PSoC CY8C29446 103 Ch−¬ng 4. C¸c bé ®iÒu khiÓn vµ ghÐp nèi d÷ liÖu 4.1. Vµo/ ra sè liÖu ®iÒu khiÓn b»ng ng¾t 4.1.1 Nguyªn lý vµo/ra ®iÒu khiÓn b»ng ng¾t 111 4.1.2 Bé ®iÒu khiÓn ng¾t PIC (8259) 113 4.1.3 Ng¾t trong m¸y tÝnh IBM/PC 119 4.2. Vµo/ra sè liÖu ®iÒu khiÓn b»ng th©m nhËp bé nhí trùc tiÕp DMA 4.2.1 Nguyªn lý vµo/ ra b»ng DMA 121 4.2.2 Bé th©m nhËp bé nhí trùc tiÕp DMAC (8237) 123 4.2.3 Sö dông bé ®iÒu khiÓn DMAC trong hÖ vi xö lý 126 4.3. Bé ®Õm lËp tr×nh ®−îc 4.3.1 S¬ ®å khèi bé ®Õm lËp tr×nh ®−îc (8254) 127 4.3.2 C¸c chÕ ®é lµm viÖc cña bé ®Õm lËp tr×nh 128 4.3.3 Sö dông bé ®Õm trong hÖ vi xö lý 130 4.4. Phèi ghÐp vµo ra nèi tiÕp 4.4.1 Nguyªn lý vµo/ ra nèi tiÕp 130 4.4.2 M¹ch thu ph¸t th«ng tin nèi tiÕp UART 133 4.5. Phèi ghÐp víi thiÕt bÞ vµo/ra qua cæng song song 4.5.1 GhÐp nèi song song ®¬n gi¶n 142 4.5.2 M¹ch phèi ghÐp vµo/ra song song lËp tr×nh ®−îc PPI 8255A 142 4.5.2.1 C¸c khèi cña PPI 4.5.2.2 C¸c tÝn hiÖu cña PPI 4.5.2.3 C¸c chÕ ®é lµm viÖc cña PPI 4.5.2.5 GhÐp nèi PPI trong hÖ vi xö lý Ch−¬ng 5 ThiÕt kÕ hÖ thèng vi xö lý 5.1 ThiÕt kÕ phÇn cøng 145 5.2 ThiÕt kÕ phÇn mÒm 146 Thái Nguyên 7-2013 2 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ 5.2.1 ROM Mapping 146 5.2.2 RAM Mapping 149 5.2.3 ThiÕt kÕ c¸c ch−¬ng tr×nh hÖ thèng 151 5.2.4 ThiÕt kÕ c¸c ch−¬ng tr×nh øng dông 154 CÂU HỎI VÀ BÀI TẬP 159 Phụ lục CÁC HỆ SỐ ĐẾM 160 TÀI LIỆU THAM KHẢO 164 Thái Nguyên 7-2013 3 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Ch−¬ng 1. GIỚI THIỆU CHUNG 1.1 Sù ra ®êi vµ ph¸t triÓn cña c¸c bé vi xö lý • Bé vi xö lý lµ 1 thµnh phÇn kh«ng thÓ thiÕu ®−îc trong c¸c hÖ thèng tÝnh to¸n và m¸y vi tÝnh. • Sù ph¸t triÓn: − ThÕ hÖ 1 (1971 - 1973): Bé vi xö lý ®Çu tiªn ra ®êi 1971 lµ 4004 s¶n phÈm cña h·ng Intel 4 bit sè liÖu, 12 bit ®Þa chØ. TiÕp theo lµ 4040, 8008... §Æc ®iÓm chung: + Sö dông c«ng nghÖ PMOS (lç trèng) + Tèc ®é thùc hiÖn lÖnh 10-60µs. Tèc ®é xung nhịp ®ång hå 0.1 ®Õn 0.8 MHz + Có tËp lÖnh ®¬n gi¶n − ThÕ hÖ 2 (1974-1977): ThÕ hÖ c¸c vi xö lý 8 bit nh− 6800, 8080, 8085...cã thÓ qu¶n lý 64KB bé nhí. §Æc ®iÓm: + Sö dông c«ng nghÖ NMOS (Cã mËt ®é phÇn tö trªn mét ®¬n vÞ diÖn tÝch lín h¬n PMOS) + Tèc ®é thùc hiÖn lÖnh 1-8µs. Tèc ®é xung nhịp ®ång hå 1-5MHz − ThÕ hÖ 3 (1978-1982): Thêi kú c¸c vi xö lý 16 bit 8086/80186/80286 hoÆc 68000. + Cã tËp lÖnh ®a d¹ng h¬n + Kh¶ n¨ng ph©n biÖt bé nhí cao h¬n: 1-16MB bé nhí chính và 64KB thiÕt bÞ ngo¹i vi + Được s¶n xuÊt b»ng c«ng nghÖ HMOS (HMOS, XMOS, VMOS: c¶i tiÕn cña NMOS) + Tèc ®é thực hiện lệnh đơn 0.1 - 1µs. Xung nhịp ®ång hå 5-10MHz − ThÕ hÖ 4 (1983 - nay): Thêi kú c¸c bé vi xö lý 32 bit nh− 80386/486/Pentium 1, Pentium 2, Pentium 3, Pentium 4 víi c¸c kü thuËt tiªn tiÕn như pipeline, cache, vitual memory, Hyper Threading (HT)...TÊt c¶ các vi xử lý thế hệ này ®Òu cã bé ®ång xö lý to¸n häc, bé qu¶n lý bé nhí MMU. 1.2 S¬ ®å khèi cÊu tróc vµ ho¹t ®éng cña hÖ vi xö lý − Bé vi xö lý lµ 1 thµnh phÇn kh«ng thÓ thiÕu ®−îc ®Ó x©y dùng lên c¸c hÖ thèng tÝnh to¸n, m¸y vi tÝnh. Nh−ng các bé vi xö lý cßn ph¶i kÕt hîp víi c¸c thµnh phÇn kh¸c ®Ó t¹o nªn hÖ vi xö lý. Thái Nguyên 7-2013 4 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ − Hình 1.1 lµ s¬ ®å tæng qu¸t cña c¸c hÖ vi xö lý kinh ®iÓn ¸p dông cho c¸c hÖ xử lý nhá vµ c¸c m¸y tÝnh ®êi ®Çu. C¸c m¸y tÝnh hiÖn nay cã cÊu tróc kh¸c h¬n. In Abus Dbus Cbus I/O M CPU Out Hình 1.1 Hệ vi xử lý kinh điển • CPU (Central Processing Unit): Bé n·o cña m¸y tÝnh gåm c¸c m¹ch vi ®iÖn tö cã ®é tÝch hîp rÊt cao (hµng triÖu tranzito trong 1 chip). CPU gåm cã c¸c phÇn: + CU (Control Unit): Khèi ®iÒu khiÓn cã chøc n¨ng: ®äc m· lÖnh d−íi d¹ng tËp hîp c¸c bit 0/1 tõ c¸c « nhí trong bé nhí. Gi¶i m· c¸c lÖnh thµnh d·y c¸c xung ®iÒu khiÓn ®Ó ®iÒu khiÓn c¸c khèi kh¸c thùc hiÖn nh− ®iÒu khiÓn ALU, ®iÒu khiÓn ra ngoµi µPC + ALU (Arithmetic Logic Unit): Khèi tÝnh to¸n sè häc vµ logic: Tæ hîp c¸c m¹ch logic ®iÖn tö phøc t¹p cho phÐp thùc hiÖn c¸c thao t¸c trªn c¸c thanh ghi nh− +, -, *, /, AND, OR, NOT... + Registers: C¸c thanh ghi − Mét CPU cã thÓ cã nhiÒu thanh ghi: + Thanh ghi con trá lÖnh IP (bé ®Õm ch−¬ng tr×nh) chøa ®Þa chØ cña lÖnh s¾p thùc hiÖn: C¸c ch−¬ng tr×nh m¸y tÝnh lµ tËp hîp cña c¸c lÖnh. CPU sÏ lÊy tõng lÖnh ra ®Ó ch¹y. §Ó ®iÒu khiÓn chÝnh x¸c viÖc thùc hiÖn nµy cÇn cã mét bé ®Õm ch−¬ng tr×nh; đó chính là IP. Số lượng thanh ghi trong các bộ vi xử lý khác nhau là khác nhau nhưng bộ vi xử lý nào cũng phải có thanh ghi con trỏ lệnh IP. + C¸c thanh ghi kh¸c: C¸c thanh ghi ®o¹n, thanh ghi lÖch, thanh ghi con trá vµ chØ sè, thanh ghi cê... lµ c¸c thanh ghi ®¶m nhiÖm c¸c chøc n¨ng nhÊt ®Þnh trong ho¹t ®éng cña bé vi xö lý (SÏ nghiªn cøu kü qua VXL 8086/8088) • Bé nhí (Memory): Cã hai lo¹i chÝnh − ROM: Chøa c¸c ch−¬ng tr×nh vµ sè liÖu cè ®Þnh, chóng kh«ng bÞ mÊt thông tin khi ng¾t ®iÖn cung cÊp cho vi m¹ch nhí ROM. Ch−¬ng tr×nh khëi ®éng m¸y tÝnh, c¸c ch−¬ng tr×nh vµo ra c¬ së th−êng ®−îc chøa trong ROM. Thái Nguyên 7-2013 5 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ − RAM: Khi ng¾t ®iÖn nguån nu«i vi m¹ch RAM néi dung l−u tr÷ trong nã sÏ bÞ mÊt. RAM l−u gi÷ mét phÇn ch−¬ng tr×nh hÖ thèng, mét sè sè liÖu cña hÖ thèng, c¸c ch−¬ng tr×nh øng dông, c¸c kÕt qu¶ trung gian cña qu¸ tr×nh tÝnh to¸n, xö lý. • ThiÕt bÞ vµo/ra (I/O): §©y lµ khèi t¹o kh¶ n¨ng giao tiÕp gi÷a hÖ vi xö lý vµ bªn ngoµi. Do ®Æc ®iÓm cña c¸c thiÕt bÞ ngoµi vµ hÖ trung t©m (Gåm CPU+Bé nhí) ho¹t ®éng cã sù kh¸c nhau vÒ tèc ®é lµm viÖc, møc vËt lý ®iÖn, ph−¬ng thøc trao đổi dữ liệu nªn cÇn cã bé phèi ghÐp ®Öm, ®¶m b¶o cho c¸c khèi thiÕt bÞ ngoµi giao tiÕp ®−îc víi hÖ trung t©m. Bé ghÐp gi÷a bus hÖ thèng vµ thiÕt bÞ ngoµi gäi lµ cæng. Mçi cæng cã mét ®Þa chØ x¸c ®Þnh. • HÖ thèng bus: Lµ tËp hîp c¸c ®−êng d©y dÉn ghÐp nèi c¸c ch©n ®Þa chØ, d÷ liÖu, c¸c ch©n tÝn hiÖu ®iÒu khiÓn cña 3 khèi ®· nªu trªn. Có ba loại bus. − Abus: Nèi c¸c ®−êng d©y ®Þa chØ cña CPU víi 2 khèi M vµ I/O. Kh¶ n¨ng ph©n biÖt ®Þa chØ cña CPU phô thuéc sè ch©n ®Þa chØ cña nã. Sè nµy cã thÓ lµ 16, 20, 24, 36 ch©n. ChØ cã CPU míi cã kh¶ n¨ng ph¸t ra tÝn hiÖu ®Þa chØ - Cã mét thiÕt bÞ n÷a cã thÓ ph¸t ra tÝn hiÖu ®Þa chØ lµ DMAC (DMA Controller). − Dbus: Dïng ®Ó vËn chuyÓn d÷ liÖu. §é réng cña nã 8, 16, 32, 64 bit. Dbus cã tÝnh 2 chiÒu. C¸c phÇn tö cã ®Çu ra nèi th¼ng víi bus d÷ liÖu ®Òu ph¶i ®−îc trang bÞ ®Çu ra 3 tr¹ng th¸i ®Ó cã thÓ lµm viÖc b×nh th−êng víi bus nµy. − Cbus: Gåm nhiÒu ®−êng d©y tÝn hiÖu kh¸c nhau. Mçi tÝn hiÖu cã 1 chiÒu x¸c ®Þnh. C¸c tÝn hiÖu trªn Cbus bao gåm c¸c tÝn hiÖu ®iÒu khiÓn tõ CPU nh− ®iều khiển ®äc viÕt, tÝn hiÖu tr¹ng th¸i tõ bé nhí, thiÕt bÞ ngo¹i vi b¸o cho CPU nh− INTR, HOLD... • Ho¹t ®éng cña hÖ: Ch−¬ng tr×nh vµ d÷ liÖu ®−îc chøa trong bé nhí ngoµi ®−îc ®−a vµo bé nhí trong (RAM). Sau ®ã ®−îc CPU lÊy dÇn ra ®Ó xö lý. CPU thùc hiÖn: + LÊy lÖnh + Gi¶i m· lÖnh + ĐiÒu khiÓn thùc hiÖn lÖnh. §ã lµ mét vßng lÆp, trong qu¸ tr×nh thùc hiÖn vßng lÆp ®ã nÕu cã t¸c ®éng ng¾t hoÆc yªu cÇu DMA CPU sÏ ®¸p øng c¸c yªu cÇu nµy sau ®ã l¹i quay trë laÞ chu tr×nh ho¹t ®éng chÝnh. Thái Nguyên 7-2013 6 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Ch−¬ng 2. BỘ NHỚ BÁN DẪN 2.1 Ph©n lo¹i bé nhí − Bé nhí dïng ®Ó l−u tr÷ lÖnh vµ d÷ liÖu − Bé nhí ®−îc x©y dùng tõ c¸c phÇn tö nhí c¬ b¶n, mçi phÇn tö lµ mét bit th«ng tin. Bé nhí b¸n dÉn Ngoµi Cè ®Þnh B¸n cè ®Þnh §äc/Ghi ROM DRAMSRAMFLASHEEPROMEPROM PROM Bé nhí Hình 2.1. Phân loại bộ nhớ 2.1.1 Bé nhí cè ®Þnh (ROM, PROM) D1 D0 §Çu ra D3 D2 D1 D0 Ô nhớ có địa chỉ 0 0 0 1 1 0 1 1 Hình 2.2. Bộ nhớ ROM NÕu cã diot: §Çu ra =1. NÕu kh«ng cã diot: §Çu ra = 0 Thái Nguyên 7-2013 7 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Hình 2.3. Bộ nhớ PROM CS=1. §Çu ra khi ®Þa chØ ®óng b»ng 1, ở đầu ra của bộ đảo được ®¶o ®i b»ng 0. §Çu tiªn c¸c cÇu ch× cßn nguyªn. Nạp dữ liệu vào bằng cách làm đứt các cầu chì đi hoặc giữ nguyên. NÕu vÉn cßn cÇu ch×: ®iot th«ng ®Çu ra di = 0 NÕu c¾t cÇu ch×, kh«ng bÞ sôt ¸p ®Çu ra di = 1 2.1.2 Bé nhí b¸n cè ®Þnh (EPROM, EEPROM, FLASH) • EPROM (Erasable Programmable ROM): Cã cÊu t¹o ®Æc biÖt dùa trªn nguyªn t¾c lµm viÖc cña tranzito tr−êng cã cùc ®iÒu khiÓn và thêm cửa nổi. ViÖc n¹p ch−¬ng tr×nh cho EPROM ®−îc thùc hiÖn b»ng ®iÖn. Xo¸ ch−¬ng tr×nh b»ng tia cùc tÝm, do tia cùc tÝm ¶nh h−ëng ®Õn cùc nguån vµ cùc m¸ng. Bộ nhớ EPROM có thể ghi lại được. Ký hiÖu 27xxx a) b) hv File oxide File oxide n-Sounce n-Drain Sounce Drain Gate Floating Gate Control Gate Hình 2.4. a)- Transitor trường, b)- CÊu tróc cña EPROM Thái Nguyên 7-2013 8 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Trong « nhí dïng tranzito nµy, cùc cöa ®−îc nèi víi ®−êng tõ, cùc m¸ng nèi víi ®−êng bit vµ cùc nguån nèi víi nguån chuÈn ®−îc coi lµ nguån cho møc logic 1. Kh¸c víi tranzito MOS b×nh th−êng, ë ®©y cã thªm 1 cöa gäi lµ cöa næi; §ã lµ mét vïng vËt liÖu ®−îc thªm vµo gi÷a líp c¸ch ®iÖn cao nh− h×nh trªn. NÕu cöa næi kh«ng cã ®iÖn tÝch th× kh«ng cã ¶nh h−ëng g× tíi cùc cöa ®iÒu khiÓn vµ tranzito ho¹t ®éng b×nh th−êng. Tøc lµ khi d©y tõ ®−îc kÝch ho¹t (cùc cöa cã ®iÖn tÝch d−¬ng) th× tranzito th«ng, cùc m¸ng vµ cùc nguån ®−îc nèi víi nhau qua kªnh dÉn vµ d©y bit cã møc logic 1. NÕu cöa næi cã c¸c ®iÖn tö trong ®ã víi c¸c ®iÖn tÝch ©m, chóng sÏ ng¨n tõ tr−êng ®iÖn ®iÒu khiÓn cña cùc ®iÒu khiÓn vµ dï d©y tõ cã ®−îc kÝch ho¹t th× còng kh«ng thÓ ph¸t ra tr−êng ®ñ m¹nh víi cùc cöa ®iÒu khiÓn ®Ó lµm th«ng tranzito. Lóc nµy ®−êng d©y bit kh«ng ®−îc nèi víi nguån chuÈn vµ « nhí ®−îc coi nh− gi÷ gi¸ trÞ logic 0. ViÖc n¹p c¸c ®iÖn tö vµo cöa næi, tøc lµ t¹o ra c¸c « nhí cã gi¸ trÞ logic 0, ®−îc thùc hiÖn bëi c¸c xung ®iÖn cã ®é dµi cì 50 ms vµ ®é lín +20V khi ®Æt vµo cùc cöa vµ cùc m¸ng. Lóc ®ã c¸c ®iÖn tÝch mang cã n¨ng l−îng lín sÏ ®i qua líp c¸ch ®iÖn gi÷a ®Õ vµ cöa næi. Chóng tÝch tô trong vïng cöa næi vµ ®−îc gi÷ ë ®©y sau khi xung ch−¬ng tr×nh t¾t. §ã lµ do cöa næi ®−îc c¸ch ®iÖn cao víi xung quanh vµ c¸c ®iÖn tö kh«ng cã ®ñ n¨ng l−îng sau khi l¹nh ®i, ®Ó cã thÓ v−ît ra ngoµi líp c¸ch ®iÖn ®ã n÷a. Chóng sÏ ®−îc gi÷ l¹i ë ®©y trong mét thêi gian dµi (kho¶ng 10 n¨m). §Ó xãa th«ng tin, ph¶i chiÕu tia tö ngo¹i vµo chip nhí. Nh÷ng ®iÖn tö ë ®©y ®−îc hÊp thô n¨ng l−¬ng nh¶y lªn møc n¨ng l−îng cao, chóng sÏ rêi cöa næi nh− c¸ch th©m nhËp vµo ®ã. Trong chip EPROM cã mét cöa sæ b»ng th¹ch anh chØ ®Ó cho ¸nh s¸ng tö ngo¹i ®i qua khi cÇn xãa sè liÖu trong bé nhí. • EEPROM (Electric Erasable PROM): Cã cÊu t¹o t−¬ng tù EPROM nh−ng n¹p xo¸ b»ng ®iÖn. Ký hiÖu 28xxx (ví dụ vi mạch EEPROM 2864, 28128). Điểm khác của EEPROM lµ mét líp kªnh mµng máng «xit gi÷a vïng cöa næi tr¶i xuèng d−íi ®Õ vµ cùc m¸ng gi÷ vai trß quan träng. C¸c líp c¸ch ®iÖn kh«ng thÓ lý t−ëng ®−îc, c¸c líp ®iÖn tÝch mang cã thÓ thÊm qua líp ph©n c¸ch víi mét x¸c suÊt thÊp. X¸c suÊt nµy t¨ng lªn khi bÒ dµy cña líp gi¶m ®i vµ ®iÖn thÕ gi÷a hai cùc ë hai mÆt cña líp c¸ch ®iÖn t¨ng lªn. Muèn phãng c¸c ®iÖn tÝch trong vïng cöa næi, mét ®iÖn thÕ (-20V) ®−îc ®Æt vµo cùc cöa ®iÒu khiÓn vµ cùc m¸ng. Lóc nµy c¸c ®iÖn tö ©m trong cöa næi ®−îc ch¶y vÒ cùc m¸ng qua kªnh mµng máng «xit vµ sè liÖu l−u gi÷ ®−îc xãa ®i. §iÒu chó ý lµ ph¶i l−u ý lµm sao cho dßng ®iÖn tÝch nµy ch¶y kh«ng qu¸ l©u, v× nÕu kh«ng vïng cöa næi nµy l¹i trë nªn ®iÖn tÝch d−¬ng lµm cho ho¹t ®éng cña tranzitor kh«ng ®−îc ë tr¹ng th¸i b×nh th−êng (1). Thái Nguyên 7-2013 9 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ C¸c chÝp ROM hiÖn nay cã thêi gian th©m nhËp cì tõ 120-150 ns dµi h¬n nhiÒu thêi gian ®ã trong c¸c chip nhí RAM. • Flash ROM: CÊu t¹o t−¬ng tù EEPROM sö dông víi ®iÖn ¸p thÊp h¬n. Ký hiÖu 29xxx, 39xxx 2.1.3 Bé nhí ®äc ghi (SRAM, DRAM) + Bé nhí RAM tÜnh lµ SRAM (Static RAM) th−êng ®−îc x©y dùng trªn c¸c m¹ch ®iÖn tö flip – flop. + Bé nhí RAM ®éng lµ DRAM (Dynamic RAM) ®−îc x©y dùng trªn c¬ së c¸c ®iÖn tÝch ë tô ®iÖn. Bé nhí nµy ph¶i ®−îc håi phôc néi dung ®Òu ®Æn, nÕu kh«ng néi dung sÏ mÊt theo sù rß ®iÖn tÝch trªn tô. EDORAM, VRAM, SDRAM, SGRAM ®Òu là RAM ®éng. C¸c bé nhí DRAM th−êng tho¶ m·n c¸c yªu cÇu khi cÇn bé nhí cã dung l−îng lín. Khi cÇn cã tèc ®é truy xuÊt lín th× l¹i ph¶i dïng c¸c bé nhí SRAM víi gi¸ thµnh ®¾t h¬n; c¶ hai lo¹i nµy ®Òu bị mất thông tin khi nguån ®iÖn nu«i bÞ mÊt, V× lý do nµy, c¸c ch−¬ng tr×nh dïng cho viÖc khëi ®éng PC nh− BIOS th−êng ph¶i n¹p trong c¸c bé nhí ROM. 2.1.4 Bé nhí ngoµi Bé nhí chÝnh b»ng vËt liÖu b¸n dÉn trªn b¶n m¹ch chÝnh kh«ng thÓ l−u tr÷ mét khèi l−îng rÊt lín c¸c th«ng tin, do vËy cÇn ph¶i cã thªm c¸c thiÕt bÞ nhí bªn ngoµi nh− b¨ng giÊy ®ôc lç, b¨ng cassette, trèng tõ, ®Üa tõ, ®Üa quang laser. Nh÷ng thiÕt bÞ l−u tr÷ d÷ liÖu ë ngoµi nh− vËy ®−îc gäi lµ bé nhí khèi (mass storage) hay gäi lµ nhí ngoµi. ThiÕt bÞ nhí khèi th«ng dông nhÊt lµ ®Üa tõ. §Üa tõ lµ mét tÊm ®Üa trßn máng lµm b»ng chÊt dÎo mylar, hoÆc b»ng thñy tinh cøng hoÆc b»ng kim lo¹i cøng, trªn cã phñ mét líp bét tõ tÝnh «xit s¾t tõ có tính từ dư. §Üa tõ sö dông kü thuËt ghi tõ ®Ó l−u tr÷ gi÷ liÖu, ®ã lµ viÖc ®Þnh h−íng c¸c domain tõ ®Ó t¹o ra c¸c bit th«ng tin 0 vµ 1. Khi ®· ghi lªn ®Üa, d÷ liÖu cã thÓ tån t¹i c¶ khi c¾t ®iÖn PC. Tuy nhiªn gièng nh− b¨ng tõ, d÷ liÖu cò còng cã thÓ xãa ®i thay thÕ bëi d÷ liÖu míi nhiÒu lÇn. Kỹ thuật điện tử tương lai sẽ cho phép có các khối nhớ dung lượng lớn hoàn toàn bằng vi mạch thay thế đĩa từ- hiện nay đã có các mạch nhớ bán dẫn với dung lượng tới vài trăm GB. 2.2 Ph©n cÊp bé nhí CacheCPU Bé nhí chÝnh Bé nhí ngoµi Registers Hình 2.5. Liên hệ giữa các bộ nhớ Thái Nguyên 7-2013 10 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Trong c¸c hÖ VXL hiÖn ®¹i Bé nhí ¶o ®−îc t¹o nªn bëi Cache, M vµ Bé nhí ngoµi. Bé nhí th−êng ®−îc tæ chøc gåm nhiÒu vi m¹ch nhí ®−îc ghÐp l¹i víi nhau ®Ó cã ®é dµi tõ vµ tæng sè tõ cÇn thiÕt. Nh÷ng chip nhí ®−îc thiÕt kÕ sao cho cã ®Çy ®ñ chøc n¨ng cña mét bé nhí: • Mét ma trËn nhí gåm c¸c « nhí, mçi « nhí øng víi mét bit nhí. • M¹ch logic gi¶i m· ®Þa chØ « nhí. • M¹ch logic cho phÐp ®äc néi dung « nhí. • M¹ch logic cho phÐp viÕt néi dung « nhí. • C¸c bé ®Öm vµo, bé ®Öm ra vµ bé nhí më réng. C¸ch tæ chøc ®¬n gi¶n nhÊt lµ tæ chøc theo tõ víi sù chän tuyÕn tÝnh. Mét ma trËn nhí nh− vËy cã ®é dµi cña cét b»ng sè l−îng tõ W vµ ®é dµi cña hµng b»ng sè l−îng bit B trong mét tõ. Bé chän tõ gi¶i m· mét tõ W, nghÜa lµ gi¶i m· ®Ó cã mét ®Çu ra duy nhÊt cho mçi tõ trong bé nhí. Râ rµng ph−¬ng ph¸p chän tuyÕn tÝnh cã thêi gian th©m nhËp ng¾n nh−ng cÇn mét bé gi¶i m· lín khi tæng sè tõ lín, lµm t¨ng gi¸ thµnh s¶n phÈm. KÝch th−íc cña phÇn gi¶i m· ®Þa chØ sÏ gi¶m ®i khi tæ chøc ma trËn nhí vµ phÇn logic chän tõ W cho phÐp gi¶i m· hai b−íc. Ma trËn nhí sö dông gi¶i m· hai b−íc øng víi tõ vËt lý vµ tõ logic. Tõ vËt lý bao gåm sè l−îng bit trong mét hµng cña ma trËn. Tõ logic bao gåm sè l−îng bit t−¬ng øng víi mét tõ logic nhËn biÕt ®−îc vµ göi ra cïng mét bé gi¶i m·. CÇn hai bé gi¶i m·: Mét bé gi¶i m· hµng ®Ó chän mét tõ vËt lý vµ mét bé gi¶i m· cét gåm 1 vµi m¹ch dån kªnh chän mét tõ logic tõ mét tõ vËt lý ®· chän. Mét tõ vËt lý chia S tõ logic. Bé gi¶i m· hµng lµ bé gi¶i m· chän 1 tõ W, mµ B=W/S vµ bé chän cét chøa B bé dån mét ®−êng tõ S. §Öm vµo Hình 2.6. Gi¶i m· hai b−íc cho ma trËn ROM 128x128 Gi¶i m· hµng 1 tõ 128 Ma trËn rom 128 X 128 §Öm ra 8 Bé gi¶i m· cét 1 tõ 16 8 8 12 127 7 CS A7-A10 4 A0-A6 0701 Thái Nguyên 7-2013 11 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Hình 2.5 lµ ví dô vÒ s¬ ®å ROM dung l−îng 2048x8 bit, tæ chøc theo gi¶i m· hai b−íc. Ma trËn nhí lµ 128x128 bit, nh− vËy cã 128 = 27 tõ vËt lÝ. Mét tõ vËt lý nh− vËy ®−îc chän bëi 7 ®−êng d©y ®Þa chØ tõ A0-A6. Bé gi¶i ®Þa chØ hµng chän 1 hµng tõ 128 hµng. Mét tõ vËt lý ®−îc chia thµnh 128/8=16 nhãm 8 bit. Nh− vËy, nh÷ng bé gi¶i m· cét gåm 8 bé dån kªnh mét ®−êng tõ 16 ®−êng ®Ó cung cÊp mét tõ logic 8 bit. Nh÷ng bit ®Þa chØ tõ A7-A10 ®iÒu khiÓn nh÷ng bé gi¶i m· cét. Tr−êng hîp ®Æc biÖt khi sè phÇn tö trong mét tõ vËt lý b»ng sè bit trong 1 tõ vËt lý thi ®ã lµ bé nhí tæ chøc theo bit nghÜa lµ mçi tõ logic cã ®é dµi 1 bit. C¸c bé ®Öm ra ®¶m b¶o kh«ng nh÷ng møc logic mong muèn vµ cung cÊp ®ñ dßng ®iÖn mµ cßn cã ®Çu ra collector hë hoÆc 3 tr¹ng th¸i cho phÐp nèi chung ®Çu ra cña mét vµi chip víi nhau. Bé ®Öm ra ®−îc ®iÒu khiÓn bëi 1 hay nhiÒu ®Çu vµo nh− chän m¹ch CS, cho phÐp CE hay cho phÐp më ®Çu ra 3 tr¹ng th¸i OE. 2.3 CÊu tróc cña m¹ch nhí tÜnh SRAM 2.3.1 Giíi thiÖu c«ng nghÖ CÊu tróc m¹ch ®iÖn cña RAM phô thuéc vµo c«ng nghÖ chÕ t¹o. Cã mét sè c«ng nghÖ chÕ t¹o th«ng dông: − Mức điện áp chuẩn TTL: + Qui ®Þnh 2 møc 0/1.("0"...., "1"....) + §iÖn ¸p sö dông 5V − MOS: C«ng nghÖ ®¬n cùc (Metal Oxit Semi Conductor) − ECL(M¹ch logic ghÐp cùc ph¸t - Emitor Coupler Logic), I2L, SOS − Các khối nhớ NOR Flash. 2.3.2 CÊu tróc m¹ch nhí SRAM 2.3.2.1 Bit nhí • Bit nhí Mçi phÇn tö nhí c¬ b¶n 1 bit lµ 1 m¹ch F-F (Flip-Flop) cã hai tr¹ng th¸i c©n b»ng æn ®Þnh ®Ó biÓu diÔn hai gi¸ trÞ nhÞ ph©n 0 vµ 1. Khi phÇn tö nhí ®· ®−îc thiÕt lËp gi¸ trÞ th× nã nhí m·i gÝa trÞ ®ã cho ®Õn khi thiÕt lËp tr¹ng th¸i míi. §Þa chØ hµng cét Xi, Yi CS WE M¹ch F-F §Çu vµo d÷ liÖu Din §Çu ra d÷ liÖu Dout Hình 2.7. Ký hiệu bit nhớ SRAM Thái Nguyên 7-2013 12 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ D÷ liÖu ®−îc ®−a vµo Din, lÊy ra Dout X¸c ®Þnh ®Þa chØ bằng các dây Xi, Yi WE: ®iÒu khiÓn ®äc viÕt; tuú theo tÝn hiÖu ®−a ®Õn lµ 0 hay 1 mµ cho phÐp viÕt vµo hay ®äc ra CS (Chipselect): TÝn hiÖu chän chip. Mét bé nhí cã thÓ do nhiÒu chip nhí t¹o nªn. Khi CPU lµm viÖc víi chip nhí nµo th× nã sÏ kÝch ho¹t tÝn hiÖu chän chip cña chip nhí ®ã. TÝn hiÖu nµy th−êng t¸c ®éng ë møc thÊp. Rn Sn Qn+1 Q/n+1 0 0 Qn Q/n 0 1 1 0 1 0 0 1 1 1 x x Hình 2.8. Một bit nhớ F-F RS sử dụng tranzixtor phân cực Hình 2.9. Một bit nhớ F-F RS sử dụng tranzixtor trường Ghi: + Dây từ = 0 + Đưa dữ liệu vào dây bit. Giả sử là "1" + Dây từ =1 → TI/O 1 thông → D1 của T1 =1 → T2 thông D2 = 0 → G của T1 = 0 → T1 không thông và duy trì ngay cả khi dữ liệu không đặt trên dây bit + Dây từ =0. Dữ liệu được ghi trong bit nhớ Đọc: + Trước khi đọc đây từ = 0 + Dây từ = 1. T1, T2 thông đưa dữ liệu ra dây bit. Thái Nguyên 7-2013 13 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ 2.3.2.2 Thanh ghi • Thanh ghi: Lµ nhãm c¸c phÇn tö nhí cã liªn hÖ víi nhau cïng ho¹t ®éng nhí 1 ®¬n vÞ nhí: − Thanh ghi nhí tõ − Thanh ghi dÞch − Cã c¸c lo¹i thanh ghi 8 bit, 16 bit, 32 bit...mçi bit lµ 1 phÇn tö nhí c¬ b¶n C¸c thanh ghi lµm nhiÖm vô nhí t¹m thêi mét tõ nhÞ ph©n th−êng ®−îc x©y dùng tõ c¸c flip-flop. C¸c bé xö lý th−êng cã mét tËp thanh ghi ®−îc sö dông ®Ó chøa t¹m d÷ liÖu hoÆc c¸c chØ thÞ trong qu¸ tr×nh thi hµnh ch−¬ng tr×nh. C¸c thanh ghi nh− vËy cÇn cã kh¶ n¨ng ho¹t ®éng ë tèc ®é cao h¬n c¸c thanh ghi kh¸c ®−îc sö dông trong bé nhí chÝnh. H×nh d−íi m« t¶ thanh ghi ®Öm 4 bit, sö dông flip-flop D chuyÓn m¹ch bëi s−ên d−¬ng cña xung ®ång hå. LOAD Hình 2.10. Thanh ghi ®Öm + Xi (i=1..3) lµ c¸c bit cña word X cÇn nhí, khi sườn xung d−¬ng ®Çu tiªn ®i tíi, word ®−îc nhí vµo trong thanh ghi lµ Q3Q2Q1Q0=X3X2X1X0, hay viÕt lµ Q=X. Tõ nhÞ ph©n cã thÓ lÊy ra ë ®Çu ra Q3Q2Q1Q0. + CLR lµ ®Çu vµo tÝn hiÖu ®iÒu khiÓn xo¸ néi dung thanh ghi, tÝch cùc ë møc cao, nghÜa lµ khi CLR lµ cao th× tÊt c¶ c¸c flip-flop bÞ xo¸ vµ tõ ®−îc nhí trë thµnh Q=0. + LOAD lµ ®Çu vµo ®iÒu khiÓn tÝch cùc ë møc cao, khi LOAD = 0 c¸c bit kh«ng thÓ ®i vµo c¸c flip-flop, ®ång thêi qua NOT ®−êng d©y kia sÏ cã møc cao, lµm cho c¸c gi¸ trÞ ë ®Çu ra cña c¸c flip-flop ®−a ng−îc l¹i lèi vµo, t¹i c¸c s−ên d−¬ng cña xung ®ång hå chóng sÏ l¹i ®−îc ghi l¹i vµo trong flip-flop, nãi c¸ch kh¸c khi LOAD=0 th× thanh ghi kh«ng thay ®æi néi dung. Thái Nguyên 7-2013 14 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ + Khi LOAD=1 c¸c bit cña X ®−îc ®−a tíi lèi vµo cña flip-flop, khi s−ên d−¬ng cña xung ®ång hå ®i tíi chóng sÏ ®−îc ghi vµo trong thanh ghi. 2.3.2.3 Bé gi¶i m· • Bé gi¶i m· §é dµi 1 « nhí th−êng lµ 8bit (1byte). Trong mét vi m¹ch nhí cã nhiÒu « nhí. Mçi mét « nhí khi ghÐp víi hÖ vi xö lý sÏ cã mét ®Þa chØ x¸c ®Þnh. CPU muèn lµm viÖc víi « nhí nµo nã sÏ ®−a ra tÝn hiÖu ®Þa chØ cña « nhí ®ã. Qua bé gi¶i m· ®Þa chØ, « nhí ®ã ®−îc chän chÝnh x¸c, sau ®ã cho phÐp ®äc/viÕt trªn « nhí ®ã. Bªn trong 1 vi m¹ch nhí Bé gi¶i m· ®Þa chØ ¤ nhí 0 ¤ nhí 1 ... ... ¤ nhí N Chän « nhí N Chän « nhí 0 D÷ liÖu CS RD WR TÝn hiÖu điều khiển TÝn hiÖu ®Þa chØ { { { Hình 2.11. Bên trong một vi mạch nhớ SRAM Bé gi¶i m· ®Þa chØ gióp ta chän ®−îc « nhí nµo trong vi m¹ch ®Ó lµm viÖc §Çu vµo bé gi¶i m· cã n bit ®Þa chØ sÏ ph©n biÖt ®−îc 2n tr¹ng th¸i → sÏ ph©n biÖt ®−îc 2n « nhí. NÕu 1 « nhí 8 bit cã thÓ hiÖn nh− sau §Þa chØ « nhí Néi dung « sè 0 0000 0101 « nhí 1 11110100 ... ... §Ó ®äc hay ghi « nhí cÇn cã thªm c¸c tÝn hiÖu : RD: §äc « nhí C¸c tÝn hiÖu nµy th−êng dïng møc thÊp WR: Ghi vµo « nhí Khi cÇn cã dung l−îng « nhí lín h¬n cÇn ghÐp nhiÒu vi m¹ch nhí. Khi ®ã ®Ó chän vi m¹ch nhí nµo l¹i cÇn cã mét bé gi¶i m· ®Þa chØ n÷a ®Ó chän ®−îc vi m¹ch cÇn thiÕt. Thái Nguyên 7-2013 15 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ VD: X©y dùng bé nhí 4KB tõ 4 vi m¹ch 1 KB CS0 CS1 ............ CSN Hình 2.12. Bộ giải mã ngoài dùng để phân biệt các chip nhớ Gi¶i thÝch ho¹t ®éng CPU muèn lµm viÖc víi vi m¹ch nhí nµo th× nã ph¸t ra tÝn hiÖu ®Þa chØ qua Abus, c¸c tÝn hiÖu ®Þa chØ qua bé gi¶i m· ®Þa chØ sÏ kÝch ho¹t c¸c tÝn hiÖu CS t−¬ng øng ®Ó chän ®−îc vi m¹ch cÇn thiÕt. Abus Chän « nhí Bé gi¶i m· ®Þa chØ Vi m¹ch nhí sè 0 Vi m¹ch nhí sè 1 Vi m¹ch nhí sè N A0.. A9 A0.. A9 A0.. A9 A10, A11 A bus C bus RD C¸c tÝn hiÖu ®Þa chØ còng ®−îc ®−a vµo tõng vi m¹ch nhí ®Ó chän ra « nhí cÇn thiÕt. − ThiÕt bÞ ngo¹i vi ®−îc dµnh 1 sè ®Þa chØ ë vïng thÊp (víi m¸y tÝnh theo kiÕn tróc IBM-PC vïng nµy gåm 1KB). Nh− vËy sÏ cã nh÷ng « nhí trong vïng thÊp nµy cã ®Þa chØ trïng víi ®Þa chØ cña thiÕt bÞ ngo¹i vi. §Ó kh«ng x¸y ra sù nhÇm lÉn gi÷a c¸c « nhí vµ thiÕt bÞ ngo¹i vi cã ®Þa chØ trïng nhau, ng−êi ta sö dông thªm tÝn hiÖu IO/M khi gi¶i m· ®Þa chØ. Còng ®Þa chØ ®ã nh−ng nÕu IO/M = 0 lµ ®Þa chØ cña « nhí, IO/M =1 lµ ®Þa chØ cña thiÕt bÞ ngo¹i vi. − C¸c m¹ch gi¶i m· ®Þa chØ ®−îc t¹o nªn b»ng c¸c vi m¹ch sè Gi¶i m· cho 1 vi m¹ch nhí: ° D÷ liÖu ra TÝn hiÖu ®Þa chØ 2716 CE OE ° Hình 2.13. Ví dụ giải mã cho 1 vi mạch nhớ A0..A10 A11 A12 A19 IO/M Thái Nguyên 7-2013 16 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Gi¶i m· cho nhiÒu vi m¹ch nhí − Vi m¹ch sö dông khi gi¶i m· cÇn nhiÒu ®Çu ra th−êng dïng 74LS138 Giải mã cho 3 vi mạch ROM 2764 địa chỉ ô nhớ đầu là F0000h Hình 2.14. Giải mã dùng vi mạch 74138 Vi m¹ch cã 8 ®Çu ra gi¶i m· t¸c ®éng ë møc thÊp tõ Y0 ®Õn Y7 . ViÖc chän dÇu ra gi¶i m· nµo do tæ hîp tÝn hiÖu c¸c ch©n A, B, C. §Ó vi m¹ch ho¹t ®éng tÝn hiÖu ë c¸c ch©n G2A, G2B, G1 ph¶i ®¶m b¶o ®ång thêi (điều kiện "and") nh− sau: G2A=0 G2B=0 vµ G1=1 B¶ng 2.1 T¸c ®éng cña vi m¹ch VÝ dô sö dông vi m¹ch 74138 gi ®Çu tiªn lµ FA000h tøc lµ A B C G2A G2A Y3 Y6 A °° Y0 Y1 Y2 Y4 Y5 Y7 IO/M A19 °°°°°°°° A0 .. A12 2764 ° 2764 ° ° 2764 OE OE G2A G2B G1 A B C 74138 A13 OE A14 A15 A16 A17 A18 Th74138 ¶i m· cho 3 vi m¹ch ROM 2764, ®Þa chØ cña « nhí 1111 1110 0000 0000 0000 19 A0 C B A ái Nguyên 7-2013 17 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Cã nhiÒu ph−¬ng ¸n ®Ó gi¶i m· cho mét yªu cÇu cô thÓ khi sö dông 74138. Cho c¸c vÝ dô 2.3.2.4 M¹ch nhí SRAM (C¸c thµnh phÇn, quy tr×nh ®äc ghi, biÓu ®å thêi gian) • M¹ch nhí SRAM { Cho phÐp ghi D÷ liÖu D0-D7 WE CS OE Chon chip { { Cho phÐp ®−a d÷ liÖu ra A0-A10§Þa chØ Hình 2.15. Bộ nhớ SRAM 2.3.3 ThiÕt kÕ thÎ nhí SRAM Mạch nhớ SRAM thường được thiết kế cho các hệ vi xử lý nhỏ. Dữ liệu ban đầu là: Dung lượng cần thiết, tốc độ truy nhập. Từ các số liệu này chọn được loại vi mạch SRAM và số lượng chip. Tiếp theo xây dựng bộ giải mã địa chỉ ngoài. Có thể dùng các vi mạch AND, OR, NOT, NAND hoặc vi mạch chuyên dụng 74138, 74 154,... để xây dựng bộ giải mã. 2.4 CÊu tróc cña m¹ch nhí DRAM ƒ PhÇn tö nhí DRAM §Ó bè trÝ ®−îc sè ph©n tö nhí lín nhÊt trong mét vi m¹ch, mçi ph©n tö nhí ph¶i ®−îc chÕ t¹o sao cho ®¬n gi¶n nhÊt. PhÇn tö nhí RAM ®éng (DRAM) mµ chóng ta sÏ t×m hiÓu chØ cÇn 1 tranzito cho 1 bit th«ng tin, v× thÕ cã thÓ bè trÝ víi mËt ®é rÊt cao vµ cã gi¸ thµnh rÎ. Trong ph©n tö nhí nµy ng−êi ta thay flip-flop b»ng mét tô ®iÖn C, gi¸ trÞ nhí trong phÇn tö nhí nµy chÝnh lµ ®iÖn tÝch n¹p trªn tô ®iÖn. Ta cã thÓ sö dông tr¹ng th¸i tô ®−îc n¹p, tøc lµ trªn tô ®iÖn C cã mét ®iÖn ¸p lín h¬n mét gi¸ trÞ nhÊt ®Þnh nµo ®ã, biÓu diÔn gi¸ trÞ 1 cña bit, cßn tr¹ng th¸i Thái Nguyên 7-2013 18 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ kh«ng ®−îc n¹p biÓu diÔn gi¸ trÞ 0. Nguyªn lý cÊu t¹o cña mét phÇn tö DRAM ®−îc minh häa ë h×nh 2.13: Tranzito T D G D©y tõ S Tô ®iÖn C D©y bit Hình 2.16. Phần tử nhớ DRAM 1 bit ƒ Bé nhí RAM ®éng Bé nhí DRAM ®−îc tæ chøc thµnh mét ma trËn nhí, trong ®ã d©y tõ lµ mét trong c¸c d©y hµng cña ma trËn, cßn d©y bit lµ mét trong nh÷ng d©y cét cña ma trËn. PhÇn tö nhí ®−îc ®Æt ë giao ®iÓm cña c¸c d©y hµng vµ cét. Tranzito T lµ mét tranzito tr−êng (fet) ®ãng vai trß mét chuyÓn m¹ch ®iÖn tö. T cã ba cùc lµ cùc cæng G (Gate), cùc m¸ng D (Drain) vµ cùc nguån S (Sourne), trong ®ã G lµ cùc ®iÒu khiÓn, D sÏ ®−îc nèi víi S khi G cã møc ®iÖn ¸p cao so víi S, ng−îc l¹i ®iÖn trë gi÷a D vµ S rÊt lín. Qu¸ tr×nh ghi: Khi d©y tõ cã møc tÝch cùc, T ë tr¹ng th¸i më, nèi tô ®iÖn C víi d©y bit. NÕu thao t¸c lµ ghi th× gi¸ trÞ cÇn ghi ph¶i ®Æt trªn d©y bit. NÕu gi¸ trÞ ®ã lµ 1 th× tô C sÏ ®−îc n¹p tíi ®iÖn ¸p t−¬ng øng víi gi¸ trÞ 1 trªn d©y bit, cßn nÕu gi¸ trÞ ®ã lµ 0 th× tô ®iÖn C sÏ bÞ phãng hÕt ®iÖn tÝch. Qu¸ tr×nh ®äc: ViÖc ®äc phøc t¹p h¬n ghi do ®iÖn tÝch trªn tô C øng víi gi¸ trÞ cÇn ®äc rÊt nhá. Tr−íc khi ®Æt d©y tõ lªn møc tÝch cùc, cÇn ph¶i ®Æt lªn d©y bit ®iÖn ¸p b»ng 1/2 møc chªnh lÖch gi÷a ®iÖn ¸p øng víi møc 1 vµ ®iÖn ¸p øng víi møc 0. §iÖn ¸p trªn tô sÏ lµm cho ®iÖn ¸p d©y bit thay ®«i mét chót theo chiÒu h−íng t¨ng hoÆc gi¶m tuú thuéc vµo bit ®ã lµ 1 hay 0. Sù thay ®æi nhá cña ®iÖn ¸p trªn d©y bit sÏ ®−îc truyÒn tíi ®Çu vµo cña mét bé khuÕch ®¹i nh¹y, t¹i ®Çu ra cña nã ta nhËn ®−îc ®iÖn ¸p t−¬ng øng víi gi¸ trÞ cña bÝt chøa trªn tô. Qu¸ tr×nh lµm t−¬i: Ta ®Òu biÕt mäi tô ®iÖn ®Òu cã mét ®iÖn trë rß vµ tranzito T m¾c nèi tiÕp víi nã dï ë tr¹ng th¸i cÊm còng cã mét ®iÖn trë rß nhÊt ®Þnh, cho nªn sau khi ®−îc n¹p, ®iÖn tÝch trªn tô liªn tôc bÞ phãng, sau mét thêi gian nhÊt ®Þnh sÏ bÞ mÊt th«ng tin mµ C chøa. ChÝnh v× vËy ph¶i n¹p lại ®iÖn cho tô C tr−íc khi ®iÖn ¸p trªn tô gi¶m thÊp h¬n mét ng−ìng nµo ®ã, viÖc nµy ®−îc gäi Thái Nguyên 7-2013 19 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ lµ “lµm t−¬i” (refresh). §Ó lµm t−¬i « nhí DRAM, cÇn ph¶i ®äc néi dung cña nã råi viÕt l¹i. ViÖc lµm t−¬i ph¶i ®−îc tiÕn hµnh theo chu kú nhÊt ®Þnh, gäi lµ chu kú lµm t−¬i. Trong c¸c chip DRAM tr−íc ®©y m ®iÖn bæ sung ®Ó thùc hiÖn lµm t−¬i th−êng ë ngoµi chip nhí. Ngµy nay c¸c m¹c trong chip nhí, nhê vËy mµ lo¹i nµy võa cã gi¶n, chóng ®−îc gäi lµ quasi-static RAM. Chip nhí DRAM l−u gi÷ th«ng tin cho tÝn hiÖu ®Þa chØ. §Ó lµm gi¶m bít sè ch ta th−êng chia ®Þa chØ ra 2 nhãm: ®Þa chØ h trªn c¸c ch©n ®Þa chØ, ®ång thêi cung cÊp riªng rÏ ®Þa chØ hµng ( RAS ) vµ cét (CAS ) ë Hình 2.17. Sơ đồ Hình 2.18. Biểu đồ đọc d RAS CAS A0-A7 §c cét §c hµng WR CS { { W Xung cho phÐp chèt ®Þa chØ Cho phÐp ®−a d÷ liÖu ra OE CAS A0-A7 D0- Data §Þa chØ Thái Nguyên 7¹ch h ®iÖn lµm t−¬i ®−îc chÕ t¹o ngay bªn dung l−îng cao võa cã giao diÖn ®¬n rÊt lín do ®ã còng cÇn rÊt nhiÒu ch©n ©n ®Þa chØ trªn mét vi m¹ch nhí, ng−êi µng vµ ®Þa chØ cét råi dån kªnh chóng thªm c¸c tÝn hiÖu cho phÐp chèt gi÷ bªn trong vi m¹ch nhí. bộ nhớ DRAM ữ liệu từ chip DRAM Kh«ng quan t©m Xung cho phÐp chèt ®Þa chØ E D÷ liÖu RAS { { Cho phÐp ghi D3 Do -2013 20 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ §c cét §c hµng Kh«ng quan t©m DIN RAS CAS A0-A7 CS WR Data Hình 2.19. Biểu đồ ghi dữ liệu vào chip DRAM Thái Nguyên 7-2013 21 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Ch−¬ng 3. CÁC BỘ VI XỬ LÝ VÀ VI ĐIỀU KHIỂN 3.1 Giíi thiÖu bé vi xö lý 8 bit tæng qu¸t 3.2 Bé vi xö lý 8 bit (8086/8088) 3.2.1 S¬ ®å khèi bé vi xö lý 8 bit alu di si bp sp dx cx bx ax ES ip SS DS CS Bus ®Þa chØ 20 bit Logic ®iÒu khiÓn BUS Khối điều khiển của EU C¸c thanh ghi t¹m thêi Thanh ghi cê §Öm lÖnh C Bus d÷ liÖu ALU (16 bit) ¸c thanh gh ®o¹n vµ con trá lÖnh i C¸c thanh ghi con trá vµ chØ sè C¸c thanh gh ®a n¨ng i ∑ Bus d÷ liÖu Bus trong cña CPU 8 bit d÷ liÖu 20 bit ®Þa chØ Bus ngoµi (hµng ®îi lÖnh) Hình 3.1. Sơ đồ khối 8086/8088 8088 cã 2 khèi: Khèi phèi ghÐp bus BIU vµ khèi thùc hiÖn lÖnh EU • BIU: ChÞu tr¸ch nhiÖm ®−a ®Þa chØ ra bus vµ trao ®æi d÷ liÖu víi bus Thái Nguyên 7-2013 22 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ • EU: Bªn trong cã: − CU (Control Unit): thùc hiÖn gi¶i m· lÖnh thµnh d·y xung ®iÒu khiÓn ®Ó ®iÒu khiÓn bªn trong vµ bªn ngoµi CPU − ALU: Dïng ®Ó thùc hiÖn thao t¸c cña c¸c phÐp to¸n − Khi ho¹t ®éng EU cung cÊp th«ng tin vÒ ®Þa chØ cho BIU ®Ó BIU ®äc lÖnh vµ d÷ liÖu cßn EU th× gi¶i m· lÖnh vµ thùc hiÖn lÖnh. • Bé nhí ®Öm lÖnh trong BIU: C¸c bé vi xö lý ®Çu tiªn ho¹t ®éng theo nguyªn lý nèi tiÕp: + NhËn lÖnh + Gi¶i m· lÖnh + Thùc hiÖn lÖnh Trong mét thêi ®iÓm nhÊt ®Þnh CPU chØ cã thÓ lµm 1 trong 3 viÖc trªn, do vËy cã nh÷ng thêi ®iÓm nhiÒu bé phËn cña CPU nhµn rçi; ch¼ng h¹n khi ®ang gi¶i m· lÖnh th× bus kh«ng dïng ®Õn, bé ALU kh«ng sö dông...®iÒu nµy lµm tèc ®é ho¹t ®éng cña CPU kh«ng cao Khi cã bé ®Öm lÖnh cã thÓ thùc hiÖn c¬ chÕ xö lý xen kÏ. Bé ®Öm lÖnh lµm viÖc theo kiÓu "vµo tr−íc, ra tr−íc " FIFO. C¸c lÖnh cø nhËn vÒ ®−a vµo ®Öm lÖnh råi lÊy dÇn ra xö lý, kh«ng mÊt thêi gian chê lÊy lÖnh sau khi thùc hiÖn. NL TH THTH GM GMGM NL NL TH TH TH GM GM GM NL NL NL Hình 3.2. Thực hiện lệnh xen kẽ 3.2.2 C¸c thanh ghi của 8086/88 Sè « nhí mµ 8088 qu¶n lý ®−îc lµ 220 = 1024.210 bytes = 1MB; nh−ng vào thời kỳ này thanh ghi trong 8088 chØ cã ®é dµi 16 bit, nh− vËy chØ l−u gi÷ ®−îc 216 tr¹ng th¸i ®Þa chØ hay 64 KB. Muèn l−u gi÷ ®−îc 220 ®Þa chØ « nhí người ta cÇn ph¶i sö dông 2 thanh ghi theo c¬ chÕ segment:offset (Thanh ghi ®o¹n: Thanh ghi lÖch) §Þa chØ vËt lý = Thanh ghi ®o¹n * 16 + Thanh ghi lÖch Thái Nguyên 7-2013 23 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ §Þa chØ offst §Çu ®o¹n C¸c « nhí §Þa chØ ®Çu ®o¹n - Segment Hình 3.3. Cơ chế địa chỉ segment:offset VÝ dô cÆp thanh ghi CS:IP sÏ chØ ra ®Þa chØ cña lÖnh s¾p thùc hiÖn trong ®o¹n m·. NÕu t¹i 1 thêi ®iÓm nµo ®ã ta cã CS=F000h vµ IP = FFF0h th× ®Þa chØ cña « nhí vËt lý sÏ lµ: CS:IP ~ F000h * 16 + FFF0h = F0000h + FFF0h = FFFF0h CS : thanh ghi ®o¹n m· IP: thanh ghi con trá lÖnh T−¬ng tù víi c¸c thanh ghi d÷ liÖu : DS: Thanh ghi ®o¹n d÷ liÖu C¸c thanh ghi offset cã thÓ lµ DI, SI, BX... B¶n ®å bé nhí cña 8086: FFFFF PhÇn 1MB cô thÓ nh− bªn (§Þa chØ vËt lý) F0000 C0000 A0000 (0000:0400) 00400 (0000)0000: 00000 B¶ng vector ng¾t d÷ liÖu cña DOS vµ BIOS Hai file Èn cña DOS Vïng dµnh cho c¸c ch−¬ng tr×nh øng dông BIOS RAM mµn h×nh Hình 3.4. Bản đồ bộ nhớ máy tính sử dụng vi xử lý 80x86 Mét ch−¬ng tr×nh khi n¹p vµo trong bé nhí n»m ë 4 vïng(®o¹n): - Vïng chøa m· ch−¬ng tr×nh (Code segment) - Vïng chøa d÷ liÖu vµ kÕt qu¶ trung gian cña ch−¬ng tr×nh (Data segment) - Vïng ng¨n xÕp (stack) ®Ó qu¶n lý c¸c th«ng sè cña bé vi xö lý khi gäi ch−¬ng tr×nh con hoÆc trë vÒ tõ ch−¬ng tr×nh con (Stack segment) - Vïng d÷ liÖu phô (Extra segment) Thái Nguyên 7-2013 24 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ C¸c thanh ghi ®o¹n 16 bit chØ ra ®Þa chØ ®Çu (segment) cña 4 ®o¹n trong bé nhí. - CS: Code Segment - DS: Data Segment - SS: Stack Segment - ES: extra Segment Néi dung c¸c thanh ghi ®o¹n x¸c ®Þnh ®Þa chØ cña « nhí n»m ë ®Çu ®o¹n (®Þa chØ c¬ së). §Þa chØ cña c¸c « nhí kh¸c n»m trong ®o¹n tÝnh ®−îc b»ng c¸ch céng thªm vµo ®Þa chØ c¬ së 1 gi¸ trÞ gäi lµ ®Þa chØ lÖch (ofset) C¸c thanh ghi cña hä 80x86 nh− sau: Thanh ghi con trá lÖnh IP kÕt hîp CS chØ ra ®Þa chØ lÖnh s¾p thùc hiÖn C¸c thanh ghi d÷ liÖu: AX,BX,CX,DX C¸c thanh ghi con trá, chØ sè: SP,BP,SI,DI C¸c thanh ghi ®o¹n: CS,DS,SS,ES C¸c thanh ghi cã ®é dµi 16 bit gåm 8 bit phÇn thÊp vµ 8 bit phÇn cao VD: AX gåm AH vµ AL, BX gåm BH vµ BL... Thanh ghi cê - Thanh ghi cê: + B¸o tr¹ng th¸i cña kÕt qu¶ c«ng viÖc + Cho c¸ch thøc ®iÒu khiÓn CPU x x x x 0 D I T S Z x A x P x C Cã c¸c bit cê chÝnh: + Cê nhí C: Khi C=1 phÐp tÝnh cã nhí cã m−în + Cê nhí phô A: Dïng A=1 khi cã céng hay trõ sè BCD + Cê rçng Z: Z=1 th× kÕt qu¶ = 0 + Cê dÊu S: S=1 ACC ©m + Cê Parity: P=1 Khi sè bit 1 cña ACC ch½n + Cê trµn O: O=1 khi kÕt qu¶ kh«ng biÓu diÔn næi trong thanh ghi + Cê cho phÐp ng¾t: I=1 cho phÐp ng¾t + Cê h−íng thao t¸c D: Víi lo¹i d÷ liÖu d¹ng chuçi D=1 : Lïi §Ó xem c¸c thanh ghi ho¹t ®éng ra sao ta cã thÓ dïng ch−¬ng tr×nh debug víi lÖnh T (Ch¹y tõng b−íc) vµ lÖnh R (xem c¸c thanh ghi) Ch¼ng h¹n: C:\debug file.exe ↵ Ta còng cã thÓ dïng 1 ch−¬ng tr×nh Pascal ®¬n gi¶n sau ®Ó xem ho¹t ®éng cña c¸c thanh ghi: uses crt; begin Thái Nguyên 7-2013 25 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Repeat asm xor ax,ax mov al,1 add al,5 sub al,3 ... end; until keypressed end. Ên Alt+D råi vµo môc Registers. Sau ®ã Ên nh¶ phÝm F7 ®Ó ch¹y ch−¬ng tr×nh vµ xem c¸c thanh ghi trong CPU ®ang ho¹t ®éng ra sao. Sè l−îng c¸c thanh ghi vµ ®é lín cña chóng trong c¸c bé CPU hiÖn ®¹i ngµy cµng ®−îc t¨ng lªn còng lµ 1 yÕu tè lµm cho c¸c bé vi xö lý nµy ho¹t ®éng nhanh h¬n. Dung l−îng c¸c thanh ghi trong 1 sè vi xö lý hiÖn ®¹i: Tõ m¸y 386 c¸c thanh ghi ®a n¨ng vµ thanh ghi cê cã ®é lín gÊp ®«i (32 bit) C¸c thanh ghi ®o¹n (4 thanh ghi) ®é lín vÉn lµ 16 bit. 3.2.3 BiÓu ®å thêi gian cña chu kú ®äc ghi sè liÖu Trong tr−êng hîp b×nh th−êng mét chu kú ®äc/ghi cña CPU kÐo dµi 4 chu kú ®ång hå. C¸c chu kú ®−îc d¸nh dÊu lµ T1-T4. NÕu CPU lµm viÖc víi tÇn sè ®ång hå 5MHz th× mét chu kú ®ßng hå kÐo dµi T=200 ns vµ mét chu kú bus kÐo dµi 800 ns. TÝn hiÖu tr¹ng th¸i§Þa chØ §Þa chØ æn ®Þnh D÷ liÖu ghi A/D AD0 - AD7 Twr Tgi÷W DEN WR §Þa chØ A8-A15 A/S A16/S3- A19/S6 CLK ALE Mét chu kú cña bus Hình 3.5. C¸c tÝn hiÖu cña CPU 8088 trong chu kú ghi ®¬n gi¶n ho¸ Thái Nguyên 7-2013 26 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Chu kú T1 Trong chu kú nµy ®Þa chØ cña bé nhí hay thiÕt bÞ ngo¹i vi ®−îc ®−a trªn c¸c ®−êng ®Þa chØ, hoÆc ®Þa chØ/d÷ liÖu vµ ®Þa chØ/tr¹ng th¸i. C¸c tÝn hiÖu ®iÒu khiÓn ALE, DT/ R , IO/ M còng ®−îc ®−a ra ®Ó hoµn tÊt viÖc gi÷ th«ng tin ®Þa chØ nµy. Chu kú T2 hiÖu t bus d hiÖu R thiÕt b AD AD ADChu kú nµy CPU ®−a ra c¸c tÝn hiÖu ®iÒu khiÓn RD vµ WR , DEN vµ tÝn rªn D0-7 nÕu ®ã lµ lÖnh ghi. DEN th−êng ®−îc dïng ®Ó më c¸c bé ®Öm cña ÷ liÖu nÕu chóng ®−îc dïng trong hÖ. T¹i cuèi chu kú T2 CPU lÊy mÉu tÝn EADY ®Ó xö lý trong chu kú tiÕp theo khi nã ph¶i lµm viÖc víi bé nhí hoÆc Þ ngo¹i vi Hình 3.6. C¸c tÝn hiÖu cña CPU 8088 trong chu kú ®äc ®¬n gi¶n ho¸ Mét chu kú cña bus TÝn hiÖu tr¹ng th¸i§Þa chØ §Þa chØ æn ®Þnh R/D 0- AD7 TrD Tgi÷W R/A8-A15 A16/S3- A19/S6 CLK ALE ADR/S D÷ liÖu ®äc§Þa chØ RD DEN Thái Nguyên 7-2013 27 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Chu kú T3 CPU dµnh thêi gian cho bé nhí hay thiÕt bÞ ngo¹i vi truy xuÊt d÷ liÖu. NÕu lµ chu kú ®äc d÷ liÖu th× t¹i cuèi chu kú T3 CPU sÏ lÊy mÉu tÝn hiÖu cña bus d÷ liÖu. Nếu tại cuèi chu kú T2 mµ CPU ph¸t hiÖn ra tÝn hiÖu READY=0 th× CPU tù xen vµo sau chu kú T3 mét sè chu kú ®Ó t¹o chu kú ®îi TW = n*T nh»m kÐo dµi thêi gian thùc hiÖn lÖnh, t¹o ®iÒu kiÖn cho bé nhí hoÆc thiÕt bÞ ngo¹i vi cã ®ñ thêi gian hoµn tÊt viÖc ghi ®äc d÷ liÖu. Chu kú 4 Trong chu kú nµy c¸c tÝn hiÖu trªn bus ®−îc gi¶i tho¸t ®Ó chuÈn bÞ cho chu kú míi. TÝn hiÖu WR trong khi chuyÓn tr¹ng th¸i tõ 0 lªn 1 sÏ kÝch ho¹t qu¸ tr×nh ghi vµo bé nhí hay thiÕt bÞ ngo¹i vi. 3.2.5 GhÐp nèi c¸c ch©n tÝn hiÖu 8088 Hình 3.7. Các chân tín hiệu của 8088 kªnh cña bus A/D phÇn thÊp cña bit ®Þa chØ ng¾t che ®−îc che ®−îc: Tín hiệu ngắt từ lỗi cổng, lỗi bộ nhớ, lỗi + D0 - AD7: C¸c ch©n dån + A8..A15: C¸c bit phÇn cao + A16..A19: 4 ®−êng dån kªnh cña bus C/A cao + INTR: TÝn hiÖu yªu cÇu + NMI: TÝn hiÖu ng¾t kh«ng RAM CMOS. Thái Nguyên 7-2013 28 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ + RESET: TÝn hiÖu khëi ®éng l¹i 8088: Khi chân này ở mức cao trong 4 clk CPU sẽ khởi động lại CLK: TÝn hi+ Öu xung nhÞp ®ång hå. + lµm viÖc víi bé nhí hay thiÕt bÞ ngo¹i vi INTA: ChÊp nhËn ng¾t + HOLD: Yªu cÇu treo CPU + HLDA: Tín hiệu ch n ×nh DMA + DT/R: Tín hiệu r iề h hiều của bus dữ liệu để chọn chiều chuyển vận của d iệ ê ao khi vi xử lý chấp nhận treo. MIN/MAX: Ở chế độ MIN chân này nối thẳng +5V không qua điện trở. Trong + ới nhau để chỉ ra việc truy nhập thanh ghi đoạn. S4 S3 Truy nhập đến + READY: tín hiệu vào, b¸o cho CPU biÕt t×nh tr¹ng s½n sµng cña thiÕt bÞ ngo¹i vi. + RD: Xung cho phÐp ®äc WR: Xung cho phÐp viÕt + IO/M: TÝn hiÖu ph©n biÖt + ra, Êp hËn treo cho qu¸ tr a đ u k iển các đệm 2 c ữ l u tr n bus D. Chân này ở trạng thái c + chế độ min có thể hoạt động như 8085. Các bit trạng thái: S6 = 0 liên tục, S5 phản ảnh giá trị bit IF của thanh ghi cờ, S3 và S4 phối hợp v Bảng 3.1 Ý nghĩa bit S3 và S4 0 0 Đoạn dữ liệu phụ 0 1 Đoạn ngăn xếp 1 0 Đoạn mã hoặc không đoạn nào 1 1 Đoạn dữ liệu + DEN: Tín hiệu ra tác động ở mức thấp, báo cho bên ngoài biết lúc này trên bus dồn kênh AD có dữ liệu ổn định. Chân này ở trạng thái trở kháng cao khi vi xử lý chấp nhận treo. ALE: Xung cho phÐp chèt ®Þa chØ. Khi ALE=1 bus dån kªnh sö dông cho ®Þa chØ. Khi CPU treo th× ALE=0. Thái Nguyên 7-2013 29 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ é vi xö lý 8 bit c ph¶i thùc nh víi tÊt c¶ c¸c lo¹i vi xö lý ®Òu bao gåm 2 phÇn c¬ b¶n: byte , nghÜa lµ cã thÓ m· ho¸ gÇn 216 lÖnh kh¸c nhau. Ó lµ néi dung c¸c thanh ghi bªn trong bé vi xö lý, cã thÓ lµ néi D: ADD AL, [1020h] ïng hÖ 2 hoÆc 16. Ph¸t triÓn ¬n dïng ng«n ng÷ gîi nhí, dïng ng«n ng÷ bËc cao. m¸y } i÷a c¸c kh©u biÓn ®æi lµ c¸c ch−¬ng tr×nh dÞch 3.2.6 HÖ lÖnh cña b • D¹ng thøc cña lÖnh M« t¶ ®−îc trong mçi lÖnh cÇn cã c¸c th«ng tin liªn quan ®Õn c«ng viÖ hiÖn. Mét lÖ • M· lÖnh: M· lÖnh th−êng lµ 1 byte, nghÜa lµ cã thÓ cã tíi 256 lÖnh kh¸c nhau trong tËp lÖnh cña bé vi xö lý. Trong 1 sè bé vi xö lý cã thÓ dïng 2 byte cho m· lÖnh, nh−ng thø 2 kh«ng dïng hÕt c¸c bit • C¸c ®Þa chØ cña to¸n h¹ng To¸n h¹ng cã th dung c¸c « nhí V ADD AL, BL ADD AL, 7 C¸ch thøc ghi lÖnh (ViÕt lÖnh nh− thÕ nµo ?) Ng«n ng÷ m¸y dïng tËp hîp c¸c tÝn hiÖu 0/1 m¸y tÝnh lµm viÖc víi c¸c tÝn hiÖu nµy. §Ó viÕt lÖnh ta cã thÓ d h { Tõ ng«n ng÷ bËc cao → assembly → ng«n ng÷ G Thái Nguyên 7-2013 30 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Ng«n ng÷ m¸y 10111010 0000001 1011 0000 10001001 1 3h B0h 89h îp n 03 ascal PORT[$303]:=$89; C¸ch m M· lÖnh gåm 3 phÇn: Bit D Ó chØ d÷ liÖu c¸c bÝt vïng Reg Bảng 3.2 Các giá và mã W=1 W=0 M∙ BAh 0 H g÷ mov DX,03 mov al,89 P · ho¸ lÖnh cña 8088 Opcode + dÞch chuyÓn + d÷ liÖu trùc tiÕp hoÆc ®Þa chØ trùc tiÕp dïng ® h−íng ®i cña D = 1 Data -> Reg D = 0 Data <- Reg Reg: chØ ra nhê W = 0 lµ kiÓu Byte W = 1 lµ kiÓu Word trị W REG reg ax al 000 Bx Bl 011 Cx Cl 001 Dx Dl 010 Sp Ah 100 Di Bh 111 Bp Ch 101 Si Dh 110 2 bit MOD cïng víi 3 bit R/M (thanh ghi/ bé nhí) t¹o ra 5 bit dïng ®Ó chØ ra chÕ ®é ®Þa chØ cho c¸c to¸n h¹ng c©u lÖnh. Op.code 1 0 0 0 1 0 D W Mod Reg M/R Disp L Disp H Thái Nguyên 7-2013 31 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ B¶ng 3.3: Phèi hîp MOD vµ R/W ®Ó t¹o ra c¸c chÕ ®é ®Þa chØ \mod 00 01 10 11 Mr W=1 W=0 000 [bx]+[si] [bx]+[si]+d8 [bx]+[si]+d16 Al ax 001 [bx]+[di] [bx]+[di]+d8 [bx]+[di]+d16 cl cx 010 [bp]+[si] [bp]+[si]+d8 [bp]+[si]+d16 Dl dx 011 [bp]+[di] [bp]+[di]+d8 [bp]+[di]+d16 bl bx 100 [si] [si]+d8 [si]+d16 ah sp 101 [di] [di]+d8 [di]+d16 ch bp 110 d16 (®/c tt) [bp] + 8 [bp] DH SI d +d8 111 [bx] [bx]+d8 [bx]+d16 Bh Di ChÕ ®é bé nhí ChÕ ®é Reg Ghi chó: + d8 disp 8 bit, d16 disp 16 bit víi DS ®Ó t¹o thµnh ®Þa chØ vËt lý (riªng BP ph¶i ®−îc céng víi SP) vÝ dô1: Mov CL,[BX] chuyÓn néi dung « nhí cã ®Þa chØ n»m ë thanh ghi BX + C¸c gi¸ trÞ trong cét 2,3,4 lµ c¸c ®Þa chØ hiÖu dông (EA) sÏ ®−îc céng 10010 10 00 001 111 Opcode [BX] M· ho¸ CLChuyÓn tíi thanh ghi Thái Nguyên 7-2013 32 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ vÝ dô 2: Mov 0F3H[SI],CL a c lµ c thÊy to¸n h¹ng cho c¸c lÖnh cña nã khi ho¹t ®éng. n ; 0 to¸n h¹ng ; 3 to¸n h¹ng V chøa d÷ liÖu cÇn thao t¸c. V : huyÓn néi dung ax vµo bx nhí, to¸n h¹ng nguån lµ g sè. Cã thÓ dïng chÕ ®é ®Þa chØ nµy ®Ó n¹p d÷ liÖu cÇn thao t¸c trùc tiÕp vµo bÊt cø thanh ghi nµo (trõ thanh ghi ®o¹n vµ thanh ghi cê) VD: hí dïng chøa d÷ liÖu, cßn V : « nhí DS:123 vµo al [SI] M· ho¸ CL 100010 00 00 001 111 11110011 Opcode d8 = F3H ChuyÓn tõ thanh ghi C¸c chÕ ®é ®Þa chØ ChÕ ®é ®Þ hØ ¸ch CPU t×m Mét lÖnh th−êng cã 0 ®Õn 3 to¸n h¹ng (Tuú theo lo¹i CPU) M· lÖ h To¸n h¹ng MOV A, B ; 2 to¸n h¹ng INC A ; A=A+1 ; 1 to¸n h¹ng NOP ADD R1,R2,R3 D : CJNE A,#20h, Nh·n 8086/88 Cã c¸c chÕ ®é địa chỉ sau: • ChÕ ®é ®Þa chØ thanh ghi: Trong chÕ ®é nµy dïng c¸c thanh ghi bªn trong CPU ®Ó D MOV BX,AX ; C MOV DS,AX ; ChuyÓn néi dung ax vµo ds • ChÕ ®é ®Þa chØ tøc th×: Trong chÕ ®é nµy: To¸n h¹ng ®Ých lµ 1 thanh ghi hay 1 « 1 h»n MOV CL,100 MOV AX,0FFh MOV DS, AX • ChÕ ®é ®Þa chØ trùc tiÕp: Trong chÕ ®é nµy 1 to¸n h¹ng chøa ®Þa chØ lÖch cña « n to¸n h¹ng kia chØ cã thÓ lµ thanh ghi mµ kh«ng ®−îc lµ « nhí (Kh«ng ph¶i lµ to¸n h¹ng mµ lµ ®Þa chØ cña to¸n h¹ng) D mov al,[1230h] ; ChuyÓn néi dung MOV [4560h],CX ; ChuyÓn néi dung CX vµo « nhí DS: 4560 vµ DS:4561 • ChÕ ®é ®Þa chØ gi¸n tiÕp qua thanh ghi Thái Nguyên 7-2013 33 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Trong ¸n lÖch cña « u, c ®−îc lµ « nh VD: éi dung « nhí cã ®Þa chØ DS:BX vµo AL (DI+1) hÕ ®é ®Þa chØ t−¬ng ®èi c¬ së c¸c to¸n h¹ng trong c¸c +10] v S:[BX+11] vµo CX AL,[BP]+5 ;ChuyÓn néi dung « nhí SS:(BP+5) vµo AL ¬ng diÔn c¸c dïng ®Ó tÝnh ®Þa chØ cña to¸n h¹ng trong vïng nhí DS M g 2 « nhí liªn tiÕp cã ®Þa chØ MOV AX,(SI+10) Þa chØ chØ sè vµ c¬ së ta cã chÕ ®é ®Þa chØ chØ sè c¬ së MO ng−êi cÇm chÞch ®øng ®Çu thuyÒn. Xung nhÞp cµng cao tèc ®é xö lý cña vi xö lý cµng cao. Mét lÖnh m¸y cã thÓ tèn mét ®Õn vµi chôc xung nhÞp. chÕ ®é nµy 1 to h¹ng lµ 1 thanh ghi ®−îc sö dông ®Ó chøa ®Þa chØ nhí chøa d÷ liÖ ßn to¸n h¹ng kia chØ cã thÓ lµ thanh ghi mµ kh«ng í MOV AL,[BX] ; ChuyÓn n MOV [SI], CL ; ChuyÓn néi dung CL vµo « nhí cã ®Þa chØ DS:SI MOV [DI],AX ; ChuyÓn néi dung AX vµo 2 « nhí liªn tiÕp cã ®Þa chØ DS:DI vµ DS: • C Trong chÕ ®é nµy c¸c thanh ghi c¬ së nh− BX vµ BP vµ c¸c h»ng sè biÓu diÔn gi¸ trÞ dÞch chuyÓn ®−îc dïng ®Ó tÝnh ®Þa chØ hiÖu dông cña ¸c vïng nhí DS vµ SS VD: MOV CX, [BX]+10 ; ChuyÓn néi dung 2 « nhí cã ®Þa chØ DS:[BX µ D HoÆc MOV CX,[BX+10] MOV CX,10[BX] ; Gièng trªn MOV • ChÕ ®é ®Þa chØ t− ®èi chØ sè Trong chÕ ®é nµy c¸c thanh ghi chØ sè nh− SI vµ DI vµ c¸c h»ng sè biÓu gi¸ trÞ dÞch chuyÓn ®−îc VD: OV AX, [SI]+10 ;ChuyÓn néi dun DS:(SI+10) vµ DS:(SI+11) vµo AX hoÆc MOV CL,[DI]+5 ; ChuyÓn néi dung « nhí DS:(DI+5) vµo CL • ChÕ ®é ®Þa chØ t−¬ng ®èi chØ sè c¬ së KÕt hîp hai chÕ ®é ® VD: V AX,[BX][SI]+8 ;ChuyÓn néi dung 2 « nhí liªn tiÕp cã ®Þa chØ DS:(BX+SI+8) vµ DS:(BX+SI+9) vµo AX TËp lÖnh cña 8088 • Xung ®ång hå clk lµ g×? C¸c thµnh phÇn trong 1 vi xö lý khi ho¹t ®éng ®−îc ®ång bé víi nhau theo mét xung nhÞp gièng nh− trong mét chiÕc thuyÒn ®ua c¸c tay chÌo chÌo theo nhÞp cña Thái Nguyên 7-2013 34 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ VD: Trong 8086/88 lÖnh mov tèn 4 xung nhÞp, lÖnh loop tèn 17 xung nhÞp, lÖnh RET tèn 16 xung nhÞp...Mçi mét xung nhÞp gäi lµ 1 clk (clock = xung ®ång ) ý hiÖn nay (1/2008) ®· ®¹t ®Õn tèc ®é trªn 4GHz (Trªn 4 tû clk mộ • MS Üa nhÊt gäi lµ MSB bit) i lµ LSB (Lest signification bit) • Mét sè lÖnh hay dïng + ADD: Cé h: gốc ích ← Đích + Gốc + AND: Vµ ốc theo bit BL là 13h L tr×nh con t lệnh: CALL tên chương trình con CF IF ← + CMP: so CMP đích, gốc c với đích. Thường dùng để tạo điều kiện cho h đi một đơn vị ang là 12. Lệnh dec al sẽ cho kết quả al bằng 11. cã dÊu Viết lệnh: DIV gốc hå . C¸c vi xö l t gi©y). B - LSB − Trong 1 ®¬n vÞ d÷ liÖu (byte hay word) th× bit cã ý ngh (Most signification − Bit Ýt cã ý nghÜa nhÊt gä ng hai to¸n h¹ng Viết lện ADD đích, Thực hiện: Đ Ví dụ: add ax,bx 2 to¸n h¹ng Viết lệnh: AND đích, gốc Thực hiện: Đích ← Đích AND G Ví dụ: Nội dung của AL là 03h Nội dung của and al,bl cho kết quả là 03h cất trong A + CALL: Gäi ch−¬ng Viế + CLC: Xo¸ cê nhí ← 0 + CLI: Che c¸c ng¾t che ®−îc 0 s¸nh 2 byte hay 2 tõ Viết lệnh: Thực hiện: So sánh gố lệnh nhảy. + DEC: Gi¶m to¸n h¹ng ®Ých ®i 1 Viết lệnh: DEC Đích Thực hiện: Giảm đíc Ví dụ: AL đ + DIV: Chia 2 sè kh«ng Thái Nguyên 7-2013 35 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ o dấu 16 o thanh ghi DXAX. Sau khi chia: AX ← + g thái dừng chỉ có thể tác động vào các chân INTR, NMI hoặc + IN: §äc d÷ liÖu tõ cæng vµo thanh chøa Acc thanh chứa. a địa chỉ cổng qua thanh ghi DX. + INC: T¨n ® Ví dụ: AL đang là 12. Lệnh inc al sẽ cho kết quả nội dung của al tăng + NC, JB/JC/JNAE, JBE/JNA, JE/JZ, JG/JNLE, JGE/JNL, JL, ơn ơn g 0 JBE: Nhảy nếu thấp hơn hoặc bằng ã µo thanh ghi Thực hiện: Nếu gốc là số 8 bit: AX/gốc, số bị chia phải là số không bit để trong AX. Sau khi chia AL ← thương, AH ← số dư Nếu gốc là số 16 bit: DXAX/gốc. Số bị chia phải là số không dấu 32 bit để trong cặp thương, DX ← số dư. HLT Dừng: Khi gặp lệnh này các hoạt động của 8088 bị tạm dừng. Để thoát khỏi trạn RESET. Viết lệnh: IN Acc, Port Thực hiện: Acc ← Port. Đọc nội dung của cổng Port vào Khi địa chỉ cổng lớn hơn ffh cần đư g to¸n h¹ng Ých lªn 1 Viết lệnh: INC Đích Thực hiện: Tăng đích lên một đơn vị Đích ← Đích +1 lên 1 là 13. + IRET: Trë vÒ tõ ch−¬ng tr×nh con phôc vô ng¾t JA/JNBE, JAE/JNB/J JNGE, JLE/JNG A: Above - Cao hơn, ở phía trên E: Equal - Bằng, tương đương B: Below - Ở dưới, thấp h G: Great than - Lớn h Less than - nhỏ hơn JZ: Nhảy nếu kết quả bằn JC: Nhảy nếu có cờ nhớ JAE: Nhảy nếu cao hơn hoặc bằng ... + JMP: Nhảy vô điều kiện ®Õn mét ®Ých nµo ® + LEA: N¹p ®Þa chØ hiÖu dông v Viết lệnh LEA Đích, gốc Thái Nguyên 7-2013 36 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Thực hiện: Đích thường là một trong các thanh ghi BX, CX, DX, BP, DI, ột biến mảng, chuỗi. iết lệ ong CX, sau mỗi lần thực hiện CX tự giảm đi 1. i vòng lặp Ví dụ: Hiện n : MOV đích, gốc Thực hiện: C ng của gốc vào đích Ví dụ: của al và bl đều bằng 5 Viế Thực ốc có hai trường hợp tích. o Nếu gốc là số 16 bit: AX*gốc. Số bị nhân phải là số 16 bit trong AX. khi nhân DXAX ← tích. Ví dụ: mul bl; AL = 35 ng 8 clk + OR: HoÆc 2 to¸n h¹ng SI hoặc là địa chỉ offset của m + LOOP: LÆp ®o¹n ch−¬ng tr×nh V nh: LOOP nhãn Thực hiện: Số lần lặp tr Khi cx = 0 ra khỏ 5 ký tự ‘A’ mov cx, 5 hien: mov dl, ‘A’ mov ah, 2 int 21h loop hie + MOV: Di chuyÓn byte hay tõ Viết lệnh opy nội du mov al, 7 mov bl, 5 mov al, bl Sau đoạn lệnh này nội dung + MUL: Nh©n sè kh«ng dÊu t lệnh: MUL gốc hiện: Tuỳ theo độ dài của toán hạng g o Nếu gốc là số 8 bit để trong AL: AL * gốc, số bị nhân là số 8 bit để trong AL. Sau khi nhân AX ← Sau mov al,7 mov bl,5 + NOP: Kh«ng lµm g× tro Thái Nguyên 7-2013 37 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Viết lệnh: OR đích, gốc Thực hiện: Lấy nội dung của gốc OR với nội dung của gốc theo bit, kết quả cất vào đích Ví dụ: ng 1f1fh + OU i g n đưa địa chỉ cổng qua thanh ghi DX. ng¨n xÕp xÕp ình 3.7) L đích, CL Thực hiện: Hình 3.8. Quay trái qua cờ nhớ nội dung cũ của MSB. Nếu số lần quay hay đổi iện: RCR đích, CL mov ax, 001fh mov bx, 1f00h or ax, bx; kết quả AX bằ T: §−a d÷ l Öu tõ Acc ra cæn Viết lệnh: OUT Port, Acc Thực hiện: Port ← Acc. Đưa nội dung của thanh chứa ra Port. Khi địa chỉ cổng > ffh cầ + POP: LÊy l¹i 1 tõ tõ ®Ønh Viết lệnh: POP đích Thực hiện: Đích ← {SP} SP ← SP + 2 + PUSH: CÊt 1 tõ vµo ng¨n Viết lệnh: PUSH gốc Thực hiện: gốc → {SP} SP ← SP - 2 + RCL: Quay tr¸i qua cê nhí (h Viết lệnh: RC CF MSB LSB Sau khi quay 1 lần nội dung cờ CF mang trong CL là 9 thì kết quả không t + RCR: Quay phải qua cê nhí CF MSB LSB Viết lệnh: RCR đích, CL Thực h Hình 3.9. Quay phải qua cờ nhớ Thái Nguyên 7-2013 38 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Sau khi quay 1 lần nội dung cờ CF mang nội dung cũ của LSB. Nếu số lần quay thay đổi. on g sang tr¸i Thực hiện: MSB được đưa vào cờ CF và LSB. g đổi. Sau 4 lần quay thì 2 nibble bị đổi chỗ. vßng sang ph¶i Thực hiện: đổi. Sau 4 lần quay thì 2 nibble bị đổi chỗ. SHL đích, CL Toán hạng đích có thể tìm được theo các chế độ địa chỉ c nhau iện: ông dấu ích, CL Toán hạng đích có thể tìm được theo các chế độ địa chỉ khác nhau Thực hiện: được giữ lại. Thực hiện phép chia 2 số có dấu trong CL là 9 thì kết quả không + RET: Trë vÒ tõ ch−¬ng tr×nh c + ROL: Quay vßn Viết lệnh: ROL đích, CL CF MSB LSB Hình 3.10. Quay vòng sang trái Nếu sau 8 lần quay kết quả khôn + ROR: Quay CF MSB LSB Viết lệnh: ROR đích, CL LSB được đưa vào cờ CF và MSB. Hình 3.11. Quay vòng sang phải Nếu sau 8 lần quay kết quả không + SAL: DÞch tr¸i sè häc Viết lệnh: SAL đích, CL khá Thực h CF MSB LSB 0 Hình 3.12 Thực hiện phép nhân 2 số kh + SAR: DÞch ph¶i sè häc Viết lệnh: SAR đ CFMSB LSB . Dịch trái số học Hình 3.13. Dịch phải số học Sau mỗi lần dịch phải MSB Thái Nguyên 7-2013 39 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ + SHR Dịch phải logic Viết lệnh: SAL đích, CL SHL đích, CL Toán hạng đích có thể tìm được theo các chế độ địa chỉ Thực hiện: a số không dấu g¾t : SUB đích, gốc Thực hiện: đ h - gốc Ví dụ: 6 án hạng tra. Xoá CF, OF. Cập nhật PF, SF, ZF. n hiÖu mức thấp tõ ch©n TEST hoÆc INTR + XCHG: T ội dung ah và al Thực hiện phép XOR theo bit giữa hai toán hạng. Kết quả cất vào đích. í dụ: XOR AX, AX; xoá thanh ghi AX khác nhau CF MSB LSB 0 Hình 3.14. Dịch phải logic Thực hiện phép chia cho 2 củ + STI: LËp cê cho phÐp n IF ← 1 + SUB: Trõ 2 to¸n h¹ng Viết lệnh ích ← đíc mov al,9 mov bl,3 sub bl,al; bl = + TEST: Vµ 2 to¸n h¹ng ®Ó t¹o cê Viết lệnh: TEST đích, gốc Thực hiện: Lấy gốc thực hiện phép ‘VÀ’ với đích. Nội dung to không thay đổi chỉ dùng để tạo cờ kiểm + WAIT: CPU nghỉ và chê tÝ r¸o néi dung 2 to¸n h¹ng XCHG đích, gốc xchg ah, al; Tráo đổi n + XOR: HoÆc lo¹i trõ 2 to¸n h¹ng Viết lệnh: XOR đích, gốc V Thái Nguyên 7-2013 40 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ LËp tr×nh hîp ng÷ víi 8088 ng Tªn TIEP: KiÓm tra bit 5 cña thanh ghi LSR tªn nh·n, tªn biÕn, tªn thñ tôc. Kh«ng ®−îc chøa dÊu u b»ng sè + g to¸n h¹ng ph¶i lµ nghÜa bãng kh«ng dïng nghÜa − D÷ ng÷ + Lo¹i sè: HÖ 2, 1 ng hÖ 2 hoÆc 16 ph¶i thªm ký tù b¸o L sè 16 MOV AL, 10b; §−a vµo AL sè 2 ý tù: Gåm ký tù ®¬n vµ ký tù chuçi − BiÕ »ng ®Çu DB 7 DW Gi¸ trÞ khëi ®Çu ký tù CR EQU 0Dh; carriage return LF EQU 0Ah; line feet • Giíi thiÖu khung cña ch−¬ng tr×nh hîp ÷ − CÊu tróc cña 1 lÖnh hîp ng÷ M· lÖnh C¸c to¸n h¹ng Chó gi¶i AND AL,20h ; + Tr−êng tªn: Chøa c¸ch, kh«ng b¾t ®Ç + Tr−êng m· lÖnh: Tr−ên + Tr−êng chó gi¶i: Lêi gi¶i thÝch ®en. liÖu cho ch−¬ng tr×nh hîp 0, 16. NgÇm ®Þnh lµ hÖ 10. NÕu dï hiÖu. VD: MOV AL, 10 ; §−a vµo AL sè 10 MOV AL, 10h; §−a vµo A + Lo¹i k n vµ h + BiÕn byte: Tªn DB Gi¸ trÞ khëi B1 C1 DB '$' + BiÕn tõ: Tªn B1 DW 64 + BiÕn m¶ng: M DB 2,4,5,9,12,3 + BiÕn kiÓu x©u tb DB 'A nho hon B$' + H»ng cã tªn: Thái Nguyên 7-2013 41 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Khung cña 1 ch−¬ng tr×nh hîp ng÷ XE khi n¹p vµo trong bé nhí sÏ a mçi ®o¹n chøa trong 4 khi ch−¬ng tr×nh COM chØ nằm trong 1 m« sö dông bé nhí ata .Code Main h cña thñ tôc chÝnh, c¸c lêi gäi ch−¬ng tr×nh con hµm 4Ch cña INT21h ¬ng tr×nh con 1 ng tr×nh con 2 C2 endp END MAIN M ode RG 100h Üa cho c¸c biÕn vµ h»ng ®Ó t¹i ®©y lÖnh cña ch−¬ng tr×nh chÝnh c Khung cña ch−¬ng tr×nh EXE Một ch−¬ng tr×nh E n»m trong 4 đoạn, ®Þa chØ ®Çu cñ thanh ghi ®o¹n, trong ®o¹n. .Model Quy .Stack KÝch th−íc .D Khai b¸o d÷ liÖu proc ; Khëi t¹o ®o¹n d÷ liÖu mov Ax,@data mov ds,ax ; c¸c lÖn ; trë vÒ DOS dïng mov ah,4ch int 21h Main endp CTC1 proc ; c¸c lÖnh cña ch− RET CTC1 endp CTC2 proc ; c¸c lÖnh cña ch−¬ RET CT d Khung cña ch−¬ng tr×nh CO .Model tiny .C O START: JMP Continue ; §Þnh ngh Main proc ; c¸c Thái Nguyên 7-2013 42 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ INT 20h Main endp END S • C¸ t C¸c b− guån c TASM.EXE • C¸c cÊu tróc lËp tr×nh c¬ b¶n trong Assembly − CÊu tróc tuÇn tù: Lµ cÊu tróc th«ng dông vµ ®¬n gi¶n nhÊt. Trong cÊu tróc nµy c¸c lÖnh s¾p xÕp tuÇn tù, lÖnh nä tiÕp lÖnh kia LÖnh 2 ... LÖnh N − kh¸c 0 ? kh«ng th× g¸n lu«n inc al ; NÕu AL = 0 th× t¨ng al lªn 1 BL, AL RA: ..... − CÊu tróc CASE TART ch ¹o vµ cho ch¹y 1 ch−¬ng tr×nh hîp ng÷ íc: + So¹n m· n + DÞch ra file .OBJ b»ng MASM.EXE hoÆ + Liªn kÕt c¸c tÖp OBJ b»ng LINK.EXE hoÆc TLINK.EXE + Ch¹y thö LÖnh 1 CÊu tróc lùa chän Hình 3.15. Cấu trúc IF §iÒu kiÖn §iÒu kiÖn C«ng viÖc C«ng viÖc1 C«ng viÖc2 § § S S IF - THEN IF - THEN - ELSE VD: cmp al, 0 ; AL jne GAN ; NÕu GAN: mov Thái Nguyên 7-2013 43 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Hình 3.16. Cấu trúc CASE D: CM − CÊu tróc for-do Hình 3.1 trúc FOR-DO − CÊu tróc while-do Hình 3.18. Cấu trúc WHILE-DO BiÓu thøc C«ng viÖc 1 C«ng viÖc 2 C«ng viÖc N Gi¸ trÞ 1 Gi¸ trÞ 2 Gi¸ trÞ N V P AL,0 JE C«ng viÖc Khëi ®Çu bé ®Õm Gi¶m bé ®Õm ®i 1 Bé ®Õm = 0? S § 7. Cấu ®iÒu kiÖn c«ng viÖc § S Thái Nguyên 7-2013 44 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ − CÊu tróc repeat-until TIL • ộ số hàm, ng ình hợp ngữ à 1 củ ngắ SCII của ký tự iện một ký tự lên màn hình cần hiển thị Hàm 4 g cách trừ đi 30H (do giá trị thực của con số và mã ASCII của nó cách nhau 0h trong bảng mã ASCII). Ngược lại khi muốn hiện một giá trị số đã có trong ải đổi giá trị số đó ra mã ASCII của nó bằng cách OR với giá trị 0H. • Các ví dụ: Viết ra màn hình câu chào “Hello!” c«ng viÖc ®iÒu kiÖn § S Hình 3.19. Cấu trúc REPEAT-UN M t ắt hay được sử dụng trong lập tr H m a t INT 21H: Nhập ký tự vào từ bàn phím Vào: AH=1 Ra: AL = mã A AH = 0 khi ký tự gõ vào là phím chức năng Hàm 2 của ngắt INT 21H: H Vào: AH = 2 DL: Mã ASCII của ký tự cần hiện Hàm 9 của ngắt INT 21H: Vào: AH = 9 DX: Địa chỉ lệch của chuỗi ký tự CH của ngắt INT 21H: Vào: AH = 4Ch • Chuyển đổi giữa mã ASCII của ký tự số và giá trị số Khi chúng ta nhập một ký tự số vào từ bàn phím của máy tính mã ASCII của nó được đặt trong thanh ghi AL và đây không phải là giá trị số. Nếu muốn tính toán với giá trị của con số nhập vào chúng ta phải đổi mã ASCII đó ra giá trị số bằn 3 thanh ghi ta lại ph 3 Ví dụ 1. Thái Nguyên 7-2013 45 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ file chao.asm ode 100 .data tp db ' .code main p data ax h mov ah,4ch int 21h end main . Hiện bảng mã ASCII file ascii.asm ode 20 I$' ,dx .m l small .stack Hello!$' roc mov Ax,@ Mov ds, mov ah,9 lea dx,tp int 21 main endp Ví dụ 2 .m l small .stack .data tb db 'Bang ma ASCI .code main proc mov ax,@data mov ds,ax mov ah,9 lea dx,tb int 21h xor dx mov cx,255 mov ah,2 lap: int 21h inc dl push dx Thái Nguyên 7-2013 46 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ mov dl,' '; tạo khoảng cách ah,4ch m p end main Ví dụ 3. Nhập ký tự từ bàn phím. Kiểm tra xem ký tự nhập có phải là ký tự số file kt_sochu.asm ode u $' i la ky tu so $' 1 39h ah,4ch int 21h pop dx loop lap mov int 21h ain end không? .m l small .stack 20 .data tb1 db 'nhap ky t tb2 db 'day khong pha .code main proc mov ax,@data mov ds,ax nhaplai:mov ah,9 lea dx,tb int 21h mov ah,1 tiep:int 21h cmp al,30h jb sai cmp al, jg sai jmp tiep sai:mov ah,9 lea dx,tb2 int 21h jmp nhaplai ra:mov Thái Nguyên 7-2013 47 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ main endp . Nhập hai số vào từ bàn phím. So sánh hai số. file so_sanh1.asm ode ata ' = $' tb3 db ' a > b $' proc ata x 1 l 2 int 21h end main Ví dụ 4 .m l small .stack 20 .d tb1 db 'nhap a= $ tb2 db 'nhap b tb4 db ' a < b $' tb5 db 'a=b$' .code main mov ax,@d mov ds,a mov ah,9 lea dx,tb int 21h mov ah,1 int 21h sub al,30h mov bl,a mov ah,9 lea dx,tb int 21h mov ah,1 int 21h sub al,30h cmp al,bl je a_bang_b jnl b_to jmp b_nho a_bang_b: mov ah,9 lea dx,tb5 Thái Nguyên 7-2013 48 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ int 21h jmp ra b_to:mov ah,9 lea dx,tb4 int 21h jmp ra b_nho:mov ah,9 4ch main endp . Tính tổng (hiệu) hai số có kết quả nhỏ hơn 10 nhập vào từ bàn phím file cong.asm ode ata tb1 db 'nhap so a = $' 'nhap so b = $' ' ap a i ra so hap b lea dx,tb3 int 21h ra:mov ah, int 21h end main Ví dụ 5 .m l small .stack 20 .d tb2 db tb3 db 'tong 2 so la: $ .code main proc mov ax,@data mov ds,ax mov ah,9 lea dx,tb1 int 21h mov ah,1 ; nh int 21h sub al,30h ; do mov bl,al mov ah,9 lea dx,tb2 int 21h mov ah,1 ; n Thái Nguyên 7-2013 49 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ int 21h sub al,30h ; doi ra so i ra ma ASCII cat vao BL de con su dung DX ; hien tong ra ah,4ch int 21h en Ví dụ 6 Có một ả ần tử trong bộ nhớ. Để hiện mảng m làm các bước sau: ứ nhất vào DL + Tăng SI (hoặc DI) lên 1 p theo ho dấu ‘ ‘ (dấu cách) vào Lặp n lần file hien_arr.asm ode mang$' add al,bl mov dl,al or dl,30h ; do mov bl,dl ; mov ah,9 lea dx,tb3 int 21h mov dl,bl mov ah,2 int 21h mov main endp d main . Hiện một mảng phần tử trong bộ nhớ m ng m có n ph + Đưa đầu mảng m → DX → SI (hoặc DI) + Chuyển ô nhớ chứa phần tử th + Hiện trỏ vào phần tử tiế + C + .m l small .stack 20 .data tb db 'gia tri cua m db 7,4,5,7,2,8 .code main proc mov ax,@data mov ds,ax Thái Nguyên 7-2013 50 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ lea dx, m mov cx,6 mov di,dx lap: mov dl,[di] lap ah,4ch int 21h m end main . Tìm max file tim_max.asm ode ata i,si eu van to hon lam tiep hong doi cho or dl,30h mov ah,2 inc di int 21h mov dl,' '; dấu cách int 21h loop mov ain endp Ví dụ 7 .m l small .stack 20 .data tb db 'max = $' m db '3','4','5','7','2','8' .code main proc mov ax,@d mov ds,ax lea dx, m lap:mov si,dx mov d mov al,[di] mov cx,5 tiep:inc si cmp al,[si] jg timtiep; n mov di,si ; neu k Thái Nguyên 7-2013 51 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ mov al,[di] ; roi lam tiep h ah,4ch ain end end m • Ch + n hơn. Ví dụ 8. Viết chương trình th hân, chia 2 số nhập vào từ bàn 0). Các chương trình nhập, hiển thị, cộng, nhân, chia ng trình con. file ctcong.asm .mode tack ata 'cong bam 1, nhan bam 2, chia bam 3 $' timtiep:loop tiep mov dl,al push dx mov ah,9 lea dx,tb int 21h pop dx mov ah,2 int 21 mov int 21h m p ain ương trình con Lợi ích của chương trình con: + Cho phép sử dụng lại các đoạn mã có công dụng giống nhau nhiều lần trong nhiều chương trình. Mã nguồn của chương trình gọ ực hiện cộng, n phím (có kết quả <1 viết ở dạng chươ l small .s 20 .d tb1 db 'a=$' tb2 db 'b=$' tb3 db 'a+b=$' tb4 db tb5 db 'a*b =$' tb6 db 'a/b=$' .code main proc mov ax,@data Thái Nguyên 7-2013 52 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ mov ds,ax mov ah,9 lea dx,tb1 int 21h call nhap push ax mov ah,9 lea dx,tb2 l; so b trong bl 4 hnhan tinhco tinhnh int 21h call nhap mov bl,a mov ah,9 lea dx,tb int 21h mov ah,1 int 21h cmp al,31h je tinhcong cmp al,32h je tin cmp al,33h je tinhchia ng: pop ax call cong push ax mov ah,9 lea dx,tb3 int 21h pop ax call hienketqua jmp ra an: pop ax call nhan push ax mov ah,9 lea dx,tb5 Thái Nguyên 7-2013 53 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ int 21h pop ax tinhch a ain e ap kys tu so, roi doi ra so nhap tu ban phim e a so a BL: Chua so b chua ket qua phep cong ua ket qua phep cong call hienketqua jmp ra ia: pop ax call chia push ax mov ah,9 lea dx,tb6 int 21h pop ax call hienketqu jmp ra ra: mov ah,4ch int 21h m ndp nhap proc ;Thuc hien nh ; RA: AL chua so mov ah,1 int 21h sub al,30h ret nhap ndp cong proc ;VAO: AL: Chu ;RA : AL add al,bl or al,30h ret cong endp hienketqua proc ;VAO: AL ch mov dl,al mov ah,2 int 21h Thái Nguyên 7-2013 54 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ ret hienketqua endp nhan proc ;VAO: AL: so bi nhan BL: so nhan ua trong AX . voi so <10 trong AL e p BL:b t qua r al,30h ret viết ra chỉ có thể dùng cho hươn con trong ở sau được Ví n trong ơng trình con chia trong file ‘div.asm’. Các file chứa n đặt trong cùng thư mục chứa file chương trình chính. khai các chương trình con bây giờ chỉ cần INCLUDE... ;RA: ket q mul bl or al,30h ret nhan ndp chia roc ;thuc hien a/b ;VAO AL: ra ;RA:AL chua ke mov ah,0 div bl o chia endp END MAIN Chương trình chính và chương trình con chứa trong các tệp khác nhau Các chương trình con chúng ta có thể viết ngay dưới chương trình chính trong cùng một file mã nguồn, khi đó chương trình con được c g trình chính cũng trong file đó. Để có thể sử dụng chương trình nhiều chương trình chính khác nhau chúng ta có thể viết các chương trình con để trong các file khác nhau. Khi sử dụng chỉ cần khai báo INCLUDE tên file và đường dẫn file chứa chương trình con chương trình chính. Chú ý rằng tên của file chứa chương trình con không trùng với tên của chương trình con mà nó chứa. dụ 9. Có thể viết lại ví dụ 8. Các chương trình con được chứa trong các file khác nhau và không trong file chương trình chính. Chương trình con nhap trong file ‘vao.asm’. Chương trình con cong trong file ‘add.asm’ , Chương trình con hienketqua trong file ‘display.asm’. Chương trình con nha file ‘mul.asm’. Chư chương trình co Trong phần Thái Nguyên 7-2013 55 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ .mode tack ata 'cong bam 1, nhan bam 2, chia bam 3 $' l; so b trong bl 4 hnhan tinhco l small .s 20 .d tb1 db 'a=$' tb2 db 'b=$' tb3 db 'a+b=$' tb4 db tb5 db 'a*b =$' tb6 db 'a/b=$' .code main proc mov ax,@data mov ds,ax mov ah,9 lea dx,tb1 int 21h call nhap push ax mov ah,9 lea dx,tb2 int 21h call nhap mov bl,a mov ah,9 lea dx,tb int 21h mov ah,1 int 21h cmp al,31h je tinhcong cmp al,32h je tin cmp al,33h je tinhchia ng: pop ax call cong Thái Nguyên 7-2013 56 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ push ax mov ah,9 lea dx,tb3 int 21h pop ax tinhnh ax tinhch nketqua ra: mov a int 21h main e display.asm call hienketqua jmp ra an: pop ax call nhan push ax mov ah,9 lea dx,tb5 int 21h pop call hienketqua jmp ra ia: pop ax call chia push ax mov ah,9 lea dx,tb6 int 21h pop ax call hie jmp ra h,4ch ndp include vao.asm include add.asm include include mul.asm include div.asm END MAIN Truyền tham số trong chương trình con: Thái Nguyên 7-2013 57 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ + Truyền tham số qua thanh ghi: Các chương trình chính và chương trình con hoặc giữa các chương trình con truyề am số cho nhau qua thanh ghi. Nếu truyền giữa hai chương trình con thì giá trị trong thanh ghi là đầu ra của một chương trình con sẽ là đầu vào của một chương t phần của ví dụ 8. Chương trình gồm 3 chương trình con nhập số, tính à hiển thị. Tham số được truyền qua thanh ghi AL ode ata tb1 db 'a=$' trong bl ra th trình con khác. Ví dụ 10. Đây là mộ cộng v .m l small .stack 20 .d tb2 db 'b=$' tb3 db 'a+b=$' .code main proc mov ax,@data mov ds,ax mov ah,9 lea dx,tb1 int 21h call nhap push ax mov ah,9 lea dx,tb2 int 21h call nhap mov bl,al; so b tinhcong: pop ax; lấy a call cong push ax mov ah,9 lea dx,tb3 int 21h Thái Nguyên 7-2013 58 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ pop ax call hienketqua a 21h ys tu so, roi doi ra so chua so nhap tu ban phim : Chua so a BL: Chua so b hua ket qua phep cong chua ket qua phep cong ov ah,2 r t hie END MA ruyền tham số qua ô nhớ-biến: 11. Cũng vẫn yêu cầu tính tổng 2 số a, b và chúng ta vẫn viết chương trình h 3 chương trình con mode ata ra: mov h,4ch int main endp nhap proc ;Thuc hien nhap k ; RA: AL mov ah,1 int 21h sub al,30h ret nhap endp cong proc ;VAO: AL ;RA : AL c add al,bl or al,30h ret cong endp hienketqua proc ;VAO: AL mov dl,al m int 21h e nketqua endp IN + T Ví dụ thàn . l small .stack 20 .d Thái Nguyên 7-2013 59 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ s db ? rong bl ra ua a 21h ys tu so, roi doi ra so chua so nhap tu ban phim tb1 db 'a=$' tb2 db 'b=$' tb3 db 'a+b=$' .code main proc mov ax,@data mov ds,ax mov ah,9 lea dx,tb1 int 21h call nhap push ax mov ah,9 lea dx,tb2 int 21h call nhap mov bl,al; so b t tinhcong: pop ax; lấy a call cong push ax mov ah,9 lea dx,tb3 int 21h pop ax call hienketq ra: mov h,4ch int main endp nhap proc ;Thuc hien nhap k ; RA: AL mov ah,1 int 21h sub al,30h ret Thái Nguyên 7-2013 60 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ nhap endp cong proc ;VAO: AL: Chua so a BL: Chua so b ua ket qua phep cong hua ket qua phep cong ov ah,2 r t hienketqua endp Truyền tham số qua ô nhớ có địa chỉ do thanh ghi chỉ ra: dụ 12. vao 2 so co tong nho hon 10: $' , 'TONG CUA ' b ' va ' @data 9 ;RA : s ch add al,bl or al,30h mov s,al ret cong endp hienketqua proc ;VAO: s c mov dl,s m int 21h e END MAIN + Ví .model small .stack 100 .data tb1 db 'go tb2 db 13,10 so1 db ? d so2 db ? db ' la : ' sum db -30h,'$' .code main proc mov ax, mov ds,ax mov ah, Thái Nguyên 7-2013 61 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ lea dx,tb1 int 21h mov ah,1 int 21h mov so1,al ,' m 2 so proc add [bx],al t add2so endp MAIN + Truyền tham số qua ngăn xếp: Ví .mode .stack .data go vao 2 so tong nho hon 10$' mov dl,' mov ah,2 int 21h mov ah,1 int 21h mov so2,al lea si,so1 lea di,so2 lea bx,su call add2so lea dx,tb mov ah,9 int 21h mov ah,4ch int 21h main endp add2 mov al,[si] add al,[di] re END dụ 13. l small 100 tbao1 db ' Thái Nguyên 7-2013 62 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ tb2 db 13,10,' tong cua' db ' va' b ? h,'$' .code main p @data 9 Nhập So1 ,al ,' Nhập So2 l ất vào ngăn xếp để truyền so ưu kết quả để hiển thị 9 ,tbao2 main e add2s so tu dinh v so1 db ? So2 d db ' la' sum db,-30 roc mov ax, mov ds,ax mov ah, la dx,tbao1 int 21h mov ah,1; int 21h mov so1 push ax mov dl,' mov ah,2 int 21h mov ah,1; int 21h mov so2,a push ax; C call add2 add sum,al; L mov ah, lea dx int 21h mov ah,4ch int 21h ndp o proc ;tinh tong 2 ;vao: ngan xep luc ke ;dia chi tro e Thái Nguyên 7-2013 63 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ ;so hang 2 ;so hang 1 ;Ra: ax chua ket qua push bp Cất BP ; ,sp; ăn xếp ,[bp+6]; Lấy ký tự của So1 [bp+4]; Cộng với ký tự của So2 pop bp ; Lấy lại BP yte iện các số thập phân lớn Nhập số t mov bp BP chỉ vào đỉnh ng mov ax add ax, ret 4; Trở về và bỏ qua 4 b add2so endp END MAIN • Nhập và h hập phân Để nhập số thập ph thành dạng biểu diễn nhị phân của mộ phân. Thuật toán: SCII từ bàn phím ký tự số Until n Ví dụ mô tả thuật t úng ta nhập số 123. Quá trình như sau: *0 + 1 ân phải đổỉ chuỗi các chữ số ASCII t số thập Tổng = 0 Nhập một chữ số A Repeat Đổi ký tự vừa nhập thành giá trị số nhị phân (GTS) Tổng = tổng*10 + GTS Nhập tiếp hập ký tự Enter oán: Chẳng hạn ch Tổng = 0 Nhập ‘1’ Đổi ‘1’ → số 1 Tổng = 10 Nhập ‘2’ Đổi ‘2’ → số 2 Tổng = 10*1 + 2 = 12 Nhập ‘3’ Đổi ‘3’ → số 3 Tổng = 10*12 + 3 = 123 Thái Nguyên 7-2013 64 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Thuật toán được thể hiện thành chương trình con in_dec chứa trong file dung như sau: ap so vao tu ban phim gioi han -32768 den 32767 a tri so nhi phan trong AX dau hoi de biet duong ma nhap ; ky tu vao trong al ;dung thiet lap dau tru al,'+' p tieptuc ;tiep tuc xu ly cac ky tu ong_phai_so ; ax=tong*10 chu so ‘in_deci.asm’ có nội ; Chuong trinh con nh ; VAO: khong RA: gi in_dec proc push bx push cx push dx bat_dau: ;mov ah,2 ;mov dl,'?'; in ra ;int 21h xor bx,bx ; bx chua tong xor cx,cx mov ah,1 int 21h cmp al,'-' ;co phai dau am khong? je dautru cmp je daucong jm dautru:mov cx,1 daucong: int 21h tieptuc: cmp al,'0' jnge khong_phai_so cmp al,'9' Jnle kh and ax,000fh ; doi thanh chu so push ax ; cat vao ngan xep mov ax,10 mul bx pop bx ; phuc hoi add bx,ax ;tong=tong*10+chu so mov ah,1 Thái Nguyên 7-2013 65 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ int 21h cmp al,13 ; da phai enter? tuc ; luu so vao ax co phai so am khong? ; neu la so am doi so trong ax ra so am mov dl,0ah jmp bat_dau jne tiep ; neu khong phai thi nhap tiep mov ax,bx or cx,cx ; je ra neg ax ra: pop dx pop cx pop bx ret khong_phai_so: mov ah,2 mov dl,0dh; int 21h int 21h in_dec endp Hiện số thập phân Số nhị ân 13 = 0000 1101 ph ố bù 1 của 13 = 1111 0010 (đảo bit) ố bù 1 + 1 = 1111 0010 0011 8. Nếu: hia 2416/10 được 241 dư 6 Viết ngược được 24168 c 2 dư 4 chia 2/10 đư dư 2 S Số bù 2 của 13 = S + 1 1111 Khảo sát: Giả sử trong AX có số 2416 chia 24168/10 được 2416 dư 8 c chia 241/10 được 24 dư 1 chia 24/10 đượ ợc 0 Thái Nguyên 7-2013 66 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Từ đây chún Thuật toán 1 Chia số bị chia cho 10 Cất số dư vào ngăn xếp số = 0 Thuật toán 2: àn hình hập phân trong thanh ghi AX Lấy dạng biểu diễn thập phân các chữ số trong AX Thuật thể hiện thành chương trình con out_dec chứa trong file ‘out_deci.asm’ out_de dung cua ax duoi dang so thap phan co dau g neu khong la so am thi doi ra day ky tu ong am thi g ta có các thuật cơ sở sau: : đếm = 0 Repaet đếm = đếm +1 Until thương For đếm do Lấy chữ số từ ngăn xếp Đổi ra ký tự Đưa ra m End for Thuật toán đưa ra một số t If 1. Nếu AX <0 thì: 2. In ra dấu ‘-‘ 3. Thay nội dung của AX = số bù 2 của nó End If 4. 5. Đổi số sang ký tự rồi đưa ra màn hình. toán được c proc ;in ra noi ;vao: AX ;ra: khon push ax push bx push cx push dx or ax,ax; ax<0? jge doi_ra_day; he 10 ; neu kh push ax Thái Nguyên 7-2013 67 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ mov dl,'-' m = 0 ng so, dx chua so du t so du vao ngan xep so bang khong chu ci bang khong ca cac bit = 0 va luc do phep OR = 0 pop cx ret out_dec endp tục in_dec và out_dec chúng ta có thể sử dụng trong nhiều chương hư một số ví dụ sau: Ví hai số lớn file add_big.asm ode 100 mov ah,2 int 21h pop ax neg ax ; ax = -ax doi_ra_day: xor cx,cx; de mov bx,10; so chi = 10 chia: xor dx,dx; chuan bi word cao cho so bi chia div bx ;ax thuo push dx ; ca inc cx or ax,ax; thuong ; khi tat jne chia mov ah,2 hien: pop dx or dl,30h int 21h loop hien ;ra pop dx pop bx pop ax Với hai thủ trình n dụ 14. Cộng .m l small .stack .data tb1 db 'nhap a=$' Thái Nguyên 7-2013 68 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ tb2 db 13,10,'nhap b=$' $' trong BX h ah,4Ch int 21h ma include out_deci.asm dụ 15. Tính giai thừa hươ n 7!) file giaithua.asm ode 100 tb3 db 13,10,'s= .code main proc mov ax,@data mov ds,ax lea dx,tb1 mov ah,9 int 21h call in_dec push ax mov ah,9 lea dx,tb2 int 21h call in_dec mov bx,ax pop ax add bx,ax; s = a+ b mov ah,9 lea dx,tb3 int 21 mov ax,bx call out_dec mov in endp include in_deci.asm end main Ví (C ng trình tính đế .m l small .stack .data Thái Nguyên 7-2013 69 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ tb1 db 'n= $' tb2 db 13,10,'n!= $' N mov ,4ch int main endp clude out_deci.asm dụ 16. Tính biểu thức a2 + b2 file tong_bph.asm ac s =127 ode 100 ' gt dw ? .code main proc mov ax,@data mov ds,ax mov ah,9 lea dx,tb1 int 21h xor ax,ax call in_dec mov cx,ax; cx = mov ax,1 nhan: mul cx loop nhan push ax mov ah,9 lea dx,tb2 int 21h pop ax call out_dec ah 21h include in_deci.asm in end main Ví ;C o nhap vao a va b < .m l small .stack .data tb1 db 'a=$' tb2 db 13,10,'b=$ Thái Nguyên 7-2013 70 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ tb3 db 13,10,'abp+bbp = $' x,ax ah,4ch int 21h de out_deci.asm • bËc cao − al, C, delphi, VC++ .code main proc mov ax,@data mov ds,ax mov ah,9 lea dx,tb1 int 21h call in_dec mul al push ax mov ah,9 lea dx,tb2 int 21h call in_dec mul al mov bx,ax mov ah,9 lea dx,tb3 int 21h pop ax add b mov ax,bx call out_dec mov main endp include in_deci.asm inclu end main Phèi ghÐp hîp ng÷ víi c¸c ng«n ng÷ Cã thÓ phèi hîp hîp ng÷ víi c¸c ng«n ng÷ bËc cao nh−: pasc Thái Nguyên 7-2013 71 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ − · dÞch ra file .OBJ víi c¸c ng«n ng÷ bËc cao hoÆc chÌn c¸c ®o¹n hîp ng÷ trùc tiÕp vµo m· nguån cña c¸c ng«n ng÷ bËc cao trªn (c¸ch + Víi pascal vµ delphi c¸c ®o¹n hîp ng÷ chÌn gi÷a c¸c tõ kho¸ ... c¸c lÖnh hîp ng÷ end; µ VC i÷a c¸c dÊu { h hîp ng÷ } hoÆc tr−íc mçi dßng hîp ng÷ cã dÊu _asm Ví dụ 17. Tính t + b uses crt; var a,b,sum: Begin clrscr; Writeln( 'a =');readln(a); m mov ax,a ov bx,b add ax,bx sum,ax Ví dụ 18 ố nteger; re tohon; nd; Cã thÓ ghÐp c¸c flie ch−¬ng tr×nh hîp ng÷ ® th«ng dông): asm + Víi C v ++ cã thÓ chÌn g ... c¸c lÖn ổng a integer; Writeln( 'b =');readln(b); as m mov end; Writeln(‘a + b =’,sum); readln; End. . So sánh 2 s uses crt; var a,b: i Procedu Begin Write ('a > b'); E Procedure behon; Thái Nguyên 7-2013 72 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Begin Write ('a < b'); End; ang; ite ('a = b'); End; 'a =');readln(a); eadln(b); 1 3 l tohon @ra 3: call bang @1: call behon END. Procedure b Begin Wr BEGIN clrscr; Writeln( Writeln( 'b =');r asm mov ax,a mov bx,b cmp ax,bx jb @ je @ @2: cal jmp @ jmp @ra @ra: end; readln; Viết kiểu tách hợp ngữ và ngôn ngữ bậc cao thành các tệp khác nhau: ƒ ung (tên hằng, tên biến, tên chương trình con...) của các t k XTERNAL cho C và EXTRN cho hợp i báo nào của C đều là dùng chung (cho phép các modul khác đ + m ext dùng với cú pháp sau: Với C + Các nhãn dùng ch ệp Pascal và hợp ngữ phải hiểu nhau thông qua sử dụng các lệnh điều khiển hi dịch chương trình PUBLIC và E ngữ + Bất kỳ một kha ược dùng nhãn mà modul C khai báo) nên không cần khai thêm PUBLIC. uốn sử dụng một nhãn ngài nào thì C phải khai báo external với cú pháp: ernal kiểu tên nhãn; + Với modul Assembly phải khai báo PUBLIC với các nhãn cho phép các modul ngoài Thái Nguyên 7-2013 73 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ PUBLIC tên nhãn khai báo kiểu nhãn + ụn m + E + T nhãn dùg chung trong modul ngon ngữ a hàm: unsigned char, char, enum, unsigned short, short, g AX, unsigned long, long trong DX:AX 9. Viết chương trình so sánh hai số nguyên (từ -32768 đến o kiểu đa tệp: Modul C nhập hai số từ bàn phím, gọi chương viết bằng hợp ngữ, hiện giá trị số bé ra màn hình. Modul hợp ngữ thực hiện so sánh hai số. n f1.cpp ở thư mục C:\USER ) scr(); o1); “\nVao so thu hai”); “\n So be trong hai so là:%d”,MIN()); (tên f2.ASM ở thư mục C:\USER ) EXTRN _so1: WORD, _so2: WORD PUBLIC _MIN Muốn sử d g một nhãn đã khai báo PUBLIC ở modul ngoài (cho phép) thì odul Assembly phải khai báo EXTRN (xin phép dùng) với cú pháp sau: XTRN ten_nhãn: kiểu hêm dấu gạch chân trước các Assembly Giá trị quay lại củ unsigned int, int tron Ví dụ 1 32767) the trình con Tệp C (tê #include #include int so1, so2; external int MIN() void main(void) { clr printf(“\nVao so thu nhat”); scanf(“%d,&s printf( scanf(“%d,&so2); printf( getch(); } Tệp Assembly .model small .data .code _MIN Proc Thái Nguyên 7-2013 74 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ mov AX, so1 X, so2 mp AX,BX xc L1: _MIN END ƒ V + Các nh ủa các qua sử dụng các lệnh điều khiển khi dịc ho + t k thê nằm dạng khai báo như sau: ; i chương trình con là dạng hàm thì dạng khai báo như sau: tion ten_thu_tuc ([đối số]): kiểu ; external; t chương trình so sánh hai số nguyên (từ -32768 đến 327 l Pascal nhập hai số từ bàn phím, gọi ằng hợp ngữ, hiện giá trị số bé ra màn hình. scal (tên f1.pas ở thư mục C:\USER ) so_sanh; {$F+} functi {$L SER\f2.obj} $L: Chỉ thị liên kết file .OBJ của Pascal mov B c jl L1 hg AX,BX ret endp ới Pascal ãn dùng chung (tên hằng, tên biến, tên chương trình con...) c tệp Pascal và hợp ngữ phải hiểu nhau thông h chương trình PUBLIC và EXTERNAL cho Pascal và EXTRN c hợp ngữ Bất kỳ mộ hai báo nào của Pascal đều là dùng chung nên không cần khai m PUBLIC. Pascal chỉ còn khai báo external với các chương trình con ở modul ngoài − Với chương trình con là thủ tục thì procedure ten_thu_tuc ([đối số]); external − Vớ func Ví dụ 20. Viế 67) theo kiểu đa tệp: Modu chương trình con viết b Modul hợp ngữ thực hiện so sánh hai số. Tệp Pa Program uses crt; var so1, so2: integer; Các chỉ thị dịch của Pascal on MIN: integer; external; C:\U {$F-} Begin Thái Nguyên 7-2013 75 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ clrscr; write(‘Hay vao so thu nhat’);readln(so1); write(‘Hay vao so thu hai’);readln(so2); ); readln; bly (tên f2.ASM ở thư mục C:\USER ) Viết đa tệp với Pascal quy mô phải là HUGE, LARGE hoặc EXTRN so1: WORD, so2: WORD PUBLIC MIN 1 X, so2 L1 xchg AX,BX L1: ret MIN endp END Tệp f2.ASM phải dịch ra .OBJ để cùng thư mục writeln(‘So be trong hai so la: ,MIN End. Tệp Assem .model large; MEDIUM .data .code MIN Proc mov AX, so mov B cmp AX,BX jl Thái Nguyên 7-2013 76 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ 3.3 xö lý tiªn tiÕn dòng 80x86 C ng khả năng quản lý bộ nhớ: Hiện chỉ dừng ở 32 chân địa chỉ do + + Tăng ấy vào lõi CPU + Kỹ th + Tăng Dual-Core, Quard-Core, Multi-Processor ƒ Sản ph tel® Core™ i7-4770R Processor với thông số kỹ thuật ấn tượn //ark.intel.com/products/76642/Intel-Core-i7- 4770R-Processor-6M-Cache-up-to-3_90-GHz) 4/8 − Có lõi xử lý đồ họa. ower 595 server ƒ 3.4 ® Ph©n b ƒ ƒ ip vi xö lý, chip vi ®iÒu khiÓn ®· lµ mét h khiÓn ngoµi CPU ra ®· cã s½n bé nhí ROM, RAM, c¸c cæng vµo ra song song, nèi tiÕp, cæng truyÒn tin, c¸c bé ®Õm - ®Þnh thêi gian... gióp cho ng−êi sö dông thuËn tiÖn vµ dÔ dµng khi øng dông vi ®iÒu khiÓn gi¶i quyÕt c¸c bµi Giíi thiÖu c¸c bé vi ác cải tiến nổi bật: + Kỹ thuật pipeline + Tăng tốc độ xung nhịp: hiện nay đến + Tă + Tăng độ rộng bus dữ liệu Quản lý bộ nhớ ảo. dung lượng bộ nhớ Cache và c uật HyperThreading số bộ xử lý trong 1 chip: Ví dụ ẩm của Intel: In g (Nguồn từ trang http: − Tốc độ xung nhịp: 3.9GHz − Số lõi/luồng (Core/Thread): − Bộ nhớ Cache: 6MB ƒ Sản phẩm của IBM - P − Số lõi: 8-64 − Xung nhịp 5.0GHz − Bộ nhớ Cache 1 lõi L2: 4MB − Bộ nhớ Cache toàn chip L3: 32 MB − Pipeline, HyperThreading. Sản phẩm của Sun Microsystems, Inc. Sun UltraSparc T2 2,4 GHz. iÒu khiÓn 8x51/52 iÖt chip vi xö lý vµ chip vi ®iÒu khiÓn Bé vi xö lý: Lµm chøc n¨ng xö lý vµ tÝnh to¸n. ChØ riªng mét chip vi xö lý th× kh«ng thÓ t¹o nªn mét hÖ thèng cã kh¶ n¨ng tÝnh to¸n vµ xö lý (hÖ vi xö lý) mµ cßn cÇn thªm c¸c chip nhí, chip ngo¹i vi, truyÒn tin, ... Chip vi xö lý vÝ dô 8088, 8086, Pentium I, II, III, IV... Chip vi ®iÒu khiÓn: Kh¸c víi c¸c ch Ö thèng tÝnh to¸n trong mét chip (System on chip). Trong mét chip vi ®iÒu Thái Nguyên 7-2013 77 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ t n rÊt th«ng dông hiÖn n , 8051, 8052, 8951, 8952... v + PIC16F84, PIC24F, PIC24E, PIC24H, conductor: COP8, CR16,... + Của Philips Semiconductors: LPC 700, 900, 2000,... + Của Intel : 8XC251, MXS 296, 386EX, i960,... + Ccủa Atmel: AVR nh- 90S8515, 90S8535...víi nhiÒu tÝnh n¨ng −u viÖt h¬n, tèc ®é xö lý nhanh h¬n 8051 lµ vi ®iÒu khiÓn ®Çu tiªn cña hä vi ®iÒu khiÓn ®−îc Atmel chÕ t¹o. §Æc tÝnh kü thuËt c¬ b¶n nh− sau : 20. Vi điều khiển 8x51/52 1 Cæng nèi tiÕp, 4 cæng vµo ra song song Cã bé ®iÒu khiÓn ng¾t logic víi 5 nguån ng¾t o¸n ®iÒu khiÓn trong thùc tÕ. Mét lo¹i vi ®iÒu khiÓ ay lµ vi ®iÒu khiÓn hä 8x51/52 nh− 8031, 8032 µ c¸c vi ®iÒu khiÓn thÕ hÖ sau nh− Của Microchip Technology PIC32MX,... + Của National Semi Hình 3. - Lµ vi ®iÒu khiÓn 8 bit - Kh¶ n¨ng ®Þa chØ ho¸: + 64K bé nhí ch−¬ng tr×nh + 64K bé nhí d÷ liÖu - Cã 128 bytes nhí RAM trong - Cã 2 Time/Counters - - - 22 thanh ghi cã chøc n¨ng ®Æc biÖt SFR (Special function registers) 8051cã thÓ ®¸nh ®Þa chØ 64K bé nhí d÷ liÖu ngoµi vµ 64K bé nhí ch−¬ng tr×nh ngoµi. Thái Nguyên 7-2013 78 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ Frequency Reference Counters Osilator 4096 bytes 128 bytes Two 16 bit And Program Data Timer/Event 8051 C P U Control Duplex UART Shifter Timing Memory Memory Counter 64 byte bus Programmable Programmable expansion I / O Serial Port Full Interrupts Control Parallel Ports Serial Serial Address Data Bus Input Output and I/O pins hối của vi điều khiển 8051 Vi ®iÒu khiÓ »m trªn chip. Chøc n¨ng quan träng uffer) cã ®Þa n cho Hình 3.21. Sơ đồ k n 8051 cã cæng nèi tiÕp n cña cæng nèi tiÕp lµ biÕn ®æi d÷ liÖu tõ song song thµnh nèi tiÕp ®Ó ®Èy lªn ®−êng truyÒn vµ biÕn ®æi d÷ liÖu vµo tõ nèi tiÕp thµnh song song. ViÖc truy nhËp phÇn cøng cña cæng nèi tiÕp th«ng qua c¸c ch©n TxD vµ RxD cña 8051 vµ ®ã còng lµ 2 bit cña Port 3: P3.1 (TxD) lµ ch©n 11 P3.0 (RxD) lµ ch©n 10 Cæng nèi tiÕp cña 8051 cã thÓ truyÒn 2 chiÒu ®ång thêi (full duplex) vµ ký tù cã thÓ ®−îc nhËn vµ l−u tr÷ trong bé ®Öm trong khi ký tù thø 2 ®· ®−îc nhËn vµ nÕu CPU ®äc ký tù thø nhÊt tr−íc khi ký tù thø hai ®−îc nhËn th× d÷ liÖu kh«ng bÞ mÊt. Cã 2 thanh ghi chøc n¨ng ®Æc biÖt (Special Function Register)®Ó phÇn mÒm qua ®ã truy nhËp cæng nèi tiÕp lµ SBUF vµ SCON. SBUF (Serial port b chØ 99h ®−îc xem nh− 2 buffer. Khi ghi d÷ liÖu vµo SBUF lµ truyÒn d÷ liÖu cßn khi ®äc d÷ liÖu tõ SBUF lµ nhËn d÷ liÖu tõ ®−êng truyÒn SCON (Serial port Control register) cã ®Þa chØ 98h lµ thanh ghi cã thÓ ®¸nh ®Þa chØ theo tõng bit bao gåm bit tr¹ng th¸i vµ bit ®iÒu khiÓn. Bit ®iÒu khiÓn x¸c lËp chÕ ®é ®iÒu khiÓ Thái Nguyên 7-2013 79 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ cæng nèi tiÕp vµ bit tr¹ng th¸i cho biÕt ký tù ®−îc truyÒn hay lµ ®−îc nhËn. Bit ode 0 ®−îc chän b»ng c¸ch ghi 0 vµo bit SM0 vµ SM1 cña thanh ghi hå. Trong chÕ ®é nµy ta kh«ng nãi ®Õn RxD vµ TxD. §−êng RxD −îc d Òn qua RxD trong 1 ung lµ x¸c lËp bit REN lóc b¾t ®Çu bit RI ®Ó b¾t ®Çu t−¬ng tù nh− mode 0, start bit lu«n b»ng 0 sau ®ã ®Õn 8 bit d÷ liÖu SCON ®−îc lËp b»ng 1 khi bit tr¹ng th¸i ®−îc kiÓm ta b»ng phÇn mÒm hoÆc lËp tr×nh ®Ó g©y ra ng¾t. 8051 cã 4 chÕ ®é ho¹t ®éng, viÖc chän chÕ ®é ho¹t ®éng b»ng c¸ch x¸c lËp c¸c bit SM0 vµ SM1 cña thanh ghi SCON. Cã 3 chÕ ®é ho¹t ®éng truyÒn kh«ng ®ång bé, mçi ký tù truyÒn hoÆc nhËn theo tõng khung víi bit start vµ stop t−¬ng tù RS232 cña m¸y vi tÝnh. Cßn chÕ ®é thø 4 ho¹t ®éng nh− 1 thanh ghi dÞch ®¬n gi¶n. a.Thanh ghi dÞch 8 bit (Mode 0). M SCON, x¸c lËp cæng nèi tiÕp ho¹t ®éng nh− thanh ghi dÞch 8 bit. D÷ liÖu vµo vµ ra nèi tiÕp qua RxD vµ TxD theo nhÞp ®ång hå. 8 bit ®−îc truyÒn vµ nhËn víi bit thÊp nhÊt (lest significant - LSB) ®−îc truyÒn ®Çu tiªn. Tèc ®é baud ®−îc ®Æt b»ng 1/12 tèc ®é ®ång ® ïng cho c¶ truyÒn vµ nhËn d÷ liÖu cßn ®−êng TxD ®−îc dïng cho tÝn hiÖu clock. ViÖc truyÒn d÷ liÖu ®−îc khëi ®Çu b»ng c¸ch ghi d÷ liÖu vµo thanh ghi SBUF, d÷ liÖu ®−îc dÞch ra tõng bit ra ngoµi qua ch©n RxD (P3.0) cïng víi xung ®ång hå ®−îc göi ra ngoµi qua ®−êng TxD (P3.1). Mçi bit ®−îc truy chu kú m¸y. ViÖc nhËn d÷ liÖu ®−îc khëi ®Çu khi bit cho phÐp nhËn (REN) ®−îc x¸c lËp lªn bit 1 vµ bit RI ph¶i xo¸ vÒ 0. Nguyªn t¾c ch ch−¬ng tr×nh ®Ó khëi t¹o c¸c tham sè cña cæng nèi tiÕp vµ xo¸ c«ng viÖc nhËn d÷ liÖu. Khi RI ®−îc xo¸, xung ®ång hå ®−îc ghi ra ch©n TxD, b¾t ®Çu chu kú m¸y tiÕp theo vµ d÷ liÖu ®−îc ®−a vµo ch©n RxD. Mét kh¶ n¨ng cña chÕ ®é thanh ghi dÞch lµ cã thÓ më réng ®−êng ra cña 8051. Thanh ghi dÞch chuyÓn ®ái nèi tiÕp thµnh song song cã thÎ kÕt nèi víi c¸c ®−êng TxD vµ RxD cung cấp thªm 8 ®−êng ra. b. 8 bit UART víi tèc ®é baud cã thÓ thay ®æi ®−îc (mode1). Ở mode 1, cæng nèi tiÕp cña 8051 ho¹t ®éng nh− lµ UART 8 bit víi tèc ®é baud cã thÓ thay ®æi ®−îc. UART (Universal Asynchronous Receiver/Transmitter) lµ 1 thiÕt bÞ nhËn vµ truyÒn d÷ liÖu nèi tiÕp, mçi ký tù ®−îc truyÒn b¾t ®Çu b»ng bit start (tr¹ng th¸i thÊp) sau ®ã lµ c¸c bit d÷ liÖu cña ký tù ®−îc truyÒn, parity bit ®Ó kiÓm tra lçi ®−êng truyÒn vµ cuèi cïng lµ bit stop (tr¹ng th¸i cao). Mét chøc n¨ng quan träng cña UART lµ chuyÓn ®æi d÷ liÖu song song thµnh nèi tiÕp ®Ó truyÒn vµ chuyÓn ®æi nèi tiÕp thµnh song song ®Ó nhËn. Trong mode nµy, 10 bit d÷ liÖu ®−îc truyÒn qua TxD vµ nhËn vµo qua RxD vµ viÖc truyÒn còng (LSB ®Çu tiªn) vµ cuèi cïng lµ stop bit. Bit TI cña Thái Nguyên 7-2013 80 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ stop ë ch©n TxD. Trong qu¸ tr×nh nhËn stop bit ®−îc ®−a vµo bit RB8 cña thanh ghi SCON vµ tèc ®é truyÒn ®−îc ®Æt bởi timer1. ViÖc ®ång bé thanh ghi dÞch cña cæng nèi tiÕp ë mode 1, 2, 3 ®−îc ®iÒu khiÓn bëi counter víi ®Çu ra counter lµ nhÞp ®ång hå ®iÒu khiÓn tèc ®é baud cßn ®Çu vµo cña counter ®−îc chän b»ng phÇn mÒm. c.9 bit UART víi tèc ®é baud cè ®Þnh (mode 2). cæng nèi tiÕp cña å. y ®æi ®−îc (mode 3). cã thÓ it cßn mode 2 vµ mode 3 lµ r enable) bit RI vµ TI trong thanh ghi SCON ®−îc lËp lªn 1 b»ng phÇn cøng vµ cuèi cïng cña d÷ liÖu · kÕt thóc truyÒn 1 byte d÷ liÖu (receiver buffer ng¾t. NÕu ch−¬ng tr×nh muèn nhËn p CLR RI ;xo¸ RI V A,SBUF ;§äc d÷ liÖu tõ SBUF truyÒn vµ nã cho biÕt g tr×nh muèn göi d÷ liÖu Mode ®−îc chän b»ng c¸ch ®Æt bit SM1=1 vµ SM0=0, 8051 sÏ ho¹t ®éng nh− UART 9 bit cã tèc ®é baud cè ®Þnh. 11bit sÏ ®−îc truyÒn vµ nhËn qua TxD vµ RxD: 1 start bit, 9 bits d÷ liÖu vµ stop bit. Trong khi truyÒn bit thø 9 sÏ ®−îc ®Æt vµo TB8 cña thanh ghi SCON cßn trong khi nhËn bit thø 9 sÏ ®−îc ®Æt vµo bit RB8. Tèc ®é baud cña mode 2 cã thÓ lµ 1/32 hoÆc 1/64 xung nhÞp ®ång h d.9 bit UART víi tèc ®é baud cã thÓ tha Mode 3 t−¬ng tù nh− mode 2 nh−ng tèc ®é baud ®−îc lËp tr×nh vµ ®−îc cung cÊp b»ng timer. Trong thùc tÕ c¶ 3 mode 1, 2, 3 lµ t−¬ng ®−¬ng nhau chØ kh¸c nhau ë chç tèc ®é baud ë mode 2 lµ cè ®Þnh cßn mode 1 vµ mode 3 thay ®æi ®−îc vµ sè l−îng bit d÷ liÖu cña mode 1 lµ 8 b 9 bit. • Cho phÐp nhËn (Receive Bit cho phÐp nhËn (REN) cña thanh ghi SCON ph¶i

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

  • pdfbai_giang_vi_xu_ly_va_lthn_2013_6118.pdf