8051指令集
轉自:https://blog.csdn.net/leehyfer/article/details/5040360
8051指令集
算術運算指令
指令 說明 週期
ADD A,Rn A←A+Rn 12
ADD A,direct A←A+direct 12
ADD A,@Ri A←A+Ri 12
ADD A,#data A←A+data 12
ADDC A,Rn A←A+Rn+C 12
ADDC A,direct A←A+direct+C 12
ADDC A,@Ri A←A+Ri+C 12
ADDC A,#data A←A+data+C 12
SUBB A,Rn A←A-Rn-C 12
SUBB A,direct A←A-direct-C 12
SUBB A,@Ri A←A-Ri-C 12
SUBB A,#data A←A-data-C 12
INC A A←A+1 12
INC Rn Rn←Rn+1 12
INC direct direct←direct+1 12
INC @Ri @Ri←@Ri+1 12
INC DPTR DPTR←DPTR+1 12
DEC A A←A-1 12
DEC Rn Rn←Rn-1 12
DEC direct direct←direct-1 12
DEC @Ri @Ri←@Ri-1 12
MUL AB 兩個無符號的8位資料相乘,其中高階8位放入B快取器,低階8位則放入累積器ACC 24
DIV AB 兩個無符號的8位資料相除,把ACC值除以B快取器值,商數放回ACC,餘數放在B 48
DA A 累加器作十進位制調整 48
邏輯運算指令
指令 說明 週期
ANL A,Rn A←A and Rn 12
ANL A,direct A←A and direct 12
ANL A,@Ri A←A and Ri 12
ANL A,#data A←A and data 12
ANL direct,A direct←direct and A 12
ANL direct,#data direct←direct and data 24
ORL A,Rn A←A or Rn 12
ORL A,direct A←A or direct 12
ORL A,Rn A←A or Rn 12
ORL A,@Ri A←A or Ri 12
ORL A,#data A←A or data 12
ORL direct,A direct←direct or A 12
ORL direct,#data direct←direct or data 24
XRL A,Rn A←A xor Rn 12
XRL A,direct A←A xor direct 12
XRL A,@Ri A←A xor Ri 12
XRL A,#data A←A xor data 12
XRL direct,A direct←direct xor A 12
XRL direct,#data direct←direct xor data 12
CLR A 清除累加器 12
CPL A 累加器反相 12
RL A 累加器向左旋轉 12
RLC A 累加器和C左旋 12
RR A 累加器向右旋轉 12
RRC A 累加器和C右旋 12
SWAP A 累加器的高低四位互換 12
資料轉移指令
指令 說明 週期
MOV A,Rn A←Rn 12
MOV A,direct A←direct 12
MOV A,@Ri A←Ri 12
MOV A,#data A←data 12
MOV Rn,A Rn←A 12
MOV Rn,direct Rn←direct 24
MOV Rn,#data Rn←data 12
MOV direct,A direct←A 12
MOV direct,Rn direct←Rn 24
MOV direct,direct direct←direct 24
MOV direct,@Ri direct←Ri 24
MOV direct,#data direct←data 24
MOV @Ri,A Ri←A 12
MOV @Ri,direct Ri←direct 24
MOV @Ri,#data Ri←data 12
MOV DPTR,#data 16 Ri←16bit data 24
MOVC A,@A+DPTR A←程式記憶體的資料 24
MOVC A,@A+PC A←程式記憶體的資料 24
MOVX A,@Ri A←外部RAM的資料(8bit地址) 24
MOVX A,@DPTR A←外部RAM的資料(16bit地址) 24
MOVX @Ri,A 外部的RAM(8bit)←A 24
MOVX @DPTR,A 外部的RAM(16bit)←A 24
PUSH direc 推迭區←direct 24
POP direc direct←堆疊區 24
XCH A,Rn A和Rn互換 12
XCH A,direct A和direct互換 12
XCH A,@Ri A和Ri互換 12
XCHD A,@Ri A和Ri的低四位互換 12
位運算指令
指令 說明 週期
CLR C 清除進位旗標 12
CLR bit 清除直接位 12
SETB C 設定進位旗標 12
SETB bit 設定直接位 12
CPL C 進位旗標反相 12
CPL bit 直接位反相 12
ANL C,bit C←C and bit 24
ANL C,/bit C←C and bit(反相) 24
ORL C,bit C←C or bit 24
ORL C,/bit C←C or bit(反相) 24
MOV C,bit C←bit 12
MOV bit,C bit←C 24
JC rel 若C=1跳至rel 24
JNC rel 若C=0跳至rel 24
JB bit,rel 若bit=1跳至rel 24
JNB bit,rel 若bit=0跳至rel 24
JBC bit,rel 若bit=1跳至rel,且清除此位 24
程式跳躍指令
指令 說明 週期
ACALL addr11 絕對式子程式呼叫 24
LCALL addr16 遠端子程式呼叫 24
RET 從子程式返回 24
RETI 從中斷子程式返回 24
AJMP addr11 絕對式跳躍 24
LJMP addr16 遠端跳躍 24
SJMP rel 短程跳躍 24
JMP @A+DPTR 間接跳躍 24
JZ rel 若A=0跳至rel 24
JNZ rel 若A不等於0跳至rel 24
CJNE A,direct,rel 若A不等於direct跳至rel 24
CJNE A,#data,rel 若A不等於data跳至rel 24
CJNE Rn,#data,rel 若Rn不等於data跳至rel 24
CJNE @Ri,#data,rel 若Ri不等於data跳至rel 24
DJNZ Rn,rel Rn減1不等於0跳至rel 24
DJNZ direct,rel direct減1不等於0跳至rel 24
NOP 沒動作 12
縮寫符號說明
縮寫符號 說明 備註
Rn 快取器R0-R7
direct 8bit內部資料儲存器,包括
1.內部資料儲存器(00-7F)的地址
2.特殊功能快取器(80-FF)的地址,如P0,PSW,TMOD..等
@Ri 由快取器R0或R1所定址的內部RAM資料
#data 8bit常數
#data 16 16bit常數
addr 16 16bit的目的地址,可使跳躍指令跳躍64k
addr 11 11bit的目的地址,可使跳躍指令跳躍2k
rel 具正負號的8位地址偏移量,用於相對地址的跳躍
bit 1個bit:只所有可以位定址的位。(如PSW.7為CY旗號)
A 累加器(累積器)
C或CY 進位旗號
AC 輔助進位旗號
Bb 指定位B0-B7
D 半位元組(4Bit)助憶符號
F0 旗號0
I 中斷
PC 程式計數器
P0 I/O port 0
P1 I/O port 1
P2 I/O port 2
P3 I/O port 3
PSW 程式狀態字組(類似於旗號快取器)
SP 堆疊指標快取器
B 快取器B
DPTR 資料指標快取器
X 外部滋要記憶體的助憶符號
@ 間接地址符號
$ 程式計數迄目前的值
reg 快取器
---------------------
作者:leehyfer
來源:CSDN
原文:https://blog.csdn.net/leehyfer/article/details/5040360
版權宣告:本文為博主原創文章,轉載請附上博文連結!
