Please enable JavaScript.
Coggle requires JavaScript to display documents.
指令系统, MOV A,70H MOV A,#35H MOV A,R4 MOV A,@R0 MOV A,@R1, MOV R7…
指令系统
算术运算类指令(24条)
带借位的减法指令
SUBB A,direct
SUBB
A,@Ri
SUBB A,Rn
SUBB A,#data
乘法指令
MUL AB
带进位位的加法指令
ADDC A,Rn
ADDC A,direct
ADDC
A,@Ri
ADDC A,#data
除法指令
DIV AB
不带进位位的加法指令
ADD A,direct 例:ADD A,10H
ADD A,Rn 例:ADD A,R7
ADD A,#DATA 例:ADD A,#10
ADD
A,@Ri
例:ADD
A,@R0
减1指令
DEC A
DEC Rn
DEC direct
DEC
Ri
加1指令
INC A
INC Rn
INC direct
INC
Ri
INC DPTR
十进制调整指令
DA A
位操作类指令(17条)
位置1指令
SETB C
使CY=1
SETB bit
使指定的位的值等于原来相反的值,由0变为1,1变0
位取反指令
CPL C
使CY等于原来的相反的值,1成0,0成1
CPL bit
使指定的位的值等于原来相反的值,0成1,1成0
位清0指令
CLR C
使CY=0
CLR bit
使位地址bit所对应的一位存储器=0
位控制转移指令
判CY转移指令
JC rel
(CY)=1转移
JNC rel
(CY)=0转移
判位变量转移指令
JB bit,rel
指定的bit位中的值是1,则转移
JNB bit,rel
指定的bit位中的值是0,则转移
JBC bit,rel
位转送指令
MOV C,BIT
MOV BIT,C
以位为单位进行的各种操作
位地址形式
位编号(如,P1.5、PSW.5等)
位名称(如,F0、C等)
直接地址(如,0D5H、0E0H等)
逻辑运算与循环类指令(25条)
求反指令
CPL A;累加器中的内容按位取反
清零指令
CLR A;0→(A),累加器中的内容清0
逻辑与操作指令
ANL direct,#data
direct中的值与立即数data按位‘与’,结果送入direct中
ANL A,#data
A与立即数data按位‘与’,结果送入A中
ANL A,Rn
A与Rn中的值按位’与‘,结果送入A中
ANL A,direct
A与direct 中的值按位‘与’,结果送入A中
ANL direct,A
direct中值与A中的值按位‘与’,结果送入direct中
ANL
A,@Ri
A与间址寻址单元@Ri
中的值按位‘与’,结果送入A中
逻辑或操作指令
ORL A,#data
A和direct中的值按位‘或’,结果送入A中
ORL
A,@Ri
A和立即数data按位‘或’,结果送入A中
ORL A,direct
A与间址寻址单元@Ri
中的值按位‘或’,结果送入A中
ORL direct,A
direct中值和A中的值按位‘或’,结果送入direct中
ORL A,Rn
A与Rn中的值按位‘或’,结果送入A中
ORL direct,#data
direct中的值和立即数data按位‘或’,结果送入direct中
逻辑异或操作指令
XRL direct,A
direct中的值和A中的值按位‘异或’,结果送入direct中
XRL direct,#data
sirect中的值和立即数data按位‘异或’,结果送入direct中
XRL A,#data
A和立即数data按位‘异或’,结果送入A中
XRL
A,@Ri
A和间址寻址单元@Ri
中的值按位‘异或’,结果送入A中
XRL A,direct
A和direct中的值按位‘异或’,结果送入A中
XRL A,Rn
A和Rn中的值按位‘异或’,结果送入A中
此指令对I/O口的操作
数据传送类指令
数据传送指令是MCS-51单片机汇编语言程序设计中使用最频繁的指令。
数据传送操作是指把数据从源地址传送到目的地址,源地址内容不变。
内部RAM数据传送指令(15条)
只涉及到片内数据存储单元的数据传送MOV
以累加器A位目的的操作数类指令(4条)
MOV A,direct ;(direct)→(A) 直接单元地址中的内容送到累加器A
MOV A,#data ;#data→(A) 立即数送到累加器A中
MOV
A,@Ri
;((Ri))→(A) Ri(R0、R1)指针指向的地址单元中的内容送到累加器A。
MOV A,Rn;(Rn)→(A) Rn中的内容送到累加器A.
内部RAM是数据传送最为频繁的部分,这其中有寄存器、累加器、RAM单元以及特殊功能寄存器之间的相互数据传送。
以寄存器Rn为目的操作数的指令(3条)
MOV Rn,#data ;#data→(Rn)立即数直接送到寄存器Rn中
MOV Rn,A ;(A)→(Rn) 累加器A中的内容送到寄存器Rn中
MOV Rn,direct ;(direct)→(Rn) 直接寻址单元中的内容送到寄存器Rn中
以直接地址为目的操作数的指令(5条)
MOV direct,#data ; #data→(direct) 立即数送到直接地址单元。
MOV direct,A ;(A)→(direct) 累加器A中的内容送到直接地址单元
MOV direct,Rn ;(Rn)→(direct) 寄存器Rn中的内容送到直接地址单元。
MOV
direct,@Ri
;((Ri))→(direct)将 Ri指针所指向的RAM单元中的数据送到直接地址单元。
MOV direct,direct ;(direct)→(direct) 直接地址单元中的内容送到直接地址单元。
以间接地址为目的操作数的指令(3条)
MOV
Ri,#data
;#data→((Ri)) 立即数送到Ri指针所指向的RAM单元。
MOV
Ri,A
;(A)→((Ri)) 累加器A中的内容送到Ri指针所指向的RAM单元。
MOV
Ri,direct
;(direct)→((Ri)) Ri指针所指向的RAM单元。
十六位数的传递指令
MOV DPTR,#data16
外部数据存储器RAM数据传送指令MOVX
涉及到片外数据存储单元的数据传送MOVX
片外数据存储单元的数据传送MOVX
MOVX @DPTR,A ;(A)→((DPTR)) 累加器中的内容送到数据指针指向的片外RAM单元中。
MOVX @Ri,A ;(A)→((Ri)) 累加器中的内容送到指针Ri指向片外RAM单元中。
MOVX A, @DPTR ;((DPTR))→(A) 数据指针指向片外RAM单元中的内容送到累加器A中。
MOVX A, @Ri ;((Ri))→(A) 指针Ri指向的片外RAM地址中的内容送到累加器A中。
在51中,与外部存储器RAM打交道的只可以是A累加器。
外部程序存储器ROM数据传送指令MOVC
涉及到程序存储器单元的数据传送MOVC
查表指令
数据表格的建立
<标号:>DB<数据串>
例如:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07DH,7FH,6FH
MOVC A,
A+DPTR
我们在使用这条指令时,一般是将表首地址(第0行数据的地址)放到DPTR中,然后我们要取哪一行数据,就把行号放在A中,然后用这条查表指令就可以实现数据表中的某行数据装入到累加器A中。
MOV A,
A+DPTR
本指令是将ROM中的数送入A中。本指令也被称为查表指令
控制转移类指令
控制转移类指令的本质是改变程序计数器PC的内容,从而改变程序的执行方向。
条件转移指令(8条)
条件转移指令是当某种条件满足时,程序转移执行;条件不满足时,程序仍按原来顺序执行。
由于该类指令采用相对寻址,因此程序可在以当前PC值为中心的-128~+127范围内转移。
比较条件转移指令
CJNE A,#data,rel
CJNE A,direct,rel
CJNE Rn,#data,rel
CJNE
Ri,#data,rel
减1条件转移指令(循环控制指令)
DJNZ Rn,rel
DJNZ direct,rel
累加器判零条件转移指令
JZ erl
JNZ rel
子程序调用与返回指令(4条)
子程序调用指令
长调用LCALL
绝对调用ACALL
返回指令
对应两条调用指令的子程序返回指令RET
对应从中断服务程序的返回指令RETI
无条件转移指令(4条)
SJMP(短转指令)
AJMP(绝对转移指令)
LJMP(长转指令)
MOV A,70H
MOV A,#35H
MOV A,R4
MOV
A,@R0
MOV
A,@R1
MOV R7,39H MOV R6,#34H MOV R5,A
MOV 39H,48H
MOV 30H,#50H
MOV 27H,A
MOV 30H,R2
MOV
51H,@R1
MOV
43H,@R0
MOV
R0,37H
MOV
R0,12H
MOV
R1,#56H
MOV
R1,A
MOV
R0,A
MOV DPTR,#1234H,
则执行完了之后DPH中的值为12H,DPL中的值为34H
AT89C51是一种8位机,这是唯一的一条16位立即数传递指令,其功能是将一个16位的立即数data16送入DPTR中去。DPTR由两个专用寄存器DPH和DPL构成,这条指令中将16位立即数的高8位送入DPH,低8位送入DPL。
电技213 于德浩 213743