Tham khảo tập lệnh Mnemonic: cú pháp lệnh Instruction code : định dạng mã máy Hexa-Decimal: mã máysố hex Explanation: Thao tác của lệnh No... CÁC PHƯƠNG PHÁP ĐỊNH ĐỊA CHỈ - Tức thời
Trang 1CHƯƠNG 3
TẬP LỆNH
MCS - 51
Trang 3Ý nghĩa các ký hiệu viết tắt trong tập lệnh
Rn Định địa chỉ thanh ghi bằng các thanh ghi R0 đến R7
direct Địa chỉ trực tiếp 8 bit (00H đến FFH)
@Ri Định địa chỉ gián tiếp dùng thanh ghi R0 hoặc R1
#data Hằng số 8 bit Chú ý: với các số HEX nếu bắt đầu bằng chữ thì
phải thêm số 0 phía trước chữ đó
#data16 Hằng số 16 bit Chú ý: với các số HEX nếu bắt đầu bằng chữ
thì phải thêm số 0 phía trước chữ đó
rel Offset 8 bit có dấu trong định địa chỉ tương đối
addr11 Định địa chỉ tuyệt đối 11 bit trong trang 2K hiện hành
addr16 Địa chỉ 16 bit
src Toán hạng nguồn (source), có thể là Rn, direct,#data hoặc @Ri
dest Toán hạng đích (destination), có thể là Rn, direct hoặc @Ri
X Nội dung của X Ví dụ: A nội dung của thanh ghi A
(X) Nội dung ô nhớ có địa chỉ là nội dung của X Ví dụ: (20H)
nội dung ô nhớ có địa chỉ 20H
Trang 4Tham khảo tập lệnh
Mnemonic: cú pháp lệnh
Instruction code : định dạng mã máy
Hexa-Decimal: mã máy(số hex)
Explanation: Thao tác của lệnh
No of MC: thời gian thực thi lệnh
Bài giảng môn Vi xử lý GV: Lê Thị Kim Anh
4
Trang 5II CÁC PHƯƠNG PHÁP ĐỊNH ĐỊA CHỈ
- Tức thời (Immediate)
- Thanh ghi (Register)
- Trực tiếp (Direct)
- Gián tiếp (Indirect)
- Tương đối (Relative)
- Tuyệt đối (Absolute)
Trang 6- Toán hạng là một hằng số, sử dụng dấu #
Bài giảng môn Vi xử lý
ĐỊNH ĐỊA CHỈ TỨC THỜI ( #data, #data16 )
- Định dạng mã lệnh cho pp này là 2 byte , trừ trường hợp data16
Trang 7Bài giảng môn Vi xử lý GV: Lê Thị Kim Anh
Trang 8Các thanh ghi chức năng đặc biệt
ĐỊNH ĐỊA CHỈ TRỰC TIẾP ( direct )
Truy xuất đến RAM nội và các thanh ghi chức năng đặc biệt (ACC(E0H),PSW(D0H),P1(90H), P0(80H)…)
Trang 9Bài giảng môn Vi xử lý GV: Lê Thị Kim Anh
- Toán hạng là nội dung của một ô nhớ có địa chỉ là direct
- Định dạng mã lệnh cho pp này là 2 byte
Trang 10MOV A,30H MOV A,#30H
Trang 11MOV A,07H MOV A,7 MOV A,R7
MOV 07H,06H MOV 7,6 ≠ MOV R7,R6
SỰ TƯƠNG ĐƯƠNG LỆNH KHI DÙNG CÁC PHƯƠNG PHÁP ĐỊNH ĐỊA CHỈ KHÁC NHAU
Bài giảng môn Vi xử lý GV: Lê Thị Kim Anh
11
Trang 12ĐỊNH ĐỊA CHỈ GIÁN TIẾP ( @Ri (i=0,1), @DPTR )
Bài giảng môn Vi xử lý GV: Lê Thị Kim Anh
12
- Toán hạng là nội dung của một ô nhớ có địa chỉ chứa trong thanh ghi
- Định dạng mã lệnh cho pp này là 1 byte
Ví dụ
MOV A, @R1
Mã máy : E7
Trang 13SỰ KHÁC NHAU GIỮA PHƯƠNG PHÁP ĐỊNH ĐỊA CHỈ THANH GHI VÀ GIÁN TIẾP
A
7FH
00H R1 Internal RAM
Bài giảng môn Vi xử lý GV: Lê Thị Kim Anh
Trang 14ĐỊNH ĐỊA CHỈ TƯƠNG ĐỐI ( rel )
- Toán hạng là một offset (độ dời có dấu 8 bit)
- Được sử dụng trong các lệnh nhảy ngắn hoặc rẽ nhánh:
Trang 16- Định dạng mã lệnh cho pp này là 2 byte
Ví dụ
SJMP LABEL
Giả sử lệnh này được lưu trong
bộ nhớ tại vị trí 0100H và
0101H như hình bên LABEL
được đặt tại địa chỉ 0107H
rel = byte thấp( LABEL – PCHH )
= 0107 – 0102 = 05
Mã máy : 80 05
Trang 17Bài giảng môn Vi xử lý GV: Lê Thị Kim Anh
Trang 18ĐỊNH ĐỊA CHỈ TUYỆT ĐỐI ( addr11 )
- Được sử dụng trong AJMP, ACALL
- Phạm vi: mỗi trang 2K với địa chỉ PC của lệnh kế
Bài giảng môn Vi xử lý GV: Lê Thị Kim Anh
18
Trang 20Xem lệnh ACALL trong chương trình trên, phạm vi của nhãn DELAY sẽ chỉ được phép nằm trong trang nào của bộ nhớ chương trình Giả sử nhãn
DELAY đặt tại địa chỉ 20FFH thì có hợp lý không, khi đó mã máy được tính là gì?
Trang 22ĐỊNH ĐỊA CHỈ DÀI ( addr16 )
- Được sử dụng trong LJMP, LCALL
Trang 23Ví dụ
Hãy xác định mã máy cho lệnh LJMP MAIN , biết rằng nhãn
MAIN được đặt tại địa chỉ 2040H
- Định dạng mã lệnh cho pp này là 3 byte
Mã máy : 02 20 40
Trang 24ĐỊNH ĐỊA CHỈ CHỈ SỐ ( @A + DPTR , @A + PC )
- Sử dụng một thanh ghi nền (PC, DPTR) và một offset (thanh
ghi A) tạo thành địa chỉ hiệu dụng cho lệnh MOVC hoặc JMP
- Ví dụ như các lệnh sau:
Trang 25Ví dụ: với thanh ghi nền là DPTR
MOVC A,@A+DPTR : DPTR = 10F0H, giả sử n = 0
Trang 26MOVC A,@A+PC : PCHH = 1082H, giả sử n = 0
…