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 |
Chia sẻ: honghanh66 | Lượt xem: 885 | 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