![[信息与通信]第4章 MCS51汇编语言程序设计_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-10/16/c780ef5a-9515-4bff-8f36-ba7f1621353b/c780ef5a-9515-4bff-8f36-ba7f1621353b1.gif)
![[信息与通信]第4章 MCS51汇编语言程序设计_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-10/16/c780ef5a-9515-4bff-8f36-ba7f1621353b/c780ef5a-9515-4bff-8f36-ba7f1621353b2.gif)
![[信息与通信]第4章 MCS51汇编语言程序设计_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-10/16/c780ef5a-9515-4bff-8f36-ba7f1621353b/c780ef5a-9515-4bff-8f36-ba7f1621353b3.gif)
![[信息与通信]第4章 MCS51汇编语言程序设计_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-10/16/c780ef5a-9515-4bff-8f36-ba7f1621353b/c780ef5a-9515-4bff-8f36-ba7f1621353b4.gif)
![[信息与通信]第4章 MCS51汇编语言程序设计_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-10/16/c780ef5a-9515-4bff-8f36-ba7f1621353b/c780ef5a-9515-4bff-8f36-ba7f1621353b5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、张兴忠制作:2:471张兴忠 制作第第4 4章章 mcs-51mcs-51汇编语言汇编语言程序设计程序设计 单片机原理与接口技术太原理工大学电子工业出版社张兴忠制作:2:472第第4 4章章 mcs-51mcs-51汇编语言程序设计汇编语言程序设计 张兴忠制作:2:473第第4 4章章 mcs-51mcs-51汇编语言程序设计汇编语言程序设计 张兴忠制作:2:474张兴忠制作:2:475mcs-51单片机提供111条指令,它们以指令助记符的形式出现,指令助记符的集合称为汇编语言。由汇编语言编写的程序称为汇编语言源程序。汇编语言源程序必须翻译成机器代码组成的目标程序,机器才能执行。用汇编语言编制
2、程序的过程,称为汇编语言程序设计。使用汇编语言设计一个程序大致可分为以下几个步骤: 张兴忠制作:2:476张兴忠制作:2:477张兴忠制作:2:478汇编语言源程序由汇编指令和伪指令两者构成。用汇编语言编写的源程序通常需经过微机汇编程序编译(汇编)成机器码后才能被单片机执行。为了对源程序汇编,在源程序中必须使用一些“伪指令”。伪指令是便于程序阅读和编写的指令,它即不控制机器的操作也不能被汇编成机器代码,只是为汇编程序所识别的常用符号,并指导汇编如何进行,故称为伪指令。张兴忠制作:2:479标号: 助记符 操作数1 ,操作数2 ,操作数3 ;注释标号:标号是指令地址的标识符号。有了标号,程序中的
3、其它语句才能访问该语句。有关标号的规定如下。1) 标号由18个ascii字符组成。第一个字符必须是字母,其余字符可以是字母、数字或其它特定字符;2) 标号不能使用该汇编语言已经定义了的符号。如指令助记符、伪指令以及寄存器符号名称等;3) 标号后边必须跟以冒号。1汇编指令格式汇编指令格式-标号标号张兴忠制作:2:4710操作数:操作数用于给指令的操作提供数据或地址。在一条汇编语句中操作数可能是空白的,也可能包括两项或三项。各操作数间用逗号分隔。操作数字段的内容可能包括工作寄存器、特殊功能寄存器、标号、常数和表达式。注释:对程序加以说明,是不可执行部分。注释字段必须以分号“;”开头,长度不限,当一
4、行书写不下时,可以换行接着书写,但换行时应注意在开头使用分号“;”。-操作数操作数张兴忠制作:2:4711mcs-51系列单片机的常用伪指令有:org、 end、equ、db、dw、ds和bit等。2伪指令伪指令-伪指令伪指令orgorg格式:标号:org 16位地址功能:规定程序块或数据块存放的起始地址。如:org8000h ;规定下面的第一条指令从地址8000h单元开始存放,即标号start的值为8000hstart:mov a, #30h .(1) 汇编起始伪指令org张兴忠制作:2:4712格式:标号:end 表达式功能:结束汇编。汇编程序遇到end伪指令后即结束汇编。处于end之后的
5、程序,汇 编程序不予处理。(2)汇编结束伪指令)汇编结束伪指令end-伪指令伪指令endend如: org2000hstart: mova, #00h end start ;表示标号start开始的程序段结束。 张兴忠制作:2:4713格式:字符名称 equ 操作数功能:将操作数赋予规定的字符名称。(3)等值伪指令)等值伪指令equ-伪指令伪指令equequ如:ab equ 16hdely equ 1234hmov a, ablcall dely张兴忠制作:2:4714格式:标号:db 8位二进制数表功能:db指令是在程序存储器(rom)中,从指定的地址单元开始,定义若干个8位内存单元的内容。
6、用来在程序存储器的某一部分存入一组8位二进制数,或者是将一个数据表格存入程序存储器。这个伪指令在汇编以后,将影响程序存储器的内容。(4)定义字节伪指令)定义字节伪指令db-伪指令伪指令dbdb张兴忠制作:2:4715以上伪指令经汇编以后,将从1010h开始的若干 内存单元赋值: (1010h)=20h (1011h)=43h (1012h)=25h (1013h)=ffh其中43h是字符c的ascii码,ffh是数值-1的补码,十进制 数32也换算为16进制数20h。-伪指令伪指令dbdb应用应用如:org1010h tab:db32, c, 25h, -1张兴忠制作:2:4716标号:dw
7、16位二进制数表功能:dw指令是在程序存储器(rom)中,从指定的地址单元开始,定义若干个16位数据。一个16位数要占两个存储单元,其中高8位存入低地址单元,低8位存入高地址单元。例如: org1100htab :dw1234h, 0abh 10以上伪指令经汇编以后,将对从1100h开始的若干内存单元赋值:(5)定义字伪指令)定义字伪指令dw-伪指令伪指令dwdw张兴忠制作:2:4717(1100h)=12h(1101h)=34h(1102h)=00h(1103h)=abh(1104h)=00h(1105h)=0ah其数据存储格式如右表所示。db、dw伪指令都只对程序存储器(rom)起作用,不
8、能对数据存储器(ram)的内容进行赋值或进行初始化工作。例如:org1100htab:dw1234h, 0abh 10-伪指令应用伪指令应用张兴忠制作:2:4718标号:ds 表达式功能:从指定(标号)地址开始(无标号时从顺序地址开始),保留指定数目(表达式的值)的字节单元作为备用存储区,供程序运行使用(用于程序存储器)。这些单元的初值均为0。例如: org 2000h tab: ds05h经汇编后,从地址2000h开始预留5个存储单元。(6)定义存储区伪指令)定义存储区伪指令ds-伪指令伪指令dsds张兴忠制作:2:4719字符名称 bit 位地址功能:将位地址赋给字符名称。例如:sbitp
9、1.0经汇编后,s符号的值是p1.0的地址90h。(7)位定义伪指令)位定义伪指令bit-伪指令伪指令bitbit张兴忠制作:2:47201汇编语言源程序编辑汇编语言源程序编辑-编写规范编写规范 data0equ30h 将30h赋予字符名称data0org4000h;规定下面程序从4000h单元开始存放movr0, #data0;30hr0movr1, data0;(30h)r1cjner1, #00h, next;r1000h,则转nexthere:sjmpherenext:clra;0aloop:incr0;(r0)+1r0adda, r0;(a)+(r0)adjnzr1, loop;(r
10、1)-1r1,r1 0,则转loopsjmphereend;汇编到此结束张兴忠制作:2:4721源程序 地址 目标码 data0equ30horg4000hmovr0, #data0 ;40007830movr1, data0 ;4002a930cjner1, #00h, next ;4004b90002here:sjmphere ;400780fenext:clra ;4009e4loop:incr0 ;400a 08adda, r0 ;400b 26djnzr1, loop ;400cd9fcsjmphere ;400e80f7end2汇编语言源程序的汇编汇编语言源程序的汇编-源程序汇编源
11、程序汇编张兴忠制作:2:4722-程序结构程序结构张兴忠制作:2:4723-顺序结构实例顺序结构实例org2000hmova, 20hmovb, #10h ;除以10hdivaborlb, #30h ;低4位bcd码转换为ascii码mov21h, borla, #30h ;高4位bcd码转换为ascii码mov22h, aend张兴忠制作:2:4724例例4-2 设有16位二进制数存放在内部ram的50h及51h单元中,要求将其算术左移一位(即原数各位均向左移1位,最低位移入0)后仍存放在原单元。试编制相应的程序。-顺序结构实例顺序结构实例 org4000hbihrol: clrc;cy清零
12、 mova, 51h ;低8位向左环移1位 rlca mov51h, a mova, 50h ;高8位向左环移1位 rlca mov50h, a end张兴忠制作:2:4725分支程序可根据要求无条件或有条件地改变程序执行流向。编写分支程序主要在于正确使用转移指令。分支程序有:单分支结构、双分支结构、多分支结构(散转)。编写程序,根据x的值求y的值,并放回原单元中。-分支结构分支结构例例4-3 设变量x以补码形式存放在片内ram的30h单元中,变量y与x的关系是:张兴忠制作:2:4726-分支结构实例分支结构实例 org 1000hstart: mov a, 30hjz next;x=0,转移
13、anl a, #80h ;保留符号位jz ed ;x 0 ,转移mov a, #05h ;x 0,不转移add a, 30hmov 30h, asjmp ednext: mov 30h, #20hed:sjmp $程序如下张兴忠制作:2:4727例例4-4 128种分支转移程序。根据入口条件转移到128个目的地址。入口:入口:(r3)转移目的地址的序号00h7fh。出口:出口:转移到相应于程序入口。-分支结构实例分支结构实例jmp-128: mov a, r3 rla mov dptr, #jmptab jmpa+dptrjmptab: ajmp rout00 ;128个子程序首址 ajmp
14、rout01 ajmp rout7f张兴忠制作:2:4728典型循环程序包含四部分:初始化部分、循环处理部分、循环控制部分和循环修改部分。下面分别介绍这四个组成部分。1) 初始化部分:设置循环开始的初始值,为循环做准备。2) 循环处理部分:循环程序中重复执行的内容。3) 循环控制部分:判断是否结束循环。4) 循环修改部分:修改循环参数,为执行下一次循环做准备。-循环结构循环结构张兴忠制作:2:4729-循环结构循环结构先先执执行行后后判判断断 先先判判断断后后执执行行 张兴忠制作:2:4730-循环结构实例循环结构实例张兴忠制作:2:4731-循环结构实例循环结构实例org1000hscmpp
15、ma:movr0, #20h;置取数指针r0初值movb, #59h;置循环计数器b初值mova, r0;第一个数送ascloop:incr0;修改指针movr1, a;暂存xrla, r0;两数符号相同?jbacc.7, reslat;若相异,则转reslatmova, r1;若相同,则恢复a中原来值clrc;c清零subba, r0;两数相减,以判断两者的大小jnbacc.7, smext1;若a中值为大,则转smext1cxaher:mova, r0;若a中值为小,则将大数送入asjmpsmext2reslat: xrla, r0;恢复a中原值jnbacc.7, smext2;若a中值为
16、正,侧转smext2sjmpcxaher ;若a中值为负,则转cxahersmext1: movr1,a;恢复a中原值smext2: djnzb, scloopmov1fh, a;最大者送1fh单元end张兴忠制作:2:4732 org8000hmovr0, #data;置源数据区首地址movdptr, #buf;置目的数据区首地址loop0: mova, r0;取数据cjnea, #24h, loop1;判断是否为$字符sjmploop2;是$,转结束loop1: movxdptr, a;不是$,执行传送incr0;修改源地址incdptr;修改目的地址sjmploop0;传送下一个数据lo
17、op2: end-循环结构实例循环结构实例张兴忠制作:2:4733 org 4000hdeyprg: mov r5, #100 ;置外循环计数器r5初值为100loop1: movr6, #200 ;置2层循环计数器r6初值为200loop2: movr7, #248 ;置3层循环计数器r7初值为248loop3: djnzr7, loop3 ;3层循环计数结束否? djnzr6, loop2 ;2层循环计数结束否? djnzr5, loop1 ;外循环计数结束否? ret张兴忠制作:2:4734张兴忠制作:2:4735-查表程序查表程序张兴忠制作:2:4736在这个程序中,查表指令movc
18、a, a+pc到表格首地址有两条指令,占用3个地址空间,故变址调整为加3。-查表程序查表程序 org 0200h hex equ 33hhexasc:mov a, hex anl a, #0fh add a, #03h;变址调整 movc a, a+pc mov hex, a retasctab: db 30h, 31h, 32h, 33h db 34h, 35h, 36h, 37h db 38h, 39h, 41h, 42h db 43h, 44h, 45h, 46h end张兴忠制作:2:4737-查表程序查表程序张兴忠制作:2:4738-查表程序查表程序张兴忠制作:2:4739-子程序子程序张兴忠制作:2:4740-参数传递参数传递张兴忠制作:2:4741-参数传递参数传递张兴忠制作:2:4742-参数传递参数传递张兴忠制作:2:4743-子程序应用子程序应用张兴忠制作:2:4744-子程序应用子程序应用张兴忠制作:2:47454.3.1 算术运算程序算术运算程序-算术运算程序算术运算程序张兴忠制作:2:4746-算术运算程序算术运算程序addbin: clrcloop1: mov a, r0;取被加数 addc a, r1;两数相加,带进位 mov r0, a incr0 incr1 d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国造纸制浆流程泵绿色制造技术发展趋势分析报告
- 半导体制造特殊过程关键工序的质量控制措施
- 展览会名称使用授权书范文
- 危重孕产妇救治中心应急响应人员职责
- 小学音乐主题研学活动计划
- 幼儿园安全培训专员职责
- 零售门店员工劳动力配置计划
- 舞蹈学专业毕业实习个人总结报告范文
- 部编版高中语文必修下册思维导图制作计划
- 心理咨询师谈叛逆不是孩子的错心得体会
- 高速安全知识
- 人工呼吸笔试题及答案
- 《C语言程序设计(第2版)(微课版)》全套教学课件
- 流程仿真与优化-深度研究
- 指向社会责任的“海水稻渗透现象”主线式情境教学实践
- MZ-T 《殡葬公共服务网络平台技术要求》编制说明
- 舌癌手术护理配合
- 提升教师教学能力的在线学习平台
- 2025年游泳馆设施维护承包合同
- 《数据采集与处理》课件
- 玛丽艳美容培训
评论
0/150
提交评论