1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

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

34 159 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 34
Dung lượng 419,53 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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... 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

Trang 1

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

Trang 2

CH ƯƠNG 7

LẬP TRÌNH HỢP NGỮ

Trang 3

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

Trang 4

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.

Trang 5

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

Trang 6

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

Trang 7

1 MỞ ðẦU

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.

Trang 8

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 …

Trang 9

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

Trang 10

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.

Trang 11

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]

Trang 12

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).

Trang 13

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

Trang 14

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í

Trang 15

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 #

Trang 16

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

Trang 17

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)

Trang 18

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

Trang 19

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: …….

…….

Trang 20

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”

Trang 21

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.

Trang 22

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”.

Trang 23

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:

Trang 24

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

s

ñ

: Khối ñiều kiện

: ñường ñi của CT

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

: Khối xuất/nhập

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

: Khối kết nối qua trang.

: Xử lý tiền ñịnh nghĩa (chương trình con)

Trang 25

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

Trang 26

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

- Chỉ có một vài ngôn ngữ cấp cao như Pascal, C… chấp nhận trực tiếp các cấu trúc, các ngôn ngữ cấp cao khác yêu cầu thêm một giai ñoạn dịch nữa.

- Các chương trình có cấu trúc thực thi chậm hơn và ñòi hỏi nhiều

bộ nhớ hơn so với 1 CT tương ñương nhưng không có cấu trúc.

- Một số vấn ñề sẽ gặp khó khăn khi giải quyết nếu ta chỉ sử dụng

3 cấu trúc ñể lập trình.

- Các cấu trúc lồng vào nhau cũng có khó khăn ñi kèm.

Trang 28

BA CẤU TRÚC

Các phát biểu cung cấp cho ta cơ chế cơ bản

gồm việc gán giá trị cho một biến, hoặc gọi một chương trình con …

Bất cứ nơi nào mà một phát biểu ñơn ñược sử dụng, ta ñều có thể sử dụng một nhóm các phát biểu hay khối phát biểu (statement block)

4.1 Các phát biểu

Trang 29

BA CẤU TRÚC

Cấu trúc cơ bản thứ 2 là vòng lặp, cấu trúc này ñược dùng ñể lặp lại việc thực hiện một thao tác Cộng một chuỗi số hoặc tìm kiếm một giá trị trong danh sách

là 2 thí dụ của các bài tập lập trình ñòi hỏi phải có vòng lặp.

Thuật ngữ lặp lại (iteration) cũng ñược dùng trong ngữ cảnh này Mặc dù có vài dạng vòng lặp nhưng ta chỉ cần hai dạng: WHILE/ DO và REPEAT/ UNTIL.

4.2 Cấu trúc vòng lặp

Trang 30

Cấu trúc While/Do

4.2 Cấu trúc vòng lặp

Quy luật chung: Các thao tác trong khối phát biểu phải ảnh hưởng ñến ít

nhất một biến trong biểu thức ñiều kiện, nếu không một lỗi ở dạng một

vòng lặp vô tận ñược tạo ra.

ðiểm nhập

ðiều kiện?

Phát biểu

Kết thúc sai

ñúng

Trang 32

Cấu trúc IF/THEN/ELSE (cấu trúc lựa chọn)

Phát biểu 2

Trang 33

Cấu trúc CASE (cấu trúc lựa chọn)

BT2?

Phát biểu 2

s ñ

BT3?

Phát biểu 3

s ñ

Trang 34

THANK YOU !

SEE YOU IN NEXT CHAPTER.

Ngày đăng: 30/10/2015, 18:19

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w