51汇编指令大全Word文件下载.docx
《51汇编指令大全Word文件下载.docx》由会员分享,可在线阅读,更多相关《51汇编指令大全Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。
为数据指针,可用作16位的地址寄存器.
/:
加在位操作的前面,表示对该位进行非运算.
bit:
表示内部可寻址位或特殊功能寄存器中的直接寻址位.
“(x):
寄存器或地址单元中的内容.
((x)):
有x见解寻址的单元中的内容.
<
-:
表示将箭头右边的内容传送至箭头的左边.
$:
当前指令的地址.
单片机指令系统
(一)内部数据传送指令
(1)以累加器A为目的的传送指令:
MOV
A,
#data
;
(A)<
-data
direct
-(direct)
Rn
-(Rn)
@Ri
-((Ri))
(2)以通用寄存器Rn为目的的传送指令:
Rn,
A
(Rn)<
-(A)
(Rn)<
(direct)-
-(data)
(3)以直接地址为目的的传送指令:
direct,
(direct)<
(direct)<
direct2
-(direct2)
-((Rn))
(4)以寄存器间接地址为目的的传送指令:
@Ri,
((Ri))<
(二)数据指针赋值指令(16位数据传送指令)
DPTR,
#data16;
(三)片外数据传送指令
MOVX
-((Ri))片外
@DPTR;
-((DPTR))片外
((Ri))片外<
@DPTR,A
((DPTR))片外<
(四)ROM数据访问指令(查表指令)
MOVC
@A+DPTR
-((A)+(DPTR))rom
@A+PC
(PC)<
-(PC)+1,(A)<
-((A)+(PC))rom
(五)堆栈操作指令
PUSH
(SP)<
-(SP)+1,(SP)<
堆栈指针先加1,将数据压入栈顶
POP
-(SP),(SP)<
-(SP)-1
将数据从栈顶弹出存入direct,SP再减1
(六)数据交换指令
(1)整字节(8位)交换指令:
XCH
Rn;
A和Rn中的数互换
A和direct单元中的数互换
A和Ri间址单元中的数互换
(2)半字节交换指令:
XCHD
A的低4位Ri间接单元的低4位互换,高4位不动
(3)累加器高低半字节交换指令:
SWAP
A的高4位(D7~D4)和低4位(D3~D0)互换
(七)加法指令
(1)不带Cy加法指令:
ADD
-(A)+(Rn)
(A)<
-(A)+(direct)
-(A)+((Ri))
-(A)+data
(2)带进位加法指令:
ADDC
-(A)+Cy+(Rn)
-(A)+Cy+(direct)
-(A)+Cy+((Ri))
-(A)+Cy+data
(3)加1指令:
INC
-(A)+1
-(Rn)+1
-((Ri))+1
-(direct)+1
DPTR
(FPTR)<
-(DPTR)+1
(八)减法指令
(1)带进位减法指令:
SUBB
-(A)-Cy-(Rn)
-(A)-Cy-(direct)
-(A)-Cy-((Ri))
-(A)-Cy-data
(2)减1指令:
DEC
-(A)-1
-(durect)-1
-(Rn)-1
-((Ri))-1
(九)乘除指令
(1)乘法指令
MUL
AB
(B)(A)<
-(A)*(B)
指令功能是把累加器A和特殊功能寄存器B中两个8位无符号整数相乘,并把积的高8位字节存入B寄存器,低8位字节存入累加器A.
(2)除法指令
DIV
A/B,商存入A,余数存入B
指令的功能是把累加器A中的8位无符号整数除以寄存器B中的8位无符号整数商的整数部分存入累加器A中,余数保留在B中.
(十)十进制调整指令
DA
A
(十一)逻辑运算指令
(1)
逻辑与运算指令:
ANL
-(A)∧(Rn)
-(A)∧(direct)
-(A)∧((Ri))
-(A)∧data
#data;
(direct<
-(direct)∧data
(2)
逻辑或运算指令:
ORL
-(A)∨(Rn)
-(A)∨(direct)
-(A)∨((Ri))
-(A)∨data
-(direct)∨data
(3)
逻辑异或运算指令:
XRL
-(A)⊙(Rn)
-(A)⊙(direct)
-(A)⊙((Ri))
-(A)⊙data
-(direct)⊙data
(4)
累加器清0和去反指令
CLR
-0(累加器清0指令)
-(A)(累加器取反指令)
(5)
累加器移位指令:
不带进位Cy循环左移:
RL
Dn+1<
-Dn,D0<
-D7
D7
D6
D5
D4
D3
D2
D1
D0
不带进位Cy循环右移:
RR
:
Dn+1->
Dn,D0<
带进位Cy循环左移:
RLC
Cy<
-D7,Dn+1<
-Cy
带进位Cy循环右移:
RRC
Cy->
D7,Dn+1->
Dn,D0->
Cy
(十二)控制转移指令
[1]无条件转移指令:
(1)长转移指令
LJMP
addr16
-addr16
(2)绝对转移指令AJMP
addr11
-(PC)+2,(PC)10~0<
-addr11
(3)短转移指令
SJMP
rel
-(PC)+2+rel
(4)变址寻址转移指令JMP
-(A)+(DPTR)
[2]条件转移指令:
(1)累加器判0转移指令:
JZ
如果(A)=0,跳转到目标语句,否则顺序执行
JNZ
如果(A)≠0,跳转到目标语句,否则顺序执行
(2)比较转移指令:
CJNZ
#data,
如果(A)≠data,则跳转到目标语句,否则程序顺序执行
如果(A)≠(direct),则跳转到目标语句,否则程序顺序执行
Rn#data,
如果(A)≠data,则跳转到目标语句,否则程序顺序执行
(3)循环控制转移指令:
DJNZ
Rn,rel
(Rn)先减1,如减1后(Rn)≠0,则跳转到目标语句;
否则顺序执行
firect,
(direct)先减1,如减1后(direct)≠0,则跳转到目标语句;
(十三)子程序调用和返回指令
(1)绝对调用指令:
ACALL
(2)长调用指令:
LCALL
addr16
(3)返回指令:
RET
子程序返回
RETI
中断服务程序返回
(十四)空操作指令
NOP
空操作指令是一条特殊指令,单片机在执行该指令时不进行任何操作,只是消耗1个机器周期的时间,所以该指令长用于延时程序.软件陷阱程序等
(十五)位操作类指令
(1)位传送指令:
C,bit
(Cy)<
-(bit),bit位的状态不变
bit,C
(bit)<
-(Cy),Cy位的状态不变
(2)位置位和复位指令:
SETB
C
-1
bit
(bit)<
-0
(3)位运算指令:
-(Cy)∧(bit),Cy位和bit位相与,结果赋给Cy
C,/bit
-(Cy)∨(bit),Cy位和bit位相或,结果赋给Cy
-(Cy)∨(bit),Cy位和bit位相或,结果赋给Cy
CPL
(Cy)<
-(Cy),Cy位取反
-(bit),bit位取反
(4)位测试转移指令:
(1)以Cy位状态为条件的转移指令
JC
如果Cy位=1,跳转到目标语句,否则顺序执行
JNC
如果Cy位=0,跳转到目标语句,否则顺序执行
(2)以指定位状态为条件的转移指令:
JB
bit,rel
如果bit=1,跳转到目标语句,否则顺序执行
JNB
如果bit=0,跳转到目标语句,否则顺序执行
JBC
如果bit=1,跳转到目标语句,同时将bit位清0;