单片机指令与编程.ppt
《单片机指令与编程.ppt》由会员分享,可在线阅读,更多相关《单片机指令与编程.ppt(48页珍藏版)》请在课桌文档上搜索。
1、第二讲:指令与编程,本讲重点:寻址方式;MCS-51指令集;伪指令;汇编语言与简单程序设计.,第三章 指令系统及程序设计(P.43),51系列单片机指令集含有111条指令,每条指令在执行时要花去一定的时间,以机器周期为单位。按指令执行时间分类:单周期(64条);双周期(45条);4周期(2条),按指令的功能分类,可分为5大类:数据传送类(29条);算术运算类(24条)逻辑运算及移位类(24);控制转移类(17条)位操作类(17条),每条指令在程序存储器ROM中占据一定的空间,以字节为单位。按指令所占字节数分类:单字节(49条);双字节(46条);3字节(16条),ASM-51指令的格式(P.4
2、4),方括符 表示可选项标号代表指令所在地址,1-8个字母/数字,“:”结尾操作码就是指令功能助记符,指令实体目的操作数源操作数注释,以“;”开头,标号:操作码 目的操作数,源操作数;注释,51单片机指令的寻址方式(P.45),寄存器寻址立即寻址寄存器间接寻址直接寻址变址寻址(基址寄存器+变址寄存器间接寻址)相对寻址位寻址,寻址方式:指令按地址获得操作数的方式七种寻址方式,一条指令可能含多种寻址方式,寄存器寻址(P.45)从寄存器中读取操作数或存放操作数进寄存器例:MOV A,B;(A)(B)MOV 30H,R0;(30H)(R0)MOV A,R1;(A)(R1),立即寻址(P.45)操作数直
3、接就出现在指令中例:MOV A,#64H;(A)立即数 64H ADD A,#05H;(A)(A)+立即数 05H注意:符号“#”表明其后跟的是立即数,立即数就是数字量本身。,寄存器间接寻址(P.46)寄存器中的内容是一个地址,由该地址单元寻址到所需的操作数,注意:1)“间接”表示某寄存器中的“内容”只是一个“单元地址”,这个地址单元中存放的数据才是要找的“操作数”。2)符号“”表示“在”,其含义与读音皆同“at”。,例:MOV R1,#30H;(R1)立即数30H,MOV R1,#30H;(R1)立即数30H MOV R1,#0FH;(30H)立即数0FH MOV A,R1;(A)(30H)
4、=#0FH,直接寻址(P.46)指令中直接给出了操作数所在单元的地址或名称 例:MOV R1,1FH;(R1)(1FH)MOV 30H,4AH;(30H)(4AH),在本单片机中规定:访问特殊功能寄存器SFR只能采用直接寻址方式。例如:MOV A,SP;(A)(SP)MOV A,81H;(A)(SP)MOV P1,#5AH;(P1)(#5AH)MOV 90H,#5AH;(P1)(#5AH)MOV B,30H;(B)(30H),相同,相同,存储器配置(片内RAM),89C51片内RAM 128字节(00H7FH)89C52片内RAM 256字节(00H0FFH),00H,20H,2FH,7FH,
5、1FH,30H,80H,FFH,52子系列才有的RAM区,普通RAM区,位寻址区,工作寄存器区,SFR分布在80H-FFH其中92个位可位寻址,80H,FFH,89C51 128字节,89C52 256字节,只能直接寻址,只能寄存器间接寻址,变址寻址(P.47)也称为:基址寄存器+变址寄存器间接寻址,以16位的地址指针寄存器DPTR或 16位的PC寄存器为基址寄存器,以累加器 A 为变址寄存器,两者中的“内容”形成一个16位的“地址”,该“地址”所指的存储单元中的内容才是操作数。,P47例:设:A中已存有#A4H,DPTR中已存有#1234H MOVC A,A+DPTR;(A)(A)+(DPT
6、R)操作:将A4H+1234H=12D8H单元中的数放进累加器A,相对寻址(P.47)当前PC值加上指令中规定的偏移量 rel,构成实际的操作数地址例:AJMP rel 操作:跳转到的目的地址=当前16位PC值+rel,注意:1)“当前PC值”指程序中下一条指令所在的首地址,是一个16位数;2)符号“rel”表示“偏移量”,是一个带符号的单字 节数,范围是:-128+127(80H7FH),在实际编程中,“rel”通常用标号代替,位寻址(P.48)指令中直接给出了操作数所在的位地址。例:CLR P1.0;(P1.0)0 SETB P1.7;(P1.7)1 CPL P1.5;(P1.5)NOT(
7、C),MCS-51指令集,功能分五类,共111条指令,MCS-51指令集(五大类功能)P.49页,数据传送类指令:(29条)算术运算类指令:(24条)逻辑运算及移位类指令:(24条)控制转移类指令:(17条)位操作(布尔操作)类指令:(17条),内部存储器间传送:(MOV16条)外部数据存储器与累加器间传送:(MOVX4条)程序存储器向累加器传送:(MOVC2条)数据交换:(XCH,XCHD,SWAP5条)堆栈操作:(PUSH,POP2条),(一)数据传送类指令(5种/29条)P.49,见P.49的表32,Rn:R0R7Ri:R0,R1#data:8位立即数#data16:16位立即数dire
8、ct:直接地址rel:8位带符号偏移量,(一)数据传送类指令(5种/29条),内部存储器间传送指令(16条):MOV 类指令的操作方向总是后面的操作数 指向前面的操作数!例:MOV A,30H(A)(30H),数据传送类指令(续)P.52,外部数据存储器与累加器间传送(4条):MOVX类指令可在累加器与以DPTR或Ri所代表的外部 RAM 之间进行数据传送。,例如:MOVX A,DPTR(A)(DPTR)MOVX A,Ri(A)(Ri)MOVX DPTR,A(DPTR)(A)MOVX Ri,A(Ri)(A),程序存储器向累加器传送指令(2条):MOVC A,A+DPTR通常称为查表指令,寻址方
9、式属:“基址寄存器+变址寄存器间接寻址”,数据传送类指令(续)P.52,A+DPTR指向程序存储器中的某单元。传送给累加器ACC 的数据就是程序中事先写进去的表格数据。这些表格数据往往用伪指令 DB,DW 等定义在程序中。,数据传送类指令(续),数据交换指令(5条):P.53XCH A,direct(字节互换)XCH A,Ri(字节互换)XCH A,Rn(字节互换)(A)(direct)或(Ri),或(Rn),XCHD A,Ri 累加器 Acc的低4位与(Ri)的低4位互换,各自的高4位不变,SWAP A 累加器 Acc的低4位与自身的高4位互换,堆栈操作指令(2条):P.54,PUSH压栈指
10、令,POP 弹栈指令,堆栈区由特殊功能寄存器堆栈指针SP 管理堆栈区可以安排在 RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,而是放在RAM区的靠后的位置堆栈总是指向栈顶通常PUSH与POP两条指令成对使用,数据传送类指令(续),(二)算术运算类指令(6种/24条)P.54,加法运算:(ADD4条)带进位加法运算:(ADDC4条)带借位减法运算:(SUBB4条)加1/减1操作:(INC,DEC9条)单字节乘/除法运算:(MUL,DIV2条)十进制调整:(DA A1条),(二)算术运算类指令(续)P.55,加法运算:(ADD4条)带进位加法运算:(ADDC4条)带借位减法运算
11、:(SUBB4条),所有的加法(ADD)、带进位加法(ADDC)、带借位减法(SUBB)运算都是以 A为一个加数或被减数,最终结果也存进 A。,加法(ADD)、带进位加法(ADDC)以及带借位减法(SUBB)运算中,如果产生了进位或借位,将自动对PSW中的Cy标志位置“1”。,带进位加法(ADDC):(A)(A)+(Cy)+(第二操作数)带借位减法(SUBB):(A)(A)-(Cy)-(第二操作数),(二)算术运算类指令(续)P.57,加1/减1操作:(INC,DEC9条)INC,DEC与用加/减法指令做加1/减1 操作不同之处在于INC、DEC不影响标志位.,单字节乘/除运算:(MUL,DI
12、V2条)两个单字节数的乘/除法运算只在A与B之间进行。MUL AB:(A)与(B)相乘,积为16位数,(A)积的高8位;(B)积的低8位DIV AB:(A)除以(B),结果用2字节表示,(A)商的整数部分;(B)余数,(二)算术运算类指令(续)P.60,BCD码是指“用二进制表达的十进制数”。如:十进制数20可以用二进制数00010100B表示;也可以用十六进制数14H表示;还可以用BCD码 00100000B 或 20H 表示。,4个二进制位就可以表示一位BCD码:00001001 可表示十进制数(BCD数)09;8个二进制位就可以表示两位压缩的BCD码:0000000010011001 表
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 指令 编程
链接地址:https://www.desk33.com/p-246772.html