MCS51单片机汇编语言程序设计改

MCS51单片机汇编语言程序设计改

ID:39335675

大小:578.60 KB

页数:45页

时间:2019-07-01

MCS51单片机汇编语言程序设计改_第1页
MCS51单片机汇编语言程序设计改_第2页
MCS51单片机汇编语言程序设计改_第3页
MCS51单片机汇编语言程序设计改_第4页
MCS51单片机汇编语言程序设计改_第5页
资源描述:

《MCS51单片机汇编语言程序设计改》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第3章MCS-51单片机汇编语言程序设计单片机原理、接口及应用内容提要★伪指令★汇编语言程序设计步骤★顺序程序设计★分支程序设计★循环程序设计★位操作程序设计★子程序★小结1.机器指令:指令系统中的全部指令。每条机器指令都有对应的机器代码,可以被CPU执行。2.伪指令:汇编控制指令,没有指令代码,只用于汇编过程,为汇编程序提供汇编信息。一、汇编语言指令类型宏汇编功能:将需要反复多次执行的程序段定义成一个宏指令名(宏定义)。编程时,可在程序中使用宏指令名来替代被定义的程序段(宏调用)。3.1伪指令宏定义过程:

2、宏调用过程:…宏指令名实际参数…宏指令名实际参数宏指令名MACRO形式参数…;被定义的程序段ENDM二.伪指令常用伪指令及功能:1.起始指令ORGnn功能:定义程序或数据块的起始地址。指示此语句后面的程序或数据块以nn为起始地址,连续存放在程序存储器中。指令地址机器码源程序ORG2000H2000H7830MAIN:MOVR0,#30H2002HE6MOVA,@R0…ORG3000H3000H23TAB:DB23H,100,‘A’3001H643002H412.字节定义标号:DB(字节常数,或字符或表达式)

3、功能:指示在程序存储器中以标号为起始地址的单元里存放的数为字节数据(八位二进制数)。例如LN:DB32,’C’,25H,-1;LN~LN+2地址单元依次存放20H,43H,25H,FFH地址数据LN20LN+143LN+225LN+3FF3.字定义标号:DW(字常数或表达式)作用:指示在程序存储器中以标号为起始地址的单元里存放的数为字数据(即16位的二进制数),例如:GH:DW1234H,5678H,08GH1234GH+25678GH+400085.等值指令标号EQU(数值表达式) 表示EQU两边的量等值

4、,用于为标号或标识符赋值。 例如:X1EQU2000H X2EQU0FH … MAIN:MOVDPTR,#X1;DPTR=2000HADDA,#X2;A=A+0FH4.保留字节标号:DS(数值表达式)作用:指示在程序存储器中保留以标号为起始地址的若干字节单元,其单元个数由数值表达式指定。例如L1:DS32;从L1地址开始保留32个存储单元。6.位定义标号BIT[位地址]作用:同EQU指令,不过定义的是位操作地址。例如AICBITP1.1。7.汇编结束END作用:指示源程序段结束。END指令放在程序的最后。A

5、51汇编程序还有一些其它的伪指令,列在教材表3-1中,以备查阅。汇编语言程序设计步骤一.确定方案和计算方法二.了解应用系统的硬件配置、性能指标三.建立系统数学模型,确定控制算法和操作步骤四.合理分配存储器单元和了解I/O接口地址五.编制源程序1.按功能设计程序,明确各程序之间的相互关系2.用流程图表示程序结构和功能开始1YN?3.程序中用注释说明指令在程序中的作用,方便阅读、调试和修改顺序程序设计例3-1编程将外部数据存储器的000EH和000FH单元的内容相换。常用程序结构顺序程序、分支程序、 循环程序、

6、子程序000EH000FH000EH000FH000EH000FH000EH000FH分析:外部数据存储器的数据操作只能用MOVX指令,且只能和A之间传送,因此必须用一个中间环节作暂存,设用20H单元。用R0、R1指示两单元的低八位地址,高八位地址由P2指示。编程过程如下:000EH000FH000EH000FH000EH000FHORG0000HMOVP2,#0H;送地址高八位至P2口MOVR0,#0EH;R0=0EHMOVR1,#0FH;R1=OFHMOVXA,@R0;A=(000EH)MOV20H,A

7、;(20H)=(000EH)MOVXA,@R1;A=(000FH)XCHA,20H;A=(000EH),(20H)=(000FH)MOVX@R1,AMOVA,20HMOVX@R0,A;交换后的数送各单元SJMP$END3.3顺序程序设计顺序程序(简单程序),程序走向只有一条路径例3-2:将R4R5双字节符号数求补程序。ORG0000HMOVA,R5;取低字节CPLAADDA,#1;低字节变补MOVR5,AMOVA,R4;取高字节CPLAADDCA,#0;高字节变补ORLA,#80H;恢复负号MOVR4,AE

8、ND例3-3分解压缩式BCD码,使其成为非压缩式BCD码。ORG0000HMOVR0,#40H;设指针MOVA,@R0;取一个字节MOVR2,A;暂存ANLA,#0FH;清0高半字节INCR0MOV@R0,A;保存数据个位片内RAM42H41H40H65MOVA,R2SWAPA;十位换到低半字节ANLA,#0FHINCR0MOV@R0,A;保存数据十位END0506地址数据TAB0TAB+11TAB+24TAB+

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。