助記符
助記符
助記符(mnemonic)是便於人們記憶、並能描述指令功能和指令操作數的符號,助記符是表明指令功能的英語單詞或其縮寫。
彙編語言由於採用了助記符號來編寫程序,比用機器語言的二進位代碼編程要方便些,在一定程度上簡化了編程過程。彙編語言的特點是用符號代替了機器指令代碼,而且助記符與指令代碼一一對應,基本保留了機器語言的靈活性。使用彙編語言能面向機器並較好地發揮機器的特性,得到質量較高的程序。
按指令作用對象來分,可分為偽指令和真指令(硬指令)。偽指令也就是作用於彙編程序的命令;真指令就是作用於真正處理器的命令。
目錄
助記符說明表 | ||||
---|---|---|---|---|
助記符 | 指令說明 | 位元組數 | 周期數 | |
(數據傳遞類指令) | ||||
MOV | A,Rn | 寄存器傳送到累加器 | 1 | 1 |
MOV | A,direct | 直接地址傳送到累加器 | 2 | 1 |
MOV | A,@Ri | 累加器傳送到外部RAM(8 地址) | 1 | 1 |
MOV | A,#data | 立即數傳送到累加器 | 2 | 1 |
MOV | Rn,A | 累加器傳送到寄存器 | 1 | 1 |
MOV | Rn,direct | 直接地址傳送到寄存器 | 2 | 2 |
MOV | Rn,#data | 累加器傳送到直接地址 | 2 | 1 |
MOV | direct,Rn | 寄存器傳送到直接地址 | 2 | 1 |
MOV | direct,direct | 直接地址傳送到直接地址 | 3 | 2 |
MOV | direct,A | 累加器傳送到直接地址 | 2 | 1 |
MOV | direct,@Ri | 間接RAM 傳送到直接地址 | 2 | 2 |
MOV | direct,#data | 立即數傳送到直接地址 | 3 | 2 |
MOV | @Ri,A | 累加器傳送到間接RAM | 1 | 2 |
MOV | @Ri,direct | 直接地址傳送到間接RAM | 2 | 1 |
MOV | @Ri,#data | 立即數傳送到間接RAM | 2 | 2 |
MOV | DPTR,#data16 | 16 位常數載入到數據指針 | 3 | 1 |
MOVC | A,@A+DPTR | 代碼位元組傳送到累加器 | 1 | 2 |
MOVC | A,@A+PC | 代碼位元組傳送到累加器 | 1 | 2 |
MOVX | A,@Ri | 外部RAM(8 地址)傳送到累加器 | 1 | 2 |
MOVX | A,@DPTR | 外部RAM(16 地址)傳送到累加器 | 1 | 2 |
MOVX | @Ri,A | 累加器傳送到外部RAM(8 地址) | 1 | 2 |
MOVX | @DPTR,A | 累加器傳送到外部RAM(16 地址) | 1 | 2 |
PUSH | direct | 直接地址壓入堆棧 | 2 | 2 |
POP | direct | 直接地址彈出堆棧 | 2 | 2 |
XCH | A,Rn | 寄存器和累加器交換 | 1 | 1 |
XCH | A, direct | 直接地址和累加器交換 | 2 | 1 |
XCH | A, @Ri | 間接RAM 和累加器交換 | 1 | 1 |
XCHD | A, @Ri | 間接RAM 和累加器交換低4 位位元組 | 1 | 1 |
(算術運算類指令) | ||||
INC | A | 累加器加1 | 1 | 1 |
INC | Rn | 寄存器加1 | 1 | 1 |
INC | direct | 直接地址加1 | 2 | 1 |
INC | @Ri | 間接RAM 加1 | 1 | 1 |
INC | DPTR | 數據指針加1 | 1 | 2 |
DEC | A | 累加器減1 | 1 | 1 |
DEC | Rn | 寄存器減1 | 1 | 1 |
DEC | direct | 直接地址減1 | 2 | 2 |
DEC | @Ri | 間接RAM 減1 | 1 | 1 |
MUL | AB | 累加器和B 寄存器相乘 | 1 | 4 |
DIV | AB | 累加器除以B 寄存器 | 1 | 4 |
DA | A | 累加器十進位調整 | 1 | 1 |
ADD | A,Rn | 寄存器與累加器求和 | 1 | 1 |
ADD | A,direct | 直接地址與累加器求和 | 2 | 1 |
ADD | A,@Ri | 間接RAM 與累加器求和 | 1 | 1 |
ADD | A,#data | 立即數與累加器求和 | 2 | 1 |
ADDC | A,Rn | 寄存器與累加器求和(帶進位) | 1 | 1 |
ADDC | A,direct | 直接地址與累加器求和(帶進位) | 2 | 1 |
ADDC | A,@Ri | 間接RAM 與累加器求和(帶進位) | 1 | 1 |
ADDC | A,#data | 立即數與累加器求和(帶進位) | 2 | 1 |
SUBB | A,Rn | 累加器減去寄存器(帶借位) | 1 | 1 |
SUBB | A,direct | 累加器減去直接地址(帶借位) | 2 | 1 |
SUBB | A,@Ri | 累加器減去間接RAM(帶借位) | 1 | 1 |
SUBB | A,#data | 累加器減去立即數(帶借位) | 2 | 1 |
(邏輯運算類指令) | ||||
ANL | A,Rn | 寄存器“與”到累加器 | 1 | 1 |
ANL | A,direct | 直接地址“與”到累加器 | 2 | 1 |
ANL | A,@Ri | 間接RAM“與”到累加器 | 1 | 1 |
ANL | A,#data | 立即數“與”到累加器 | 2 | 1 |
ANL | direct,A | 累加器“與”到直接地址 | 2 | 1 |
ANL | direct, #data | 立即數“與”到直接地址 | 3 | 2 |
ORL | A,Rn | 寄存器“或”到累加器 | 1 | 2 |
ORL | A,direct | 直接地址“或”到累加器 | 2 | 1 |
ORL | A,@Ri | 間接RAM“或”到累加器 | 1 | 1 |
ORL | A,#data | 立即數“或”到累加器 | 2 | 1 |
ORL | direct,A | 累加器“或”到直接地址 | 2 | 1 |
ORL | direct, #data | 立即數“或”到直接地址 | 3 | 1 |
XRL | A,Rn | 寄存器“異或”到累加器 | 1 | 2 |
XRL | A,direct | 直接地址“異或”到累加器 | 2 | 1 |
XRL | A,@Ri | 間接RAM“異或”到累加器 | 1 | 1 |
XRL | A,#data | 立即數“異或”到累加器 | 2 | 1 |
XRL | direct,A | 累加器“異或”到直接地址 | 2 | 1 |
XRL | direct, #data | 立即數“異或”到直接地址 | 3 | 1 |
CLR | A | 累加器清零 | 1 | 2 |
CPL | A | 累加器求反 | 1 | 1 |
RL | A | 累加器循環左移 | 1 | 1 |
RLC | A | 帶進位累加器循環左移 | 1 | 1 |
RR | A | 累加器循環右移 | 1 | 1 |
RRC | A | 帶進位累加器循環右移 | 1 | 1 |
SWAP | A | 累加器高、低4 位交換 | 1 | 1 |
(控制轉移類指令) | ||||
JMP | @A+DPTR | 相對DPTR 的無條件間接轉移 | 1 | 2 |
JZ | rel | 累加器為0 則轉移 | 2 | 2 |
JNZ | rel | 累加器為1 則轉移 | 2 | 2 |
CJNE | A,direct,rel | 比較直接地址和累加器,不相等轉移 | 3 | 2 |
CJNE | A,#data,rel | 比較立即數和累加器,不相等轉移 | 3 | 2 |
CJNE | Rn,#data,rel | 比較寄存器和立即數,不相等轉移 | 2 | 2 |
CJNE | @Ri,#data,rel | 比較立即數和間接RAM,不相等轉移 | 3 | 2 |
DJNZ | Rn,rel | 寄存器減1,不為0 則轉移 | 3 | 2 |
DJNZ | direct,rel | 直接地址減1,不為0 則轉移 | 3 | 2 |
NOP | 空操作,用於短暫延時 | 1 | 1 | |
ACALL | add11 | 絕對調用子程序 | 2 | 2 |
LCALL | add16 | 長調用子程序 | 3 | 2 |
RET | 從子程序返回 | 1 | 2 | |
RETI | 從中斷服務子程序返回 | 1 | 2 | |
AJMP | add11 | 無條件絕對轉移 | 2 | 2 |
LJMP | add16 | 無條件長轉移 | 3 | 2 |
SJMP | rel | 無條件相對轉移 | 2 | 2 |
(布爾指令) | ||||
CLR | C | 清進位位 | 1 | 1 |
CLR | bit | 清直接定址位 | 2 | 1 |
SETB | C | 置位進位位 | 1 | 1 |
SETB | bit | 置位直接定址位 | 2 | 1 |
CPL | C | 取反進位位 | 1 | 1 |
CPL | bit | 取反直接定址位 | 2 | 1 |
ANL | C,bit | 直接定址位“與”到進位位 | 2 | 2 |
ANL | C,/bit | 直接定址位的反碼“與”到進位位 | 2 | 2 |
ORL | C,bit | 直接定址位“或”到進位位 | 2 | 2 |
ORL | C,/bit | 直接定址位的反碼“或”到進位位 | 2 | 2 |
MOV | C,bit | 直接定址位傳送到進位位 | 2 | 1 |
MOV | bit, C | 進位位位傳送到直接定址 | 2 | 2 |
JC | rel | 如果進位位為1 則轉移 | 2 | 2 |
JNC | rel | 如果進位位為0 則轉移 | 2 | 2 |
JB | bit,rel | 如果直接定址位為1 則轉移 | 3 | 2 |
JNB | bit,rel | 如果直接定址位為0 則轉移 | 3 | 2 |
JBC | bit,rel | 直接定址位為1 則轉移並清除該位 | 2 | 2 |