




已阅读5页,还剩55页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第 3章 MCS-51单片机汇编语言程序设计 单片机原理及应用单片机原理及应用第 3章 MCS-51单片机汇编语言程序设计 内 容 提 要 概述 伪 指令 汇编语言程序设计步骤 顺序程序设计 分支程序设计 循环程序设计 位操作程序设计 子程序 小结第 3章 MCS-51单片机汇编语言程序设计 3.1 概述 汇编语言是面向机器硬件的语言 ,要求程序设计者对MCS-51单片机具有很好的 “ 软、硬结合 ” 的功底。 MCS-51单片机的编程语言可以是汇编语言也可以是高级语言(如 C语言),高级语言编程快捷,但程序长,占用存储空间大,执行慢;汇编语言产生的目标程序简短,占用存储空间小,执行快,能充分发挥计算机的硬件功能。无论是高级语言还是汇编语言,源程序都要转换成目标程序(机器语言)单片机才能执行。 第 3章 MCS-51单片机汇编语言程序设计 两种基本类型:指令语句和伪指令语句( 1)指令语句已在第 2章介绍每一条指令语句在汇编时都产生一个指令代码 机器代码( 2)伪指令语句 是为汇编服务的。在汇编时 没有机器代码与之对应。MCS-51的汇编语言的 四分段格式 如下: 标号字段 操作码字段 操作数字段 注释字段规则:( 1)标号字段和操作字码段之间要有冒号 “ : ” 相隔;( 2)操作码字段和操作数字段间的分界符是空格;( 3)双操作数之间用逗号相隔; ( 4)操作数字段和注释字段之间的分界符用分号 “ ; ” 相隔。操作码字段为必选项,其余各段为任选项。第 3章 MCS-51单片机汇编语言程序设计 补充例 1 下面是一段汇编语言程序的四分段书写格式标号字段 操作码字段 操作数字段 注释字段START: MOV A, #00H ; 0AMOV R1, #10 ; 10R1MOV R2, #00000011B ; 3R2LOOP: ADD A, R2 ;( A) +( R2) ADJNZ R1, LOOP; R1内容减 1不 为 零, 则 循 环NOPHERE: SJMP HERE第 3章 MCS-51单片机汇编语言程序设计 基本语法规则:1标号字段是语句所在地址的标志符号( 1)标号后边必须跟以冒号 “ : ” ( 2)由 18个 ASCII字符组成( 3)同一标号在一个程序中只能定义一次 ( 4)不能使用汇编语言已经定义的符号作为标号 2操作码字段 是汇编语言指令中唯一不能空缺的部分。汇编程序就是根据这一字段来生成机器代码的。3操作数字段 通常有单操作数、双操作数和无操作数三种情况。如果是双操作数,则操作数之间,要以逗号隔开。( 1)十六进制、二进制和十进制形式的操作数表示第 3章 MCS-51单片机汇编语言程序设计 采用十六进制形式来表示 ,某些特殊场合才采用二进制或十进制的表示形式 。十六进制,后缀 “ H” 。二进制,后缀 “ B” 。十进制,后缀 “ D” , 也可省略 。若十六进制的 操作数以字符 AF中的某个开头时,则需在它 前面加一个 “ 0” ,以便在汇编时把它和字符 AF区别开来。( 2)工作寄存器和特殊功能寄存器的表示采用工作寄存器和特殊功能寄存器的代号来表示,也可用其地址来表示。 例如,累加器可用 A(或 Acc)表示。也可用 0E0H来表示, 0E0H为累加器A的地址。第 3章 MCS-51单片机汇编语言程序设计 ( 3)美元符号 $的使用用于表示该转移指令操作码所在的地址。例如,如下指令:JNB F0, $与如下指令是等价的:HERE: JNB F0, HERE 再如:HERE: SJMP HERE可写为:SJMP $4注释字段 必须以分号 “ ; ” 开头,换行书写,但必须注意也要以分号 “ ; ” 开头。 汇编时,注释字段不会产生机器代码。第 3章 MCS-51单片机汇编语言程序设计 连接 /定位器L51汇编语言源程序汇编器 A51符号转换程序OHS51绝对地址目标程序.BINC语言程序 浮动地址目标程序编译器 C51HEX图 3-1 两种语言源程序转换成目标程序第 3章 MCS-51单片机汇编语言程序设计 目前很多公司将编辑器、汇编器、编译器、连接 /定位器、符号转换程序做成集成软件包,用户进入该集成环境,编辑好程序后,只需点击相应菜单就可以完成上述的各步,如 WAVE、 KEIL , WAVE集成软件的使用见附录。 汇编: 将汇编语言 源程序 转换成机器语言 目标 程序的过程称为汇编。 汇编程序: 能将汇编语言 源程序 转换成机器语言 目标程序的系统软件称为汇编程序。第 3章 MCS-51单片机汇编语言程序设计 汇编的方法 : 汇编的方法有两种1.手工汇编 :人工查指令表,查出程序中每条指令对应的机器代码。早期的计算机使用。2.机器汇编 :用计算机中的汇编程序对用户源程序进行汇编。用机器汇编要提供给汇编一些信息,遵循汇编程序的一些约定。这些由伪指令指定。第 3章 MCS-51单片机汇编语言程序设计 1)确定程序中每条汇编语言指令的指令机器码2)确定每条指令在存储器中的存放地址3)提供错误信息 4)提供目标执行文件 (*.OBJ/*.HEX)和列表文件 (*.LST)地址 机器码 源程序 ORG 2000H 2000H 78 30 MAIN: MOV R0, #30H2002H E6 MOV A, R0第 3章 MCS-51单片机汇编语言程序设计 在 MCS-51 汇编语言源程序中应有向汇编程序发出的指示信息,告诉它如何完成汇编工作,这是通过使用伪指令来实现的。也称为汇编程序控制命令。只有在汇编前的源程序中才有伪指令。经过汇编得到目标程序(机器代码)后,伪指令已无存在的必要,所以 “伪 ”体现在汇编时, 伪指令没有相应的机器代码产生 。一、汇编语言指令类型宏汇编功能:将需要反复多次执行的程序段定义成一个宏指令名(宏定义)。编程时,可在程序中使用宏指令名来替代被定义的程序段(宏调用)。3.2伪指令第 3章 MCS-51单片机汇编语言程序设计 宏定义过程 :宏调用过程: 宏指令名 实际参数宏指令名 实际参数宏指令名 MACRO 形式参数 ;被定义的程序段ENDM第 3章 MCS-51单片机汇编语言程序设计 二伪指令 常用伪指令及功能:1.起始指令 ORG nn功能:定义程序或数据块的起始地址。 指示此语句后面的程序或数据块以 nn为起始地址,连续存放在程序存储器中。 指令地址 机器码 源程序 ORG 2000H 2000H 78 30 MAIN: MOV R0, #30H2002H E6 MOV A, R0ORG 3000H3000H 23 TAB: DB 23H, 100, A 3001H 643002H 41第 3章 MCS-51单片机汇编语言程序设计 2.字节定义 标号: DB(字节常数,或字符或表达式)功能: 指示在程序存储器中以标号为起始地址的单元里存放的数为字节数据(八位二进制数)。例如 LN: DB 32, C, 25H, -1; LNLN+3 地址单元依次存放 20H , 43H , 25H ,FFH地址 数据LN 20LN+1 43LN+2 25LN+3 FF3. 字定义 标号: DW ( 字常数或表达式 )作用: 指示在程序存储器中以标号为起始地址的单元里存放的数为字数据(即 16位的二进制数),例如:GH : DW 1234H , 5678H, 08GH 1234GH+2 5678GH+4 0008第 3章 MCS-51单片机汇编语言程序设计 5. 等值指令 标号 EQU(数值表达式)表示 EQU两边的量等值,用于为标号或标识符赋值。例如: X1 EQU 2000HX2 EQU 0FH MAIN: MOV DPTR, #X1 ; DPTR=2000H ADD A, #X2 ; A=A+0FH4保留字节 标号: DS ( 数值表达式)作用: 指示在程序存储器中保留以标号为起始地址的若干字节单元,其单元个数由数值表达式指定。例如 L1: DS 32 ; 从 L1地址开始保留 32个存储单元。第 3章 MCS-51单片机汇编语言程序设计 6. 位定义 标号 BIT 位地址 作用: 同 EQU指令,不过定义的是位操作地址。例如 AIC BIT P1.1。7.汇编结束 END作用: 指示源程序段结束。END指令放在程序的最后。A51汇编程序还有一些其它的伪指令,列在教材表 3-1中,以备查阅。第 3章 MCS-51单片机汇编语言程序设计 汇编语言程序设计步骤一 .确定方案和计算方法二 .了解应用系统的硬件配置、性能指标三 .建立系统数学模型,确定控制算法和操作步骤四 .合理分配存储器单元和了解 I/O接口地址五 . 编制源程序1.按功能设计程序,明确各程序之间的相互关系2. 用流程图表示程序结构和功能开始1YN?3.程序中用注释说明指令在程序中的作用,方便阅读、调试和修改第 3章 MCS-51单片机汇编语言程序设计 顺序程序设计例 3-1 编程将外部数据存储器的 000EH和 000FH单元的内容相换。常用程序结构顺序程序、分支程序、循环程序、子程序 000EH000FH000EH000FH000EH000FH000EH000FH分析 : 外部数据存储器的数据操作只能用 MOVX指令,且只能和 A之间传送,因此必须用一个中间环节作暂存,设用 20H单元。用 R0、 R1指示两单元的低八位地址,高八位地址由 P2指示。编程过程如下:000EH000FH000EH000FH000EH000FH第 3章 MCS-51单片机汇编语言程序设计 ORG 0000HMOV P2, #0H ;送地址高八位至 P2口MOV R0, #0EH ;R0= 0EH MOV R1, #0FH ;R1=0FHMOVX A, R0 ;A=(000EH)MOV 20H, A ;(20H)=(000EH)MOVX A, R1 ;A=(000FH)XCH A, 20H ; A=(000EH),(20H)=(000FH) MOVX R1, A MOV A, 20HMOVX R0, A ;交换后的数送各单元SJMP $END第 3章 MCS-51单片机汇编语言程序设计 3.3 顺序程序设计顺序程序 (简单程序 ),程序走向只有一条路径例 3-2:将 R4、 R5双字节符号数求补程序。ORG 0000HMOV A, R5 ; 取低字节CPL AADD A, #1 ; 低字节变补MOV R5, AMOV A, R4 ; 取高字节CPL AADDC A, #0 ; 高字节变补ORL A, #80H; 恢复负号MOV R4, AEND第 3章 MCS-51单片机汇编语言程序设计 例 3-3 分解压缩式 BCD码 ,使其成为非压缩式 BCD码。ORG 0000HMOV R0, #40H ; 设指针MOV A, R0 ; 取一个字节MOV R2, A ; 暂存ANL A, #0FH ; 清 0高半字节INC R0MOV R0, A ; 保存数据个位片内 RAM42H41H40H 65MOV A, R2SWAP A ; 十位换到低半字节ANL A, #0FHINC R0MOV R0, A ; 保存数据十位END0506第 3章 MCS-51单片机汇编语言程序设计 地址 数据TAB 0TAB+1 1TAB+2 4TAB+3 9TAB+4 16HTAB+5 25H例 3-4 设变量放在片内 RAM的 20H单元 ,其值为 00H05H之间 ,要求编查表程序 ,查出变量的平方值 , 并放入片内 RAM的 21H单元。ORG 0000HMOV DPTR,#TAB MOV A,20HMOVC A,A+DPTR ;查表MOV 21H,ASJMP $TAB2: DB 00H,01H,04H,09H,16H,25H END分析 :在程序存储器安排一张平方表,首地址为 TAB,以 DPTR指向表首址, A存放变量值,利用查表指令MOVC A, A+DPTR,即可求得。表中数据用 BCD码存放合乎人们的习惯 . 如果平方值为两个字节,程序应如何编。 DPTR A第 3章 MCS-51单片机汇编语言程序设计 ORG 0000HMOV A, R2JNB ACC.7, N ;为正数?CPL A ;负数变补INC AMOV R2, AN: SJMP $ ;结束3.4 分支程序的设计由条件转移指令构成程序判断框部分,形成分支结构3.5.1 单分支程序一个判断决策框,两种分支结构图。条件满足 ?N影响条件Y处理段条件满足 ?N影响条件Y处理 1 处理 2例 1 求 8位有符号数的绝对值。方法:正数不变,负数变补第 3章 MCS-51单片机汇编语言程序设计 例 2 用单片机加重力传感器作磅秤,秤出重量后算出行李运费价格,其秤出的重量以 10kg为 1个计价单位 G , G已存入 40H单元。计价方法为 50kg以内按 3元 , 50kg以上分段计价 : 50kg按 3元计价,超过部分按 2元计价。 由此列出算式: G3 + (G-5)2 ; 当 G 5M=G3 ;当 G5 3G因重复使用,先暂存在 R2。流程见左 , 程序如下:第 3章 MCS-51单片机汇编语言程序设计 ORG 0100HFRT: MOV A, 40H ; 取行李重量计价单位 GMOV R3, A MOV B, #03H ;运费 M=G3MUL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 更换机油课件
- 检测站 建站申请书
- 文书形成时间鉴定申请书
- 更换安全阀安全培训课件
- 广州商标申请书
- 学生理转文申请书
- 碳足迹申请书
- 申办社区门诊申请书
- 参加中考申请书
- emba入学申请书范文
- 人工智能算力中心项目环境影响报告书
- 无人机飞防应急处置预案
- 四川蜀道养护集团有限公司招聘笔试题库2025
- 高一历史第一次月考卷02(考试版)(新高考适用)
- 人教PEP版(2024)四年级上册英语-Unit 2 My friends 单元整体教学设计(共6课时)
- 《数星星的孩子》课件 部编版语文二年级上册
- 爆破安全培训课件
- 报废产品处置合同范本
- 水平定向钻施工专项方案施工技术方案
- 财务管理分析毕业论文
- 2025年《临床执业医师》考试试卷及参考答案
评论
0/150
提交评论