Tải bản đầy đủ (.ppt) (47 trang)

Tài liệu môn kỹ thuật vi điều khiển 8

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 (322.25 KB, 47 trang )

3. LẬP TRÌNH HỢP NGỮ


3.1. Khái niệm hợp ngữ.
+ Hợp ngữ
• CPU chỉ có thể làm việc với các số nhị phân , một chương
trình chứa các số 0 và 1 được gọi là ngôn ngữ máy.
• Các nguồn ngữ hợp ngữ đã được phát, đã cung cấp các từ gợi
nhớ cho các lệnh mã máy cộng với những đặc tính khác giúp
cho việc lập trình nhanh hơn và ít mắc lỗi hơn.
• Các chương trình hợp ngữ phải được dịch ra thành mã máy
bằng một chương trình được là trình hợp ngữ (hợp dịch).
• Hợp ngữ được coi như là một ngôn ngữ bậc thấp vì nó giao
tiếp trực tiếp với cấu trúc bên trong của CPU.
• Để lập trình trong hợp ngữ, lập trình viên phải biết tất cả các
thanh ghi của CPU và kích thước của chúng cũng như các chi
tiết khác.

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




3.2. Cấu trúc hợp ngữ
+ Cấu trúc của hợp ngữ.
• Một chương trình hợp ngữ bao gồm một chuỗi các dòng
lệnh hợp ngữ.
• Một lệnh hợp ngữ có chứa một từ gợi nhớ (memonic)
Tùy theo từng lệnh mà sau nó có một hoặc hai toán
hạng.
• Các toán hạng là các dữ liệu cần được thao tác. Các từ


gợi nhớ thông báo CPU làm gì với các dữ liệu.

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




3.2. Cấu trúc hợp ngữ
+ Cấu trúc của hợp ngữ.
ORG

00H
COUNT EQU
ORG
500H
DATA1: DB
MOV
MOV
MOV

; Bắt đầu (origin) tại ngăn nhớ 0
25
2BH
; Số thập phân (2B ở dạng Hex)
R5, #01101H
; Nạp 01101H vào R5
R7, #01101B
; Nạp 01101B vào R7
R6, #01101
; Nạp 01101 vào R6


Lap :
MOV
ADD
ADD
ADD
SJMP
END

lap

A, #0
; Nạp 0 vào thanh ghi A
A, R5
; Cộng nôi dụng R5 vào A (A = A + R5)
A, R7
; Cộng nội dung R7 vào A (A = A + R7)
A, #0AH ; Cộng giá trị 0AH vào A (A = A + 0AH)
; Nhảy đến vòng lặp này
; Kết thúc file nguồn hợp ngữ

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




3.2. Cấu trúc hợp ngữ
+ Cấu trúc câu lệnh của hợp ngữ
• Cấu trúc của một lệnh hợp ngữ có 4 trường như sau:
[nhãn:] [từ gợi nhớ]

[các toán hạng]
[; chú giải]
Ví dụ: Batdau: mov R0, #00H ; xóa thanh ghi R0
• Trường nhãn cho phép chương trình tham chiếu đến một
dòng lệnh bằng tên. Nó không được viết quá một số ký tự
nhất định.
• Từ gợi nhớ (lệnh) và các toán hạng là các trường kết hợp với
nhau thực thi công việc thực tế của chương trình và hoàn
thiện các nhiệm vụ mà chương trình được viết cho chúng.
• Trường chú thích luôn phải bắt đầu bằng dấu chấm phẩy (;).

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




3.2. Cấu trúc hợp ngữ
+ Chỉ lệnh của hợp ngữ
• Chỉ lệnh ORG: dùng để báo bắt đầu của địa chỉ.
• Số đi sau ORG có kể ở dạng Hex hoặc thập phân. Nếu số này có kèm
chữ H đằng sau thì là ở dạng Hex và nếu không có chữ H ở sau là số
thập phân và hợp ngữ sẽ chuyển nó thành số Hex. Một số hợp ngữ sử
dụng dấu chấm đứng trước “ORG” thay cho “ORG”.
• Chỉ lệnh EQU: Được dùng để định nghĩa một hằng số mà không chiếm
ngăn nhớ nào.
• Chỉ lệnh EQU không dành chỗ cất cho dữ liệu nhưng nó gắn một giá trị
hằng số với nhãn dữ liệu sao cho khi nhãn xuất hiện trong chương trình
giá trị hằng số của nó sẽ được thay thế đối với nhãn.
Ví dụ:
sang

tat EQU

EQU
0;

1;

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




3.2. Cấu trúc hợp ngữ
+ Chỉ lệnh của hợp ngữ
• Chỉ lệnh DB (định nghĩa byte): được dùng để định nghĩa dữ liệu 8
bit.
DATA1:
DATA2:
DATA3:

DB
DB
DB

2B
00110101B
39H

; Số thập phân (1C ở dạng Hex)
; Số nhị phân (35 ở dạng Hex)

; Số dạng Hex



Chỉ lệnh END: Nó báo cho trình hợp ngữ kết thúc của file nguồn
“asm” chỉ lệnh END là dòng cuối cùng của chương trình 8051
• Trong mã nguồn thì mọi thứ sau chỉ lệnh END để bị trình hợp ngữ
bỏ qua.
• Một số trình hợp ngữ sử dụng .END có dấu chấm đứng trước thay
cho END.

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




3.2. Cấu trúc hợp ngữ
+ Lưu đồ thuật toán
•Công cụ trực quan để
diễn đạt các thuật toán.
•Biểu diễn thuật toán
bằng lưu đồ sẽ giúp
người đọc theo dõi được
sự phân cấp các trường
hợp và quá trình xử lý
của thuật toán.
•Phương pháp lưu đồ
thường được dùng trong
những thuật toán có tính
rắc rối, khó theo dõi

được quá trình xử lý.
Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng

Bắt đầu/ kết thúc quá trìn
Vào/ ra dữ liệu
Thực thi
Ra quyết định
Bước tiếp theo
A

Nối với nhánh A



3.3. Các chế độ đị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.
-Dữ liệu có thể được chứa trong RAM, ROM
hoặc bộ nhớ ngoài.
Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




3.3. Các chế độ định địa chỉ

7F 7E 7D 7C 7B 7A 79 78


Byte address
7FH

2F
2E

RAM
đa mục đích
30H
2FH

RAM định địa
chỉ bit

20H

1FH
18H

17H
10H
0FH

08H

07H
00H


Bank 3
Bank 2
Bank 1 (Stack)
Default Register
Bank for R0-R7

R7
R6
R5
R4

1F
17
0F
07

1E 1D 1C 1B 1A
16 15 14 13 12
0E 0D 0C 0B 0A
06 05 04 03 02

19
11
09
01


18
10

08
00

20

R3
R2

Bit address

R1
R0

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




3.3. Các chế độ đị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 và đây là
byte dữ liệu tức thời.
- Trước dữ liệu phải có dấu #
-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

MOV
MOV
MOV

A,#65H
R6,#55H
DPTR,#2343H
P1,#0FH

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




3.3. Các chế độ định địa chỉ
Kiểu thanh ghi (Register)
- Sử dụng thanh ghi làm việc để lưu dữ liệu cần thao tá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.
- Thanh nguồn và đích phải phù hợp nhau về kích thước
- Không được phép chuyển trực tiếp giữa các thanh ghi Rn
với nhau

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng





3.3. Các chế độ đị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.
-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.
-Cần phân biệt với chế độ định địa chỉ tức thời
-Các thanh ghi R0 đến R7 có thể truy cập bằng 2 cách: Thanh
ghi và trực tiếp
-Ngăn xếp và chế độ định địa chỉ trực tiếp
Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




3.3. Các chế độ đị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ụ:
dụ Ghi số 55H vào các ô nhớ từ 40H đến 44H trong RAM
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

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




3.3. Các chế độ định địa chỉ
+Định địa chỉ chỉ số (index).
- 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ố.
VD: Đọc giá trị từ x (0 đến 9) ở cổng P0 và xuất ra giá trị

bình phương ra cổng P1
Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




3. Tập lệ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.
Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




3. Tập lệnh

Nhóm lệnh số học
LỆNH
ADD
ADD
ADD
ADD
ADD

A,source

A,Rn
A,direct
A,@Ri
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)

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




Nhóm lệnh số học (tiếp)
LỆNH

ADDC
ADDC
ADDC
ADDC
ADDC

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


MÔ TẢ

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.

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng

(A)  (A) + (C) + (Source)



3. Tập lệnh

Nhóm lệnh số học (tiếp)
LỆNH

SUBB
SUBB
SUBB
SUBB
SUBB

A,source
A,Rn
A,direct
A,@Ri
A,#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.

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng

(A)  (A) - (C) - (source)




3. Tập lệnh

Nhóm lệnh số học (tiếp)
LỆNH

INC
INC
INC
INC
INC
INC

source
A
Rn
direct

@Ri
DPTR

MÔ TẢ

(source)  (source) + 1

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




3. Tập lệnh

Nhóm lệnh số học (tiếp)
LỆNH

DEC
DEC
DEC
DEC

A
Rn
direct
@Ri

MÔ TẢ

(source)  (source) - 1


Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




3. Tập lệnh
Nhóm lệnh số học (tiếp)
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

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


A

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




3. Tập lệnh
2. Nhóm lệnh Logic
LỆNH

ANL
ANL
ANL
ANL
ANL
ANL
ANL

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

MÔ TẢ

Thực hiện AND từng bit

giữa 2 toán hạng được chỉ ra
trong lệnh và lưu kết quả vào
toán hạng đích.

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng

(des)  (des) AND (source)




3. Tập lệnh
Nhóm lệnh Logic (tiếp)
LỆNH

ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL

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

direct,#data
C,bit

MÔ TẢ

Thực hiện OR từng bit
giữa 2 toán hạng được chỉ ra
trong lệnh và lưu kết quả vào
toán hạng đích.

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng

(des)  (des) OR (source)



3. Tập lệnh
Nhóm lệnh Logic (tiếp)
LỆNH

XRL
XRL
XRL
XRL
XRL
XRL

A,Rn
A,direct
A,@Ri

A,#data
direct,A
direct,#data

MÔ TẢ

Thực hiện XOR từng bit
giữa 2 toán hạng được chỉ ra
trong lệnh và lưu kết quả vào
toán hạng đích.

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng

(des)  (des) XOR (source)




×