Bài giảng Vi xử lý - Chương 2: Kiến trúc CPU và tập lệnh - Hồ Trung Mỹ

2.1 SƠ ĐỒ KHỐI CPU 8 BIT CƠ BẢN

2.2 TỔ CHỨC CÁC THANH GHI

2.3 TỔ CHỨC BỘ NHỚ

2.4 GHÉP NỐI BUS HỆ THỐNG

2.5 CHU KỲ BUS, CHU KỲ MÁY

2.6 CÁC PHƯƠNG PHÁP ĐỊNH ĐỊA CHỈ

2.7 TẬP LỆNH

pdf45 trang | Chuyên mục: Vi Xử Lý – Vi Điều Khiển | Chia sẻ: tuando | Lượt xem: 483 | Lượt tải: 0download
Tóm tắt nội dung Bài giảng Vi xử lý - Chương 2: Kiến trúc CPU và tập lệnh - Hồ Trung Mỹ, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
song song, nó làm cho Z80 mở rộng 
thêm thành 2 cổng I/O song song 8 bit. Chip còn có thêm đường 
tạo ngắt cho Z80 và cho phép nối logic OR các chân này lại.
– Z80 CTC là mạch bộ đếm-định thì (counter-timer circuit) để cho 
người thiết kế hệ thống Z80 sử dụng nó thực hiện các chức năng 
đếm và định thì.
– Z80 SIO là mạch nhập/xuất nối tiếp (Serial Input/Output Circuit), 
chip này cung cấp cho hệ Z80 với 2 cổng nối tiếp mà có thể sử 
dụng để liên lạc với các thiết bị ngoại vi nối tiếp khác.
– Z80 DMA thực hiện việc truy cập bộ nhớ trực tiếp với thiết bị ngoài.
Thí dụ sơ đồ phần cứng một kit dựa trên Z80
3/26/2011
17
2.5 CHU KỲ BUS, CHU KỲ MÁY
Chu kỳ lệnh, chu kỳ máy và các trạng thái T
• Chu kỳ lệnh là thời gian cần để hoàn tất việc thực 
thi một lệnh.
• Chu kỳ máy được định nghĩa là thời gian cần hoàn 
tất một tác vụ truy cập bộ nhớ, truy cập I/O,
(Với Z80, chu kỳ máy có thể kéo dài từ 3 đến 6 chu 
kỳ xung nhịp )
• T-state = 1/f (f: tần số Clock của Z80)
– f= 4MHZ  T-state=0.25 uS
3/26/2011
18
Thí dụ định thì CPU Z80
Chú ý;
• 1 chu kỳ lệnh (Instruction Cycle) = 1  6 chu kỳ máy (Machine Cycle)
• 1 chu kỳ máy (Machine Cycle) = 3  6 chu kỳ T (T Cycle)
• 1 chu kỳ T = 1/fCLK (fCLK ; tần số của thạch anh gắn vào Z80)
chu kỳ máy
Có 7 chu kỳ máy với Z80:
1. Nhận mã lệnh (chu kỳ M1)
2. Đọc hoặc ghi dữ liệu bộ nhớ
3. Đọc hoặc ghi I/O
4. Yêu cầu/ghi nhận bus (Bus Request/Acknowledge)
5. Yêu cầu/ghi nhận INT
6. Yêu cầu/ghi nhận NMI
7. Thoát khỏi lệnh HALT
3/26/2011
19
Chu kỳ nhận lệnh (chu kỳ M1)
Thanh ghi R (Refresh)
• Được tăng ở mọi chu kỳ M1. 
• Bit 7 của nó không bao giờ bị thay đổi bởi M!; 
chỉ có 7 bit thấp tham gia trong phép cộng. Vì 
vậy bit 7 giữ nguyên trị cũ. 
• Ta chỉ có thể thay đổi bit 7 bằng lệnh LD R,A
• LD A,R và LD R,A truy cập thanh ghi R sau khi 
nó được tăng
• R thường được dùng làm giá trị ngẫu nhiên 
trong chương trình nhưng dĩ nhiên nó thật sự 
không ngẫu nhiên.
3/26/2011
20
Thêm một trạng thái đợi vào chu kỳ T1
Chu kỳ đọc hoặc ghi bộ nhớ
3/26/2011
21
Thêm trạng thái đợi vào bất kỳ 
chu kỳ bộ nhớ nào
Chu kỳ nhập hoặc xuất 
(Input or Ouput Cycle)
During I/O operations a single wait state is automatically inserted
3/26/2011
22
Chu kỳ yêu cầu bus/ ghi nhận
Chu kỳ yêu cầu/ghi nhận ngắt
Two wait states are automatically added to this cycle
3/26/2011
23
Chu kỳ yêu cầu/ghi nhận bus với NMI
Chu kỳ làm tươi M1
• Takes 4T to 6Ts
• Z80 includes built in circuitry for refreshing 
DRAM
• This simplifies the external interfacing 
hardware
• DRAM consists of MOS transistors, which 
store Information as capacitive charges; 
each cell needs to be periodically refreshed
• During T3 and T4 (when Z80 is performing 
internal ops), the low order address is used 
to supply a 7-bit address for refresh 
3/26/2011
24
Tín hiệu Wait
• the Z80 samples the wait signal during T2 if 
low then Z80 adds wait
• states to extend the machine cycle
• used to interface memories with slow
response time 
• Slow memory is low cost
Ngắt (Interrupt)
There are two types of interrupts: 
• non mask-able (NMI)
– Could not be masked
– Jump to 0066H of memory
• mask-able(INT)
– Has 3 mode
– Can be set with the IM x Instruction
– IM 0 sets Interrupt mode 0
– IM 1 sets Interrupt mode 1
– IM 2 sets Interrupt mode 2
3/26/2011
25
Các chế độ ngắt
• Mode 0: 
– An 8 bit opcode is Fetched from Data BUS and executed 
– The source interrupt device must put 8 bit opcode at data 
bus 
– 8 bit opcode usually is RST p instructions
• Mode 1: 
– A jump is made to address 0038h
– No value is required at data bus
• Mode 2: 
– A jump is made to address (register I × 256 + value from 
interrupting device that puts at bus)
– I is high 8 bit of interrupt vector
– Value is low 8 bit of interrupt vector
3/26/2011
26
Chu kỳ thoát khỏi HALT
Điều kiện thoát: INT, NMI, RESET
Định thì RESET
3/26/2011
27
CPU Reset
2.6 CÁC PHƯƠNG PHÁP 
ĐỊNH ĐỊA CHỈ
3/26/2011
28
Định địa chỉ trong Z80
• Phần lớn các lệnh Z80 làm việc với dữ liệu được lưu trữ trong
các thanh ghi CPU, bộ nhớ ngoài, hoặc trong các cổng I/O. Z80
có cách định địa chỉ sau:
– Định địa chỉ tức thời (hằng số 8 bit)
– Định địa chỉ tức thời mở rộng (hằng số 16 bit)
– Định địa chỉ trực tiếp (địa chỉ 8 bit)
– Định địa chỉ trực tiếp mở rộng (địa chỉ 16 bit)
– Định địa chỉ trang 0 (có sửa đổi)
– Định địa chỉ tương đối
– Định địa chỉ theo chỉ số
– Định địa chỉ thanh ghi
– Định địa chỉ hiểu ngầm
– Định địa chỉ gián tiếp qua thanh ghi
– Định địa chỉ cho bit
Định địa chỉ tức thời
• Byte theo sau mã lệnh là toán hạng thật.
• Thí dụ của loại lệnh này là nạp hằng số vào 
thanh ghi tích lũy.
Thí dụ: LD A, 10H
3/26/2011
29
Định địa chỉ tức thời mở rộng
• Hai byte theo sau mã lệnh là toán hạng thật.
• Thí dụ của loại lệnh này là nạp dữ liệu 16 bit 
vào cặp thanh ghi (thí dụ HL).
Thí dụ: LD HL, 8010H
Định địa chỉ trực tiếp
• Cung cấp địa chỉ 8 bit của toán hạng ngay sau 
mã lệnh
• TD: IN A, (20H)
3/26/2011
30
Định địa chỉ [trực tiếp] mở rộng
• Cung cấp địa chỉ 16 bit của toán hạng ngay sau 
mã lệnh
Định địa chỉ trang 0 (có sửa đổi)
• Z80 có lệnh CALL đặc biệt 1 byte để nhảy đến 8 vị trí 
(chỉ bởi nhóm bit b5b4b3) của trang 0 của bộ nhớ. Lệnh 
này được thực thi như khởi động lại, nó đặt PC có giá 
trị địa chỉ thật ở trang 0. Giá trị của lệnh này là cho 
phép dùng 1 byte để chỉ địa chỉ 16 bit.
• Thí dụ: RST p
với giá trị p có thể là 00H, 08H, 10H, 18H, 20H, 28H, 
30H, hoặc 38H.
3/26/2011
31
Định địa chỉ tương đối
• Sử dụng 1 byte dữ liệu theo sau mã lệnh để chỉ độ dời 
so với địa chỉ lệnh kế và lệnh định nhảy đến. Độ dời D 
này số có dấu biểu diễn theo số bù 2 và địa chỉ thật 
được tính như sau (theo độ dời D và địa chỉ lệnh hiện 
tại A):
EA = D + A + 2
Độ dời D có thể có giá trị từ -128 đến +127.
• Thí dụ: JR 10H
Định địa chỉ theo chỉ số
• Byte dữ liệu theo mã lệnh là độ dời D (số có 
dấu bù 2) được cộng vào với thanh ghi chỉ số 
(IX hoặc IY) để chỉ đến ô nhớ dữ liệu, nghĩa là 
EA = IX (hoặc IY) + D. Loại lệnh này có mã 
lệnh dài 2 byte và trong mã lệnh có các bit chỉ 
ra thanh ghi chỉ số nào được chọn IX hoặc IY.
• Thí dụ: LD A, (IX + 10H)
LD B, (IY + 20H)
3/26/2011
32
Định địa chỉ thanh ghi
• Nhiều mã lệnh Z80 chứa các bit thông tin cho 
biết thanh ghi CPU nào được sử dụng trong 
lệnh.
• Thí dụ: LD A, B
Định địa chỉ hiểu ngầm
• Mã lệnh cho biết 1 hay nhiều thanh ghi CPU 
chứa toán hạng. Thí dụ có một số lệnh hiểu 
toán hạng để ở thanh ghi tích lũy.
3/26/2011
33
Định địa chỉ gián tiếp qua thanh ghi
• Loại định địa chỉ này cho biết cặp thanh ghi 16 
bit nào (như HL) được dùng làm con trỏ chỉ tới 
vị trí ô nhớ.
• Thí dụ: LD A, (HL)
LD (HL), 10H
Định địa chỉ cho bit
• Z80 có nhiều lệnh đặt bit, xóa bit và kiểm tra bit. Các lệnh này 
cho phép bất cứ vị trí bộ nhớ nào hoặc thanh ghi CPU sẽ được sử 
dụng cho các phép toán bit qua một trong 3 cách định địa chỉ 
trước (thanh ghi, gián tiếp qua thanh ghi và theo chỉ số) và 3 bit 
trong mã lệnh sẽ cho biết bit nào trong 8 bit được xử lý. 
Thí dụ: BIT 3, A
SET 0, (HL)
RES 7, (IX + 10H)
Chú ý là có những lệnh kết hợp một số cách địa chỉ chung trong 
một lệnh.
3/26/2011
34
2.7 TẬP LỆNH
• Tập lệnh Z80 gồm có 158 lệnh, trong đó đã bao gồm 
78 lệnh của 8080. Các lệnh được chia làm các nhóm 
chính sau:
– Nạp 8 bit và nạp 16 bit
– Hoán đổi, chuyển khối và tìm kiếm
– Số học và logic 8 bit
– Số học 16 bit
– Số học đa dụng và điều khiển CPU
– Xoay và dịch bit
– Xử lý bit (Các phép toán trên bit)
– Nhập và xuất
– Nhảy, rẽ nhánh chương trình
– Gọi chương trình và quay về chương trình gọi.
3/26/2011
35
• Khi viết chương trình để thuận tiện thường ta 
dùng hợp ngữ mà lệnh có dạng như trong thí 
dụ sau:
Pseudo Codes
• Để có thể viết chương trình dễ dàng hơn các trình 
hợp ngữ thường cho thêm các tác vụ giả (pseudo 
operation) hay còn gọi là các lệnh giả như: EQU, 
DEFB, DEFW, DEFS, ORG, END, MACRO.
1. EQU (nghĩa là equate=bằng; dùng để gán trị)
– Thí dụ: Nội dung ô nhớ SUM = A + 10H
SUM: EQU 1900H ; SUM = 1900H
COUNT: EQU 10H
ADD A, COUNT ; ADD A, 10H
LD (SUM), A
3/26/2011
36
2. DEFB (Define Byte = Định nghĩa Byte) và DEFW 
(Define Word = Địnhnghĩa Word)
Thí dụ:
CONST: EQU 52H
ADRS: EQU 1900H
TABLE: DEFW ADRS
DEFB CONST
Khi đó các vùng nhớ (giả sử địa chỉ ở TABLE là 
1951H) như sau
3. DEFS (Define Storage = Định nghĩa vùng lưu 
trữ)
Thí dụ: (Giả sử lệnh DEFS 10H ở địa chỉ 1800H)
1800H DEFS 10H ; dành 16 byte lưu trữ
1810H LD HL, 10H
1811H LD DE, 20H
3/26/2011
37
4. ORG (Origin = bắt đầu; định nghĩa địa chỉ bắt đầu) 
và END (kết thúc chương trình)
Thí dụ:
ORG 100H ; Chương trình bắt đầu từ 100H
START: LD A, 1FH ; bắt đầu chương trình
INC A
OUT (11H), A
END ; kết thúc chương trình
5. MACRO (Định nghĩa một đoạn chương 
trình mà trình hợp ngữ sẽ tự động chèn vào 
toàn bộ đoạn chương trình này khi có tham 
chiếu tên macro đó và bắt đầu đoạn macro 
bằng MACRO và kết thúc bằng ENDM)
Thí dụ: 
REF: MACRO
LD H, (IX+1)
LD L, (IY+1)
INC IX
INC IY
ENDM
3/26/2011
38
• Thí dụ: Điền các số 0 vào các ô nhớ có địa chỉ 
từ 8100H đến 817FH.
ORG 8000H
LD HL, 8100H
LD A, 00H
LD C, 80H
LOOP: LD (HL), A
INC HL
DEC C
JP NZ, LOOP
HALT
END
• Thí dụ: Nhân 10 lần giá trị được cất trong cặp 
thanh ghi HL.
MULT10: ADD HL, HL ; 2X HL
LD D, H ; (HL)=>(DE)
LD E, L
ADD HL, HL ; 4 x HL
ADD HL, HL ; 8 x HL
ADD HL, DE ; (8+2) x HL
RET
3/26/2011
39
• Thí dụ: Chuyển chuỗi dữ liệu 737 byte ở vị trí bộ 
nhớ DATA đến vị trí bộ nhớ BUFFER, tác vụ này 
được lập trình như sau
LD HL, DATA ; Lấy địa chỉ bắt đầu của DATA
LD DE, BUFFER ; Lấy địa chỉ bắt đầu của BUFFER
LD BC, 737 ; Chiều dài của chuỗi ký tự
LDIR ; Chuyển chuỗi–Chuyển bộ nhớ chỉ 
; bởi HL vào ô nhớ được chỉ bởi DE 
; tăng HL và DE lên 1
;Giảm bớt BC đi 1, cho đến khi BC= 0.
3/26/2011
40
3/26/2011
41
3/26/2011
42
3/26/2011
43
3/26/2011
44
3/26/2011
45

File đính kèm:

  • pdfbai_giang_vi_xu_ly_chuong_2_kien_truc_cpu_va_tap_lenh_ho_tru.pdf