intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Lập trình ASM cho 8051

Chia sẻ: Trần Thanh Phương | Ngày: | Loại File: DOC | Số trang:9

609
lượt xem
191
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tài liệu tham khảo Lập trình ASM cho 8051

Chủ đề:
Lưu

Nội dung Text: Lập trình ASM cho 8051

  1. Lập trình ASM cho 8051 TẬP LỆNH ASM THƯỜNG DÙNG CHO 8051 Người báo cáo: Mai Thành Phương Email:maigiapy@yahoo.com 1.MOV Rn, DIRECT 2.MOV @Rn,#DATA 3.MOV Rn,#DATA 4.CLR  5.SETB  6.RET 7.RETI 8.JMP 9.JB BIT,REL 10.JNB BIT,REL 11.INC 12.DEC 13.CJNE Rn,#Data,REL 14.ADD A,Rn 15.SUBB A,Rn 16.MULL A,B
  2. 17.DIV A,B 18.RLC Chú giải: Rn: Viết tắt cho các thanh ghi từ R0­R7 DIRECT: địa chỉ của ô nhớ dữ liệu 1.Lấy dữ liệu cất ở DIRECT bỏ vào trong thanh ghi Rn. VD Mov r1,21h 21h là địa chỉ Ram trên Chíp.Địa chỉ thường viết dưới dạng số Hex, chữ h ở sau chỉ số Hex, chữ B  chỉ số nhị phân, không có chữ theo sau là số nguyên.  2.Nhập 1 số nguyên vào địa chỉ mà Rn đang nắm giữ. Vd: mov r0,#21h Mov @R0,#55 2 lệnh trên sẽ nhập số 55 vào địa chỉ 21h, lệnh thay thế 2 lệnh trên: Mov 21h,#55 3.Nhập 1 số nguyên vào Rn Hoặc có thể viết Mov r7,#11111111b. 255 ở hệ thập phân tương đương với 1111111b ở hệ nhị phân 4.Xóa 1 bít, xóa 1 ô nhớ VD1: mov 21h,#11111111b Clr 21h.0 Mov a,21h Với 3 lệnh trên thì thanh ghi A sẽ chứa số 11111110B 
  3. VD2.CLR P1.0 lệnh này làm cho điện áp trên chân số 1 của chíp AT89C51 xuống 0 vôn 5.Ngược lại với Clr VD Setb p1.0, kết quả làm điện áp trên chân số 1 lên 5 vôn 6.Quay lại chỗ mà chương trình rẽ nhánh Nếu không gặp các lệnh rẽ nhánh thì chương trình sẽ thực hiện theo thứ tự từ trên xuống dưới. 7.quay lại chỗ mà chương trình bị ngắt VD gia chủ đang kể câu chuyện về đứa con gái của ông ta, tới đoạn “Con tôi khóc nhiều nên mắt đã  bị mù” bỗng chuông điện thoại reo. Sau khi nghe xong điện thoại quay lại câu chuyện, thay vì phải  hỏi “tôi kể tới đâu rồi” RETI là câu trả lời. 8. lệnh nhảy, lệnh rẽ nhánh không điều kiện. lệnh cùng chức năng SJMP 9.Lệnh kiểm tra 1 bít, Nếu bít đó bằng 1 thì rẽ nhánh VD Jb p0.0,xuong0 Setb p1.0 Xuong0: Clr p1.0 Ret Các lệnh trên sẽ kiểm tra 1 nút nhấn nối Mass, nếu nhấn xuống thì đèn sáng, nếu thả thì đèn tắt 10. Lệnh kiểm tra bít, nếu bít =0 thì rẽ nhánh 11.Lệnh tăng ô nhớ lên 1 đơn vị VD mov r2,#1 Inc r2
  4. Lúc này trong thanh ghi r2 sẽ chứa số 2 12. Lệnh giảm 1 đơn vị 13.Lệnh kiểm tra thanh ghi Rn , nếu khác Data thì rẽ nhánh VD chương trình đếm số người đi qua cổng, đủ 5 người thì đổ chuông, cảm biến gắn vào chân số 1  của chíp Mov r0,#0 Jnb p1.0,tang_so_nguoi Ret Tang_so_nguoi: Inc r0 ;tăng biến đếm lên 1  ĐV  Cjne r0,#5,quaylai ; nếu khác 5 thì quay lại đếm người Call do_chuong ; gọi hàm đổ chuông Quaylai: Ret Do_chuong: Setb p1.1 ; chuông nối với chân số 2 của chíp Ret 14. Lệnh cộng, kết quả lưu vào A VD mov A,#1
  5. Mov R3,#4 Add a,r3 Kết quả: A=4 15. Lệnh trừ 16. nhân 17.chia 18. lệnh quay dịch VD mov r1,#01110011B Setb CF RLC r1  Kết quả: r1=11100111B, CF=0 Nếu thêm 1 lệnh RLC r1 nữa thì  Kq: r1=11001110, CF=1 II: TẬP LỆNH ĐẦY ĐỦ  1. 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 
  6. 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ụ: 
  7. MOV DPTR,#1000  MOV A, #4EH  MOVX @DPTR, A ; ghi giá trị 4EH vào ô nhớ ngoài có địa chỉ 1000  c. 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,#2  MOV DPTR,#500  MOVC A,@A+DPTR ; A ⇓  (502)  ­ Ví dụ 2:  MOV A, #4  MOV DPTR,#TABLE  MOVC A, @A+DPTR  TABLE: 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ỌC  1. 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 + 
  8. 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 + + C  2. 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 cua kết qua; A: byte thấp cua kết qua)  ̉ ̉ ̉ ̉ 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 vi:  ̣ ̣ ­ Cu phap: INC   ́ ́ ́ Trong đo:  co thể la thanh ghi, ô nhớ  ́ ́ ́ ̀ ­ Thưc hiện:  =  + 1  ̣ ́ ́ 6. Lênh giam một đơn vi:  ̣ ̉ ̣ ­ Cu phap: DEC   ́ ́ ́ Trong đo:  co thể la thanh ghi, ô nhớ ́ ́ ́ ̀ ­ Thưc hiện:  =  ­ 1  ̣ ́ ́ III. NHOM LỆNH NHAY:  ́ ̉ 1. Lênh nhay không điều kiện:  ̣ ̉ a. Nhay gần:  ̉ ­ Cu phap: SJMP  ́ ́ Trong đo: la một từ, hay nhom từ viết liền nhau, theo sau bằng dấu ”:” dung để đanh dấu vi trí  ́̀ ́ ̀ ́ ̣ chương trinh.  ̀ ­ Thưc hiện: nhay không điều kiện đến vi tri chương trinh được chi đinh bởi , khoang cach từ lệnh  ̣ ̀ ̣́ ̀ ̣̉ ̉ ́ đên không vươt qua 128 byte ma lệnh.  ́ ̣ ́ ̃ b. Nhay xa:  ̉ ­ Cu phap: LJMP  ́ ́ ­ Thưc hiện: nhay đến vi tri được chi đinh bởi , co thể nằm ở bất ki vi tri nao trong chương trinh.  ̣ ̉ ̣́ ̣̉ ́ ̣̀́ ̀ ̀ 2. Lênh nhay co điều kiện:  ̣ ̉ ́
  9. a. Lênh so sanh va nhay nếu không bằng (compare and jump if not equal)  ̣ ́ ̀ ̉ ­ Cu phap:  ́ ́ CJNE A, ,  Trong đó co thể la thanh ghi, ô nhớ hoặc #  ́ ̀ ­ Thưc hiện: So sanh A và , nêu:  ̣ ́ ́ + A ≠ : nhay đến va nếu:  ̉ ̀ . A > : bit C = 0  . A  0: nhay đến  ̉ + Ri =0: thưc hiện lệnh kế tiếp  ̣ c. Lênh nhay phu thuộc vao trang thai bit kiểm tra:  ̣ ̉ ̣ ̀ ̣ ́ ­ Cu phap: JB/ JNB BIT,  ́ ́ Trong đo: BIT co thể la cac bit cua một thanh ghi hoặc cac chân I/O cua vi điều khiển  ́ ́ ̀́ ̉ ́ ̉ ­ Thưc hiện: nhay đến vi tri chương trinh được chi đinh bởi nêu BIT bằng 1 hoặc bằng 0  ̣ ̉ ̣́ ̀ ̣̉ ́ d. Lênh nhay thông qua việc kiểm tra cờ CARRY:  ̣ ̉ ­ Cu phap: JC/ JNC  ́ ́ ­ Thưc hiện: nhay đến vi tri chương trinh được chi đinh bởi nêu C bằng 1 hoặc bằng 0 ̣ ̉ ̣́ ̀ ̣̉ ́ e. Lênh nhay thông qua việc kiểm tra cờ ZERO:  ̣ ̉ ­ Cu phap: JZ/ JNZ  ́ ́ ­ Thưc hiện: nhay đến vi tri chương trinh được chi đinh bởi nêu Z bằng 1 hoặc bằng 0 ̣ ̉ ̣́ ̀ ̣̉ ́ IV. NHOM LỆNH LOGIC:  ́ 1. ANL A,  2. ORL A,  3. XRL A,  4. CLR A ; xoa nội dung thanh ghi A  ́ 5. CPL A ; đao cac BIT trong thanh ghi A  ̉ ́ 6. NOP ; lênh không thực hiện, bo qua khi gặp lệnh nay  ̣ ̉ ̀ 7. SWAP A ; đao vi tri 4 bit cao va 4 bit thấp trong thanh ghi A  ̉ ̣́ ̀ 8 Nhom lệnh quay vong:  ́ ̀ a. Quay phai thanh ghi A  ̉ ­ Cu phap: RR A  ́ ́
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2