NHÓM LỆNH DI CHUYỂN DỮ LiỆU:
1. Lệnh di chuyển dữ liệu trực tiếp:
- Cú pháp: MOV <ĐÍCH>,
Trong đó:
. <ĐÍCH>: có thể là thanh ghi, địa chỉ ô nhớ trong vùng RAM nội
. : có thể là thanh ghi, địa chỉ ô nhớ trong vùng RAM nội hoặc #
- Thực hiện: di chuyển nội dung vào <ĐÍCH>
- Ví dụ:
MOV A, 120
MOV B, #24
MOV 120,#10110010B
MOV R3, A
MOV P3,#3EH
15 trang |
Chia sẻ: hoang10 | Lượt xem: 560 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Điện - Điện Tử - Chương II: Tập lệnh 8951, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
CHƯƠNG II: TẬP LỆNH 8951I. NHÓM LỆNH DI CHUYỂN DỮ LiỆU: 1. Lệnh di chuyển dữ liệu trực tiếp: - Cú pháp: MOV , Trong đó: . : có thể là thanh ghi, địa chỉ ô nhớ trong vùng RAM nội . : có thể là thanh ghi, địa chỉ ô nhớ trong vùng RAM nội hoặc # - Thực hiện: di chuyển nội dung vào - Ví dụ: MOV A, 120 MOV B, #24 MOV 120,#10110010B MOV R3, A MOV P3,#3EH 2. Nhóm lệnh di chuyển dữ liệu gián tiếp: a. Liên quan đến vùng nhớ RAM nội: + Lệnh đọc bộ nhớ: - Cú pháp: MOV , @Rp Trong đó: . : thanh ghi, ô nhớ . Rp: là thanh ghi R0 hoặc R1 - Thực hiện: lấy nội dung ô nhớ trong vùng RAM nội có địa chỉ là nội dung thanh ghi Rp đặt vào - Ví dụ: MOV 120,#47 MOV R1,#120 MOV A,@R1; sau khi thực hiện xong đoạn lệnh nội dung thanh ghi A chứa giá trị 47 + Lệnh ghi bộ nhớ: - Cú pháp: MOV @Rp, Trong đó: . : thanh ghi, ô nhớ hoặc # . Rp: là thanh ghi R0 hoặc R1 - Thực hiện: đặt nội dung vào ô nhớ trong vùng RAM nội có địa chỉ là nội dung thanh ghi Rp. - Ví dụ 1: MOV R0,#100 MOV @R0, #0E3H; sau khi thực hiện xong đoạn lệnh nội dung ô nhớ 100 chứa giá trị E3H - Ví dụ 2: MOV A, #49 MOV R1,#127 MOV @R1, A ; (127) = 49 b. Liên quan đến vùng nhớ dữ liệu ngoài: + Lệnh đọc bộ nhớ: - Cú pháp: MOVX A, @DPTR - Thực hiện: lấy nội dung ô nhớ trong vùng dữ liệu ngoài có địa chỉ là nội dung thanh ghi DPTR đặt vào thanh ghi A - Ví dụ: MOV DPTR,#1000 MOVX A, @DPTR ; A (1000)+ Lệnh đọc bộ nhớ: - Cú pháp: MOVX @DPTR, A - Thực hiện: lấy nội dung A đặt vào ô nhớ trong vùng dữ liệu ngoài có địa chỉ là nội dung thanh ghi DPTR. - Ví dụ: MOV DPTR,#1000 MOV A, #4EH MOVX @DPTR, A ; ghi giá trị 4EH vào ô nhớ ngoài có địa chỉ 1000c. Lệnh liên quan đến vùng nhớ chương trình (đọc mã lệnh):- Cú pháp: MOVC A,@A+DPTR- Thực hiện: lấy nội dung ô nhớ trong vùng nhớ chương trình có địa chỉ là nội dung thanh ghi A + DPTR đặt vào thanh ghi A.- Ví dụ 1:MOV A,#2MOV DPTR,#500MOVC A,@A+DPTR ; A (502)- Ví dụ 2:MOV A, #4MOV DPTR,#TABLEMOVC A, @A+DPTRTABLE: DB 12H, 4EH, 0C7H, 084H, 055H, 3. Nhóm lệnh liên quan đến ngăn xếp: + Ghi vào ngăn xếp: - Cú pháp: PUSH Thanh ghi/ địa chỉ - Thực hiện: cất nội dung thanh ghi hoặc ô nhớ vào đỉnh ngăn xếp + Đọc ngăn xếp: - Cú pháp: POP Thanh ghi/ địa chỉ - Thực hiện: lấy nội dung ở đỉnh ngăn xếp gán vào thanh ghi, ô nhớ + ví dụ: MOV A,#100 MOV 100,#3EH PUSH ACC PUSH 100 MOV A, #21H MOV 100, #40 POP 100 POP ACC 4. Lệnh trao đổi dữ liệu: - Cú pháp: XCH A, Trong đó: có thể là thanh ghi, ô nhớ hoặc @Rp - Thực hiện: trao đổi nội dung thanh ghi A và II. NHÓM LỆNH SỐ HỌC1. Lệnh cộng: a. Cộng không nhớ: - Cú pháp: ADD A, Trong đó: có thể là thanh ghi, ô nhớ, # hoặc @Rp - Thực hiện: A A + b. Cộng có nhớ: - Cú pháp: ADDC A, Trong đó: có thể là thanh ghi, ô nhớ, # hoặc @Rp - Thực hiện: A A + + C2. Lệnh trừ: - Cú pháp: SUBB A, Trong đó: có thể là thanh ghi, ô nhớ, # hoặc @Rp - Thực hiện: A A - - C (carry bit)3. Lệnh nhân: - Cú pháp: MUL AB - Thực hiện: A * B = BA (B: byte cao của kết quả; A: byte thấp của kết quả)4. Lệnh chia: - Cú pháp: DIV AB - Thực hiện: A : B = A dư B (A: chứa phần nguyên; B: chứa phần dư)5. Lệnh tăng một đơn vị: - Cú pháp: INC Trong đó: có thể là thanh ghi, ô nhớ - Thực hiện: = + 1 6. Lệnh giảm một đơn vị: - Cú pháp: DEC Trong đó: có thể là thanh ghi, ô nhớ - Thực hiện: = - 1III. NHÓM LỆNH NHẢY:1. Lệnh nhảy không điều kiện:a. Nhảy gần:- Cú pháp: SJMP Trong đó: là một từ, hay nhóm từ viết liền nhau, theo sau bằng dấu ”:” dùng để đánh dấu vị trí chương trình.- Thực hiện: nhày không điều kiện đến vị trí chương trình được chỉ định bởi , khoảng cách từ lệnh đến không vượt quá 128 byte mã lệnh.b. Nhảy xa:- Cú pháp: LJMP - Thực hiện: nhảy đến vị trí được chỉ định bởi , có thể nằm ở bất kì vị trí nào trong chương trình.2. Lệnh nhảy có điều kiện:a. Lệnh so sánh và nhảy nếu không bằng (compare and jump if not equal)- Cú pháp:CJNE A, , Trong đó có thể là thanh ghi, ô nhớ hoặc #- Thực hiện: So sánh A và , nếu: + A ≠ : nhảy đến và nếu: . A > : bit C = 0 . A : bit C = 1 + A = : thực hiện lệnh kế tiếp- Một dạng khác của lệnh: CJNE Ri/@Rp, #, b. Lệnh giảm nội dung Ri một đơn vị và nhảy nếu bằng zero (decrement Ri by 1 and jump if not zero):- Cú pháp: DJNZ Ri, - Thực hiện: Ri = Ri - 1, nếu: + Ri > 0: nhảy đến + Ri =0: thực hiện lệnh kế tiếpc. Lệnh nhảy phụ thuộc vào trạng thái bit kiểm tra:- Cú pháp: JB/ JNB BIT, Trong đó: BIT có thể là các bit của một thanh ghi hoặc các chân I/O của vi điều khiển- Thực hiện: nhảy đến vị trí chương trình được chỉ định bởi nếu BIT bằng 1 hoặc bằng 0d. Lệnh nhảy thông qua việc kiểm tra cờ CARRY:- Cú pháp: JC/ JNC - Thực hiện: nhảy đến vị trí chương trình được chỉ định bởi nếu C bằng 1 hoặc bằng 0e. Lệnh nhảy thông qua việc kiểm tra cờ ZERO:- Cú pháp: JZ/ JNZ - Thực hiện: nhảy đến vị trí chương trình được chỉ định bởi nếu Z bằng 1 hoặc bằng 0IV. NHÓM LỆNH LOGIC:1. ANL A, 2. ORL A, 3. XRL A, 4. CLR A ; xóa nội dung thanh ghi A5. CPL A ; đảo các BIT trong thanh ghi A6. NOP ; lệnh không thực hiện, bỏ qua khi gặp lệnh này7. SWAP A ; đảo vị trí 4 bit cao và 4 bit thấp trong thanh ghi A8 Nhóm lệnh quay vòng: a. Quay phải thanh ghi A - Cú pháp: RR A- Thực hiện: Bit 7 ------------------>- bit 0b. Lệnh quay trái thanh ghi A:- Cú pháp: RL A- Thực hiện: Bit 7 ------------------- bit 0CV. NHÓM LỆNH THAO TÁC BIT:1. CLR BIT ; xóa BIT = 02. SETB BIT ; đặt BIT = 13. CPL BIT ; đảo nội dung hiện tại của BIT4. Lệnh di chuyển BIT - MOV C, BIT ; C BIT - MOV BIT, C ; BIT CVI. NHÓM LỆNH LIÊN QUAN ĐẾN CHƯƠNG TRÌNH CON:1. CALL ; gọi chương trình con2. RET ; kết thúc chương trình con3. RETI ; kết thúc chương trình ngắt