版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MCS-51单片机原理及应用教程,刘迎春主编,清华大学出版社,第4章:单片机程序设计,汇编语言源程序的编辑与汇编,汇编语言程序设计,一些指令,如指定目标程序或数据存储器的地址,给一些指定的标签赋值,指示源程序的结束等。不产生目标程序(机器代码),也不影响程序的执行,而只产生一些用于汇编的命令,这些命令用来执行汇编过程。4.1伪指令,4.1.1定义起始地址的伪指令,格式:ORG addr16函数:指定存储程序块或数据块的起始地址。Addr16代表16位程序存储器的空间地址,通常是一个确定的地址或预定义的标签。示例:org 2000h start :mov a,30h,4.1.2定义汇编end伪指
2、令,格式:end函数:指示汇编END,4.1.3标签赋值伪指令,格式:标签EQU表达式函数:在此语句中将表达式值赋给标签。也称为等效指令。4.1.4定义字节伪指令,格式:数据库字节表功能:从标签指定的地址单元开始定义程序存储器中的字节数据。4.1.5定义字伪指令,4.1.6保留存储伪指令,格式:标号: DS表达式函数:从标号指定的地址单元,定义一个存储区供源程序使用。存储区中保留存储单元的数量由表达式的值决定。例如,ORG3030H TIMER:DS10H,格式: DW字表功能:从标签指定的地址单元开始,并将字数据存储在程序存储器中。4.2汇编语言源程序的编辑和汇编、4.2.1源程序的编辑,以
3、及编译后的源程序应以“、”的扩展名保存。汇编程序调用。4.2.2源程序汇编,4.3汇编语言程序设计,4.3.1序列程序,例1已知X、Y和Z分别是30h、31H和32H片上随机存储器单元的内容,设XY,并尝试编程如下算术运算:S=(X-Y)*Z,并将计算结果S存入片上随机存储器30H,X-Y0因XY不需要借用;(X-Y)*Z的结果最多占用两个字节。实现这一要求的程序流程图如图4.2所示。程序列表如下:组织0030小时开始: MOVA,30H31H(甲)(甲)-十MOVB,32H(二)Z MULAB MOV34H,B;(34h)a * b,a的高字节mov35h(35h) SJMP$,A * B的
4、低位字节。示例2:编写一个双字节无符号数字乘法程序。被乘数的高字节位于R2,低字节位于R3,高字节位于R6,低字节位于R7。产品在R2、R3、R4和R5。程序段如下:MOV A,R3;R3R7 MOV B,R7 MUL AB MOV R4,B;临时部分产品MOV R5、MOV A、MOV R3、R6 B;R3R6 MUL AB ADD A,R4;累加部分乘积mov 4,a clr a addc a,b mov R3,a mov a,R2;R2R7 MOV B、R7、MUL AB ADD A、R4;累加部分积movr4,amov a,R3 addc a,bmov R3,a clr a RLC a
5、 xch a,R2;R2R6 MOV B,R6 MUL AB ADD A,R3;累加部分积movr3、amov a、R2 addc a、bi mov R2 a、4.3.2分支程序。在示例1中,内部ram单元的30H和31H中有无符号数字。试着比较它们的大小。大数以40H单位存储,十进制数以41H单位存储,如果它们相等,则以42H单位存储。程序流程图如图4.3所示。程序如下:MOV A,30CJNE A,31H,K1MOV 42H,AJMP WAIT K13360JNC K2MOV 41H,AMOV 40H,31H AJMP WAIT K23360MOV 40H,AMOV 41H,31H WAI
6、T 3360AJMP $,4.3.3循环程序,其流程如图4.4所示。从内部内存30H开始,有20个无符号数字存储在连续单元中,并编写程序来排列这20个数字MOV R0,#30H MOV R7,# 19;将外环计数器设置在: MOV R6 00H之外;设置内环计数器PUSH 00H0组R0堆栈MOV A,R0;取内环的第一个数字INSIDE: INC R0修改内环地址间指针MOV B,R0 CJNE A,B,$ 3;比较R0和JNC NEXTCH的大小;大于或等于不交换XCH A,R0;不到交易所内R6;判断内部循环是否在00H结束;在内环的末端,R0叠加MOV R0,A;内存环路INC R0的
7、最大值;修改外环指针DJNZ R7,outer外包循环是否结束SJMP,2美元。子程序示例,示例1:将单字节十六进制整数转换为单字节BCD整数的子程序。输入条件:要转换的单字节十六进制整数在累加器a中.退出状态:转换后的BCD码整数(10位和1位)仍在累加器a中,100位在R3中。推动PSW为保护该场地,MOV大道100号;(一)百位MOV R3,一种(一种)BCD码;(R3)BCD码的100位MOV A,# 10;剩余部分继续分离10位和1位XCH模数转换器;(一)十种全交换ORL码;将十位和一位组装成BCD码POP B;恢复4.3.4子程序,并将4位二进制数转换为示例3中的ASCII码。输
8、入条件:要转换的4位二进制数存储在R2。退出状态:转换后的ASCII码存储在R2。ASCB:推进式水下生产系统;为了保护现场,请将MOV、R2、ANL、取出四位二进制数PUSH A;入栈CLR C SUBB A,# 0AH POP A;在中弹出JC循环;如果数字小于10,转到循环加法,07H否则,添加07H回路:添加一个,# 30H加30H MOVR2,甲;将转换后的ASCII码保存到R2邮政编码中;4.4思维练习,(1)简要描述汇编语言的特点。(2)什么是伪指令?简述常用伪指令的功能。(3)按照执行的方式,可以分为哪几种程序?(4)编写子程序时应注意哪些问题?(5)编写程序将外部内存中2000H2020H单元的内容发送到内部内存中30H50H单元。(6)编写一个程序,找出芯片中40H单元内容中所有“0”的数量,并将结果存储在50H中。(7)从内部随机存取存储器单元30H开始,将五个压缩的BCD码存储在五个单元中,并编写程序将它们转换成ASCII码,并从40H开始将它们存储在单元中。(8)程序从30H开始计算内部随机存取存储器中20个连续单元内容的平均值,并将其存
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 年产14.4万立方米高强度零甲醛秸杆板生产建设项目可行性研究报告
- 小店商城运营方案模板
- 生鲜企业抖音运营方案
- 图书商城运营策略方案
- 军营食堂运营方案
- 城市索道运营方案范文
- 旧衣分拣厂运营方案
- 新加坡智慧城市运营方案
- 智慧校园亲情运营方案
- 视频运维运营方案范文
- 《大学物理电路》课件
- 人工智能训练师(中级数据标注员)理论考试题库大全(含答案)
- 龙软LongRuanGIS地测空间管理信息系统教程-wx4766
- 招聘能力提升培训
- 《公路工程质量检验评定标准》JTG F80∕1-2017宣贯材料
- J髌股关节紊乱的针刀疗法
- 钢轨胶接绝缘作业指导书(新建)
- 史学概论课件(2015修改版)
- YS/T 485-2005烧结双金属材料剪切强度的测定方法
- GB/T 39313-2020橡胶软管及软管组合件输送石油基或水基流体用致密钢丝编织增强液压型规范
- 中国脑出血诊治指南(2023年)-1
评论
0/150
提交评论