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ớ ...
                
              
                                            
                                
            
 
            
                 165 trang
165 trang | 
Chia sẻ: honghanh66 | Lượt xem: 1142 | Lượt tải: 0 
              
            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:
 bai_giang_vi_xu_ly_va_lthn_2013_6118.pdf bai_giang_vi_xu_ly_va_lthn_2013_6118.pdf