Tải bản đầy đủ (.pdf) (44 trang)

các tập lệnh cơ bản trong vi điều khiển 8051

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 (432.63 KB, 44 trang )

GV. LÊ TIẾN DŨNG
Bộ môn Tự ñộng hóa – Khoa ðiện
Trường ðại học Bách khoa – ðại học ðà Nẵng
Email:


CHƯƠNG 3:
TÓM TẮT TẬP LỆNH

NỘI DUNG CHƯƠNG 3

3.1 Mở ñầu.
3.2 Các kiểu ñịnh ñịa chỉ.
3.3 Các loại lệnh.

GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


CHƯƠNG 3:
TÓM TẮT TẬP LỆNH

3.1 Mở ñầu.
- Chương trình là chuỗi các lệnh mà MC phải xử lý, thực hiện.
- Lập chương trình là soạn thảo các lệnh bằng ngôn ngữ lập
trình ñể thực hiện một algorith (thuật toán) cụ thể.
Chương trình = Thuật toán + Cơ sở dữ liệu.
- Chương trình dịch: Ví dụ Assembler, thực hiện dịch từ mã ngữ
sang mã máy.
- Hệ lệnh của MC: Là tập các lệnh mà người lập trình có thể sử
dụng ñể lập trình, và người lập trình chỉ có thể sử dụng các lệnh
trong hệ lệnh mà thôi.


- Mỗi họ MC có một tập lệnh riêng, chương trình viết cho MC họ
nào thì chỉ chạy cho họ ñó.
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


CHƯƠNG 3:
TÓM TẮT TẬP LỆNH

3.1 Mở ñầu.
- Ngôn ngữ lập trình:
+ Bậc cao: C, Pascal, C++...
+ Bậc thấp:
* Mã máy: Mỗi một lệnh tương ứng với một mã
nhị phân gọi là mã lệnh, do nhà sản xuất quy ñịnh. MC chỉ hiểu
ñược các lệnh ở dạng mã máy. Các lệnh có thể chiếm 1 byte, 2
byte hoặc 3 byte.
* Mã ngữ: Các lệnh ñược mô tả ở dạng biểu
trưng (Symbol). Symbol có thể là từ viết tắt như MOV, ADD,...
hoặc là ký hiệu các khối chức năng ở dạng Graphic.
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


CHƯƠNG 3:
TÓM TẮT TẬP LỆNH

3.1 Mở ñầu.
Các chữ viết tắt dùng trong tập lệnh
Rn

: ðịnh ñịa chỉ thanh ghi sử dụng R0 - R7.


direct : ðịa chỉ trực tiếp 8 bit trong RAM nội (00H-FFH).
@Ri : ðịnh ñịa chỉ gián tiếp sử dụng thanh ghi R0 hoặc R1.
source : Toán hạng nguồn, có thể là Rn, hoặc direct hoặc @Ri.
dest

: Toán hạng ñích, có thể là Rn, hoặc direct hoặc @Ri.

GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


CHƯƠNG 3:
TÓM TẮT TẬP LỆNH

3.1 Mở ñầu.

Các chữ viết tắt dùng trong tập lệnh
#data : Hằng số 8 bit chứa trong lệnh.
#data16: Hằng số 16 bit.
bit
: ðịa chỉ trực tiếp (8 bit) của 1 bit.
rel
: offset 8-bit có dấu.
addr11 : ðịa chỉ 11 bit trong trang hiện
hành.
ddr16 : ðịa chỉ 16 bit.
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


CHƯƠNG 3:

TÓM TẮT TẬP LỆNH

3.1 Mở ñầu.
CÁCH VIẾT SỐ

- Số Binary (nhị phân): Số nhị phân khi viết
cần thêm phía sau giá trị bằng kí tự "B". Các số
này phải là số nhị phân 8 bit. Khi giá trị cần thiết
lập là các giá trị cần cho từng bit trong byte thì
dùng cách biểu diễn bằng số nhị phân.
Ví dụ: 01010101B

GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


CHƯƠNG 3:
TÓM TẮT TẬP LỆNH

3.1 Mở ñầu.
CÁCH VIẾT SỐ

- Số Hexa:

Số hex khi viết cần thêm phía sau giá trị
bằng kí tự "H" .Nếu sô hex bắt ñầu là A,B,C,D,E,F thì
cần thêm số "0" phía trước ñể trình biên dịch nhận biết
ñược ñó là số Hex, không lầm giá trị số với các kí tự chữ
khác.
Số hex là cách viết ngắn gọn của số nhị phân.
Ví dụ: 69H, 0A3H

Cách viết khác: 0x69, 0xA3;
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


CHƯƠNG 3:
TÓM TẮT TẬP LỆNH

3.1 Mở ñầu.
CÁCH VIẾT SỐ

- Số thập phân: Số thập phân khi viết không cần
cần thêm kí tự hoặc thêm sau giá trị bằng kí tự "D".
Khi tính toán: cộng trừ nhân chia, nếu sử dụng số
nhị phân hoặc số hex sẽ gây khó khăn cho người viết
chương trình, trong trường hợp này số thập phân ñược
sử dụng
Ví dụ: 45, 27, 68D
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


CHƯƠNG 3:
TÓM TẮT TẬP LỆNH

3.2 Các kiểu ñịnh ñịa chỉ.
-Khi một lệnh ñược thực thi và lệnh này yêu cầu
dữ liệu, một câu hỏi ñược ñặt ra là "Dữ liệu chứa
ở ñâu?" Câu trả lời cho câu hỏi này tạo ra các kiểu
(mode) ñịnh ñịa chỉ của 8051.
- Các kiểu ñịnh ñịa chỉ cho phép ta xác ñịnh rõ
nguồn và ñích của dữ liệu theo nhiều cách khác

nhau phụ thuộc vào tình huống lập trình.
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


CHƯƠNG 3:
TÓM TẮT TẬP LỆNH

3.2 Các kiểu ñịnh ñịa chỉ.
- Có 8 kiểu ñịnh ñịa chỉ:

+ Thanh ghi (Register).
+ Trực tiếp (Direct).
+ Gián tiếp (Indirect).
+ Tức thời (Immediate).
+ Tương ñối (Relative).
+ Tuyệt ñối (Absolute).
+ Dài (Long).
+ Chỉ số (Indexed).
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


CHƯƠNG 3:
TÓM TẮT TẬP LỆNH

3.2 Các kiểu ñịnh ñịa chỉ.
+ Kiểu thanh ghi (Register).

Người lập trình 8051 có thể truy xuất 8 thanh ghi làm
việc ñược ñánh số từ R0 ñến R7. Có 4 dãy thanh ghi "làm
việc" nhưng ở một thời ñiểm chỉ có một dãy tích cực. Ta

dùng bit 3 và 4 của từ trạng thái chương trình PSW ñể chỉ
ra dãy thanh ghi tích cực.
Hợp ngữ của 8051 chỉ ra kiểu ñịnh ñịa chỉ thanh ghi bằng
ký hiệu Rn, trong ñó n có giá trị từ 0 ñến 7.
VD:
ADD A,R7.
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


CHƯƠNG 3:
TÓM TẮT TẬP LỆNH

3.2 Các kiểu ñịnh ñịa chỉ.
+ ðịnh ñịa chỉ trực tiếp (Direct).

-ðịa chỉ của dữ liệu ñược chỉ ra trực tiếp trong lệnh.
Ví dụ:
MOV 40H,A ; Chuyển nd A vào thanh ghi có ñịa chỉ 40H
- Chế ñộ ñịnh ñịa chỉ trực tiếp có thể dùng ñể truy cập toàn
bộ không gian của bộ nhớ trong RAM. Tuy nhiên, thực tế
chế ñộ này thường ñược dùng ñể truy cập các ngăn nhớ
RAM từ ñịa chỉ 30H ñến 7FH.
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


CHƯƠNG 3:
TÓM TẮT TẬP LỆNH

3.2 Các kiểu ñịnh ñịa chỉ.
+ ðịnh ñịa chỉ gián tiếp (Indirect).


- Ở chế ñộ này, thanh ghi ñược dùng ñể trỏ ñến dữ liệu có
trong bộ nhớ. Nếu dữ liệu ở trên chip thì các thanh ghi R0 và
R1 ñược sử dụng, hoạt ñộng như những con trỏ (pointer).
Kiểu ñịnh ñịa chỉ gián tiếp ñược nhận biết dựa vào ký hiệu
@.
Ví dụ:

MOV
MOV
MOV
INC
MOV
INC

A,#55H
R0,#40H
@R0,A
R0
@R0,A
R0

; Nạp vào A giá trị 55H
; Nạp vào con trỏ R0 = 40H
; Ghi A vào thanh ghi do R0 trỏ ñến
; Tăng con trỏ. Bây giờ R0 = 41H
; Ghi A vào thanh ghi do R0 trỏ ñến (41H)
; Tăng con trỏ. Bây giờ R0 = 42H

GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007



CHƯƠNG 3:
TÓM TẮT TẬP LỆNH

3.2 Các kiểu ñịnh ñịa chỉ.
+ ðịnh ñịa chỉ tức thời (Immediate).
- Khi toán hạng nguồn là một hằng số thay vì là một biến, hằng số
này có thể ñưa vào lệnh và ñây là byte dữ liệu tức thời.
- Trong hợp ngữ, các toán hạng tức thời ñược nhận biết nhờ vào ký tự
# ñặt trước chúng. Tất cả các lệnh sử dụng kiểu ñịnh ñịa chỉ tức thời
ñều sử dụng hằng dữ liệu 8-bit làm dữ liệu tức thời. Có một ngoại lệ
khi ta khởi ñộng con trỏ dữ liệu 16-bit DPTR, hằng dữ liệu 16-bit
ñược cần ñến.
Ví dụ:
MOV A,#65H
MOV R6,#55H
MOV DPTR,#2343H
MOV P1,#0FH
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


CHƯƠNG 3:
TÓM TẮT TẬP LỆNH

3.2 Các kiểu ñịnh ñịa chỉ.
+ ðịnh ñịa chỉ tương ñối, ñịnh ñịa chỉ tuyệt ñối, ñịnh ñịa chỉ dài.
- ðược sử dụng cho các lệnh nhảy.
- Một ñịa chỉ tương ñối (hay còn gọi là offset) là một giá trị 8-bit có
dấu. Giá trị này ñược cộng với bộ ñếm chương trình ñể tạo ra ñịa chỉ

của lệnh tiếp theo cần ñược thực thi. Tầm nhảy ñược giới hạn là -128
byte ñến 127 byte (8-bit có dấu).
- ðịnh ñịa chỉ tuyệt ñối chỉ ñược sử dụng với các lệnh ACALL và
AJMP. ðây là các lệnh 2-byte cho phép rẽ nhánh chương trình trong
trang 2K hiện hành của bộ nhớ chương trình.
- Kiểu ñịnh ñịa chỉ dài chỉ ñược dùng cho các lệnh LCALL và LJMP.
Các lệnh 3 byte này chứa ñịa chỉ ñích 16-bit.
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


CHƯƠNG 3:
TÓM TẮT TẬP LỆNH

3.2 Các kiểu ñịnh ñịa chỉ.
+ ðịnh ñịa chỉ chỉ số.

- Sử dụng một thanh ghi nền (hoặc bộ ñếm chương
trình hoặc con trỏ dữ liệu) và một offset (thanh chứa
A) tạo thành dạng ñịa chỉ hữu dụng cho lệnh JMP
hoặc MOVC.
- Trong nhiều ứng dụng, các bảng nhảy hoặc các
bảng tìm kiếm ñược tạo ra dễ dàng bằng cách sử
dụng kiểu ñịnh ñịa chỉ chỉ số.
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


CHƯƠNG 3:
TÓM TẮT TẬP LỆNH

3.3 Tập lệnh.

nh

Tập lệnh của 8051 ñược chia làm 5 nhóm
+ Nhóm lệnh số học.
+ Nhóm lệnh logic.
+ Nhóm lệnh di chuyển dữ liệu.
+ Nhóm lệnh xử lý bit.
+ Nhóm lệnh rẽ nhánh.
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


CHƯƠNG 3:
TÓM TẮT TẬP LỆNH

3.3 Tập lệnh.
nh
1. Nhóm lệnh số học
LỆNH
ADD A,source
ADD A,Rn
ADD A,direct
ADD A,@Ri
ADD A,#data

MÔ TẢ
Cộng toán hạng nguồn với A, kết quả
chứa trong A.
(A) ← (A) + (source)

GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007



CHƯƠNG 3:
TÓM TẮT TẬP LỆNH

3.3 Tập lệnh.
nh
1. Nhóm lệnh số học
LỆNH

MÔ TẢ

ADDC A,source
ADDC A,Rn
ADDC A,direct
ADDC A,@Ri
ADDC A,#data

Cộng ñồng thời nội dung của một
byte ở ñịa chỉ ñược chỉ ra trong lệnh
với nội dung của thanh chứa và cờ
nhớ. Kết quả ñặt vào thanh chứa.
(A) ← (A) + (C) + (Source)

GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


CHƯƠNG 3:
TÓM TẮT TẬP LỆNH


3.3 Tập lệnh.
nh
1. Nhóm lệnh số học
LỆNH

SUBB A,source
SUBB A,Rn
SUBBA,direct
SUBBA,@Ri
SUBBA,#data

MÔ TẢ
Trừ bớt nội dung của thanh chứa A bởi
nội dung của toán hạng chỉ ra trong lệnh
cùng với cờ nhớ và cất kết quả vào thanh
chứa.
(A) ← (A) - (C) - (source)

GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


CHƯƠNG 3:
TÓM TẮT TẬP LỆNH

3.3 Tập lệnh.
nh
1. Nhóm lệnh số học
LỆNH

INC source

INC A
INC Rn
INC direct
INC @Ri
INC DPTR

MÔ TẢ

(source) ← (source) + 1

GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


CHƯƠNG 3:
TÓM TẮT TẬP LỆNH

3.3 Tập lệnh.
nh
1. Nhóm lệnh số học
LỆNH

DEC A
DEC Rn
DEC direct
DEC @Ri

MÔ TẢ

(source) ← (source) - 1


GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


CHƯƠNG 3:
TÓM TẮT TẬP LỆNH

3.3 Tập lệnh.
nh
1. Nhóm lệnh số học
LỆNH

MÔ TẢ

MUL AB

Nhân các số nguyên không dấu 8-bit chứa trong
A và B. Byte thấp của tích số 16-bit cất trong A, byte
cao cất trong B.

DIV AB

Chia số nguyên không dấu 8-bit chứa trong A với
số nguyên không dấu 8-bit chứa trong B. Thương số
cất trong A, còn số dư cất trong B.

DA A

Hiệu chỉnh thập phân nội dung của thanh
chứa ñối với phép cộng.


GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


CHƯƠNG 3:
TÓM TẮT TẬP LỆNH

3.3 Tập lệnh.
nh
1. Nhóm lệnh số học
Lệnh cộng dữ liệu trên thanh ghi A với dữ liệu trên thanh ghi Rn

Cú pháp:
ADD A,Rn
Lệnh này chiếm dung lượng bộ nhớ ROM là 1 Byte
Thời gian thực hiện: 1 chu kì máy
Công dụng: Cộng giá trị dữ liệu trên thanh ghi A với giá trị
dữ liệu trên thanh ghi Rn, sau khi thực hiện lệnh kết quả
ñược lưu ở thanh ghi A. Lệnh này có ảnh hưởng ñến thanh
ghi từ trạng thái chương trình PSW.
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


×