第讲汇编程序的编写_第1页
第讲汇编程序的编写_第2页
第讲汇编程序的编写_第3页
第讲汇编程序的编写_第4页
第讲汇编程序的编写_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第5讲:汇编程序的编写电气工程系电气工程系赵志衡赵志衡Tel:86413623E-mail:MCS-51 MCS-51 单单 片片 机机 原原 理理 及及 设设 计计2课程主要内容 汇编程序的基本知识 常用汇编程序设计方法MCS-51 MCS-51 汇汇 编编 程程 序序 的的 编编 写写 3汇编程序的基本知识汇编指令的基本结构:汇编指令的基本结构:标号:操作码助记符 第1操作数,第2操作数;注释Loop1: mov a, #0ffh; 累加器累加器A赋值为赋值为ff mov a,#10h mov a,#16 标号:表示该指令所在的符号地址,一般由字母和数字组成,标号:表示该指令所在的符号地

2、址,一般由字母和数字组成, 第一位为字母,其余位为字母、数字任选。第一位为字母,其余位为字母、数字任选。操作码助记符、第操作码助记符、第1操作数和操作数和 第第2操作数:指令的核心部分。对于某操作数:指令的核心部分。对于某些指令可能不存在完整的两个操作数。些指令可能不存在完整的两个操作数。注释:是由用户加入的文本,对汇编程序不起任何作用,只是方便注释:是由用户加入的文本,对汇编程序不起任何作用,只是方便阅读。阅读。 * 第第1操作数又称目的操作数,第操作数又称目的操作数,第2操作数又称源操作数操作数又称源操作数 * 51不区分大小写不区分大小写4汇编程序的基本知识 汇编语言的构成汇编语言的构成

3、 指令性语句(指令性语句(51指令系统)指令系统) 指示性语句:伪指令指示性语句:伪指令 伪指令:伪指令不属于伪指令:伪指令不属于MCS51指令系统中的指令,指令系统中的指令,它是程序员发给汇编程序的命令,也称为汇编程序它是程序员发给汇编程序的命令,也称为汇编程序控制命令。控制命令。 程序设计流程程序设计流程5常用的部分伪指令 ORG END EQU DB 6伪指令简介 ORG 起点指令 ORG addr16 org 0000h ORG指令用于指明程序代码或数据块在存储器中的起始地址。addr16代表一个16位地址,即程序或数据块的首地址。 EQU 等值指令 符号 EQU 表达式 aaa eq

4、u 30h mov a,aaa mov a,#aaa EQU指令用于为程序中的任意符号赋值。 程序中的常量通常可以用符号代替,便于修改。 主程序前要先用equ指令为常量符号赋值。7伪指令简介 DB 定义字节指令 标号: DB 数据列表 DB指令用于定义字节型数据或数据串,并将数据作为常数填入指定的存储器单元中。 END 结束汇编指令 标号:END END指令置于程序结尾处,作为源程序结束的标志。8程序设计流程(1)明确要求和要达到的目的(2)确定解决问题的计算方法和步骤(3)画出流程图(4)分配内存地址(5)按流程图编写程序(6)上机汇编、调试、修改直至最后确定源程序9程序结构:程序结构: 顺

5、序结构顺序结构 循环结构循环结构 分支结构分支结构 子程序结构子程序结构 复合结构:多种程序结构的组合复合结构:多种程序结构的组合10简单程序(顺序结构) 大量使用数据传送类指令 注意正确选择指令以提高效率11将20H单元内的压缩BCD码变换成相应ASCII码放在21H、22H中Org 0hLjmp 2000hORG 2000HMOV R0,#22HMOV R0,#00MOV A,20HXCHD A,R0ORL 22H,#30HSWAP AORL A,#30HMOV 21H,Az:SJMP zEND15BYTE ,11TMOV A,20HMOV B,#10HDIV ABORL B,#30HMO

6、V 22H,BORL A,#30HMOV 21H,ASJMP $END15BYTE 14T12BCD码与ASCII码对照 030H 131H 232H 333H 434H 535H 636H 737H 838H 939H13分支程序 根据程序要求无条件或有条件改变程序执行的顺序,选择程序的流向 特点:程序中含有转移类指令 关键:正确选用转移指令14正确运用转移指令无条件分支程序 程序设计者事先设计好的 LJMP有条件分支程序根据已经执行的程序中标志位、A或内部RAM的某些位的结果决定程序的流向 JZ/JNZ、CJNE、DJNZ、位控制转移类指令(JC、JNC、JB、JNB、JBC)15注 意

7、使用条件转移指令形成分支前使用条件转移指令形成分支前一定保证供条件转移指令进行判别的条件是有意一定保证供条件转移指令进行判别的条件是有意义的。义的。JC LOOP 正确选定所用的转移条件及转移目标地正确选定所用的转移条件及转移目标地址址16循环程序 循环初始化 循环次数计数器、工作寄存器设初值等 循环体 尽量简练 循环控制 检查结束条件,及时退出循环17注意循环嵌套允许外重循环嵌套内重循环循环体不能交叉不能从循环程序外部跳入循环程序内部18例:10个数据排序 常用气泡法(两两比较法):它先使E0和E1进行比较,若E0E1,则两数交换,否则不动,然后E1和E2进行比较,按同样的原则,决定是否交换

8、,一直比较下去,最后完成E8和E9的比较及交换。经过10-1次比较后,E9位置必然得到数组中的最大值。犹如一个气泡冒到水顶,如此循环即可完成排序。 实验中采用的循环结束判据:一轮比较中没有数据交换,排序结束。19 将将RAM地址为地址为50H59H中的中的10个数据个数据,从小到大进行排序从小到大进行排序 (实验实验1)Size equ 10Change equ 00HSort:mov rO, #50Hmov r7, #Size-lclr ChangeGoon:Mov a, r0Inc r0mov B, r0cjne a, B, NotEqualsjmp NextNotEqual:jc Nex

9、tsetbChangexcha, r0decrOxcha, r0incrONext:Djnz r7, GoonJb Change, SortLjmp $end20查表程序的设计主要用于 复杂代码转换显示 数据补偿:传感器补偿 复杂函数计算: Y=SIN(X)21查表指令 在51中建议使用的查表指令为 MOVC A,A+DPTR 最好不用 MOVC A,A+PC !22查表指令的使用例 求09的平方 ORG 0000H LJMP A1 ORG 0080HA1: NOP NOP MOV SP,#60H MOV DPTR,#2000H MOV A,#03H;将09之内任意一个数赋值给A。 MOVC

10、A,A+DPTRA2: SJMP A2 ORG 2000H DB 00h,01h,04h,09h,10h,19h,24h,31h,40h,51h END23查表指令的使用例 求09的平方 ORG 0000H LJMP A1 ORG 0080HA1: NOP NOP MOV SP,#60H MOV DPTR,#tab MOV A,#03H;将09之内任意一个数赋值给A。 MOVC A,A+DPTRA2: SJMP A2Tab: DB 00h,01h,04h,09h,10h,19h,24h,31h,40h,51h END24子程序的设计 子程序和运算程序是程序设计的两大支柱。 子程序的概念:完成确

11、定任务,并能为其他程序反复调用的程序段。要求子程序在结构上具有通用性和独立性。 例如:代码转换,运算程序等。25子程序编写的注意事项 子程序调用:LCALL 子程序返回:RET 子程序嵌套注意的问题:嵌套深度与堆栈区大小的问题. 子程序第一条必须有标号.正确传递参数:入口参数和出口参数.注意现场的保护和恢复26子程序的参数传递 (方法很多) 通过寄存器传递MAIN: mov r0,#30Hmov r7,#0AHlcall SUBR mov b,r1 .SUBR: push a push psw mov a,r7 clr c subb a,r0 mov r1,a pop psw pop a ret end减法子程序subr,入口参数r7、r0;出口参数r1。功

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论