- 打卡等级:常住居民III
- 打卡总天数:195
- 最近打卡:2025-10-28 00:30:37
已绑定手机
金牌会员
- 积分
- 1292
|
《USB型 1T 8051 单片机原理及应用-8H8K64U》教学视频--学习打卡8
第八集:汇编指令一(数据传送/逻辑运算/算术运算)
笔记:
1、数据传送类指令。
一般形式为 MOV <目的操作数> , <源操作数>
操作码包括MOV、MOVC、MOVX、PUSH、POP、XCH、XCHD、SWAP。
1.1 MOV是数据传送中使用的最多的一条操作码。MOV指令用于内部RAM之间数据的传送。具体内容见下:
指令 作用
MOV A,Rn ;工作寄存器的内容送A,n取0-7
MOV A,direct ;将内部RAM中地址为direct的单元的内容送A
MOV A,@Ri ;利用R0和R1实现间接寻址,i只能取0或1
MOV A,#data ;立即数寻址,将立即数data送到累加器A中
MOV Rn,A ;将累加器A的内容送给工作寄存器
MOV Rn,direct ;直接寻址,内容送工作寄存器
MOV Rn,#data ;立即数寻址,将data送给工作寄存器,目的地址为Rn时无间接寻址
MOV direct,A ;A送地址为direct的RAM单元
MOV direct,Rn ;Rn送RAM
MOV direct,dir2 ;RAM送RAM
MOV direct,@Ri ;寄存器间接寻址送RAM
MOV direct,#data ;立即数送RAM
MOV @Ri,A ;A送间接寻址地址
MOV @Ri,direct ;RAM内容送工作寄存器间接寻址地址
MOV @Ri,data ;立即数送寄存器间接寻址地址
MOV DPTR,#data16 ;16位立即数送DPTR
1.2 MOVC指令用于程序存储器与累加器A的内容传输,多用于查表。MOVC用法十分固定,只有下面两条指令。MOVC在使用时是访问内部程序存储器还是外部程序存储器由PSEN引脚决定。MOVC的用法是完全固定的,不可以创造指令,不要使用类似MOVC A,@DPTR这样的指令。具体内容见下:
指令 作用
MOVC A,@A+DPTR ;DPTR基址加变址寻址,将程序存储器中的内容存在累加器A中
MOVC A,@A+PC ;PC基址加变址寻址,将程序存储器中的内容存在累加器A中,PC保存的是下一条指令的首地址(程序存储器编址)。
1.3 MOVX指令用于对外部RAM进行访问。外部RAM编址由0开始,故必须区分MOV、MOVX才能避免冲突。具体内容见下:
指令 作用
MOVX A,@Ri ;Ri间接寻址,将外部RAM内容写到A中
MOVX A,@DPTR ;DPTR间接寻址,将外部RAM内容写到A中
MOVX @Ri,A ;Ri间接寻址,将A内容写到外部RAM中
MOVX @DPTR,A ;DPTR间接寻址,将A内容写到外部RAM中
1.4 PUSH和POP指令。压栈和弹栈指令。压栈和弹栈指令的本质就是将SP作为间接寻址寄存器,和内部RAM单元进行内容传输。只不过SP会自动增加或减少以在逻辑上维护这个内部RAM空间并将其称为栈。具体内容见下:
指令 作用
PUSH direct ;直接寻址,将内容保存在SP所指向的地址单元,SP+1
POP direct ;直接寻址,将SP所指向的地址单元内容弹到新地址,SP-1
1.5 XCH、XCHD、SWAP等交换指令。具体内容见下:
指令 作用
XCH A,Rn ;寄存器和A内容交换
XCH A,direct ;A和内部RAM内容交换
XCH A,@Ri ;间接寻址,内容交换
XCHD A,@Ri ;间接寻址,只交换低4位
SWAP A ;A的高四位和低四位交换
1.6 数据传送类指令的注意事项。
2、逻辑运算类指令。
逻辑运算类包括与、或、异或、清除、求反、左右移位等逻辑操作。具体内容见下:
指令 作用
CLR A ;清零A
CPL A ;按位取反,不影响标志位
RL A ;循环左移
RLC A ;带进位的循环左移,CY作为第九位
RR A ;循环右移
RRC A ;带进位的循环右移
ANL A,Rn ;逻辑按位与,保存到A
ANL A,direct ;逻辑按位与,保存到A
ANL A,#data ;逻辑按位与,保存到A
ANL A,@Ri ;逻辑按位与,保存到A
ANL direct,A ;逻辑按位与,保存到direct
ANL direct,#data ;逻辑按位与,保存到direct
ORL A,Rn ;逻辑按位或,保存到A
ORL A,direct ;逻辑按位或,保存到A
ORL A,#data ;逻辑按位或,保存到A
ORL A,@Ri ;逻辑按位或,保存到A
ORL direct,A ;逻辑按位或,保存到direct
ORL direct,#data ;逻辑按位或,保存到direct
XRL A,Rn ;逻辑按位异或,保存到A
XRL A,direct ;逻辑按位异或,保存到A
XRL A,#data ;逻辑按位异或,保存到A
XRL A,@Ri ;逻辑按位异或,保存到A
XRL direct,A ;逻辑按位异或,保存到direct
XRL direct,#data ;逻辑按位异或,保存到direct
3、算术运算类指令。
操作码有ADD、ADDC、SUBB、INC、DEC、MUL、DIV、DA。具体内容见下:
指令 作用
ADD A,Rn ;寄存器内容加到累加器
ADD A,direct ;直接寻址内容加到累加器
ADD A,@Ri ;寄存器间接寻址内容加到累加器
ADD A,#data ;立即数加到累加器
ADDC A,Rn ;寄存器内容加到累加器(考虑进位位Cy)
ADDC A,direct ;直接寻址内容加到累加器(考虑进位位Cy)
ADDC A,@Ri ;寄存器间接寻址内容加到累加器(考虑进位位Cy)
ADDC A,#data ;立即数加到累加器(考虑进位位Cy)
SUBB A,Rn ;累加器内容减寄存器内容(考虑Cy)A-(Rn)-Cy
SUBB A,direct ;累加器减直接寻址内容(考虑Cy)A-(direct)-Cy
SUBB A,@Ri ;累加器减寄存器间接寻址内容(考虑Cy)
SUBB A,#data ;累加器减立即数(考虑Cy)
INC A ;累加器加1
INC Rn ;工作寄存器加1
INC direct ;直接寻址地址内容加1
INC @Ri ;寄存器间接寻址地址内容加1
DEC A ;累加器减1
DEC Rn ;工作寄存器减1
DEC direct ;直接寻址地址内容减1
DEC @Ri ;寄存器间接寻址地址内容减1
INC DPTR ;DPTR加1,实际就是DPL+1并自动向DPH进位
MUL AB ;A内容乘寄存器B内容保存到A中
DIV AB ;A内容除寄存器B内容保存到A中
DA A ;累加器十进制调整
补充说明:
单片机在进行运算操作时会影响程序状态寄存器PSW中的程序状态标志位。
P标志位只考虑A中1的奇偶个数,只要对A的内容进行修改均会影响P的内容。
CY和AC标志位仅在加减操作时会被影响:当运算发生进位或借位时,CY置1;否则清0;当低四位向高四位发生进位或借位时,AC置1,否则清0;
OV标志位在加减乘除时均受影响,OV实际保存的是第六位与第七位进位异或的结果。只有当第六位和第七位只有一个发生进位或借位时,OV才会置1,否则清0。
学习心得:
1、指令分类别,按照操作数区分寻址方式,对应上MCU内部存储结构、ACC、PC、SP、PSW、SFR、XFR、I/O口的逻辑框架才好理解。
2、仿真很方便,能提高学习、开发效率。
总结:
1、学习了数据传送、逻辑运算、算术运算的相关指令用法。
2、学习了仿真的程序调试、跟踪代码技巧,对寄存器、RAM、端口中数据的查看、修改。
后记:
1、本节课很枯燥,内容很多,但有规律。知道指令大概后可以查手册。
2、将MCU的逻辑结构与指令结合起来能更好的理解MCU的运行,指令与MCU物理结构是严格对应的。
2025年10月25日。
|
|