欢迎来到天天文库
浏览记录
ID:51592465
大小:161.00 KB
页数:25页
时间:2020-03-25
《《单片机原理及应用》MSC-51 单片机的指令系统 电子教案.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第三章MSC-51单片机的指令系统3.1指令系统概述一、机器码指令与汇编语言指令机器码指令:汇编语言指令:二、指令格式汇编语言格式为:[标号:]操作码助记符[目的操作数,][源操作数][;注释]单字节指令双字节指令三字节指令操作码24H操作数22HINCAADDA,#22HMOV5EH,4FH操作码04H操作码85H源操作数4FH目的操作数5EH图3-1机器码指令格式3.2寻址方式一、寄存器寻址二、直接寻址三、立即寻址四、寄存器间接寻址五、变址寻址六、相对寻址七、位寻址3.3MSC-51单片机的指令系统按照指令的功能,可
2、以把MSC-51的111条指令分成五类:l数据传送类指令(29条)l算术运算类指令(24条)l逻辑操作类指令(24条)l控制转移类指令(17条)l位操作类指令(17条)图3-2相对寻址过程第四章MCS-51单片机的应用程序设计图4-1基本程序结构4.1运算程序一、多字节数加法1.多字节无符号数加法CLRCMOVR0,#40H;指向加数最低位MOVR1,#5OH;指向另一加数最低位MOVR2,#04H;字节数作计数初值LOOP1:MOVA,@R0;取被加数ADDCA,@R1;两数相加,带进位MOV@R0,AINCR0;修改
3、地址INCR1DJNZR2,LOOPl;未加完转LOOP1JNCLOOP2;无进位转LOOP2MOV@R0,#01HLOOP2:DECR0RET2.多字节有符号数加法MOVA,R0;复制保存地址指针MOVR2,AMOVA,R3MOVR7,ACLRCLOOP1:MOVA,@R0ADDCA,@R1;相加MOV@R0,AINCR0INCR1;地址指针加1DJNZR7,LOOP1JBOV,ERR;若溢出,转溢出处理DECR0MOVA,@R0JNBE7H,LOOP2SETB07H;和值为负,置位标志LOOP2:MOVA,R2;恢复
4、地址指针MOVR0,ARET┇ERR:┇;溢出处理RETSDADD:CLR07H;标志位清零图4-3多字节有符号数加法程序流程图二、多字节数减法MOVR0,#40H;指向被减数最低位MOVR1,#5OH;指向减数最低位MOVR2,#04H;字节数CLRCLOOP1:MOVA,@R0SUBBA,@R1;完成一个字节的减法运算MOV@R0,AINCR0INCR1DJNZR2,LOOP1RET三、多字节十进制数(BCD码)加法图4-4BCD码多字节加法程序流程图BCDADD:MOV20H,R0MOV23H,R3CLRCLOOP
5、0:MOVA,@R0;取被加数ADDCA,@R1;两数相加DAA;十进制调整MOV@R0,AINCR0;指针加1INCR1DJNZR3,LOOP0;作完加法否MOVR2.#23HJNCRETURN;有无进位MOV@R0,#01HINCR3RETURN:MOVR0,#20HRET四、多字节数乘法ZHENFA:MOVA,R0MOVB,R1MULAB;(R1)*(R0)MOVR3,A;积的低位送到R3MOVR4,B;积的高位送到R4MOVA,R0MOVB,R2MULAB;(R2)*(R0)ADDA,R4;(R1)*(R0)的高
6、位加(R2)*(R0)的低位MOVR4,A;结果送R4,进位在CY中MOVA,BADDCA,#OOH;(R2)*(R0)的高位加低位来的进位MOVR5,A;结果送R5RET五、多字节数除法DV:MOVR7,#08H;设计数初值DVl:CLRCMOVA,R5RLCAMOVR5,AMOVA,R6RLCA;将(R6)、(R5)左移一位MOV07H,C;将移出的一位送07H位保存CLRC图4-5除法程序流程图SUBBA,R2;余数(高位)减除数JBO7H,GOU;若标志位为1,说明够减JNCGOU;无借位也说明够减ADDA,R2
7、;否则,恢复余数AJMPDV2GOU:INCR5;商上1DV2:MOVR6,A;保存余数(高位)DJNZR7,DVlRET一、数据的拼拆4.2数据的拼拆和转换例4-7设在30H和31H单元中各有一个8位数据:(30H)=x7x6x5x4x3x2x1x0(3lH)=y7y6y5y4y3y2y1y0现在要从30H单元中取出低5位,并从31H单元中取出低3位完成拼装,拼装结果送40H单元保存,并且规定:(40H)=y2y1y0x4x3x2x1x0解:利用逻辑指令ANL、ORL来完成数据的拼拆,程序清单如下:MOV4OH,3OH
8、;将x7~x0传送到40H单元ANL4OH,#000111llB;将高3位屏蔽掉MOVA,31H;将y7~y0传送到累加器中SWAPA;将A的内容左移4次RLA;y2~y0移到高3位ANLA,#111000OOB;将低5位屏蔽掉ORL4OH,A;完成拼装任务二、数据的转换1.ASCII码与二进制数的互相转换例4-10
此文档下载收益归作者所有