logo

Lập trình hợp ngữ_chương 13

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 dạng bằng dấu : Các ký hiệu: EQU, SEGMENT, BIT, DATA
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 6. Tập lệnh 7. Các mode định địa chỉ (addressing modes) 8. Lập trình IO 9. Tạo trễ 10.Lập trình Timer/Counter 11.Giao tiếp nối tiếp 12.Lập trình ngắt 13.Lập trình hợp ngữ 1 EDITOR Trình soạn thảo PROGRAM Myfile.asm ASSEMBLER PROGRAM Trình dịch ASM51 Myfile.lst Other obj file Myfile.obj LINKER Trình liên kết RL51 PROGRAM Myfile.abs Trình dịch sang HEX OH PROGRAM Myfile.hex HEXTOBIN Trình dịch sang BIN PROGRAM Myfile.bin 2 13-1. Cấu trúc chương trình Assembly #INCLUDE "8051EQU.INC" ;include predefined constants ORG 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 RETI ;or LJMP EX1ISR if enabled ORG 1BH ;timer 1 interrupt RETI ;or LJMP T1ISR if enabled 3 ORG 23H ;serial port interrupt RETI ;or LJMP SPISR if enabled ORG 30H ;locate beginning of rest of program INITIALIZE: ;set up control registers MOV TCON,#xxH MOV TMOD,#xxH MOV PSW,#xxH MOV IE,#xxH RET DELAY: ... RET ISR: ... RETI 4 Other Subroutines: .... RET Other ISR Subroutines: .... RET MAIN: ACALL INITIALIZE ... SJMP $ END 5 13-2. Khuôn dạng chương trình hợp ngữ Các chương trình hợp ngữ chứa: • Lệnh (instruction) • Chỉ dẫn (directive) • Điều khiển (control) • Chú thích (comment) [Label:] mnemonic [operand][,operand][…] [;comment] 6 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 dạng bằng dấu : • Các ký hiệu: EQU, SEGMENT, BIT, DATA • VD: PARAMETER EQU 500 PORTA EQU 0101H START: MOV A,#0FFH 7 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,… 8 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] 9 13-2-4. Trường chú thích • Các ghi chú để làm rõ chương trình • Bắt đầu bằng dấu ; [Label:] mnemonic [operand][,operand][…] [;comment] 10 13-2-5. Các ký hiệu đặc biệt • A, R0 R7, DPTR, PC, C, AB, $ VD: • JNB TI,$ ≡ HERE: JNB TI, HERE tránh dùng 1 nhãn 11 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ể ADD A,@R0 (1) MOVC A,@A+PC (2) 12 13-2-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 • Dữ liệu tức thời được đứng trước bởi dấu # CONST EQU 100 MOV A,#0DAH ORL 50H, #CONST 13 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 • MOV A, SBUF ;≡ MOV A, 99H • MOV A, 5CH 14 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 SETB ACC.7 JNB TI,$ JNB 99H,$ 15 13-2-10. Đị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 • Địa chỉ của lệnh thường được cho dưới dạng các nhãn VD: HERE: … SJMP HERE • 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) 16 13-2-11. Các lệnh nhảy và gọi tổng quát LOC OBJ LINE SOURCE 1234 1 ORG 1234H 1234 04 2 START: INC A 1235 80FD 3 JMP START 12FC 4 ORG START+200 12FC 4134 5 JMP START 12FE 021301 6 JMP FINISH 1301 04 7 FINISH: INC A 8 END 17 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ử 18 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) • Định nghĩa ký hiệu (SEGMENT, EQU, SET, DATA, IDATA, XDATA, BIT, CODE) • Khởi động/Dành trước vùng nhớ (DS, DBIT, DB, DW) • Liên kết chương trình (PUBLIC, EXTRN, NAME) • Lựa chọn segment (RSEG, CSEG, DSEG, ISEG, BSEG, XSEG) 19 13-4-1. Chỉ dẫn điều khiển trạng thái ORG (Set origin) ORG expression • 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 • ORG ($+1000H) 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 • USING 3 • PUSH AR7 ;dịch thành PUSH 1FH • USING 1 • PUSH AR7 ;dịch thành PUSH 0FH 20
DMCA.com Protection Status Copyright by webtailieu.net