1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tài liệu Lập trình hợp ngữ_chương 13 docx

32 597 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Lập trình hợp ngữ - Chương 13
Trường học University of Science and Technology of Hanoi
Chuyên ngành Programming Languages
Thể loại Giáo trình
Thành phố Hà Nội
Định dạng
Số trang 32
Dung lượng 171,21 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ường nhãn• Nhãn biểu thị địa chỉ của lệnh hoặc dữ liệu theo sau • Phân biệt với ký hiệu, nhãn là 1 loại ký hiệu & được nhận... Trường toán hạng• Theo sau trường mã gợi nhớ • Chứa địa c

Trang 1

1 Giới thiệu

2 Sơ đồ khối và chân

3 Tổ chức bộ nhớ

4 Các thanh ghi chức năng đặc biệt (SFR)

5 Dao động và hoạt động reset

Trang 2

EDITOR PROGRAM

ASSEMBLER PROGRAM

LINKER PROGRAM

OH PROGRAM

Myfile.bin

Trình dịch sang BIN

Trang 3

13-1 Cấu trúc chương trình Assembly

#INCLUDE "8051EQU.INC" ;include predefined constantsORG 0H ;reset routine ;locate routine at 00H

LJMP MAIN ;jump to MAIN

;place interrupt routines at appropriate memory locations

ORG 03H ;external interrupt 0

RETI ;or LJMP EX0ISR if enabled

ORG 0BH ;timer 0 interrupt

RETI ;or LJMP T0ISR if enabled

ORG 13H ;external interrupt 1

Trang 4

ORG 23H ;serial port interrupt

RETI ;or LJMP SPISR if enabled

ORG 30H ;locate beginning of rest of program

INITIALIZE: ;set up control registers

Trang 7

13-2-1 Trường nhãn

• Nhãn biểu thị địa chỉ của lệnh (hoặc dữ liệu) theo sau

• Phân biệt với ký hiệu, nhãn là 1 loại ký hiệu & được nhận

Trang 8

13-2-2 Trường mã gợi nhớ

• Mã gợi nhớ của lệnh: ADD, MOV, DIV, INC,…

• Mã gợi nhớ của chỉ dẫn: ORG, EQU, DB,…

Trang 9

13-2-3 Trường toán hạng

• Theo sau trường mã gợi nhớ

• Chứa địa chỉ hoặc dữ liệu mà lệnh sử dụng

[Label:] mnemonic [operand][,operand][…] [;comment]

Trang 12

13-2-6 Địa chỉ gián tiếp

• Trường toán hạng có thể xác định 1 thanh ghi mà nội dung

thanh ghi là địa chỉ của dữ liệu

• @ chỉ ra một địa chỉ gián tiếp và thanh ghi theo sau có thể làR0 hoặc R1, DPTR hay PC tùy lệnh cụ thể

Trang 14

13-2-8 Địa chỉ dữ liệu

• Các lệnh sử dụng kiểu định địa chỉ trực tiếp và yêu cầu 1 địa chỉ của bộ nhớ dữ liệu trên chip (00H-7FH) hoặc địa chỉ của 1 thanh ghi chức năng đặc biệt SFR (80H-0FFH) trong trường toán hạng

Trang 15

13-2-9 Địa chỉ bit

• Đặc trưng mạnh của 8051 là khả năng truy xuất bit riêng rẽ

mà không cần lập mặt nạ trên các byte

• 3 cách xác định địa chỉ bit trong một lệnh:

1 Địa chỉ bit đã biết

2 Dùng toán tử dot (.) giữa địa chỉ byte và vị trí bit

3 Dùng ký hiệu tiền định nghĩa

VD:

SETB 0E7H

Trang 16

• Bao gồm các lệnh nhảy tương đối (SJMP và các lệnh nhảy có đk), các lệnh nhảy và gọi tuyệt đối (AJMP, ACALL), các lệnh nhảy và gọi dài (LJMP, LCALL)

Trang 17

13-2-11 Các lệnh nhảy và gọi tổng quát

LOC OBJ LINE SOURCE

Trang 18

13-3 Đánh giá biểu thức trong thời gian dịch

1 Cơ số: binary - B, octal - O or Q, decimal - D or nothing,

hexa - H

2 Chuỗi ký tự: ‘ ‘

3 Các toán tử số học: +, -, *, /, MOD

4 Các toán tử logic: OR, AND, XOR, NOT

5 Các toán tử đặc biệt: SHR, SHL, HIGH, LOW, ( )

6 Các toán tử quan hệ: EQ, NE, LT, LE, GT, GE

7 Ưu tiên của các toán tử

Trang 19

13-4 Các chỉ dẫn

• Điều khiển trạng thái của trình dịch hợp ngữ

(ORG, END, USING)

Trang 20

13-4-1 Chỉ dẫn điều khiển trạng thái

• Chỉ dẫn thay đổi nội dung bộ đếm vị trí để thiết lập 1 gốc mới của chương trình cho các phát biểu theo sau

• ORG 100H ;Bộ đếm vị trí = 100H

END Phát biểu cuối cùng của chương trình nguồn

USING expression thông báo cho ASM51 về dãy thanh ghi tích cực hiện hành, AR0-7 thay cho R0-7

Trang 21

13-4-2 Chỉ dẫn định nghĩa ký hiệu

Symbol SEGMENT segment_type

Các loại segment (các không gian bộ nhớ) cho 8051:

• CODE (segment chương trình hay mã)

• XDATA

• DATA

• IDATA

• BIT

Note: khai báo này chỉ đơn giản khai báo EPROM là gì Còn để

Trang 22

symbol EQU expression

Gán giá trị số cho tên của ký hiệu

VD:

MESSAGE DB ‘this is a message’

Trang 24

13-4-3 Khởi động/dành trước vùng nhớ

DS (define storage): khuôn dạng:

[Label:] DS expression

• Dành trước vùng nhớ tính bằng byte, chỉ dẫn này dùng cho bất

kỳ loại segment nào, trừ BIT

DSEG AT 30H ;đặt trong segment dữ liệu

Xóa vùng đệm trên:

MOV R7, #LENGTHMOV R0, #BUFFER

DJNZ R7, LOOP

Trang 25

• $Tạo vùng đệm 1000 bytes trong bộ nhớ ngoài ở địa chỉ bắt đầu là 4000H; xóa vùng đệm vừa tạo.

Trang 26

[Label:] DBIT expression

• Dành trước vùng nhớ tính bằng bit, chỉ dẫn này có thể dùng cho segment BIT

BSEG ;segment bit tuyệt đốiKBFLAG: DBIT 1 ;trạng thái của keyboard

PRFLAG: DBIT 1 ;trạng thái của printer

DKFLAG: DBIT 1 ;trạng thái của disk

Trang 27

DB (define byte)

[Label:] DB expression [,expression] […]

• khởi động vùng nhớ mã cùng với các giá trị của byte, 1

segment CODE phải được tích cực

SQUARES: DB 0, 1, 4, 9, 16, 25 ; binh phuong

MESSAGE: DB ‘Login:’,0 ; chuoi ky tu kt boi 0

Khi hợp dịch sẽ tạo ra KQ gán cho bộ nhớ chương trình ngoài ở

dạng HEX như sau:

Trang 28

13-4-4 Liên kết chương trình

PUBLIC symbol [,symbol][…]

EXTRN segment_type (symbol [,symbol][…]…)

NAME module_name

MESSAGES.SRC

… HELLO: (start subroutine)

….

RET GOOD_BYTE: (start subroutine)

… RET

Trang 29

13-4-5 Lựa chọn segment

RSEG (relocatable segment): RSEG segment_name

CSEG [AT address]

DSEG [AT address]

ISEG [AT address]

BSEG [AT address]

XSEG [AT address]

Trang 30

13-5 Các điều khiển của trình dịch

• Các đk ảnh hưởng đến cách trình bày tập tin liệt kê, không ảnh hưởng đến bản thân chương trình

• Vị trí của chúng:

– Đưa vào dòng lệnh khi hợp dịch

– Đặt trong tập tin nguồn (đứng trước bởi $)

Vd:

$DEBUG

$TITLE()

Trang 31

ASSEMBLER PROGRAM

LINKER PROGRAM

Myfile.asm

Myfile.obj

Other obj file Myfile.lst

Trang 32

Bài toán

Phân tích ví dụ tổng hợp trang 161 Æ 171

Ngày đăng: 27/01/2014, 02:20

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm