Tải bản đầy đủ (.doc) (64 trang)

chuyên đề vi xử lý giới thiệu vi xử lý z80

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (305.7 KB, 64 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA ĐIỆN - ĐIỆN TỬ
CHUYÊN ĐỀ VI XỬ LÝ
(GIỚI THIỆU VI XỬ LÝ Z80)
BÀI 1 :
CẤU TRÚC HỆ VI XỬ LÝ VÀ TỔ CHỨC
BÊN TRONG CỦA CPU.
I. SƠ ĐỒ KHỐI CỦA 1 HỆ µ P:
1. CPU và các thành phần chính:
- Bộ nhớ chính gồm ROM & RAM.
- Các bộ giao tiếp (Input / Output Adapter)
- Các Thiết bò ngoại vi ( Peripheral).
Bus : Data Addr Ctrl

Peripheral
 CPU : Là khối liên kết trung tâm, thực hiện các phép toán và điều khiển các
liên kết còn lại thông qua việc thi hành Lệnh.
Vậy: Lệnh là một giá trò nhò phân tượng trưng (mã hóa) cho 1 phép tính mà CPU
thực hiện được, giá trò này do nhà sản xuất qui đònh.
 Bộ nhớ chính : Chứa số liệu và Lệnh của CPU.
 Các bộ giao tiếp : Là những phần tử mạch trung gian cho phép CPU điều khiển
các Thiết bò ngoại vi (bàn phím, máy in, đèn chỉ thò, … )
2. Hệ thống Bus :
 Address Bus: Là Bus 1 chiều do CPU gởi ra. Số bit của Addr sẽ qui đònh số ô nhớ
mà CPU truy xuất được hay còn gọi là khả năng đònh vò (mapping) của CPU.
 Data Bus: Là Bus 2 chiều, là nơi chuyển lệnh hoặc số liệu trong quá trình hoạt
động của CPU.
 Control Bus: Mỗi đường là 1 chiều (nhưng quan điểm theo kiểu tổng quát là 2
chiều), nó chứa các tín hiệu của CPU để điều khiển các linh kiện xung quanh.
II. CẤU TRÚC CỦA CPU:


1. Phân loại :
Main Memory
ROM
CPU
RAM
I / O Alapter
 Dựa vào số bit của Data Bus để phân loại CPU:
- CPU 8 bit: 8080, 8085 của Intel
6800, 6802 của Intel
Z80 của Zilog
- CPU có Data Bus lớn hơn 8 bit:
16 bit: 8088, 8086, 80286
32 bit: 80386, 80486 của Intel
64 bit: Pentium
Ngoài ra theo xu thế hiện nay, người ta có thể phân loại CPU theo 2 hướng:
- CISC ( Complete Instruction Set Computer)
- RISC ( Reduced Instruction Set Computer)
2. Cấu trúc :
Gồm 3 phần chính:
- Tập thanh ghi ( Register Set).
- Bộ số học và Logic ( Arithmetic & Logic Unit).
- Khối điều khiển và giải mã lệnh.
a. Tập thanh ghi:
• Chức năng: Đóng vai trò là những ô nhớ nằm bên trong CPU. Mỗi thanh ghi
được nhà sản xuất qui đònh cho người sử dụng bằng 1 tên gọi (A, B, C, …). Các
thanh ghi là cơ sở (nơi chứa số liệu) cho đa số các phép toán mà CPU thực
hiện.
• Phân loại:
+ Các thanh ghi đòa chỉ: liên quan đến Addr Bus.
+ Các thanh ghi dữ liệu: liên quan đến Data Bus.

• Các thanh ghi thường gặp trong CPU 8 bit:
a1. Thanh ghi PC ( Program Counter)
+ Số bit của PC = Số bit của Addr Bus.
+ PC chứa đòa chỉ của Lệnh mà CPU đang thực hiện.
+ PC tự động tăng ghi lên 1 sau mỗi byte thực hiện.
Thường khi mới Reset CPU giá trò thanh ghi PC = Hằng số.
***Nhận xét:
- Các lệnh mà người sử dụng muốn CPU thực hiện tuần tự theo thời gian phải
được đặt theo thứ tự tăng dần của đòa chỉ trong bộ nhớ.
- Sự thay đổi giá trò của thanh ghi PC bởi một nguyên nhân nào đó chúng sẽ
làm chuyển hướng việc thi hành Lệnh của CPU.
a2. Các thanh ghi đa năng ( General Purpose):
- Số bit bằng độ rộng của Data Bus.
- Các thanh ghi này thường được dùng trong các lệnh của CPU (tính toán,
chuyển dời dữ liệu, …).
- Trong số các thanh ghi đa năng, có 1 thanh ghi đặc biệt gọi là bộ tích lũy
(gọi là thanh ghi A) – Accumulator. Đặc biệt ở chỗ là những phép toán chỉ
tiến hành được trên thanh ghi A mà không thực hiện được trên các thanh ghi
khác.
a3. Thanh ghi Cờ ( Flag – Condition):
- Thanh ghi này thường không tham gia vào các phép toán nhưng nó phản ánh
một giá trò đặc biệt của kết quả thu được sau phép toán đó.
- Mỗi bit trong thanh ghi có ý nghóa độc lập và thường được gọi là 1 cờ.
+ Các Cờ thường gặp:
*Cờ Z (Zero): 1
0
Z =

nếu kết quả =
0 1 số khác 0

*Cờ C (Carry):
1
Z =

nếu
0
Các bit nhớ hoặc mượn được xét tại vò trí MSB.
*Cờ H (Halt):
Giống như Cờ C nhưng vò trí mà nó phản ánh (xét đến) là bit thứ 4 (bit 3)
của kết quả.
Cờ này ảnh hưởng đến các phép tính cho số BCD.
*Cờ S (Sign):
Quan điểm về số (+) và (-) trong hệ µP:
Đònh nghóa: Nếu xem các số đang thao tác là 1 số có dấu và nếu xét trong
một độ dài hữu hạn bit thì 2 số đối nhau được đònh nghóa như sau: X + Y = 0.
Ví dụ : Nếu xét theo quan điểm trên thì FF = - 1
vì FF + 01 = 00
Người ta chứng minh được : - X = X + 1
Nhận xét:
MSB = 0 Tầm số (+)
Nếu Thì số đó
MSB = 1 Tầm số (-)
Với một số nhò phân n bit mà nhìn như số có dấu, người ta chia thành 2
tầm số như nhận xét trên.
Ví dụ: 00  7F: biểu diễn số +0  +127
80  FF: biểu diễn số -128  -1
Giá trò của Cờ S thực chất là giá trò MSB của kết quả, do đó nếu trong
trường hợp tính toán với số có dấu thì Cờ S được dùng để xác đònh xem số
đó thuộc tầm (+) hay (-).
*Cờ O (OverFlow):

Cờ O chỉ sử dụng trong các phương trình tính toán với số có dấu.
1 : Phản ánh hiện tượng tràn (quá tầm vực của số đó)
O =
0 : Nếu ngược lại
Ví dụ : 0100 0000 (64)
0100 0001 (65)
1000 0001 (129 > 127 thuộc tầm số (+) ).
 Cờ O = 1.
Có bit nhớ (phép +) hoặc có bit mượn (-)
Ngược lại
a4. Thanh ghi chỉ số:
- Nó được dùng trong phép đònh vò chỉ số.
a5. Nhà hầm và thanh ghi con trỏ nhà hầm Stack Pointer (SP):
• Khái niệm : Nhà hầm là một vùng nhớ RAM được CPU chọn làm nơi chứa
tạm các giá trò của các thanh ghi khi cần thiết (Khi thi hành lệnh cất thanh ghi)
và khi phục hồi lại chúng.
• Cơ chế hoạt động :
+ Nhà hầm được quản lý theo cơ chế đòa chỉ: Đòa chỉ của vùng nhớ RAM được
dùng làm nhà hầm phải được nạp vào thanh ghi SP. Do đó 1 lệnh nào đó có
liên quan đến nhà hầm sẽ được thực hiện theo đòa chỉ này.
Ví dụ: lệnh cất thanh ghi A thì CPU sẽ đem nội dung của thanh ghi A vào ô
nhớ có đòa chỉ nằm trong SP (ký hiệu là [SP] ).
+ Nhà hầm hoạt động theo nguyên tắc giảm, nghóa là sau lệnh cất nội dung của
một thanh ghi 8 bit giá trò của thanh ghi SP sẽ giảm 1.
+ Phục hồi lại giá trò của thanh ghi đem cất trước đó bằng cách đem nội dung ô
nhớ có đòa chỉ chứa trong SP +1 về lại thanh ghi A sau đó tăng SP lên 1.
+ Nhà hầm hoạt động theo nguyên tắc LIFO ( Last In First Out), nghóa là thanh
ghi nào cất vào trước sẽ được lấy ra sau.
b. Nguyên tắc tổ chức của ALU :
1. Mạch cộng :

• Mạch cộng 2 số 1 bit bán phần (half adder).


• Mạch cộng toàn phần (3 bit) (full adder):
S
C
A
B
S
C
A
B
C
tr
Maùch coọng toaứn phan n bit mụỷ roọng:

Nếu C
t
= 0 :
S
3
S
2
S
1
S
0
S
ra
Ghi chú

0 0 0 0 0 0
0 0 0 1 Reg1
0 0 1 0 Reg2
0 0 1 1 Reg1 + Reg2
0 1 0 0 FF
0 1 0 1 Reg1
0 1 1 0 Reg2 + FF Reg2 – 1
0 1 1 1 Reg1 + Reg2 Reg2 – Reg1 (nếu C
t
= 1)
1 0 0 0 Reg1 + FF
1 0 0 1 Reg2
1 0 1 0 Reg1 + Reg2
1 0 1 1 FF + FF
1 1 0 0 FF
1 1 0 1 Reg1 + FF
1 1 1 0 Reg2 + FF
1 1 1 1 Reg1 + Reg2
C
trước
ø
C
ra
S
0
S
1
S
2


S
7
Mạch
Cộng
8 bit
Reg
1
(A)
Reg
2
S
0
S
1
S
2
S
3
Bộ
Tích
Lũy
(Acc)
Cờ
Các tín hiệu từ khối giải
mã lệnh
c. Nguyên lý khối giải mã lệnh :


III KHẢO SÁT 1 SỐ CPU ĐIỂN HÌNH:
1. Z.80 CPU của Zilog :

Thanh
ghi lệnh
(chứa

lệnh)
ROM
Built In
(chứa
Micro
Code)
Các tín hiệu
điều khiển
Data ra
D
0
D
7
A
11
A
12
A
13
A
14
A
15
CKL
D
4

D
3
D
5
D
6
Vcc
D
2
D
7
D
0
D
1
A
10
A
9
A
8
A
7
A
6
A
5
A
4
A

3
A
2
A
1
A
0
GND
D780C
(NEC)
Top View
Sơ đồ chân CPU
A
0
A
15
D
0
D
7
CLK
RESET
+Vcc
Gnd
Sơ đồ Logic
• A
0
÷ A
15
: 16 bit của Addr Bus (3 trạng thái)  Có 2

16
B = 64 KB ô nhớ.
• D
0
÷

D
7
: 8 bit của Data Bus (2 chiều – 3 trạng thái).
• Điều kiện về điện :
+ CK (Clock): Sóng vuông (biên độ TTL) f ≤ 4 MHz .
+ RESET: có độ rộng khoảng vài chục µs, lúc reset thì PC = 0000h
• CPU điều khiển các linh kiện ngoài:
+ RD (ReaD)= 0: Data Bus là vào đối với CPU.
+ WR (WRite) :
WR = 0 : Data Bus là ra đối với CPU.
Lưu ý : Đọc lệnh RD = 0
Xác đònh
Thi hành lệnh : RD = 0 hoặc WR = 0
• MERQ (MEmory ReQuest):
+ Khi MERQ = 0 đảm bảo 1 giá trò ổn đònh trên Addr Bus.
MERQ = 0: Đọc lệnh từ bộ nhớ.
+ Cụ thể
MERQ = 1: Thi hành lệnh thuộc nhóm LD.
+ IORQ ( In Out ReQuest):
- Chân này = 0: Báo hiệu 1 giá trò ổn đònh trên Addr Bus.
= 0: Thi hành lệnh thuộc nhóm IN / OUT.
- Cụ thể
= 1: Trạng thái phục vụ ngắt.
• Nhóm chân thông báo trạng thái CPU:

+ M1 ( Machine Cycle 1 ):
16 States
MC1 MC2
M1 = 0 : Nếu CPU đang ở chu kỳ máy 1.
Nhận xét: M1 và MERQ có thể cùng = 0.
+ HALT = 0: Báo hiệu CPU ngưng hoạt động.
Lúc này CPU chỉ hoạt động lại khi có tín hiệu Reset hoặc có một hiện tượng
ngắt xảy ra.
+ RFSH ( ReFreSH): Xem giản đồ thời gian.
• Nhóm chân điều khiển trạng thái của CPU:
+ WAIT = 0 : CPU sẽ kéo dài việc thi hành hoặc đọc lệnh hiện tại cho đến khi
WAIT = 1.
+ INT ( Interrupt)
+ NMI ( Non Maskable Int )
+ BUSRQ ( BUS ReQuest) = 0: CPU sẽ đưa tất cả các chân lên 3 trạng thái và
thông báo bằng tín hiệu BUSACK ( ACKnownlegde) = 0.
* Tập thanh ghi của Z-80:
A F A’ F’
B C B’ C’
D E D’ E’
H L H’ L’
- Các thanh ghi đa năng: A, B, C, D, E, H, L. Trong đó A là bộ tích lũy và 6â
thanh ghi còn lại có thể ghép cặp và dùng như 3 thanh ghi 16 bit BC, DE, HL.
- Tập thanh ghi phụ ( có dấu phẩy): A’, B’, … Cất hết dữ liệu của các thanh ghi
đa năng khi cần thiết ( như một nhà hầm nhỏ ).
- Thanh ghi chỉ số: IX, IY.
- Thanh ghi I: Dùng trong cơ chế xử lý ngắt.
- Thanh ghi R: Làm tươi RAM động.
2. 6802 của Motorola :
-

A
0
÷

A
15

-
D
0
÷ D
7
-
Điều kiện về điện:
+ Không có chân Clock mà có mạch Clock bên trong, có thể mắc mạch dao động
thạch anh tại X
1
, X
2
như sau:
+ Reset: tích cực ở mức logic 0.
-
Nhóm chân CPU điều khiển linh kiện bên ngoài.
+ R / W ( Read / Write )
1: Read
R / W =
0 : Write
 Phải lưu ý 2 trường hợp.
IY
I

R
PC
SP
Giống với Z80
IX
X
1
X
2
F
c
= 4f
clk
 T
clk
= 4T
c
+ VMA (Valid Memory Address):
Khi WMA = 1: Giá trò ổn đònh trên Addr Bus.
-
Nhóm chân điều khiển CPU:
 NMI NMI
 IRQ INT
 HALT giống như BUSRQ của Z80
 BA ( Bus Available) tương đươngBUSACK của Z80
 MR ( Memory Ready): Tương tự WAIT của Z80
-
Đặc biệät trong 6802 có 32 bytes RAM mang đòa chỉ từ 0000 đến 001F (cố đònh) và
được cho phép bởi RE ( Ram Enable) = 1. Trong đó 16 bytes đầu tiên có chân
nguồn riêng là V

cc
Standby.
• Tập thanh ghi :
IX PC
SP F
A
B
Đònh nghóa: Một vectơ là 2 ô nhớ được sử dụng làm đòa chỉ của 1 ô nhớ khác.
+ Chú ý: Khi mới Reset giá trò PC của 6802 là nội dung của 2 ô nhớ có đòa chỉ là
FFFF và FFFE. Cơ chế này gọi là cơ chế Vectơ Reset.
(FFFF)  PC
L
(FFFE)  PC
H
.
giống
của Z. 80
CPU
(Bộ nhớ)
RD
WR
(Bộ nhớ)
R/W
RD
WR
Đều là bộ
tích lũy
8 bít
16 bít
C Z H P I N

Gnd
MR
VMA
BA
Vcc
A
0
A
1
A
2
A
3
A
4
A
5
A
6
A
7
A
8
A
9
A
10
A
11
X

1
X
2
E
RE
Vcc Standby
D
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
A
15
A
14
A
13
A
12

GND
6802
Top View
VMA
BA
MR
X
1
X
2
A
0
A
15
D
0
D
7
RE
E
Vcc
+Vcc
Gnd
BÀI 2:
TẬP LỆNH CỦA CPU VÀ HP NGỮ
(Assembly Language)
************
I. CÁC THÀNH PHẦN CỦA 1 LỆNH:
• Dưới dạng mã số, 1 lệnh gồm 2 trường:

OP_ CODE OPERAND
- Do nhà sản xuất qui đònh - Do người sử dụng qui đònh
• Ví dụ :
Mã gợi nhớ Ý nghóa Op_ Code Operand
LD A, n Nạp vào A một 3E n( 00 ÷ FF)
byte có giá trò n
II. CÁC PHƯƠNG PHÁP ĐỊNH VỊ ĐỊA CHỈ (Address Methods):
1. Khái niệm về đònh vò đòa chỉ:
Phép đònh vò đòa chỉ là các cách thức mà CPU sử dụng Operand trong 1 lệnh
(Ví dụ như 1 số liệu hoặc như 1 đòa chỉ).
2. Các phương pháp đònh vò đòa chỉ:
2.1. Phương pháp đònh vò tức thời ( Immediate):
Đònh nghóa: Trong phương pháp đònh vò này Operand dài 1 hoặc 2 bytes và được sử
dụng như số liệu đem vào thanh ghi hoặc để làm phép toán với thanh ghi.
Ví dụ : LD A, 06h
LD HL, 2000h
2.2. Phương pháp đònh vò thanh ghi ( Register ):
Đònh nghóa: Trong phương pháp đònh vò này không có Operand vì chỉ là những thao
tác liên quan giữa các thanh ghi với nhau.
Ví dụ : LD A, B
ADD A, C
2.3. Phương pháp đònh vò trang 0:
Đònh nghóa: Là phương pháp đònh vò trong đó Operand dài 1 byte và là byte thấp của
1 đòa chỉ một ô nhớ cần truy xuất. Byte cao của đòa chỉ này được CPU xem như =00.
Ví dụ : - Đònh vò thường: LD A, ( 0060h)
- Đònh vò trang 0: LD A, ( 60h)
Đònh vò này không có trong CPU Z80
2.4. Phương pháp đònh vò trực tiếp mở rộng ( Extended Direct):
Đònh nghóa : Trong phương pháp đònh vò này Operand dài 2 byte và được sử dụng
như 1 đòa chỉ của 1 ô nhớ cần truy xuất.

Ví dụ : LD A, ( 0060h)
LD BC, (2000h)
Lưuý : Phương pháp đònh vò này chỉ áp dụng cho 1 số thanh ghi nào đó (xem phần
nhận xét về sau cho từng CPU).
2.5. Phương pháp đònh vò gián tiếp qua thanh ghi ( Indirect Reg):
- Tượng trưng cho thao
tác của lệnh.
- Là số liệu cụ thể (nếu có)
của lệnh.
Đònh nghóa : Trong phương pháp đònh vò này đòa chỉ của ô nhớ cần truy xuất là nội
dung của 1 cặp thanh ghi 8 bit hoặc 1 thanh ghi 16 bit mà không phải là thanh ghi chỉ
số. Lệnh thuộc loại này không có Operand.
Ví dụ : LD B, ( HL)
LD (DE) , A
2.6. Phương pháp đònh vò ẩn ( Implied):
Đònh nghóa : Người ta xem những lệnh mà ở dạng gợi nhớ phép toán dường như
thiếu 1 toán hạng là phương pháp đònh vò ẩn.
Ví dụ : SUB (HL)
AND D
Toán hạng còn lại được hiểu là thanh ghi A.
2.7. Phương pháp đònh vò theo bit (Bit):
Đònh nghóa : Là phương pháp đònh vò của những lệnh mà đối tượng thao tác là 1 bit
của một thanh ghi hoặc một ô nhớ.
Ví dụ : SET 4, D ↔ b
4
của D = 1
RES 5, C ↔ b
5
của C = 0
2.8. Phương pháp đònh vò chuỗi ( String) :

Đònh nghóa : Là phương pháp đònh vò của những lệnh có khả năng tự lặp lại.
Ví dụ : (HL)  (DE)
HL + 1  HL
DE + 1  DE
BC – 1  BC
LDIR : Lặp lại LDI cho đến khi BC = 0.
2.9. Phương pháp đònh vò chỉ số ( Index):
Đònh nghóa: Là phép đònh vò trong đó Operand dài một byte và được sử dụng để
cộng với thanh ghi chữ số IX, IY để tạo thành đòa chỉ của ô nhớ cần truy xuất.
Đòa chỉ = IX + Operand.
Ví dụ: LD A, ( IX + 05h).
Chú ý: Sau khi thực hiện IX không đổi giá trò.
Phạm vi:
00h = < Operand = < 7Fh  IX + 00 Operand
80h = < Operand = < FFh  IX + FF Operand
Ví dụ :
IX = 2304h
LD A, ( IX + 00FEh)
⇔ LD A, (2302h): Đòa chỉ lùi lại so với IX.
2.10. Phương pháp đònh vò tương đối:
• Khái niệm về các lệnh chuyển điều khiển chương trình :
Lệnh chuyển điều khiển chương trình là những lệnh mà sau khi thi hành, giá
trò của thanh ghi PC có thể bò thay đổi một cách đột ngột.
Ví dụ : Lấy giá trò tuyệt đối của 1 giá trò chứa trong bộ tích lũy (A):
0000 : CB 7F BIT 7, A
0002 : CA 0007 JP Z, kt
0005 : ED 44 NEG
0007 : 76â Kt : HALT.
LDI ⇔
• Phương pháp đònh vò tương đối:

Đònh nghóa : phương pháp đònh vò này dùng cho những lệnh chuyển điều khiển
chương trình trong đó Operand dài một byte và dùng để tính giá trò mới cho thanh
ghi PC theo công thức sau:
PC mới = PC cũ + 2 + Operand
Chú ý:Việc cộng Operand trong công thức này giống như trong phép đònh vò chỉ số.
Ví dụ : Cũng ví dụ trên nhưng chỉ thay đổi một lệnh.
0000 : CB 7F BIT 7, A
0002 : 2802 JP Z, kt ( Khác JR NZ, kt)
0004 : ED 44 NEG
0006 : 76 kt : HALT
Từ : PC mới = PC cũ + 2 + Operand bỏ đi byte cao này
 Operand = 0006 – 0002 – 2 = 00 02
• Nhận xét : Như vậy trong phương pháp đònh vò tương đối Operand diiễn tả
khoảng cách về đòa chỉ từ lệnh nhảy đến lệnh muốn nhảy đến, khoảng cách này
không được > + 127 và < - 128 so với đòa chỉ của lệnh nhảy.
3.Các bước thi hành 1 lệnh:
Ví dụ: Xét lệnh sau:
Mã gợi nhớ Ý nghóa Mã máy Trong bộ nhớ (Đòa chỉ đầu là 0000h)
LD (2000h),A Nạp nội dung 32 2000 0000 32
của A vào ô nhớ 0001 00
có đòa chỉ là 2000h 0002 20
Giai đoạn 1: Đọc lệnh ( Op – Code Fetch)
-
B1 : Giá trò của thanh ghi PC được gởi ra Addr Bus.
-
B2 : Sau một khoảng thời gian tín hiệu (đường) Read (RD) được đưa xuống thấp.
-
B3 : Sau đó giá trò của Data Bus được đưa vào thanh ghi lệnh.
-
B4 : Byte thấp của PC được gởi đến ALU.

-
B5 : Giá trò ở ALU được tăng 1
PC
A
∅∅∅∅
8∅
32
∅∅
2∅

∅∅∅∅:
A.Bus
D.Bus
2∅∅∅:
-
B6 : Giá trò ở ALU được đem về byte thấp của PC
-
B7 : Byte cao của PC được gởi đến ALU.
-
B8 : Nếu cộng ở B5 không có nhớ thì nhảy đến B.10.
-
B9 : / Phép / ghi ở ALU được tăng 1.
-
B.10 : Giá trò ở ALU được đem về byte cao của PC.
Sau đó CPU sẽ tiếp tục đọc 2 byte nữa do ý ngfhóa của byte ở B3 (Byte đại
diện cho lệnh) sinh ra.
- B.11 ÷ B.20 : Cũng gống như từ B1 ÷ B.10 nhưng giá trò đọc về không chứa vào
thanh ghi lệnh.
- B.21 ÷ B.30: Giống như B.11 ÷ B.20.
Giai đoạn 2:

- B.31 : 2 bytes đọc được trong B.11 ÷ B.30 được gởi ra Addr Bus
- B.32 : Giá trò của thanh ghi A sẽ được ghi vào ô nhớ có đòa chỉ đã chứa.
IV. PHÂN TÍCH TẬP LỆNH :
• Nhóm 1 : Chuyển dời dữ liệu 8 bit.
Dạng : LD Dest, Source.
Chú ý :
- Phép đònh vò trực tiếp mở rộng chỉ dùng được cho thanh ghi A.
- Nếu dùng cặp BC hoặc DE làm đòa chỉ của 1 ô nhớ thì toán hạng còn lại chỉ có thể
là A.
- Đa số các lệnh này không tác động đến Cờ trạng thái.
• Nhóm 2 : Chuyển dời dữ liệu 16 bit.
Dạng : LD Dest, Source
16 bit (hoặc đòa chỉ của 1 ô nhớ)
Nhận xét : Nhóm này chỉ sử dụng cho đònh vò tức thời và đònh vò trực tiếp (mở
rộng).
• Nhóm 3 : Cất và phục hồi thanh ghi.
Cặp 8
Dạng : POP, PUSH
Thanh 16
B  [ Sp – 1]
C  [Sp – 2 ]
Sp – 2  Sp
[Sp]  C
[Sp – n]  B
Sp + 2  Sp
• Nhóm 4 : Số học và Logic 8 bit
+ Nhóm số học :
- Dạng cộng ADD A, s ⇔ A + s  A
Với s là 1 thanh 8, (HL), (IX + d), (IR + d), 1 giá trò 8 bit.
- Dạng cộng ADC A, s ⇔ A + s + Cờ C  A

- Dạng trừ :
SUB s ⇔ A – s  A
SBC s ⇔ A – s – Cờ C  A
- PUSH BC ⇔
- POP BC ⇔
- Dạng đảo :
NEG ⇔ A + 1 = - A  A
• Nhóm thuộc về số học :
- INC s ⇔ s + 1  s
- DEC s ⇔ s – 1  s
Với s là các phần tử đã nói ở trên.
- So sánh :
CP s ⇔ A – s trong khi giá trò của A không đổi, mà CP chỉ tác động đến
Cờ.
• Nhóm lệnh Logic :
AND s
(X) OR s
CPL ⇔ A  A
Chú ý : Hầu hết các lệnh trên đều tự động tác động đến Cờ
• Nhóm lệnh số học 16 bit :
- ADD HL, S1
Với S1 là BC, DE, HL hoặc SP
- ADC HL, S1
- ADD IX, S2
Với S2 : BC, DE, IX hoặc SP
- ADD IY, S3
Với S3: BC, DE, IY hoặc SP
- SBC HL,S3
- INC S
- DEC S

Với S : BC, AL, DE, IX, IY hoặc SP
Nhận xét : Cẩn thận với sự tác động đến Cờ của các lệnh thuộc nhóm này.
• Nhóm Shift và Rotate :
+ Phép Shift và Rotate :

- Giống nhau :
- Khác nhau : Shift (trái)
Chú ý:
+ Đối với trường hợp Shift phải thì Cờ có 2 loại :
- Shift Logic :
- Shift số học :
C
C

C
C
C
Rotate không qua Cờ
Rotate qua Cờ C
MBS
?
LBS LBS
?
MBS
?

+ Shift trái 1 bit ⇔ nhân 2
Shift phải 1 bit ⇔ chia 2
+ Lệnh Shift và Rotate :
SLA s A : Anthmatic

- Shift : SRA s L : Logic
SRL s
Với s là thanh ghi 8 bit, (HL), (IX+d), (IY+d)
- Rotate : RLC s
+ Không qua C : RCC s
Với s như đã nói ở trên.
+ Có qua Cờ C : RL s
RR s
•Nhóm lệnh nhảy :
- Không điều kiện : JP nn
+ Đònh vò không tương đối : JP (IX)
+ Đònh vò tương đối : JR nn
- Có điều kiện : JP Z, nn JP NZ, nn
+ Không tương đối : JP C, nn JP NC, nn
JR NZ, nn JR C, nn
+ Tương đối : JR NC, nn JR Z, nn
- Đặc biệt : DEC B
DINZ nn ⇔ JR NZ, nn
Ví dụ 1 : Viết chương trình nhân 2 giá trò
trong A & B, kết quả chứa trong HL.
LD HL, 0000h
CP 00h
JP Z, L
3
L
1
: LD D, 00h
LD E, B
L
2

: ADD HL, DE
DEC A
JP NZ, L
2
L
3
: HALT
( chỉ đúng với Shift Logic)
& JP (HL)
&
&
Star
HL∅∅
D  ∅ ∅
E B
HL  HL + DE
A  A - 1
A = ∅
Stop
A = ∅
N
Y
Y
N
Ví dụ 2 : Viết chương trình chia 2 giá trò
trong A cho B (giả sử B ≠ 0), thương số
đặt ở H và số dư đặt ở L.
Giải:
LD H, 00h
LD L, A

L
1
: CP B
JP NC, L
2
HALT
L
2
: SUB B
INC H
LD L, A
JP L
1
Bài tập: Cho một vùng nhớ dài 256 ô nhớ có đòa chỉ đầu là table. Viết chương trình
tìm giá trò lớn nhất trong 256 ô nhớ đó và chứa giá trò max này vào A.
•Nhóm các lệnh đặc biệt :
 RLD (Rotate Left Digit)
- Ý nghóa:
.
- RRD:

 Các lệnh kiểm tra bit :
BIT b, s ⇔ Bit b của s đưa vào Cờ Z
SET b, s ⇔ Bit b của s = 1
RES b, s ⇔ Bit b của s = 0
Trong đó : s là thanh ghi 8 bit, (HL), (IX + d), (IY + d) và b từ 0 đến 7.
•Nhóm lệnh CALL và RET:
 Chương trình con (Subroutine, Procedure) Là một đoạn lệnh riêng biệt thực
hiện một bài toán nào đó được đặt rời chương trình chính. Khi cần sử dụng,
chương trình chính dùng lệnh CALL để thực hiện chương trình con tương ứng,

chương trình con phgải kết thúc bằng lệnh RET để có thể quay về chương trình
chính.
 CALL Đòa chỉ Ctc ⇔ PUSH PC
JP nn (Đòa chỉ CTC)
 RET (Không có Operand) ⇔ POP PC
- Lưu ý : Lệnh RET chính là POP PC ⇔ trong đoạn chương trình chính SP
phải cố đònh, nghóa là không có sự vi phạm nào ở Stack.
Star
A = ∅
H  ∅ ∅
L  A
A  A – B
H  H+1
L  A
Stop
Y
N
3∅∅∅ :
Nibble cao Nibble thấp
HL
HL A
A
•Nhóm lệnh chuỗi :
(HL)  (DE)
- LDI ⇔ HL  HL + 1 & DE  DE + 1
BC  BC – 1
- LDIR : Lặp lại LDI đến khi BC = 0
⇔ chuyển dữ liệu (từ) vùng nhớ từ (HL) sang (DE) với chiều dài BC.
(HL)  (DE)
- LDD ⇔ HL  HL – 1

DE  DE – 1
BC  BC – 1
- LDDR : Lặp lại LDDR cho đến khi BC = 0
So sánh A & (HL)
- CPI ⇔ HL  HL + 1
BC  BC – 1
So sánh A & (HL) b.1
- CPIR ⇔ HL  HL + 1 b.2
BC  BC – 1 b.3
Hỏi ở b.1 A = (HL) ? hoặc ở b.3 BC = 0 ?
Sau đó xét Cờ Z để xem A = (HL) hay BC = 0.
Nhận xét :
- Sau lệnh CPIR thì ô nhớ có đòa chỉ (HL) –1 là ô nhớ đầu tiên = A
Và lưu ý:
Nếu BC > 1 và ô nhớ cuối cùng là ô cần tìm thì kết quả không đúng.
- Tương tự cho 2 lệnh CPD và CPDR.
•Các lệnh Restart :
- Dạng : RST p ⇔ CALL p
Với p có thể là : (00,08,10,18,20,28,30,38)h.
- Nó có ưu điểm là mã lệnh chỉ có 1 byte.
Ví dụ : Cho một bảng tra mã 7 đoạn có đòa chỉ đầu là table. Viết chương trình đổi 1
byte số Hexa trong thanh ghi A ra 2 byte mã 7 đoạn chứa vào H và L.
Giải :
CALL 3∅∅∅
CALL 3∅∅∅
Chương trình
chính (ctch)
Chương trình
con (ctc)
3∅∅∅ :

2∅∅3 :
21∅3 :
21∅∅:
(1)
(2)
(2’)
(1’)
+ Xét trường hợp đổi 1 Nibble ra mã 7 đoạn.
0 ÷ F
⇔ Mã 7 đoạn là nội dung của ô nhớ có đòa chỉ là table + X.
+ Xét trường hợp đổi 1 byte :
Chương trình :
LD H, A
AND 0 Fh A = 0 Y = L
LD L, A
SRL H
SRL H H = 0X
SRL H
SRL H
CALL Nibble
LD L, A
LD A, H
CALL Nibble
LD H, A
HALT
Nibble :
LD IX, Table
CALL Addr
LD A, (IX)
RET

Addr:
LD B, 00h
LD C, A
ADD IX, BC
RET
0
X
X
Y
0
X
0
Y
Shift phải 4
bit
AND với
0Fh
Lập lại 2 lần cho việc đổi 1 nibble trong
A ra mã 7 đoạn
Tra dò bảng
IX  IX + A
BÀI 3:
GIẢI MÃ ĐỊA CHỈ
*********
I. ĐẶT VẤN ĐỀ :
Khi ghép nhiều linh kiện vào một CPU người thiết kế phải kiểm soát sao cho: Với
một giá trò trên Addr Bus thì chỉ cho phép 1 trong các chân CE của các linh kiện là
bằng mức logic tích cực (thường là mức 0). Vấn đề này được giải quyết bằng cách
dùng những đường chỉ cao (còn dư) để điều khiển các chân CE.
II. CÁC PHƯƠNG PHÁP:

Ví dụ: Xét vấn đề ghép 1 ROM 2K (2716) và
1 RAM 2K (6116) vào CPU Z80
♦ Cách 1 : Dùng 1 đường đòa chỉ cao để kiểm soát 1 chân CE.

- Đối với ROM : A
15
, A
14
, A
13
, A
12
, A
11
A
10
, A
9
…………. A
0
+ Đòa chỉ đầu : 0 0 0 0 0 0 = 0000h
+ Đòa chỉ cuối : 0 0 0 0 0 1 = 07FFh
- Đối với RAM :
+ Đòa chỉ đầu : 1800h
+ Đòa chỉ cuối : 1FFFh
♦ Cách 2 : Dùng các mạch giải mã có sẵn.

A
13
A

14
A
15
A
B
C
G
1
G
2A
G
2B
74138
MERQ
Y
0
Y
1

Y
7




CE CE
ROM RAM
V
CC


A15
D6
D7
RD
WR

MEC
Q
CPU
Z-8φ
A
12
A
11

A1φ
D0
D7
RD
WR
RAM
CE
OE
WE
ROM
CE

A10
D0
D7

OE

A10
D0
D7
RD
- Đối với ROM:
+ Đòa chỉ đầu : 0000h
+ Đòa chỉ cuối : 07FFh
- Đối với RAM :
+ Đòa chỉ đầu : 2000h
+ Đòa chỉ cuối: 27FFh
 Khái niệm về bản đồ đòa chỉ ( Memory Map) :
♦ Một cách khác :
2K - ROM
2K - RAM
: 0000h
: 07FFh
: 2000h
: 27FFh
: FFFFh
WR
MERQ
RD
RAM
C
A
B
C
74138

G
1
G
2A
G
2B
A
11
A
12
A
13
A
14
A
15
Y
0
Y
1
Y
2
Y
7
♦ Một cách linh hoạt khác :
Nhờ 74 LS85 mà ta có thể thay đổi giá trò của B
3
…. B
0
do đó dẫn đến thay

đổi được các đòa chỉ A
3
…A
0
.
+Vcc
A
12
A
13
A
13
A
14
A
0
A=B
A
1
A
2
A
3
B
0
A=B
B
1
A<B
B

2
A>B
B
3
+Vcc
G
1
74135
74LS85
CE
BÀI 4:
BỘ GIAO TIẾP NHẬP XUẤT
**********
I. KHÁI NIỆM :
Bộ giao tiếp nhập xuất (I/ O Interface, Adaptor hay I/ O Port) : Là những linh kiện
giúp CPU (thực chất là các chương trình) điều khiển những thiết bò không ghép nối trực
tiếp vào CPU được.
- Phân loại :
+ Dựa vào dạng tín hiệu gởi ra thiết bò ngoài (và ngược lại):
song song (Parallel)
nối tiếp ( serial)
+ Dựa vào phương pháp làm việc với CPU
Ngắt (Interupt).
DMA ( Direct Memory Access).
II. KHẢO SÁT MỘT SỐ BỘ GIAO TIẾP THÔNG DỤNG :
1. Giao tiếp song song :
(1) PPI 8255 của Intel
•Sơ đồ chân :
•Nhóm giao tiếp với CPU
- A

0
, A
1
: Các đường đòa chỉ ( Addr Bus).
- D
0
…… D
7
: Các đường dữ liệu (Data Bus).
- RD, WR : Các chân đọc , viết.
D
0
PA
0
D
7
PA
7
A
0
PB
0
A
1
PB
7
PC
0
PC
7

Reset
Từ mạch giải
mã đòa chỉ
Từ mạch
Reset
Từ
CPU
TBNV
PPI
8255
PA
3
PA
2
PA
1
PA
0
Gnd
A
1
A
0
PC
7
PC
6
PC
5
PC

4
PC
0
PC
1
PC
2
PC
3
PB
0
PB
1
PB
2
PA
4
PA
5
PA
6
PA
7
Reset
D
0
D
1
D
2

D
3
D
4
D
5
D
6
D
7
Vcc
PC
7
PC
6
PB
5
PB
4
PB
3

×