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

kĩ thuật vi điều khiển

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 (419.53 KB, 34 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:

1


CHƯƠNG 7

LẬP TRÌNH HỢP NGỮ

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


NỘI DUNG CHƯƠNG 7
1. MỞ ðẦU
2. TRÌNH DỊCH HỢP NGỮ
3. KHUÔN DẠNG CỦA TRÌNH DỊCH HỢP NGỮ
4. CẤU TRÚC CHƯƠNG TRÌNH

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


1. MỞ ðẦU

Hợp ngữ (Assembly Language programming) là ngôn ngữ
của máy tính có vị trí giữa ngôn ngữ máy và ngôn ngữ cấp cao.
Các ngôn ngữ cấp cao ñiển hình như Pascal, C sử dụng các


từ và các phát biểu dễ hiểu ñối với con người.
Ngôn ngữ máy là ngôn ngữ ở dạng số nhị phân của máy
tính. Một chương trình viết bằng ngôn ngữ máy là một chuỗi
các byte nhị phân biểu diễn các lệnh mà máy tính thực thi ñược.
4
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


1. MỞ ðẦU

Hợp ngữ thay thế các mã nhị phân của ngôn ngữ máy
bằng các mã gợi nhớ giúp ta dễ nhớ hơn và dễ lập trình
hơn.
Một chương trình viết bằng hợp ngữ không thể ñược
thực thi trực tiếp bởi máy tính. Sau khi viết xong, chương
trình này phải trải qua quá trình dịch thành ngôn ngữ máy.
Trình dịch hợp ngữ (assembler) cần thiết ñể dịch các mã
gợi nhớ của lệnh thành các mã nhị phân của ngôn ngữ máy.
5
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


1. MỞ ðẦU

Hơn nữa có thể yêu cầu một trình liên kết (linker) ñể kết
hợp các phần của chương trình ở các tập tin riêng rẽ và thiết
lập ñịa chỉ trong bộ nhớ nơi mà chương trình ñược thực thi.
CÁC ðỊNH NGHĨA:
- Một chương trình viết bằng hợp ngữ là chương trình ñược
viết dưới dạng các ký hiệu, các mã gợi nhớ… trong ñó mỗi

một phát biểu tương ứng với một lệnh của ngôn ngữ máy.
6
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


1. MỞ ðẦU

- Trình dịch hợp ngữ (assembler) là chương trình

dùng ñể dịch một chương trình hợp ngữ thành
chương trình ngôn ngữ máy.
- Một segment là một ñơn vị của bộ nhớ chương
trình hoặc bộ nhớ dữ liệu.
- Một module chứa một hoặc nhiều segment. Một
module ñược gán một tên bởi người sử dụng.
7
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


2. TRÌNH DỊCH HỢP NGỮ

Có nhiều trình dịch hợp ngữ và các chương trình hỗ trợ
khác cho phép ta dễ dàng phát triển các ứng dụng trên chip
vi ñiều khiển 8051.
Phần mềm Keil µsion3 là một phần mềm phép soạn
thảo, lập trình cho chip 8051 của các hãng khác nhau.
Chương trình hỗ trợ biên dịch từ hợp ngữ, C sang mã máy,
cho phép liên kết nhiều file chương trình với nhau, hỗ trợ
mô phỏng, gỡ rối ….
8

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


3. KHUÔN DẠNG CỦA CHƯƠNG TRÌNH HỢP NGỮ

Các chương trình hợp ngữ chứa:
- Các lệnh của vi xử lý, vi ñiều khiển.
- Các chỉ dẫn của trình dịch hợp ngữ.
- Các ñiều khiển của trình dịch hợp ngữ.
- Các chú thích.
9
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


3. KHUÔN DẠNG CỦA CHƯƠNG TRÌNH HỢP NGỮ
Các lệnh: Các mã gợi nhớ.
Các chỉ dẫn của trình dịch hợp ngữ: Là các lệnh của trình dịch
hợp ngữ dùng ñể ñịnh nghĩa cấu trúc chương trình, các ký hiệu, dữ
liệu, hằng số .v.v.. (như là ORG).
Các ñiều khiển của trình dịch hợp ngữ: Thiết lập các chế ñộ của
trình dịch hợp ngữ và các luồng dịch trực tiếp (như là $TITLE).
Các chú thích: Giúp cho chương trình dễ ñọc bằng cách ñưa ra
các giải thích về mục ñích và hoạt ñộng của các chuỗi lệnh.

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


3. KHUÔN DẠNG CỦA CHƯƠNG TRÌNH HỢP NGỮ


Các dòng chứa các lệnh và các chỉ dẫn phải ñược viết
theo các quy luật mà trình dịch hợp ngữ hiểu ñược. Mỗi
một dòng ñược chia thành các trường cách biệt nhau bởi
khoảng trắng hoặc Tab.
Khuôn dạng tổng quát của mỗi một dòng như sau:
[Nhãn:] Mã gợi nhớ [Toán hạng][,Toán hạng][…..] [;Chú thích]

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


3. KHUÔN DẠNG CỦA CHƯƠNG TRÌNH HỢP NGỮ
1. Trường nhãn:
- Nhãn hiển thị ñịa chỉ của lệnh (hoặc dữ liệu) theo sau. Khi có sự rẽ
nhánh ñến lệnh này, nhãn ñược chỉ ra trong trường hợp toán hạng
của lệnh rẽ nhánh hoặc nhảy.
- Nhãn là một loại ký hiệu và ñược nhận dạng bằng dấu : (kết thúc
nhãn).
- Một ký hiệu (hoặc nhãn) phải bắt ñầu bằng một ký tự chữ hoặc
dấu hỏi (?) hoặc dấu nối dưới ( _ ) và tiếp theo phải là các ký tự
chữ, các số, dấu “?” hoặc “_”, có thể dài 31 ký tự dưới dạng chữ
thường hoặc chữ in. Không ñược trùng với các từ khóa (các mã gợi
nhớ, các chỉ dẫn, các toán tử hoặc các ký hiệu tiền ñịnh nghĩa).
12
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


3. KHUÔN DẠNG CỦA CHƯƠNG TRÌNH HỢP NGỮ

2. Trường mã gợi nhớ:

- Mã gợi nhớ của các lệnh ví dụ: MOV, ADD, DIV …
- Mã gợi nhớ của chỉ dẫn ví dụ: ORG, EQU hoặc DB.
3. Trường toán hạng:
- Chứa ñịa chỉ hoặc dữ liệu mà lệnh sẽ sử dụng.
- Các khả năng của trường toán hạng phụ thuộc vào lệnh.
Có lệnh không có trường toán hạng (ví dụ lệnh RET)
trong khi các lệnh khác cho nhiều toán hạng cách nhau
bởi dấu phẩy.
13
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


4. Trường chú thích:
-Các ghi chú ñể làm rõ chương trình ñược ñặt trong
trường chú thích ở cuối dòng lệnh. Các chú thích cần
ñược bắt ñầu bằng dấu “;”.
5. Các ký hiệu ñặc biệt:
- Các ký hiệu ñặc biệt ñược dùng cho các kiểu ñịnh ñịa chỉ
thanh ghi. Các ký hiệu này bao gồm A, R0 ñến R7,
DPTR, PC, C và AB. Dấu $ cũng là một ký hiệu ñặc biệt
ñược dùng ñể tham chiếu ñến giá trị hiện hành của bộ ñếm
vị trí.
14
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


3. KHUÔN DẠNG CỦA CHƯƠNG TRÌNH HỢP NGỮ

6. ðịa chỉ gián tiếp:
-Với một số lệnh, trường toán hạng có thể xác ñịnh một

thanh ghi mà nội dung của thanh ghi là ñịa chỉ của dữ
liệu. Dấu @ chỉ ra một ñịa chỉ gián tiếp và thanh ghi theo
sau có thể là R0, R1, DPTR hoặc PC tùy vào lệnh cụ thể.
7. Dữ liệu tức thời:
- Các lệnh sử dụng kiểu ñịnh ñịa chỉ tức thời cung cấp dữ
liệu trong trường toán hạng và dữ liệu này trở thành một
phần của lệnh. Dữ liệu tức thời ñược ñứng trước bởi dấu #.
15
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


3. KHUÔN DẠNG CỦA CHƯƠNG TRÌNH HỢP NGỮ
8. ðịa chỉ dữ liệu:

-Nhiều lệnh truy xuất các vị trí nhớ bằng cách sử dụng kiểu
ñịnh ñịa chỉ trực tiếp và yêu cầu một ñịa chỉ của bộ nhớ dữ
liệu trên chip (00H – 7FH) hoặc ñịa chỉ của một thanh ghi
ñặc biệt SFR (80H – FFH) trong trường toán hạng. Các ký
hiệu ñặc biệt có thể ñược dùng thay cho ñịa chỉ các thanh
ghi ñặc biệt SFR. Ví dụ:
MOV A,45H
MOV A,SBUF ; tương ñương lệnh MOV A,99H
16
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


3. KHUÔN DẠNG CỦA CHƯƠNG TRÌNH HỢP NGỮ
8. ðịa chỉ bit:

- Một trong các ñặc trưng mạnh của 8051 là khả

năng truy xuất các bit riêng rẽ mà không cần thao
tác lập mặt nạ trên các byte.
- Các lệnh truy xuất các vị trí ñược ñịnh ñịa chỉ bit
phải cung cấp ñịa chỉ bit trong bộ nhớ dữ liệu nội
(00H-7FH) hoặc ñịa chỉ bit trong các thanh ghi SFR
(80H-FFH)
17
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


3. KHUÔN DẠNG CỦA CHƯƠNG TRÌNH HỢP NGỮ
8. ðịa chỉ bit:

-Có 3 cách ñể xác ñịnh ñịa chỉ bit trong 1 lệnh:
1. ðịa chỉ bit ñã biết trước.
2. Sử dụng toán tử dot (.) giữa ñịa chỉ byte và vị
trí bit.
3. Sử dụng ký hiệu tiền ñịnh nghĩa.
SETB 0E7H; ñịa chỉ biết trước SETB ACC.7; sd toán tử dot (.)
JNB TI,$; TI là kí hiệu tiền ñịnh nghĩa
JNB 99H,$; Tương ñương với lệnh trên
18
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


3. KHUÔN DẠNG CỦA CHƯƠNG TRÌNH HỢP NGỮ
9. ðịa chỉ của lệnh:

Một ñịa chỉ của lệnh ñược dùng trong trường toán hạng
cho các lệnh nhảy, bao gồm các lệnh nhảy tương ñối

(SJMP và các lệnh nhảy có ñiều kiện), các lệnh nhảy và gọi
tuyệt ñối (ACALL, AJMP) và các lệnh nhảy và gọi dài
(LJMP, LCALL).
ðịa chỉ của lệnh thường cho dưới dạng nhãn. Ví dụ:
HERE: …….
…….
SJMP HERE
19
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


4. CẤU TRÚC CHƯƠNG TRÌNH

Lập trình có cấu trúc (Structured programming) là kỹ
thuật dùng ñể tổ chức và viết chương trình sao cho giảm
ñược ñộ phức tạp, cải thiện tính rõ ràng của chương trình
ñồng thời dễ dàng gỡ rối, sửa chữa cũng như thay ñổi.
Khả năng của phương pháp lập trình có cấu trúc có thể
ñược ñánh giá bằng cách khảo sát phát biểu sau: mọi
chương trình ñều có thể ñược viết chỉ sử dụng 3 cấu trúc:
“Các phát biểu”,”Các vòng lặp” và “Các lựa chọn”.
20
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


4. CẤU TRÚC CHƯƠNG TRÌNH

“Các phát biểu”,”Các vòng lặp” và “Các lựa chọn” tạo
thành một tập ñầy ñủ các cấu trúc và mọi chương trình ñều
có thể ñược thực hiện bằng cách chỉ sử dụng 3 cấu trúc

này. ðiều khiển chương trình ñược chuyển qua một cấu
trúc ñến cấu trúc khác mà không có các rẽ nhánh không
ñiều kiện. Mỗi một cấu trúc có một ñiểm nhập và một ñiểm
thoát.
Một cách ñiển hình, một chương trình có cấu trúc chứa
một trật tự có thứ bậc các chương trình con, mỗi chương
trình con có một ñiểm nhập và một ñiểm thoát.
21
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


4. CẤU TRÚC CHƯƠNG TRÌNH

Có 3 phương pháp ñể tạo ra một chương trình hợp
ngữ:
- Lưu ñồ (flowchart).
- Giả mã (pseudo code).
- Hợp ngữ (assembly language).
Cả 2 phương pháp lưu ñồ và giả mã ñều là những
công cụ trực quan giúp ta dễ dàng trình bày và hiểu các
bài tập một cách có hệ thống. Cả 2 cho phép một bài
tập ñược mô tả dưới dạng “ñiều gì phải thực hiện” hơn
là “thực hiện bằng cách nào”.
22
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


4. CẤU TRÚC CHƯƠNG TRÌNH

Thông thường lời giải có thể ñược biểu diễn dưới

dạng các lưu ñồ hoặc giả mã ở dạng các thuật ngữ ñộc
lập với máy, không cần khảo sát những rắc rối khó
hiểu của tập lệnh máy.
Có thể ta không sử dụng cả 2 phương pháp: giả mã
và lưu ñồ. Việc lựa chọn phương pháp nào cho thích
hợp tùy thuộc vào cá nhân của người lập trình.
Các ký hiệu thường dùng nhất cho việc lập lưu ñồ
ñược trình bày như sau:
23
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


4. CẤU TRÚC CHƯƠNG TRÌNH

s

: Khối ñiều kiện

: Khối xuất/nhập

ñ
: ñường ñi của CT

: Khối kết thúc
hoặc bắt ñầu CT.
: Khối kết nối qua trang.

: Hộp xử lý, thao tác.

: Xử lý tiền ñịnh nghĩa

(chương trình con)

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


ƯU VÀ KHUYẾT ðIỂM CỦA LẬP TRÌNH CÓ CẤU TRÚC

ƯU ðIỂM:

- Dễ dàng vạch ra chuỗi các hoạt ñộng, do vậy thuận tiện cho việc
gỡ rối.
- Có một số hữu hạn các cấu trúc kèm theo thuật ngữ ñã ñược
chuẩn hóa.
- Các cấu trúc giúp cho việc xây dựng các chương trình con ñược
dễ dàng.
- Tập các cấu trúc là ñầy ñủ, nghĩa là mọi chương trình ñều có thể
ñược viết bằng cách sử dụng ba cấu trúc.
- Làm tăng năng suất của người lập trình – Chương trình ñược viết
nhanh hơn.
25
GV. Lê Tiến Dũng. Automation Department, Faculty of Electrical Engineering – DUT / 2007


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×