指令格式(助記符) | 指令功能說明 | 字節 | 周期 |
MOV A,direct | (direct)→(A) 直接單元地址中的數據→累加器A | 1 | 1 |
MOV A,#data | #data→(A) 8位立即數→累加器A | 2 | 1 |
MOV A,Rn | (Rn )→(A) Rn寄存器中的數據→累加器A | 1 | 1 |
MOV A,@Ri | ((Ri))→(A) Ri中的數據指向的地址單元中的數據 →累加器A | 1 | 1 |
MOV Rn,direct | (direct)→(Rn) 直接尋址單元中的數據 —> 寄存器Rn | 2 | 2 |
MOV Rn,#data | #data→(Rn) 8位立即數 —> 寄存器Rn | 2 | 1 |
MOV Rn,A | (A)→(Rn) 累加器A中的數據 —> 寄存器Rn | 1 | 1 |
MOV direct,direct | (direct)→(direct) 直接地址單元中的數據→直接地址單元direct | 3 | 2 |
MOV direct,#data | #data→(direct) 立即數→直接地址單元direct | 3 | 2 |
MOV direct,A | (A)→(direct) 累加器A中的數據→直接地址單元direct | 2 | 2 |
MOV direct,Rn | (Rn)→(direct) 寄存器Rn中的數據→直接地址單元direct | 2 | 2 |
MOV direct,@Ri | ((Ri))→(direct) 寄存器Ri中的數據指定的地址單元中數據→直接地址單元direct | 2 | 2 |
MOV @Ri,direct | (direct)→((Ri)) 直接地址單元中的數據→以Ri中的內容為地址的RAM單元 | 2 | 2 |
MOV @Ri,#data | #data→((Ri)) 立即數→以Ri中的內容為地址的RAM單元 | 2 | 1 |
MOV @Ri,A | (A)→((Ri)) 累加器A中的數據→以Ri中的內容為地址的RAM單元 | 1 | 1 |
MOVC A,@A+DPTR | ((A))+(DPTR)→(A) 表格地址單元中的數據→累加器A | 3 | 2 |
MOVC A,@A+PC | ((PC))+1→(A),((A))+(PC)→(A) 表格地址單元中的數據→累加器A | 1 | 2 |
MOVX @DPTR,A | (A)→((DPTR)) 累加器中的數據→數據指針指向片外RAM地址中 | 3 | 2 |
MOVX A, @DPTR | (A)→((DPTR)) 累加器中的數據 → 數據指針指向片外RAM地址中 | 3 | 2 |
MOVX A, @Ri | ((Ri))→(A) 寄存器Ri指向片外RAM地址中的數據→累加器A中 | 1 | 2 |
MOVX @Ri,A | (A)→((Ri)) 累加器中的數據→寄存器Ri指向片外RAM地址中 | 1 | 2 |
PUSH direct | (SP)+1→(SP),(direct)→(SP) 堆棧指針首先加1,直接尋址單元中的數據送到堆棧指針SP所指的單元中 | 2 | 2 |
PUSH A | 將累加器A中的數據→堆棧頂端 | 2 | 2 |
POP direct | (SP)→(direct)(SP)-1→(SP), 堆棧指針SP所指的單元數據送到直接尋址單元中,堆棧指針SP再進行減1操作 | 2 | 2 |
POP A | 將堆棧頂端的數據→累加器A | 2 | 2 |
XCH A,Rn | (A)←→(Rn)累加器與工作寄存器Rn中的數據互換 | 1 | 1 |
XCH A,@Ri | (A)←→((Ri))累加器與工作寄存器Ri所指的存儲單元中的數據互換 | 1 | 1 |
XCH A, direct | (A)←→(direct)累加器與直接地址單元中的內容互換 | 2 | 2 |
XCHD A,@Ri | (A3-0)←→((Ri)3-0)累加器與工作寄存器Ri所指的存儲單元中的數據低半字節互換 | 1 | 1 |
SWAP A | (A3-0)←→(A7-4)累加器中的內容高低半字節互換 | 1 | 1 |
MOV DPTR,#data16 | #dataH→(DPH),#dataL→(DPL)16位常數的高8位送到DPH,低8位送到DPL | 3 | 2 |
ADD A,#data | A)+#data→(A) 累加器A中的數據與立即數#data相加,結果存在A中 | 2 | 1 |
ADD A,direct | A)+(direct)→(A) 累加器A中的數據與直接地址單元中的數據相加,結果存在A中 | 2 | 1 |
指令格式(助記符) | 指令功能說明 | 字節 | 周期 |
ADD A,Rn | (A)+(Rn)→(A) 累加器A中的數據與工作寄存器Rn中的數據相加,結果存在A中 | 1 | 1 |
ADD A,@Ri | (A)+((Ri))→(A) 累加器A中的數據與工作寄存器Ri所指向地址單元中的數據相加,結果存在A中 | 1 | 1 |
ADDC A,direct | (A)+(direct)+(C)→(A) 累加器A中的數據與直接地址單元的數據連同進位位相加,結果存在A中 | 2 | 1 |
ADDC A,#data | (A)+#data +(C)→(A) 累加器A中的數據與立即數連同進位位相加,結果存在A中 | 2 | 1 |
ADDC A,Rn | A)+Rn+(C)→(A) 累加器A中的數據與工作寄存器Rn中的數據、連同進位位相加,結果存在A中 | 1 | 1 |
ADDC A,@Ri | (A)+((Ri))+(C)→(A) 累加器A中的數據與工作寄存器Ri指向地址單元中的數據、連同進位位相加,結果存在A中 | 1 | 1 |
SUBB A,direct | (A)-(direct)-(C)→(A) 累加器A中的數據與直接地址單元中的數據、連同借位位相減,結果存在A中 | 2 | 1 |
SUBB A,#data | (A)-(Rn)-(C)→(A) 累加器A中的數據與工作寄存器中的數據、連同借位位相減,結果存在A中 | 2 | 1 |
SUBB A,Rn | (A)-(Rn)-(C)→(A) 累加器A中的數據與工作寄存器中的數據、連同借位位相減,結果存在A中 | 1 | 1 |
SUBB A,@Ri | (A)-((Ri))-(C)→(A) 累加器A中的數據與工作寄存器Ri指向的地址單元中的數據、連同借位位相減,結果存在A中 | 1 | 1 |
MUL AB | (A)×(B)→(A)和(B) 累加器A中的數據乘以寄存器B中的數據,結果高字節存入寄存器B,底字節存入累加器A | 1 | 4 |
DIV AB | (A)÷(B)→(A)和(B) 累加器A中的數據除以寄存器B中的數據,結果的商存入累加器A,余數存入寄存器B中 | 1 | 4 |
INC A | +1¡ú(A) 累加器A中的數據加1,結果存在A中 | 1 | 1 |
INC direct | (direct)+1→(direct) 直接地址單元中的數據加1,結果送回原地址單元中,如果直接地址是I/O,其功能是先讀入I/O鎖存器的內容,然后在CPU進行加1操作,再輸出到I/O上,這就是“讀—修改—寫”操作 | 2 | 1 |
INC @Ri | ((Ri))+1→((Ri)) 寄存器的數據指向的地址單元中的數據加1,結果送回原地址單元中 | 1 | 1 |
NC Rn | Rn)+1→(Rn)寄存器Rn的數據加1,結果送回原地址單元 | 1 | 1 |
INC DPTR | (DPTR)+1→(DPTR)數據指針的數據加1,結果送回數據指針中 | 1 | 2 |
DEC A | (A)-1→(A)累加器A中的數據減1,結果送回累加器A | 1 | 1 |
DEC direct | (direct)-1→(direct)直接地址單元中的數據減1,結果送回直接地址單元中 | 2 | 1 |
DEC @Ri | ((Ri))-1→((Ri))寄存器Ri指向的地址單元中的數據減1,結果送回原地址單元中 | 1 | 1 |
DEC Rn | (Rn)-1→(Rn)寄存器Rn中的數據減1,結果送回寄存器Rn中 | 1 | 1 |
DA A | 累加器A中的數據做BCD調整 | 1 | 1 |
RL A | 累加器A中的數據左移一位,bit7¡úbit0 | 1 | 1 |
RR A | 累加器A中的數據右移一位,bit7¡úbit7 | 1 | 1 |
RLC A | 累加器A中的數據連同進位標志位CY左移一位,bit7¡úCY,CY¡úbit0 | 1 | 1 |
RRC A | 累加器A中的數據連同進位CY位CY右移一位,bi0¡úCY,CY¡úbit7 | 1 | 1 |
SWAP A | 累加器中的數據高低半字節互換 | 1 | 1 |
CPL A | 累加器中的數據按位取反,即0¡ú1,1¡ú0 | 1 | 1 |
CLR A | 0¡ú(A),累加器中的數據清0H | 1 | 1 |
ANL A,direct | 累加器A中的數據和直接地址單元中的數據執行與操作。結果存在寄存器A中 | 2 | 1 |
ANL direct,#data | 直接地址單元中的數據和立即數執行與操作。結果存在直接地址單元中 | 3 | 2 |
指令格式(助記符) | 指令功能說明 | 字節 | 周期 |
NL A,#data | 累加器A的數據和立即數執行與操作。結果存在累加器A中 | 2 | 1 |
NL A,Rn | 累加器A的數據和寄存器Rn中的數據執行與操作。結果存在累加器A中 | 1 | 1 |
ANL direct,A | 直接地址單元中的數據和累加器A的數據執行與操作。結果存在直接地址單元中 | 2 | 1 |
ANL A,@Ri | 累加器A的數據和工作寄存器Ri指向的地址單元中的數據執行與操作。結果存在累加器A中 | 1 | 1 |
ORL A,direct | 累加器A中的數據和直接地址單元中的數據執行邏輯或操作。結果存在寄存器A中 | 2 | 1 |
ORL direct,#data | 累加器A中的數據和直接地址單元中的數據執行邏輯或操作。結果存在寄存器A中 | 3 | 2 |
ORL A,#data | 累加器A的數據和立即數執行邏輯或操作。結果存在累加器 | 2 | 1 |
ORL A,Rn | 累加器A的數據和寄存器Rn中的數據執行邏輯或操作。結果存在累加器A中 | 1 | 1 |
ORL direct,A | 直接地址單元中的數據和累加器A的數據執行邏輯或操作。結果存在直接地址單元中 | 2 | 1 |
ORL A,@Ri | 累加器A的數據和工作寄存器Ri指向的地址單元中的數據執行邏輯或操作。結果存在累加器A中 | 1 | 1 |
XRL A,direct | 累加器A中的數據和直接地址單元中的數據執行邏輯異或操作。結果存在寄存器A中 | 2 | 1 |
XRL direct,#data | 直接地址單元中的數據和立即數執行邏輯異或操作。結果存在直接地址單元中 | 3 | 2 |
XRL A,#data | 累加器A的數據和立即數執行邏輯異或操作。結果存在累加器A中 | 2 | 1 |
XRL A,Rn | 累加器A的數據和寄存器Rn中的數據執行邏輯異或操作。結果存在累加器A中 | 1 | 1 |
XRL data,A | 直接地址單元中的數據和累加器A的數據執行邏輯異或操作。結果存在直接地址單元中 | 2 | 1 |
XRL A,@Ri | 累加器A的數據和工作寄存器Ri指向的地址單元中的數據執行邏輯異或操作。結果存在累加器A中 | 1 | 1 |
CLR C | 清除進位標志CY為0 | 1 | 1 |
CLR bit | 清除bit為0 | 2 | 1 |
SETB C | 設定進位標志CY為1 | 1 | 1 |
SETB bit | 設定bit為1 | 2 | 1 |
CPL C | 將進位標志CY反相 | 1 | 1 |
CPL bit | 將bit反相 | 2 | 1 |
ANL C,bit | 將進位標志CY AND bit值¡ú進位標志位CY | 2 | 2 |
ANL C,/bit | 將進位標志CY AND bit反相值¡ú進位標志位CY | 2 | 2 |
ANL A,#data | 將累加器A的各位與立即數的相對位置做AND¡úA累加器 | 2 | 2 |
ORL C,bit | 將進位標志CY OR bit值¡ú進位標志位CY | 2 | 2 |
ORL C,/bit | 將進位標志CY OR bit反相值¡ú進位標志位CY | 2 | 2 |
ORL A,#data | 將累加器A的各位與立即數的相對位置做OR¡úA累加器 | 2 | 2 |
MOV C,bit | 將bit值¡ú進位標志位CY | 2 | 1 |
MOV bit,C | 將進位標志位CY¡úbit值 | 2 | 2 |
JC rel | 當進位標志位CY=1就跳至rel,否則執行下一條指令 | 2 | 2 |
JNC rel | 當進位標志位CY=0就跳至rel,否則執行下一條指令 | 2 | 2 |
JB bit rel | 當進bit=1就跳至rel,否則執行下一條指令 | 3 | 3 |
JNB bit rel | 當進bit=0就跳至rel,否則執行下一條指令 | 3 | 3 |
JBC bit rel | 當進bit=1跳至rel,并且清除此bit為0,否則執行下一條指令 | 3 | 3 |
ACALL addr11 | 2K范圍內子程序調用 | 2 | 2 |
LCALL addr16 | 64K范圍內子程序調用 | 3 | 3 |
RET | 子程序返回 | 1 | 2 |
RET1 | 中斷服務程序結束返回 | 1 | 2 |
指令格式(助記符) | 指令功能說明 | 字節 | 周期 |
AJMP addr11 | 2K范圍內無條件跳轉 | 2 | 2 |
LJMP addr16 | 64K范圍內無條件跳轉 | 2 | 2 |
SJMP rel | 在此指令的前128或后128范圍內無條件跳轉 | 2 | 2 |
JMP @A+DPTR | 跳至@A+DPTR所指定的地址 | 1 | 2 |
JZ rel | 如A的內容為0,則短跳轉,負責執行下一條指令 | 2 | 2 |
JNZ rel | 如A的內容不為0,則短跳轉,負責執行下一條指令 | 2 | 2 |
CJNE A,direct,rel | 如A的內容與直接地址內的數據不同,則短跳轉 | 3 | 2 |
CJNE A,#data,rel | 如A的內容與立即數不同,則短跳轉 | 3 | 2 |
CJNE Rn,#data,rel | 如Rn寄存器中的數據與立即數不同,則短跳轉 | 3 | 2 |
CJNE @Ri,#data,rel | 如間接地址的數據與立即數不同,則短跳轉 | 3 | 2 |
DJNZ Rn,rel | Rn寄存器中的數據減1,若不為0,則短跳轉,否則執行下條指令 | 2 | 2 |
DJNZ direct,rel | 直接地址中的數據減1,若不為0,則短跳轉,負責執行下條指令 | 3 | 2 |
NOP | CPU僅僅作取指令,不動作 | 1 | 1 |
歡迎光臨 (http://www.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |