8051 Instruction Set Các ký hi u dùng tài li u: A: ghi ch a B: ghi B Ri: ghi R0 ho c R1 c a b t k b ng ghi b ng ghi RAM Rn: b t k ghi c a b t k b ng ghi b ng ghi RAM Dptr: ghi tr d li u (có đ r ng 16bit đ c k t h p t ghi bit DPH DPL) Direct: m t bi n bit(hay ô nh ) b t k RAM (tr 32 ghi Rn đ u RAM) #data: m t h ng s bit b t k #data16: m t h ng s 16 bit b t k : đ a ch n m kho ng [PC-128 ; PC+127] : đ a ch n m kho ng [PC: đ a ch b t k không gian 64K (áp d ng cho c khơng gian nh ch ng trình khơng gian nh d li u) : bit b t k có th đánh đ a ch đ c (khơng dùng cho bit không đánh đ c đ a ch ) Các l nh tác đ ng đ n c ghi tr ng thái: STT L nh C ADD ADDC SUBB MUL DIV DA RRC RLC SETB C CLR C 10 CPL C 11 ANL C, 12 ORL C, 13 MOV C, 14 CJNE 0: c b xóa v “0” 1: c b set lên “1” X: c b thay đ i tùy theo k t qu c a vi c th c hi n l nh CY X X X 0 X X X X X X X X C OV X X X X X C AC X X X Các l nh tính tốn s h c: STT Cú pháp l nh Mã l nh Toán h ng ADD A,Rn ADD A,direct ADD A,@Ri ADD A,#data ADDC A,Rn ADDC A,direct ADDC A,@Ri ADDC A,#data SUBB A,Rn 10 SUBB A,direct 11 SUBB A,@Ri 12 SUBB A,#data 13 INC A 14 INC Rn 15 INC Direct 16 INC @Ri 17 DEC A 18 DEC Rn 19 DEC Direct 20 DEC @Ri 21 INC Dptr 22 MUL AB 23 DIV AB 24 DA A Mô t A = A + Rn A = A + direct A = A + @Ri A = A + #data A = A + Rn + C A = A + direct + C A = A + @Ri + C A = A + #data + C A = A – Rn – C A = A – direct – C A = A – @Ri – C A = A – #data – C A=A+1 Rn = Rn + direct = direct + @Ri = @Ri + A=A–1 Rn = Rn – direct = direct – @Ri = @Ri – dptr = dptr + B:A = A*B A/B = A(th ng) + B (d ) Hi u ch nh th p phân s li u ghi A S byte mã hóa 2 2 2 1 1 1 1 S chu k clock 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 24 48 48 12 Các l nh th c hi n phép tốn lơgic: STT Mơ t Cú pháp l nh Mã l nh Toán h ng ANL A,Rn A = (A)and(Rn) ANL A,direct A = (A)and(direct) ANL A,@Ri A = (A)and(@Ri ) ANL A,#data A = (A)and(#data) ANL direct,A direct = (direct)and(A) ANL Direct,#data direct = (direct)and(#data) ORL A,Rn A = (A)or(Rn) ORL A,direct A = (A)or(direct) ORL A,@Ri A = (A)or(@Ri ) 10 ORL A,#data A = (A)or(#data) 11 ORL direct,A direct = (direct)or(A) 12 ORL Direct,#data direct = (direct)or(#data) 13 XRL A,Rn A = (A)xor(Rn) 14 XRL A,direct A = (A)xor(direct) 15 XRL A,@Ri A = (A)xor(@Ri ) 16 XRL A,#data A = (A)xor(#data) 17 XRL direct,A direct = (direct)xor(A) 18 XRL Direct,#data direct = (direct)xor(#data) 19 CLR A A=0 20 CPL A A = not(A) 21 RL A Quay trái A 22 RLC A Quay trái A qua c C 23 RR A Quay ph i A 24 RRC A Quay ph i A qua c C 25 SWAP A Hoán đ i n a c a A S byte mã hóa 2 2 2 1 1 1 S chu k clock 12 12 12 12 12 24 12 12 12 12 12 24 12 12 12 12 12 24 12 12 12 12 12 12 12 Các l nh trao đ i d li u: STT Cú pháp l nh Mã l nh Toán h ng MOV A,Rn MOV A,direct MOV A,@Ri MOV A,#data MOV Rn,A MOV Rn,direct MOV Rn,#data MOV Direct,A MOV Direct,Rn 10 MOV Direct,direct 11 MOV Direct,@Ri 12 MOV Direct,#data 13 MOV @Ri,A 14 MOV @Ri,direct 15 MOV @Ri,#data 16 MOV Dptr,#data16 17 MOVC A,@A+dptr 18 MOVC A,@A+PC 19 MOVX A,@Ri 20 MOVX A,@dptr 21 MOVX @Ri,A 22 MOVX @dptr,A 23 PUSH Direct 24 POP Direct 25 26 27 28 XCH XCH XCH XCHD A,Rn A,direct A,@Ri A,@Ri Mô t Copy giá tr c a toán h ng bên ph i cho vào toán h ng bên trái (các toán h ng đ u 8bit) a giá tr 16bit vào ghi DPTR c giá tr b nh ch ng trình t i đ a ch = A + DPTR, c t k t qu vào A c giá tr b nh ch ng trình t i đ a ch = A + PC, c t k t qu vào A c vào A giá tr c a b nh t i đ a ch = Ri c vào A giá tr c a b nh t i đ a ch = DPTR Ghi giá tr c a A vào b nh t i đ a ch = Ri Ghi giá tr c a A vào b nh t i đ a ch = DPTR C t n i dung c a bi n RAM vào đ nh ng n x p L y byte đ nh ng n x p cho vào bi n RAM Hoán đ i giá tr c a A tốn h ng cịn l i Hốn đ i bit th p gi a A m t ô nh Ram t i đ a ch = Ri S byte mã hóa 2 2 2 3 2 S chu k clock 12 12 12 12 12 24 12 12 24 24 24 24 12 12 12 24 24 24 24 24 24 24 24 24 1 12 12 12 12 Các l nh thao tác x lý đ i s Bool: STT Cú pháp l nh Mã l nh Toán h ng CLR C CLR Bit SETB C SETB Bit CPL C CPL Bit ANL C,bit ANL C,/bit ORL C,bit 10 ORL C,/bit 11 MOV C,bit 12 MOV Bit,C 13 JC 14 JNC 15 JB Bit, 16 JNB Bit, 17 JBC Bit, Mơ t Xóa c C v Xóa bit v tc C=1 t bit = o giá tr c a c C o giá tr c a bit C = (C)and(bit) C = (C)and(đ o c a bit) C = (C)or(bit) C = (C)or(đ o c a bit) C = bit Bit = C nh y đ n nhãn n u C = nh y đ n nhãn n u C = nh y đ n nhãn n u bit= nh y đ n nhãn n u bit= nh y đ n nhãn n u bit = sau xóa ln bit v S byte mã hóa 2 2 2 2 2 3 S chu k clock 12 12 12 12 12 12 24 24 24 24 12 24 24 24 24 24 24 Các l nh r nhánh ch ng trình: STT Cú pháp l nh Mã l nh Toán h ng ACALL LCALL RET RETI 10 11 AJMP LJMP SJMP JMP JZ JNZ CJNE @A+DPTR A,direct, 12 CJNE A,#data, 13 CJNE Rn,#data, 14 CJNE @Ri,#data, 15 DJNZ Rn, 16 DJNZ Direct, 17 NOP Mô t g i ch ng trình g i ch ng trình tr v t ch ng trình tr v t ch ng trình ph c v ng t nh y đ n nhãn nh y đ n nhãn nh y đ n nhãn nh y đ n đ a ch = A+DPTR nh y đ n nhãn n u A = nh y đ n nhãn n u A ≠ So sánh nh y đ n nhãn n u A ≠ direct So sánh nh y đ n nhãn n u A ≠ data So sánh nh y đ n nhãn n u Rn ≠ data So sánh nh y đ n nhãn n u byte có đ a ch = Ri có n i dung khác v i data Gi m Rn nh y đ n nhãn n u ch a gi m v Gi m direct nh y đ n nhãn n u ch a gi m v Khơng làm c S byte mã hóa 3 1 S chu k clock 24 24 24 24 2 24 24 24 24 24 24 24 24 24 24 24 24 12 ... 12 12 12 Các l nh thao tác x lý đ i s Bool: STT Cú pháp l nh Mã l nh Toán h ng CLR C CLR Bit SETB C SETB Bit CPL C CPL Bit ANL C,bit ANL C,/bit ORL C,bit 10 ORL C,/bit 11 MOV C,bit 12 MOV Bit,C