... Lập trình ASM cho 8051TẬP LỆNH ASM THƯỜNG DÙNG CHO 8051Người báo c o: Mai Thành PhươngEmail:maigiapy@yahoo.com1.MOV Rn, DIRECT2.MOV @Rn,#DATA3.MOV Rn,#DATA4.CLR 5.SETB 6.RET7.RETI8.JMP9.JB BIT,REL10.JNB BIT,REL11.INC12.DEC13.CJNE Rn,#Data,REL14.ADD A,Rn15.SUBB A,Rn16.MULL A,B17.DIV A,B18.RLCChú giải:Rn: Viết tắt cho c c thanh ghi từ R0R7DIRECT: địa chỉ c a ô nhớ dữ liệu1.Lấy dữ liệu c t ở DIRECT bỏ vào trong thanh ghi Rn. VD Mov r1,21h21h 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,#21hMov @R0,#552 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,#553.Nhập 1 số nguyên vào RnHo c c thể viết Mov r7,#11111111b. 255 ở hệ thập phân tương đương với 1111111b ở hệ nhị phân4.Xóa 1 bít, xóa 1 ô nhớVD1: mov 21h,#11111111bClr 21h.0Mov a,21hVới 3 lệnh trên thì thanh ghi A sẽ chứa số 11111110B VD2.CLR P1.0 lệnh này làm cho điện áp trên chân số 1 c a chíp AT8 9C5 1 xuống 0 vôn5.Ngư c lại với ClrVD Setb p1.0, kết quả làm điện áp trên chân số 1 lên 5 vôn6.Quay lại chỗ mà chương trình rẽ nhánhNế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ắtVD 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 SJMP9.Lệnh kiểm tra 1 bít, Nếu bít đó bằng 1 thì rẽ nhánhVD Jb p0.0,xuong0Setb p1.0Xuong0:Clr p1.0RetC 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ắt10. Lệnh kiểm tra bít, nếu bít =0 thì rẽ nhánh11.Lệnh tăng ô nhớ lên 1 đơn vịVD mov r2,#1Inc r2L c này trong thanh ghi r2 sẽ chứa số 212. Lệnh giảm 1 đơn vị13.Lệnh kiểm tra thanh ghi Rn , nếu kh c Data thì rẽ nhánhVD 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ípMov r0,#0Jnb p1.0,tang_so_nguoiRetTang_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ườiCall do_chuong ; gọi hàm đổ chuôngQuaylai:RetDo_chuong:Setb p1.1 ; chuông nối với chân số 2 c a chípRet14. Lệnh c ng, kết quả lưu vào AVD mov A,#1Mov R3,#4Add a,r3Kết quả: A=415. Lệnh trừ16. nhân17.chia18. lệnh quay dịchVD mov r1,#01110011BSetb CFRLC r1 Kết quả: r1=11100111B, CF=0Nếu thêm 1 lệnh RLC r1 nữa thì Kq: r1=11001110, CF=1II: 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 <ĐÍ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 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 <ĐÍCH>, @Rp Trong đó: . <ĐÍCH>: 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 <ĐÍCH> 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 ⇓ ... ̉ 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êń ́ ̉ ̀ ́ ̉ ̣ ̣ ́ ̉ ̀ ̉ Th c hiên: nhay đên vi tri chương trinh đư c chi đinh bơị ... 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ơị ̣ ̉ ́ ̣ ́ ̀ ̣ ̉ ̣ ̉ nêu C băng 1 ho c băng 0́...