- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.8 汇编语言程序设计 2.8.1 概述 4 汇编语言的规范 常用的伪指令 常用的伪指令 常用的伪指令 常用的伪指令 常用的伪指令 2.8.3 程序设计基础与举例 方法1 方法2: 2 分支程序 3 分支程序 4 循环程序 * * 通过前面的学习,我们已经了解了单片机内部的结构,MCS-51指令系统的寻址方式、各类指令的格式及功能。 下面我们就是要如何利用MCS-51的指令系统,来编写高效、充分利用其特点的程序。 1 程序设计语言 1. 机器语言 2. 汇编语言 3. 高级语言 2 编制程序的步骤 1.任务分析(硬件、软件系统分析) 2.确定算法和工作步骤; 3.程序总体设计和流程图绘制 关于流程图符号: 开始、结束----圆角矩形 工作任务----矩形 判断分支----菱形 程序流向---- 程序连接---- 开始 结束 4. 分配内存,确定程序与数据区存放地址; 5. 编写源程序; 6. 调试、修改,最终确定程序。 3 方法技巧 1. 模块化设计(按功能分:显示、打 印、输入、发送等) 2. 尽量采用循环及子程序结构(节省内存) 汇编语言源程序由以下两种指令构成 汇编语句(指令语句) 伪指令 (指示性语句) 汇编语句的格式: 标号: 操作码 操作数 ;注释 数据表示形式: 二进制(B)、十六进制(H)、十进制(D或省略)、ASCII码(以单引号标识) 3.伪指令:控制汇编用的特殊指令,这些指令不属 于指令系统,不产生机器代码。 ORG (Origin) 定位目的程序的起始地址。 格式: ORG 表达式 如 :ORG 0000H 注 :表达式必须为16位地址值。 END 汇编语言程序结束伪指令。 注:一定放在程序末尾! EQU (EQUate) 赋值伪指令。 格式: 字符名称 EQU 数值或汇编符号 例: AA EQU 30H K1 EQU 40H MOV A,AA ; (30H)→A,直接寻址 MOV A,K1 ;(40H)→A DB(Define Byte) 从指定单元开始定义(存储)若干个字节的数据或ASCII码字符,常用于定义数据常数表。 格式:DB 字节常数或ASCII字符 例: ORG 1000H DB 34H,0DEH,’A’,’B’ DB 0AH,0BH,20 DW(Define Word) 从指定单元开始定义(存储)若干个字的数据 或ASCII码字符。 格式:DW 字常数或ASCII字符 例: ORG 2000H DW 1234H,’B’ DW 0AH,20 BIT 位地址符号指令。(DATA 字节地址赋于规定的字符名称) 把位地址赋于规定的字符名称。直接地址 格式:字符名称 BIT 位地址 例: ABC BIT P1.1 QQ BIT P3.2 2.8.2 汇编语言程序编辑和汇编 1. 编辑(源程序,以.ASM扩展名存盘); 2. 汇编(手工或机器汇编); 如: (MOV A,#88H;机器码74,88H) 又如: 地址 目标码 源程序 ORG 1000H 1000H 747F MOV A,#7FH 1002H 7944 MOV R1,#44H END 1 顺序结构程序 org 1000h;4K=4096单元; start:mov dptr,#table;把0的地址送dptr mov a,20h movc a,@a+dptr mov 21h,a sjmp $ org 2000h table:db 0,1,4,9,16,25 end 例1:变量存在内部RAM的20H单元中,其取值范围:0~5,编成,查表法求其平方值 开始 表格首地址送DPTR 变量送A(20H) A 查平方表(A+DPTR) A 结束 结果送21H单元:A 21H 例2:将20H单元的压缩(Packed )BCD码拆成两个ACSII码存入21H、22H单元。 内部RAM 22H 21H 20H 6 9 3 6 3 9 BCD 0 1 2 ... 9 ASCII 30H 31H 32H ... 39H (20H)?A 10H?B A/B,A中为高4位BCD码, B中为低
文档评论(0)