• Middle mode : Không gian địa chỉ lớn nhất có thể truy xuất được là 16Mbyte tổng của vùng chương trình và dữ liệu.. CHƯƠNG TRÌNH HỢP NGỮ• Khai báo dữ liệu trong section data .SECTION D_
Trang 1Chương 1
GIỚI THIỆU MICROCOMPUTER
Trang 2• “Micro – Computer” : những thiết bị bán
dẫn chứa các thành phần điện tử thực hiện
các chức năng : tính toán, điều khiển hệ
Trang 3• MicroComputer có mặt trong hầu hết các
thiết bị điện tử, kỹ thuật số, hệ thống điều
khiển… trong cuộc sống hiện nay
• Tại sao microcomputer được sử dụng rộng
rãi trong nhiều sản phẩm ?
Phím được nhấn
Thay đổi nội dung
Tia hồng ngoại Hiển thị thông tin/
giao tiếp với trạm
Trang 4• Các bước cần thiết để phát triển chương
trình cho microcomputer
• Lập trình : viết và biên dịch chương trình (chuyển
chương trình sang dạng mã nhị phân mà
microcomputer có thể hiểu và thực thi)
• ICE control : gồm các board mạch dùng để “nạp”
chương trình đã được biên dịch cho
micro-computer, debug…
• Nhúng microcomputer đã có chương trình vào hệ
thống và bảo trì
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 5• Kiến trúc của MicroComputer
Trang 6• Kiến trúc của MicroComputer
• CPU : đơn vị xử lý trung tâm CPU 4-bit, 8-bit,
16-bit, 32-bit, 64-bit
• Memory : bộ nhớ chứa lệnh và dữ liệu, gồm 2 loại
là ROM và RAM
• Input : thiết bị nhập liệu, ví dụ : bàn phím, công tắc,
cảm biến…
• Output : thiết bị xuất dữ liệu, ví dụ : monitor, lcd,
led 7 đoạn, led matrix…
• (Hình minh họa)
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 7trình
• CPU thực hiện lặp đi lặp lại chu kỳ gồm 3 bước :
1 Đọc lệnh từ bộ nhớ (Instruction fetch)
2 Giải mã lệnh (Instruction decode)
3 Thực thi lệnh (instruction execute)
• Tại một thời điểm CPU chỉ thực thi một lệnh
Thời gian thực hiện một lệnh phụ thuộc vào xung
“clock”.
• Một số kỹ thuật : pipeline, superscalar…
Trang 8+
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 9MICROCOMPUTER
Trang 10• Single-Chip / Multi-Chip Microcomputer
Single-Chip Microcomputer
Multi-Chip Microcomputer
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 11• Trong xử lí số giá trị điện áp cao và thấp được
biểu diễn bởi hai giá trị 0 và 1, tất cả những thông tin đều được biểu diễn bằng sự kết hợp của 0 và 1
• Một kí số nhị phân gọi là một bit, 8 bit kết hợp tạo
thành một byte Nhiều byte kết hợp tạo word, long word
• Nội dung trong bộ nhớ là sự kết hợp các giá trị 0
và 1 Tuy nhiên chúng có ý nghĩa hoàn toàn khác nhau, lệnh, dữ liệu và kí tự đều được biểu diễn bằng giá trị nhị phân
Trang 12• Với mỗi vi điều khiển sử dụng ngôn ngữ máy
khác nhau
• Ví dụ lệnh ADD trong H8 và Z80 :
Lệnh ADD của H8
1000000000000001 ADD.B #1, R0L Lệnh ADD của Z80
1100011000000001 ADD A, 1
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 13Unsigned binary number
Character Data ASCII code
Trang 14• Numeric data : thông thường các giá trị số là số
nguyên, có hai biểu thức số nguyên :
• Biểu diễn giá trị dương (unsigned).
• Biểu diễn cả giá trị dương và âm (signed) : hệ thống số
bù hai đươc sử dụng để biểu diễn.
• Ví dụ : chuyển giá trị nhị phân không dấu sang giá trị
Trang 15• Numeric data :
• Ví dụ biểu diễn số nguyên có dấu trong hệ thống số bù
hai (the 2’s complement) : dùng bit có trọng số cao nhất
để biết giá trị là dương hay âm.
0 0000101 (+5)
MSB : Nếu 0 thì >=0, 1 thì <0 Đảo bit : 00000101 (+5) Æ 11111010 (bù 1 của 5)
11111010 đảo từng bit trong giá trị ban đầu + 1 cộng với 1
11111011 (- 5) giá trí đã đổi dấu
Trang 16• Numeric data :
• Với n bit khi thể hiện giá trị không dấu sẽ thể hiện giá trị
trong tầm từ 0 Æ 2ⁿ-1, còn với giá trị có dấu từ (- 2 n-1 )
Æ 2 n-1 -1
• Ví dụ về phép cộng :
Kí hiệu nhị phân Không dấu Có dấu
11110010 + 11111010 111101100
242 250 492
-14 -16 -20
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 17• Numeric data :
• BCD : đây là cách thể hiện giá trị thập phân bằng cách
dùng 4 bit để biểu diễn một kí số thập phân, nếu 8 bit được dùng thì sẽ thể hiện giá trị thập phân từ 00 Æ 99
• Ví dụ về BCD :
BCD code
0011 0100 (34) + 0100 1001 (49)
1000 0011 (83)
Trang 18• Character data :
• Mỗi kí tự được biễu diễn bởi n bit, mã ASCII (American
Standard Code for Information Interchange) dùng 7 bit (0 Æ 127) để mã hóa một ký tự (dùng luôn 1 byte
nhưng bỏ bit 8) Mã từ 0 - 31 là các mã điều khiển như CR=13 (Carriage Return), LF=10 (Line Feed), ESC=27 (Escape) mã 32 miêu tả ký tự trống, 33 miêu tả ký tự
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 19Chương 2
TỔNG QUAN VỀ HỌ H8SX
H8SX/1582
Trang 20H8 MICROCOMPUTER
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 21H8 MICROCOMPUTER
Trang 22H8SX MICROCOMPUTER
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 23H8SX CPU
• CPU CISC 32-bit tốc độ cao.
• 8 thanh ghi đa dụng 32-bit (có thể sử dụng như
16 thanh ghi 16-bit hay 16 thanh ghi 8-bit).
• Tập lệnh gồm 87 lệnh.
• 11 phương thức định địa chỉ
• 2 thanh ghi nền :
• Vector base register
• Short address base register
• Quản lý 4-Gbyte không gian bộ nhớ chương trình
Trang 24H8SX CPU
• Chế độ nguồn giảm
• Lệnh SLEEP chuyển sang chế đọ này.
• Lựa chọn tốc độ clock hoạt động của CPU
• Tính toán tốc độ cao
• Hầu hết các lệnh thông dụng thực thi trong 1 hoặc 2 chu kỳ.
• Cộng trừ hai thanh ghi 8/16/32-bit : 1 chu kỳ
• Nhân hai thanh ghi 8-bit x 8-bit: 1 chu kì
• Chia hai thanh ghi 16-bit ÷ 8-bit : 10 chu kì
• Nhân hai thanh ghi 16-bit x 16-bit : 1 chu kì
• Chia hai thanh ghi 32-bit ÷ 16-bit : 18 chu kì
• Nhân hai thanh ghi 32-bit x 32-bit : 5 chu kì
• Chia hai thanh ghi 32-bit ÷ 32-bit : 18 chu kì
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 25CHẾ ĐỘ HOẠT ĐỘNG
• Normal mode : không gian địa chỉ lớn nhất 64Kbyte
có thể truy xuất
• Middle mode : Không gian địa chỉ lớn nhất có thể
truy xuất được là 16Mbyte (tổng của vùng chương
trình và dữ liệu) Đối với từng phần khác nhau thì,
đến 16 Mbyte cho vùng chương trình hoặc đến
64Kbyte cho vùng dữ liệu
• Advance mode : Không gian địa chỉ lớn nhất 4
Gbyte có thể được truy xuất một cách tuyến tính Đối
với các vùng khác nhau, vùng chương trình lên đến
16Mbyte và vùng dữ liệu lên đến 4Gbyte có thể được
cấp phát
• Maximum mode : Vùng không gian địa chỉ lớn nhất
có thể truy xuất một cách tuyến tính là 4Gbyte
Trang 26KHÔNG GIAN BỘ NHỚ
H’0000
H’FFFF
Data +Code
Data
64 KByte
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 274 GByte
Maximum mode
Trang 28R1 R2 R3 R4 R5 R6 R7
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 29(không dùng) SBR
0
(dấu mở rộng) MACH MAC
I : Interrupt mask bit N : Negative flag
UI : User bit/ Interrupt mask bit Z : Zero flag
H : Half carry bit V : Overflow flag
MACH MACL
Trang 30BỘ THANH GHI H8SX
Giá trị của VBR là địa chỉ nền của vùng vector ngoại
lệ (trừ reset và lỗi địa chỉ CPU) Người dùng có thể
đặt bảng vector tại một địa chỉ bằng cách thiết lập giá
trị thanh ghi này (20 bit cao được dùng)
Ví dụ thanh ghi được khởi tạo giá trị H’3000 Địa chỉ
của mỗi vector ngắt là H’3000 + (địa chỉ vector của
nguồn ngắt
(không dùng) VBR
0
(không dùng)
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 31BỘ THANH GHI H8SX
Thanh ghi SBR thiết lập vùng bắt đầu cho không
gian địa chỉ tuyệt đối 8-bit (@aa:8) Chỉ 24 bit cao
được sử dụng
(không dùng) SBR
Trang 32Address L
Address 2M Address 2M+1 Address 2N
1-bit data
Byte data Word data
Long word data
MSB
LSB MSB
LSB
2N +1 2N +2 2N +3
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 36VI ĐiỀU KHIỂN H8SX/1582
• H8SX CPU
• Tính toán tốc độ cao : lệnh căn bản tốn 1 chu kỳ.
• Thời gian thưc thi lệnh tối thiểu : 21 ns (48 MHz @5V).
• Nhân chia 32-bit.
• Vcc : 5V.
• Độ rộng bus được mở rộng
• H8SX CPU
• On-chip flash ROM : 256 Kbyte
• Internal RAM : 12 Kbyte
• Tăng cường khối ngoại vi
• Timer 16-bit (TPU) : 12 kênh.
• Bộ tạo xung output (PPG) hoạt động cùng TPU.
• Giao tiếp nối tiếp bất đồng bộ/đồng bộ : SCI (2 kênh), SSU (3 kênh).
• Bộ chuyển A/D : 16 kênh.
• I/O Port : 65 I/O port, 17 input port.
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 37VI ĐiỀU KHIỂN H8SX/1582
CPU: Central processing unit
DTC: Data transfer controller
DMAC: DMA controller
Trang 38Chương 3
HỢP NGỮ H8
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 39H8SX CPU OVERVIEW
• CPU 32 bit tốc độ cao
• Quản lý 4GB không gian bộ nhớ
• CPU có 4 chế độ hoạt động
Trang 40Advance mode của H8SX/1582
• Ánh xạ địa chỉ của H8SX/1582
H’000000
On-chip ROM (256 KByte)
Vùng nhớ chứa dữ liệu tạm thời
H’FFFF00
Reserved
H’FFFF20
On-chip I/O Registers
H’FFFFFF
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 42KH & KTMT ĐH Bách Khoa TP.HCM
Trang 43CHƯƠNG TRÌNH HỢP NGỮ
• Dạng thức lệnh
ADD Sz <EAs> , <EAd>
Tên gợi nhớ : ADD, MOV…
Kích thước toán hạng : B (byte), W
(word), L (Longword)
Toán hạng đích : thanh ghi, hằng (trị),
tên (địa chỉ), địa chỉ trực tiếp…
Toán hạng nguồn : thanh ghi, hằng (trị), tên
(địa chỉ), địa chỉ trực tiếp…
Trang 45‘.CPU’ cho biết tên CPU, chế độ hoạt động
‘.SECTION’ đặc tả section trong bộ nhớ
tên của section code : section chứa lệnh
data : section chứa khai báo dữ liệu
địa chỉ bắt đầu của
section kết thúc file
Trang 46Tên hằng Lệnh khai báo hằng
Giá trị hằng
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 47CHƯƠNG TRÌNH HỢP NGỮ
• Khai báo dữ liệu trong section data
.SECTION D_RAM, DATA, LOCATE=H’0FF9000
Địa chỉ của biến (tên)
Lệnh khai báo vùng nhớ cho biến (.B, L,.W : kích thước
của một block)
Số block cần cấp phát
Trang 48CHƯƠNG TRÌNH HỢP NGỮ
• Khai báo dữ liệu trong section data
.SECTION D_ROM, DATA, LOCATE=H’02001
DATA1 : DATA.B 5, 10, H’20
DATA2 : DATA.W H’500
.END
05 10 H’20 H’05 H’00
H’2001 DATA1
H’2004 DATA2
Địa chỉ của biến (tên)
Lệnh khai báo giá trị (.B, L,.W : kích thước của một
block)
Giá trị được đưa vào
vùng nhớ
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 50đúng sai
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 51X X
H’2000 H’2001 H’2002
+
Trang 52CHƯƠNG TRÌNH HỢP NGỮ
• Ánh xạ địa chỉ của H8SX/1582
H’000000
On-chip ROM (256 KByte)
H’03FFFF
Reserved
H’FF9000
On-chip RAM (12 KByte)
H’FFC000
Reserved
H’FFEA00
On-chip I/O Registers
H’FFFF00
Reserved
H’FFFF20
On-chip I/O Registers
H’FFFFFF
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 53.SECTION D_ROM, DATA, LOCATE=H’02000 DATA1 : DATA.B 10
DATA2 : DATA.B 100
.SECTION D_RAM, DATA, LOCATE=H’0FF9000 ANSWER : RES.B 1
Trang 55MULU/U MULS/U EXTU EXTS TAS
MAC LDMAC STMAC CLRMAC
Trang 56TẬP LỆNH H8SX
• Nhóm lệnh phép toán luận lý
• Nhóm lệnh thao tác trên bit
AND OR XOR NOT
BSET BCLR BNOT BTST BAND BIAND BOR BIOR BXOR BIXOR
BLD BILD BST BIST BSET/EQ BSET/NE BCLR/EQ BCLR/NE BSTZ BISTZ
BFLD BFST
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 57TRAPA RTE SLEEP NOP RTE/L
LDC STC ANDC ORC XORC
Trang 58PHƯƠNG THỨC ĐỊNH ĐỊA CHỈ
• Trực tiếp thanh ghi : Rn
Giá trị của toán hạng là nội dung của một thanh ghi mở rộng 8,
16, 32 bit.
• Gián tiếp thanh ghi : @ERn
Giá trị toán hạng là nội dung của vị trí bộ nhớ mà được chỉ đến
bởi nội dung của một thanh ghi địa chỉ (ERn).
• Gián tiếp thanh ghi với độ dịch :
@(d:2, ERn), @(d:16, ERn), @(d:32, ERn)
Giá trị của toán hạng là nội dung của một vị trí bộ nhớ mà được
trỏ đến bởi tổng của nội dung của một thanh ghi địa chỉ (ERn)
và một độ dịch 16 hay 32 bit.
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 59PHƯƠNG THỨC ĐỊNH ĐỊA CHỈ
• Gián tiếp thanh ghi chỉ số với độ dịch :
@(d:16,RnL.B), @(d:32,RnL.B), @(d:16,Rn.W),
@(d:32,Rn.W), @(d:16,ERn.L),@(d:32,ERn.L)
Địa chỉ của toán hạng được tính bằng tổng của thanh ghi địa chỉ
mở rộng không dấu (ERn) nhân vơi 1,2 hay 4 (B, W hay L) và
độ dịch sau khi được mở rộng dấu.
• Trực tiếp thanh ghi với một sự tăng sau, giảm
trước, tăng trước và giảm sau :
@ERn+, @-ERn, @+ERn,
@ERn-Nội dung của các thanh ghi là địa chỉ vùng nhớ của toán hạng
và sẽ được tăng hoạc giảm trước hoặc sau khi thực thi.
• Trực tiếp : #xx
Giá trị của toán hạng là dữ liệu 8-bit (#xx:8), 16-bit (#xx:16), hay
32-bit (#xx:32).
Trang 60PHƯƠNG THỨC ĐỊNH ĐỊA CHỈ
• Địa chỉ tuyệt đối :
@aa:8, @aa:16, @aa:24, @aa:32
Giá trị toán hạng là nôi dung của một vị trí bộ nhớ mà
được chỉ đến bởi một địa chỉ tuyệt đối được bao gồm
trong mã lệnh
• Thanh ghi PC tương đối :
@(d:8,PC), @(d:16,PC)
Chế độ này được sử dụng trong câu lệnh Bcc và BSR Giá trị
toán hạng là một địa chỉ rẽ nhánh 32-bit, mà là tổng của một độ
dịch 8 hay 16-bit trong mã lệnh và địa chỉ 32-bit của nội dung
thanh ghi PC
• PC tương đối với thanh ghi đánh chỉ số :
@(RnL, B, PC), @(Rn, W, PC), @(ERn, L, PC)
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 61PHƯƠNG THỨC ĐỊNH ĐỊA CHỈ
Chế độ này có thể được sử dụng bởi các lệnh JMP và JSR Giá
trị toán hạng là một địa chỉ rẽ nhánh, địa chỉ mà là nội dung của
một vị trí bộ nhớ được chỉ tới bởi một địa chỉ 8 bit tuyệt đối.
• Gián tiếp bộ nhớ mở rộng : @@vec:7
Chế độ này có thể sử dụng bởi các câu lệnh JMP và JSR Giá
trị của toán hạng là một địa chỉ rẽ nhánh, mà là nội dung của
một vị trí bộ nhớ được chỉ đến bởi kết quả thao tác sau: tổng
của 7-bit dữ liệu trong mã lệnh và giá trị của H’80 được nhân
bởi 2 hay 4.
Trang 62• <EAd>: trực tiếp/gián tiếp thanh ghi, địa chỉ tuyệt đôi, gián tiếp với sự tăng/giảm trước/sau, gián tiếp thanh ghi với độ dịch.
• ERd: trực tiếp thanh ghi.
• Ví dụ :
• MOVA/L @(H'FFFFFF00, R0L), ER1
• MOVA/L @(H'FFFFFF00, @(H'FFFFF000, R0.W).B), ER1
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 64ER6 + 1 Æ ER6 R4 - 1 Æ R4
Until R4 = 0
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 66ĐẶC TẢ TẬP LỆNH
ADD
ADD.Sz <EAs>, <EAd> (Sz:B/W/L)
• <EAd> + <EAs> Æ <EAd>
ADDX.Sz <EAs>, <EAd> (Sz:B/W/L)
• <EAd> + <EAs> + C > <EAd>
Trang 67ĐẶC TẢ TẬP LỆNH
SUB.Sz <EAs>, <EAd> (Sz : B/W/L)
• <EAd> - <EAs> Æ <EAd>
SUBX.Sz <EAs>, <EAd> (Sz : B/W/L)
• <EAd> − <EAs> − C Æ <EAd>
Trang 69• <EAd>: trực tiếp/gián tiếp thanh ghi, địa chỉ tuyệt đôi, gián tiếp với sự tăng/giảm trước/sau, gián tiếp thanh ghi với độ dịch.
• Chế độ đánh địa chỉ : trực tiếp/gián tiếp thanh ghi, địa chỉ tuyệt
đôi, gián tiếp với sự tăng/giảm trước/sau, gián tiếp thanh ghi với độ
dịch.
• Ví dụ :
Trang 73• Rd: Trực tiếp thanh ghi
• <EAs>: Trực tiếp thanh ghi, trực tiếp (4 bit)
• Rd: Trực tiếp thanh ghi
• <EAs>: Trực tiếp thanh ghi, trực tiếp (4 bit)
• Ví dụ:
Trang 74• Rd: Trực tiếp thanh ghi
• <EAs>: Trực tiếp thanh ghi, trực tiếp (4 bit)
• Rd: Trực tiếp thanh ghi
• <EAs>: Trực tiếp thanh ghi, trực tiếp (4 bit)
• Ví dụ:
• DIVXS.W R1, ER0
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 75• Rd: Trực tiếp thanh ghi
• <EAs>: Trực tiếp thanh ghi, trực tiếp (4 bit)
• Rd: Trực tiếp thanh ghi
• <EAs>: Trực tiếp thanh ghi, trực tiếp (4 bit)
• Ví dụ:
• DIVU.W R1, ER0
Trang 76• Rd: Trực tiếp thanh ghi
• <EAs>: Trực tiếp thanh ghi, trực tiếp (4 bit)
• Rd: Trực tiếp thanh ghi
• <EAs>: Trực tiếp thanh ghi, trực tiếp (4 bit)
• Ví dụ:
• DIVS.W R1, ER0
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 77• Rd: Trực tiếp thanh ghi
• <EAs>: Trực tiếp thanh ghi, trực tiếp (4 bit)
• Rd: Trực tiếp thanh ghi
• <EAs>: Trực tiếp thanh ghi, trực tiếp (4 bit)
• Ví dụ:
Trang 78ĐẶC TẢ TẬP LỆNH
EXTU
EXTU.W/L <EAd>
EXTU.L #2, <EAd>
• Zero extension <EAd> → <EAd>
• Chế độ đánh địa chỉ: trực tiếp/gián tiếp thanh ghi, địa chỉ tuyệt
đôi, gián tiếp với sự tăng/giảm trước/sau, gián tiếp thanh ghi với độ dịch.
• Sign extension <EAd> → <EAd>
• Chế độ đánh địa chỉ: trực tiếp/gián tiếp thanh ghi, địa chỉ tuyệt
đôi, gián tiếp với sự tăng/giảm trước/sau, gián tiếp thanh ghi với độ dịch.
• Ví dụ:
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 79MAC @ERn+, @ERm+
• (EAn) × (EAm) + MAC register → MAC register
ERn + 2 → ERn ERm + 2 → ERm
• Chế độ đánh địa chỉ: Gián tiếp thanh ghi với sự tăng sau.
• Ví dụ:
• MAC @ER1+,@ER2+
Trang 80ĐẶC TẢ TẬP LỆNH
LDMAC ERs, MAC register
• ERs → MACH or ERs → MACL
• Chế độ đánh địa chỉ: trực tiếp thanh ghi
STMAC MAC register, ERd
• MACH → ERd or MACL → ERd
• Chế độ đánh địa chỉ: Trực tiếp thanh ghi
CLRMAC
• 0 → MACH, MACL
KH & KTMT ĐH Bách Khoa TP.HCM
Trang 81ĐẶC TẢ TẬP LỆNH
AND
AND.Sz <EAs>, <EAd> (Sz:B/W/L)
• <EAd> ^ (EAs) → <EAd>
OR.Sz <EAs>, <EAd> (Sz:B/W/L)
• <EAd> ∨ <EAs> → <EAd>