单片机原理课件:第四章 汇编语言程序设计_第1页
单片机原理课件:第四章 汇编语言程序设计_第2页
单片机原理课件:第四章 汇编语言程序设计_第3页
单片机原理课件:第四章 汇编语言程序设计_第4页
单片机原理课件:第四章 汇编语言程序设计_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、第四章 汇编语言程序设计汇编语言源程序编辑与汇编汇编语言程序设计方法 4.24.1程序设计过程程序技巧汇编语言规范汇编语言程序编辑和汇编常用的流程图符号4.1 汇编语言源程序编辑与汇编任务分析(硬件、软件系统分析)确定算法和工作步骤程序设计过程程序总体设计和流程图绘制分配内存及端口,确定程序与数据区存放地址编制源程序仿真、调试程序固化程序程序功能模块化(按功能分:显示、打印、输入、发送等)尽量采用循环结构和子程序(节省内存)12多采用累加器来传递参数注意现场保护,即压入堆栈34编程技巧汇编语言的规范汇编语言源程序由以下两种指令构成汇编语句(指令语句)伪指令(指示性语句)汇编语句的格式: 标号:

2、 操作码操作数;注释3. 数据表示形式: 二进制(B)、十六进制(H)、十进制(D或省略)、ASCII码(以单引号标识) 汇编语言程序编辑和汇编1. 编辑(源程序,以.ASM扩展名存盘);2. 汇编(手工或机器汇编); 如: MOV A,#88H;机器码74H,88H 又如:地址 目标码 源程序 ORG 1000H 1000H 747F MOV A,#7FH 1002H 7944 MOV R1,#44H END常用的流程图符号顺序程序设计分支程序设计循环程序设计查表程序设计子程序设计4.2 汇编语言程序设计方法顺序程序设计例:求多项式解:设a存放在R2中,b存放在R3中,结果存放在R6和R7中

3、。程序如下: MOV A, R2 MOV B, A MUL AB CLR C SUBB A, R3 ;带进位减 MOV R7, A ;保存低8位 MOV A, B SUBB A,#00H ;高八位减进位 MOV R6,A END分支程序设计AJMP、LJMP、SJMP 、JMP JZ、JNZ、CJNE、DJNZ 根据不同的条件转向不同的处理程序控制转移指令 位转移指令 JC、JNC、JB、JNB、JBC例:累加器A内有一个16进制ASCII字符,要求转换成一个16进制数存放于A。ASCII字符转换成16进制数规则:数字09 :只需减30H字母AF :减30H,再减7START0C(A)-30H

4、 A(A) 50ms,因为没有考虑到除DJNZ指令之外的其它指令的执行时间。DEL: MOV R7,#200 ;1 sDEL1:MOV R6,#123 ;1 s NOP ;1 sDEL2:DJNZ R6,DEL2 ;2s,计(2123)s DJNZ R7,DEL1 ;2s, RET 共计 (21232 2)200+1 s,即50.001ms MOV R0,#data MOV DPTR,#bufferLOOP0:MOV A,R0 CJNE A,#24H,LOOP1 ;判断是否为 $ 字符 SJMP LOOP2 ;是 $ 字符,转结束LOOP1:MOVX DPTR,A ;非 $ 字符,执行传送 I

5、NC R0 INC DPTR SJMP LOOP0 ;传送下一数据 LOOP2: 二、先判断后执行例:将内部RAM中起始地址为data的数据串传送到外部RAM中起始地址为buffer的存储区域内,直到发现$ 字符停止传送。由于循环次数事先不知道,但循环条件可以测试到。所以,采用先判断后执行的结构比较适宜。程序段如下:例:200名学生参加考试,成绩放在8031的外部RAM的一个连续存储单元,95100分颁发A级证书,9094分颁发B级证书,编一程序,统计获A、B级证书的人数。将结果存入内部RAM的两个单元。 ORG 0030H EG DATA 1000H GA DATA 20H GB DATA

6、21H MOV GA,#00 MOV GB,#00 MOV DPTR,#EG MOV R2,#200LOOP: MOVX A,DPTR CJNE A, #95, LOOP1 LOOP1: JNC NEXT1 CJNE A,#90,LOOP2LOOP2: JC NEXT INC GB SJMP NEXTNEXT1: INC GANEXT: INC DPTR DJNZ R2,LOOP SJMP $ END查表程序设计表格是事先存放在ROM中的,一般为一串有序的常数,例如平方表、字型码表等。表格可通过伪指令DB来确定。通过查表指令MOVC A,A+DPTR和MOVC A,A+PC来实现。 用DB、D

7、W建立表格首地址送DPTR关键字送A查表:MOVC A,A+DPTR用查表法计算平方(一) ORG0000H MOVDPTR,#TABLE ;表首地址送DPTR MOV A,#05 ;被查数字05A MOVCA,A+DPTR;查表求平方 SJMP$ TABLE:DB 0,1,4,9,16,25,36,49,64,81 END 用查表法计算平方(一) 用查表法计算平方(二) ORG0000H0000H MOVA, #05 ;05 A0002H ADDA, #02 ;修正累加器A0004H MOVCA, A+PC;查表求平方0005H SJMP$ 0007H:DB0,1,4,9,16,25,36,

8、49,64,81 END使用传送指令将关键字送入ACCADD A, #DATA指令对A进行修改: PC+DATA=表格首地址12MOVC A,A+PC 完成查表.3使用 MOVC A,A+PC须注意:DATA=表格首地址-指令地址-1例 : MOV A, XADDA,#01HMOVCA,A+PCRETDB00,01,04,09,10H,19H,24H,31H,30HDATA=表格首地址-指令地址-1即:MOVC与DB之间的字节数例 设一巡回报警系统,对16路输入进行控制,现根据测量路数,找出每路的最大允许值(若大于允许值就报警)。(查找双字节表格)TB3:MOV A, R2 ADD A, R2

9、MOV R3, A ADD A, #6 MOVCA, A+PC XCH A, R3 ADD A, #3 MOVC A, A+PC MOV R4, A RETTAB3:DW1520,3721,4256 ;表格最大长度256 DW 子程序设计注意事项:1. 给子程序赋一个名字。实际为入口地址代号。2. 子程序调用: ACALL、 LCALL 子程序返回: RET 要能正确传递参数: 入口条件:子程序中要处理的数据如何给予。 出口条件:子程序处理结果如何存放。 (寄存器、存储器、堆栈方式)3. 保护与恢复现场: 保护现场:压栈指令PUSH 恢复现场:弹出指令POP4. 子程序可以嵌套主程序与子程序的

10、关系子程序的嵌套子程序的调用与返回例 :利用查表法求平方和 ,设a、b、c分别存于内部RAM的DA、DB、DC三个单元中。 MOV A,DA;取a ACALLSQR;调用查表子程序 MOV R1,A;a的平方暂存R1中 MOVA,DB;取b ACALLSQR;调用查表子程序 ADDA,R1 ;求出平方和暂存于A中 MOVDC,A;结果存于DC 中 SJMP$SQR:MOVDPTR,#TAB;子程序 MOVCA,A+DPTR RETTAB: DB0,1,4,9,16,25,36,49,64,81 END 利用累加器或寄存器传递参数参数传递方法用累加器或工作寄存器来传递参数: A、R0R7优点:最

11、简单,运算速度快。缺点:累加器和工作寄存器数量有限,不能传递 太多参数。用指针寄存器来传递参数:参数存放在内存用堆栈来传递参数程序段参数传递(适于传递大量常数参数)程序段参数传递采用程序段参数传递的方法,编写字符串发送的子程序: SOUT:POPDPH POP DPL SOT1: CLR A MOVCA,A+DPTR INCDPTR JZ SEND JNB TI ,$ CLR TI MOV SBUF,A SJMP SOT1 SEND:JMP A+DPTR 串口发送中断标志位以发送MCS-51 CONTROLLER 为例,说明该子程序的调用方法:ACALLSOUT DBMCS-51 CONTROLLER DB0AH,0DH,0换行键回车键以上子程序特点:不以一般返回指令RET结尾,而是采用散转指令返回到参数表后第一条指令可适用ACALL或LCALL,因为这两种调用指令把下一条指令或数据字节地址压入堆栈需传递的参数可按最方便的次序排列子程序只使用A和DPTR习题1: 片内RAM中30H和31H中存有两个无符号数,将两个数的最小者存放入40H中。解:1)需要用到的指令:CJNE、JC 2) 画流程图 3)编程 ORG1000H MOVA,30H CJN

温馨提示

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

评论

0/150

提交评论