您现在的位置是:首页 >技术交流 >【MCS-51单片机汇编语言】期末复习总结①——常见指令汇总(题型一)网站首页技术交流
【MCS-51单片机汇编语言】期末复习总结①——常见指令汇总(题型一)
简介【MCS-51单片机汇编语言】期末复习总结①——常见指令汇总(题型一)
七大寻址方式
立即寻址
:通过一个立即数来指定存储单元的地址,例如#41H;寄存器寻址
:Rn(n=0~7),A,B,DPTR,C;直接寻址
:通过存储单元的地址本身来访问数据,例如地址3AH;寄存器间接寻址
:通过一个指针变量来访问存储单元的数据,例如@Ri (i=0或1) 、 @DPTR;变址寻址
:@A+PC、@A+DPTR;相对寻址
:rel(相对偏移量);位寻址
:00H-25H.5(.5表示第五位)、TCON.3(TCON的第三位)、CY(进位标志位);
重要指令
转移
MOV
(片内RAM)- MOV A, Rn;(Rn) -> (A)
MOVX
(片外RAM)- MOVX A, @DPTR; ((DPTR)) -> (A)
MOVC
(ROM)- MOVC A, @A+DPTR;((A)+(DPTR)) -> (A)
堆栈
PUSH direct
;(sp)+1 - > (sp), (direct) -> ((sp))POP direct
;((sp)) -> (direct), (sp)-1 -> (sp)
(sp
为栈顶指针,指向栈顶元素)
加
ADD
(直接加)- ADD A, Rn; (A) + (Rn) -> (A)
ADDC
(考虑进位标志位)- ADDC A, Rn; (A) + (Rn) + (CY) -> (A)
INC
(自加1)- INC A; (A) + 1 -> (A)
减
SUBB
(默认考虑进位标志位)- SUBB A, Rn; (A) - (CY) - (Rn) -> (A)
DEC
(自减一)- DEC A; (A) -1 -> (A)
乘
MUL AB
; (A)*(B) -> A存结果的低 8 位,B存高 8 位;
除
DIV AB
; (A) / (B) -> A存商,B存余数;
位操作
-
ANL
(按位与)(都是1,才为1)- ANL A, Rn;结果给A
- ANL A, Rn;结果给A
-
ORL
(按位或)(只要有1,就为1)- ORL A,Rn;结果给A
- ORL A,Rn;结果给A
-
XRL
(按位异或)(相同为0,相异为1)- XRL A, Rn;结果给A
SETB
(置1)- SET C;1 -> ( C )
CLR
(清零)- CLR A;0 -> (A)
CPL
(取反)- CPL A;
RL
(循环左移)
RR
(循环右移)
跳转
LJMP
(跳转到某个地址开始执行)- LJMP addr16;addr16 -> (PC)
SJMP
(与上相同)AJMP
(与上相同)
(三者任选其一即可)
条件转移
JZ rel
;(A)全0,跳转,否则顺序执行CJNE A, #data, rel
;(A) != data 就跳转DJNZ Rn, rel
;(Rn) - 1 -> (Rn),若(Rn) != 0就跳转
子程序
ACALL
(子程序调用)- ACALL addr11
RET
(子程序返回)- RET; ((sp)) -> (PCH) (sp) -1 -> (sp);((sp)) -> (PCL) (sp) -1 -> (sp)
常考题型
给出一个程序,求程序结束后,一些寄存器的值。例如:
-
下面程序执行后(SP)、(A)、(B)各位多少?
ORG 2000H MOV SP, #40H MOV A, #30H LCALL 2500H ADD A, #10H MOV B, A HERE: SJMP HERE ORG 2500H MOV DPTR, #2008H PUSH DPL PUSH DPH RET
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。