Dạng lệnh Mô tả Số Độ MC dài Ví dụ LỆNH LUẬN LÝ TÁC ĐỘNG TRÊN BIT CLR CLR SETB SETB C BIT C BIT CPL C CPL BIT ANL C, BIT ANL Gán cờ C=0 Gán BIT =0 Gán cờ C=1 Gán BIT =1 Đảo giá trị cờ C Nếu C=1 sau lệnh C=0 ngược lại CLR CLR SETB SETB C P1.0 C P1.0 1 1 2 CPL C 1 CPL P1.0 Phép AND cờ C BIT Kết cất vào C ANL C,P1.0 2 C, BIT Phép AND cờ C bù BIT Kết cất vào C ANL C, /P1.0 2 ORL C, BIT Phép OR cờ C BIT Kết cất vào C ORL C,P1.7 2 ORL C,/BIT Phép OR cờ C bù BIT Kết cất vào C ORL C,/P1.7 2 MOV MOV JC JNC C,BIT BIT,C nhãn nhãn Gán cờ C=BIT Gán BIT giá trị cờ C Nhảy đến nhãn cờ C =1 Nhảy đến nhãn cờ C=0 MOV MOV JC JNC C,ACC.7 ACC.7,C nhohon nhohon 2 2 2 Đảo giá trị BIT Nếu BIT=1 sau lệnh BIT=0 ngược lại JB JNB BIT, nhãn BIT, nhãn Nhảy đến nhãn BIT = Nhảy đến nhãn BIT = JB JNB P1.0,start P1.0,start 2 3 JBC BIT, nhãn Nhảy đến nhãn BIT = sau gán BIT = JBC P1.0,main ACALL DELAY 2 LCALL DELAY CALL DELAY RET RETI X 2 X 1 AJMP Main 2 LJMP SJMP JMP Main Main Main 2 X X LỆNH RẼ NHÁNH CHƯƠNG TRÌNH ACAL L LCALL CALL RET RETI nhãn Gọi thực thi chương trình có tên “nhãn” Sau thực thi chương trình con, VXL thực câu lệnh phía sau câu lệnh gọi Cần cất giá trị ghi sử dụng chương trình lệnh PUSH/POP nhãn nhãn Thoát khỏi chương trình Thoát khỏi chương trình phục vụ ngắt AJMP nhãn LJMP SJMP JMP nhãn nhãn nhãn Nhảy đến nhãn Số chu kỳ máy lệnh JMP định thời điểm dịch phụ thuộc vào khoảng cách từ điểm gọi đến nhãn Lệnh nhảy không cần điều kiện Nhảy đến vị trí cách vị trí trỏ DPTR khoảng A nhãn Nhảy đến nhãn ghi A=0 nhãn Nhảy đến nhãn ghi A khác So sánh nhảy đến nhãn giá trị ghi A không A,direct,nhãn giá trị ô nhớ direct JMP @A+DPTR JZ JNZ CJNE CJNE CJNE CJNE DJNZ DJNZ NOP JMP @A+DPTR JZ JNZ Abang0 Akhac0 2 2 CJNE A,B,AkhacB So sánh nhảy đến nhãn giá trị ghi A không giá trị data CJNE A,#20,Akhac20 So sánh nhảy đến nhãn giá trị ghi Rn không giá trị data Trong đó, Rn ghi R0, R1, R2, …, R7 CJNE R5,#20,R5khac20 So sánh nhảy đến nhãn giá trị ô nhớ trỏ Ri (R0 hay R1) không giá trị data.vd: R0=40h, so sánh giá trị ô nhớ 40h với 20 ta dùng câu lệnh bên CJNE @R0,#20,memkhac20 Rn,nhãn giảm giá trị ghi Rn (R0 -> R7) đơn vị, sau nhảy đến nhãn Rn khác DJNZ R7,khackhong 2 direct, nhãn giảm giá trị ô nhớ direct rổi nhảy đến nhãn giá trị ô nhớ direct khác giá trị ô nhớ direct thực DJNZ câu lệnh sau câu lệnh 40h,khackhong 1 A,#data,nhãn Rn,#data,nhã n @Ri,#data,n hãn tạm dừng VXL chu kỳ máy NOP CÂU LỆNH CHUYỂN DỮ LIỆU MOV A, Rn MOV A, direct MOV A, @Ri MOV A, #data MOV Rn, A MOV MOV MOV MOV MOV Rn, direct Rn, #data direct, A direct, Rn direct1, direct2 chép liệu từ ghi Rn vào ghi A MOV A, R7 1 MOV A, 40h MOV A, @R0 1 MOV A, #10 chép liệu từ ghi A vào ghi Rn MOV R1, A 1 chép liệu từ ô nhớ vào ghi Rn gán Rn số data chép liệu A vào ô nhớ chép liệu Rn vào ô nhớ MOV MOV MOV MOV R2, 40h R2,#10 40h, A 50h, R7 1 2 2 chép liệu từ ô nhớ direct2 vào ô nhớ direct1 MOV 40h, 50h chép liệu từ ô nhơ vào ghi A chép liệu từ ô nhớ trỏ ghi Ri vào ghi A gán A số data MOV direct, @Ri chép liệu từ ô nhớ trở Ri vào ô nhớ direct MOV 40h, @R0 2 MOV direct, #data gán nội dung ô nhớ direct giá trị data MOV 50h, #10 MOV @Ri, A chép liệu ghi A vào ô nhớ trỏ Ri MOV @R0, A 1 MOV @Ri, direct chép liệu từ ô nhớ trực tiếp vào ô nhớ trỏ Ri MOV @R1, 40h 2 MOV @Ri, #data gán nội dung ô nhớ trỏ Ri giá trị data MOV @R0, #10 MOV MOVC DPTR, #data A,@A+DPT R gán giá trị ghi DPTR data MOV DPTR, #2000h chép vào A byte từ nhớ chương trình vị trí cách trỏ gốc DPTR khoảng A MOVC A, @A+DPTR chép vào A byte từ nhớ chương trình vị trí cách vị trí lệnh hành khoảng A MOVC A, @A+PC MOVX A, @R0 chép vào A byte từ ô nhớ có địa trỏ DPTR MOVX A, @DPTR chép nội dung ghi A vào ô nhớ trỏ Ri MOVX @Ri, A MOVX @DPTR, A PUSH ACC 2 MOVC A, @A+PC MOVX A, @Ri MOVX A, @DPTR MOVX @Ri, A MOVX @DPTR, A PUSH direct POP direct lấy lại giá trị cất vùng stack vào ô nhớ direct POP ACC 2 XCH A, Rn hoán đổi nội dung hai ghi A Rn XCH A, R7 1 XCH A, direct hoán đổi nội dung ghi A nội dung ô nhớ direct XCH A, 60h XCH A, @Ri hoán đổi nội dung ghi A nội dung ô nhớ trỏ Ri XCH A, @R0 1 chép vào A byte từ ô nhớ có địa trỏ Ri chép nội dung ghi A vào ô nhớ trỏ DPTR cất giá trị ô nhớ direct vào vùng nhớ stack XCHD A, @Ri ADD A, Rn ADD A, direct ADD A, @Ri ADD A, #data ADDC A, Rn ADDC hoán đổi nibble thấp ghi A nibble thấp nội dung ô nhớ trỏ Ri LỆNH SỐ HỌC XCHD A, @R1 1 ADD A, R5 1 ADD A, 70h ADD A, @R0 1 ADD A, #10 cộng nội dung ghi A Rn cộng thêm cờ nhớ C, kết cất vào A ADDC A, R7 1 A, direct cộng nội dung ghi A với ô nhớ direct cộng thêm cờ nhớ C, kết cất vào A ADDC A, 41h ADDC A, @Ri cộng nội dung ghi A với ô nhớ trỏ Ri cộng thêm cờ nhớ C , kết cất vào A ADDC A, @R0 1 ADDC A, #data cộng nội dung ghi A số data cộng thêm cờ nhớ C, kết cất vào A ADDC A, #10 SUBB A, Rn trừ nội dung ghi A Rn trừ thêm cờ nhớ C, kết cất vào A SUBB A, R7 1 SUBB A, direct trừ nội dung ghi A với ô nhớ direct trừ thêm cờ nhớ C, kết cất vào A SUBB A, 41h cộng nội dung ghi A Rn, kết cất vào A cộng nội dung ghi A với ô nhớ direct, kết cất vào A cộng nội dung ghi A với ô nhớ trỏ Ri, kết cất vào A cộng nội dung ghi A số data, kết cất vào A SUBB A, @Ri SUBB A, #data INC INC INC A Rn direct INC @Ri DEC DEC DEC trừ nội dung ghi A với ô nhớ trỏ Ri trừ thêm cờ nhớ C , kết cất vào A SUBB A, @R0 1 SUBB A, #10 INC INC INC A R6 42h 1 1 tăng nội dung ô nhớ trỏ Ri lên đơn vị INC @R0 1 A Rn direct giảm nội dung ghi A lên đơn vị giảm nội dung ghi Rn lên đơn vị giảm nội dung ô nhớ direct lên đơn vị DEC DEC DEC A R6 43h 1 1 DEC @Ri giảm nội dung ô nhớ trỏ Ri lên đơn vị DEC @R0 1 INC DPTR INC DPTR MUL AB tăng giá trị ghi DPTR lên đơn vị nhân nội dung ghi A ghi B, kết quả: A chứa byte thấp, B chứa byte cao MUL AB DIV AB chia A cho B, kết quả: A chứa thương số, B chứa số dư DIV AB trừ nội dung ghi A số data trừ thêm cờ nhớ C, kết cất vào A tăng nội dung ghi A lên đơn vị tăng nội dung ghi Rn lên đơn vị tăng nội dung ô nhớ direct lên đơn vị DA A hiệu chỉnh BCD cho nội dung ghi A Nếu digit A (dạng HEX) lớn cộng thêm vào digit đó, ngược lại cộng lệnh hoạt động cho phép cộng DA LỆNH LUẬN LÝ TÁC ĐỘNG TRÊN BYTE thực AND nội dung ghi A với Rn, kết cất ANL vào A A 1 A, R7 1 ANL A, Rn ANL A, direct thực AND nội dung ghi A với ô nhớ direct, kết cất vào A ANL A, 45h ANL A, @Ri thực AND nội dung ghi A với ô nhớ có địa trỏ Ri, kết cất vào A ANL A, @R0 1 ANL A, #data thực AND nội dung ghi A với số data, kết cất vào A ANL A, #45h ANL direct, A thực AND nội dung ô nhớ direct với ghi A , kết cất vào ô nhớ direct ANL 45h, A ANL direct, #data thực AND nội dung ô nhớ direct với số data , kết cất vào ô nhớ direct ANL 45h, #45h ORL A, Rn ORL A, R7 1 ORL A, direct ORL A, 45h thực OR nội dung ghi A với Rn, kết cất vào A thực OR nội dung ghi A với ô nhớ direct, kết cất vào A ORL A, @Ri thực OR nội dung ghi A với ô nhớ có địa trỏ Ri, kết cất vào A ORL A, @R0 1 ORL A, #data thực OR nội dung ghi A với số data, kết ORL cất vào A A, #45h ORL direct, A thực OR nội dung ô nhớ direct với ghi A , kết cất vào ô nhớ direct ORL 45h, A ORL direct, #data thực OR nội dung ô nhớ direct với số data , kết cất vào ô nhớ direct ORL 45h, #45h XRL A, Rn thực XOR nội dung ghi A với Rn, kết cất vào A XRL A, R7 1 XRL A, direct thực XOR nội dung ghi A với ô nhớ direct, kết cất vào A XRL A, 45h XRL A, @Ri thực XOR nội dung ghi A với ô nhớ có địa trỏ Ri, kết cất vào A XRL A, @R0 1 XRL A, #data thực XOR nội dung ghi A với số data, kết cất vào A XRL A, #45h XRL direct, A thực XOR nội dung ô nhớ direct với ghi A , kết cất vào ô nhớ direct XRL 45h, A XRL direct, #data XRL 45h, #45h CLR A CLR A 1 thực XOR nội dung ô nhớ direct với số data , kết cất vào ô nhớ direct gán A=0 CPL A lấy bù giá trị A thực gán A= 255 - A CPL A 1 RL A quay trái bit ghi A RL A 1 RLC A quay trái bit ghi A có dùng thêm cờ nhớ C RLC A 1 RR A RR A 1 RLC A quay phải bit ghi A quay phải bit ghi A có dùng thêm cờ nhớ RLC A 1 SWAP A hoán đổi nibble cao nibble thấp ghi A SWAP A 1 C 10 ... Main Main 2 X X LỆNH RẼ NHÁNH CHƯƠNG TRÌNH ACAL L LCALL CALL RET RETI nhãn Gọi thực thi chương trình có tên “nhãn” Sau thực thi chương trình con, VXL thực câu lệnh phía sau câu lệnh gọi Cần cất... ghi sử dụng chương trình lệnh PUSH/POP nhãn nhãn Thoát khỏi chương trình Thoát khỏi chương trình phục vụ ngắt AJMP nhãn LJMP SJMP JMP nhãn nhãn nhãn Nhảy đến nhãn Số chu kỳ máy lệnh JMP định thời... direct lên đơn vị DA A hiệu chỉnh BCD cho nội dung ghi A Nếu digit A (dạng HEX) lớn cộng thêm vào digit đó, ngược lại cộng lệnh hoạt động cho phép cộng DA LỆNH LUẬN LÝ TÁC ĐỘNG TRÊN BYTE thực