版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2021-11-1113.43.4 汇编语言及汇编语言程序设计汇编语言及汇编语言程序设计 大家已经了解了单片机内部的结构,大家已经了解了单片机内部的结构,MCS-51MCS-51指令指令系统的寻址方式以及各类指令的格式、功能。系统的寻址方式以及各类指令的格式、功能。 下面我们讲述如何利用下面我们讲述如何利用MCS-51MCS-51的指令系统,来编的指令系统,来编写具有不同功能的应用程序。写具有不同功能的应用程序。2021-11-1123.4.1 3.4.1 机器语言、汇编语言和高级语言机器语言、汇编语言和高级语言 程序设计语言一般分为程序设计语言一般分为3 3种:机器语言、汇编语言和种:机器语
2、言、汇编语言和高级语言。高级语言。1 1、 机器语言机器语言 是唯一能直接被是唯一能直接被CPUCPU识别和执行的二进制代码语言。识别和执行的二进制代码语言。用机器语言编写的程序,称为目标程序;通常无论用用机器语言编写的程序,称为目标程序;通常无论用何种语言编写的计算机程序,均需通过编译将它翻译何种语言编写的计算机程序,均需通过编译将它翻译成机器语言程序才能被成机器语言程序才能被CPUCPU识别、运行。识别、运行。 但机器指令的二进制代码很难记忆、辨识,给程但机器指令的二进制代码很难记忆、辨识,给程序的编写、阅读和修改带来很大的困难,因此一般不序的编写、阅读和修改带来很大的困难,因此一般不采用
3、机器语言编写程序。采用机器语言编写程序。2021-11-1132、 汇编语言汇编语言 为了容易理解和记忆计算机指令,人们用一些英文单词及为了容易理解和记忆计算机指令,人们用一些英文单词及数字作为助记符来描述每一条指令的功能。用助记符描述的指数字作为助记符来描述每一条指令的功能。用助记符描述的指令系统,被称为机器的汇编语言系统,简称汇编语言。令系统,被称为机器的汇编语言系统,简称汇编语言。 用汇编语言的每条指令意义清晰,编写、阅读和修改都很用汇编语言的每条指令意义清晰,编写、阅读和修改都很。汇编指令和机器语言指令是一一对应的,即一条可执行的汇。汇编指令和机器语言指令是一一对应的,即一条可执行的汇
4、编指令对应着一条机器语言指令,因此汇编语言可直接利用和编指令对应着一条机器语言指令,因此汇编语言可直接利用和发挥机器硬件系统的许多特性,如:寄存器,标志位及一些特发挥机器硬件系统的许多特性,如:寄存器,标志位及一些特殊指令等,能提高编程的质量和运行速度,且占用内存少。殊指令等,能提高编程的质量和运行速度,且占用内存少。一般如:系统软件、实时控制系统、智能化仪器、仪表软件等一般如:系统软件、实时控制系统、智能化仪器、仪表软件等对时间和存储容量要求较高的程序常用汇编语言书写。对时间和存储容量要求较高的程序常用汇编语言书写。2021-11-1143、高级语言 高级语言是一种面向问题或过程的语言。它是
5、一种接近于自然语言和数学算法的语言,与机器硬件无关,用户不必了解所有计算机的硬件和指令系统。高级语言不但直观、易学且通用性强可移植性好。 高级语言编写的程序需要由编译程序或解释程序翻译成对应的目标程序,机器方可接受。但由于高级语言与机器语言不是一一对应的,往往一条高级语言指令对应着多条机器语言指令,因此翻译的时间长、目标程序长、占用空间大、执行速度慢。 2021-11-1153.4.2 3.4.2 汇编程序与伪指令汇编程序与伪指令1、汇编程序 汇编源程序必须“翻译”成目标程序,方可被CPU识别、执行,这个翻译的过程称为汇编。汇编工作一般由计算机的系统软件汇编程序来完成的。 汇编程序除了可将汇编
6、源程序翻译成目标程序,还可根据程序要求安排目标程序的存放地址、分配存储空间、语法检查,若有错误给出错误信息等。 2021-11-1162 2、伪指令、伪指令 在汇编源程序的过程中,有一些指令只是帮助汇编在汇编源程序的过程中,有一些指令只是帮助汇编源程序的,它们是控制汇编用的特殊指令,不属于指源程序的,它们是控制汇编用的特殊指令,不属于指令系统,不要求计算机做任何操作,不产生对应的机令系统,不要求计算机做任何操作,不产生对应的机器码,不影响程序的执行,这种指令被称为伪指令。器码,不影响程序的执行,这种指令被称为伪指令。 伪指令主要用来指定程序或数据的起始位置,给出伪指令主要用来指定程序或数据的起
7、始位置,给出一些连续存放数据确定地址,或为中间运算结果保留一些连续存放数据确定地址,或为中间运算结果保留一部分存储空间及表示源程序结束等。一部分存储空间及表示源程序结束等。 下面介绍几种常用的基本伪指令:下面介绍几种常用的基本伪指令: 2021-11-117 1 1) ORGORG伪指令伪指令 (Origin)(Origin) 通常用于源程序的开始处,用来规定目标程序的通常用于源程序的开始处,用来规定目标程序的 起始地址起始地址 格式:格式:ORG addr16 ;addr16ORG addr16 ;addr16是是1616位绝对地址位绝对地址, , 可用标号或表达式表示。可用标号或表达式表示
8、。如:如:ORG 1000H ORG 1000H ;将程序的起始地址定为;将程序的起始地址定为1000H1000H 2) ENDEND伪指令伪指令 ENDEND语句放在源程序结束的地方,用来告诉汇编程语句放在源程序结束的地方,用来告诉汇编程序源程序到此结束,对后面的指令都不用汇编。序源程序到此结束,对后面的指令都不用汇编。 格式:格式: ENDEND 注:注:ENDEND语句不得有标号语句不得有标号2021-11-1183 3) EQUEQU伪指令伪指令 ( (EQUEQUate)ate) 赋值伪指令,把一个表达式或特殊的汇编符号赋予赋值伪指令,把一个表达式或特殊的汇编符号赋予规定的名称。规定
9、的名称。 格式:格式: 符号名称符号名称 EQU EQU 表达式表达式/ /特殊汇编符号特殊汇编符号 例:例: SGSGEQUEQUR0 ; SGR0 ; SG与与R0R0等价等价DEDEEQUEQU40H 40H ; DEDE与与40H40H等值等值MOV AMOV A,SGSG; (R0 (R0)AAMOV R7MOV R7,#DE #DE ; #40H R7 #40H R7 MOV SG, R7 ; #40H R0MOV SG, R7 ; #40H R0 注:汇编后,注:汇编后,EQUEQU左边的符号名称就等同于其右边的左边的符号名称就等同于其右边的表达式或汇编符号,这样符号名称就可以作
10、为立即数表达式或汇编符号,这样符号名称就可以作为立即数或地址来使用。且在整个程序中不能再改变。或地址来使用。且在整个程序中不能再改变。2021-11-1194) SET伪指令 类似于EQU,也是用一个表达式的值命名一个符号,区别在于以后可用另一个SET伪指令对定义过的符号重新定义。 格式: 符号名称 SET 表达式 如: VALU SET 1 ; VALU=1 REG1 SET R1; 把R1赋给REG1 VALU SET VALU+1;重新定义VALU 2021-11-11105) BIT伪指令 把一个位地址赋予规定的符号名称,定义后不得重新定义。 格式: 符号地址 BIT 位地址 如: F
11、LAG BIT F0 AI BIT P1.0DATA伪指令 把片内的数据地址赋予所规定的符号。片内的数据地址指的是内存00H7FH或位于80HFFH的特殊功能寄存器,定义好的符号不得重新定义。 格式: 符号地址 DATA 数据地址 如: RES DATA 30H;定义符号RES为内存地址30H PORT0 DATA 80H;定义符号PORT0为SFR中P02021-11-11117 7) DBDB伪指令(伪指令(Define ByteDefine Byte) 从指定单元开始定义(存储)若干个字节的数据从指定单元开始定义(存储)若干个字节的数据或或ASCIIASCII码字符,常用于定义数据常数表
12、。码字符,常用于定义数据常数表。格式:格式: 【标号:标号:】 DB DB 表达式列表表达式列表 如如: : PRE:DBPRE:DB34H34H,0DEH0DEH,AA,BB RES:DB RES:DBpress any key to continue press any key to continue 注:注:ROMROM中,表达式列表中的每个字节依次存放在中,表达式列表中的每个字节依次存放在从标号地址开始的各个单元中。列表中的各项是一列从标号地址开始的各个单元中。列表中的各项是一列由逗号分开的一个或多个字节值或串。由逗号分开的一个或多个字节值或串。2021-11-11128 8)DWDW
13、伪指令(伪指令(Define WordDefine Word) 从指定单元开始定义(存储)若干个字的数据或从指定单元开始定义(存储)若干个字的数据或ASCIIASCII码字符。码字符。 格式:格式:【标号:标号:】DW DW 字常数或字常数或ASCIIASCII字符字符 如:如: DWDW1234H1234H,BBDWDW 0AH 0AH,20209 9)DSDS伪指令伪指令 以字节为单位保留空间。以字节为单位保留空间。DSDS语句从当前地址开始保语句从当前地址开始保留空间,空间的大小由表达式的值来确定。留空间,空间的大小由表达式的值来确定。 格式:格式: 【标号:标号:】 DS DS 表达式
14、表达式 如:如:SUM: DS 20 SUM: DS 20 ;从标号;从标号SUMSUM代表的地址开始,代表的地址开始, 保留连续的保留连续的2020个字节单元。个字节单元。 2021-11-11133.5 3.5 基本程序设计方法基本程序设计方法 3.5.1 3.5.1 程序的基本结构程序的基本结构1 1、分析问题(包括硬件、软件系统分析),抽象出、分析问题(包括硬件、软件系统分析),抽象出 描述的数学模型;描述的数学模型;2 2、确定解决问题的算法和工作步骤;、确定解决问题的算法和工作步骤;3 3、根据算法绘制程序流程图;、根据算法绘制程序流程图;4 4、分配存储空间,确定程序与数据区存放
15、地址;、分配存储空间,确定程序与数据区存放地址;5 5、编写源程序;、编写源程序;6 6、静态检查;、静态检查;7 7、上机调试、修改,最终确定程序。、上机调试、修改,最终确定程序。2021-11-1114n 有关流程图中符号表示:开始、结束圆角矩形工作任务矩形判断分支菱形程序流向箭头程序连接开始结束n 程序的基本算法结构有3种: 顺序结构 分支结构(选择) 循环结构2021-11-1115 3.5.2 顺序结构程序设计 顺序结构是最简单的一种基本结构。若一个待解决的问题可分解成若干个简单的操作步骤,并可由这些操作按照一定的顺序构成解决问题的算法,则可用简单的顺序结构来进行程序设计。 顺序结构
16、图ab A B2021-11-1116开始将待转换的数据送入A A除以100将A中得到的百位数取出另存结束A中十位及B中个位取出另存余数除10Org 0000hLjmp Main org 0100hMain :mov A ,R1 mov B ,#100 div AB mov 30H,A mov A ,B mov B ,#10 div AB mov 31H ,A mov 32H ,B sjmp $例3.27:编制单字节BCD码转换程序2021-11-1117 3.5.3 3.5.3 分支(选择)结构程序设计 在实际程序设计时,有很多情况需要程序按照给定条件进行分支。分支程序可根据要求判断某一变量
17、当前所处之状态,根据判断结果来改变程序执行流向。编写分支程序主要在于正确使用转移指令。分支程序有:单分支结构、双分支结构、多分支结构(散转)。 在编写分支程序时,51指令系统提供了丰富的控制转移指令,如:JZ(JNZ)、CJNE、JC(JNC)及JB(JNB)等。2021-11-1118K=?程序段nn0程序段1多分支结构程序段01条件成立?程序段BYN程序段A双分支结构条件成立?下条指令程序段A单分支结构YN2021-11-1119例3.28:假设NUM单元中存放的是经过处理的数据,若数值在099之间,则下图中P1.1口所接的LED灯亮;若数值在100180之间,则无动作(灯灭);若在181
18、255之间,则P1.0口所接之灯亮。P1.0P1.1P1.2VCC2021-11-1120NUM100NUM100?y=x+50y=20Hy=x0开始存y 即y 30h结束例3.28流程图2021-11-1121 ORG 1000HSTART:MOV A,30H JZ NEXT ;x=0,转移 ANL A,#80H ;保留符号位 JZ ED ;x0,转移 MOV A,#05H ;x0,不转移 ADD A,30H MOV 30H,A SJMP ED NEXT:MOV 30H,#20H ED:SJMP $2021-11-1122 3.5.4 循环结构程序设计 编写程序时,当需要将同一组操作重复多次
19、时,应采用循环结构,以简化程序,缩短长度和存储空间。循环程序一般由3部分构成: 置循环初值; 循环体:重复执行部分; 循环控制部分:参数修改和依据结束条件判定循环 是否结束。 循环程序的结构一般有两种:until直到型:先执行循环体一次,再判断条件,条 件不成立则跳出循环;while当型:先判断条件,条件成立再执行循环体;2021-11-1123设置循环初值循环处理循环修改循环结束?NY(a)直到型循环设置循环初值循环处理循环修改循环结束?YN(b)当型循环2021-11-1124例3-29 : 50ms延时子程序。设晶振频率为12MHz,则机器周期为1us。DEL: MOV R7,#200 ;1MCDEL1:MOV R6,#123 ;1MC NOP ;1MC DJNZ R6,$ ;2MC DJNZ R7,DEL1 ;2MC RET ;2MC延时时间:t=1+200(1+1+2*123)+2+2 50000us=50ms2021-11-1125 3.5.5 3.5.5 子程序结构设计子程序结构设计 将反复出现的程序段编成一个独立的程序段存放在内存中,它能够完成某一特定任务,可被重复调用称为子程序。恰当的使用子程序可使整个程序结构清楚、可读性强,且减少源程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年4月江苏扬州市邗江区卫生健康系统事业单位招聘专业技术人员20人笔试参考题库及答案解析
- 2026中国旅游集团校园招聘考试备考试题及答案解析
- 2026年四平市引进硕士、博士专业人才(100人)笔试模拟试题及答案解析
- 2026年赣州智谷创融科技发展有限公司招聘1人笔试模拟试题及答案解析
- 工商企业管理毕业论文
- 二手房购房合同样本范文
- xx学校食堂燃气自查报告
- 起重吊装及安装拆卸工程
- 职场有效沟通与冲突管理培训
- 荒山绿化工程施工方案设计
- 钢结构防腐防火涂装施工方案
- 《基于故障树的飞机液压系统典型故障的排故方案优化分析》13000字(论文)
- 安徽省2024年中考化学真题(含答案)
- 第十五届全国交通运输行业“极智杯”公路收费及监控员职业技能大赛考试题库-上(单选题部分)
- 基础护理学-第十一章-排泄试题及答案
- (高清版)AQ 2036-2011 金属非金属地下矿山通信联络系统建设规范
- 船舶与海上技术 液化天然气燃料船舶加注规范
- 物控部绩效考核办法培训课件
- 钢平台铺板计算excel(可当计算书)
- 冷鲜肉猪肉白条分割技术详细结构图及产品部位介绍和用途
- DB51T 1628 -2013小(微)型农田水利工程施工质量检验与评定规程
评论
0/150
提交评论