第04章汇编语言程序设计_第1页
第04章汇编语言程序设计_第2页
第04章汇编语言程序设计_第3页
第04章汇编语言程序设计_第4页
第04章汇编语言程序设计_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

第4章汇编语言程序设计

算术运算程序设计汇编语言程序的结构

汇编语言概述

非数值操作程序设计4.1汇编语言概述一、汇编语言与汇编的概念机器语言:用指令的二进制码编写的程序CPU能识别,执行速度快难记、难读、难写、难查汇编语言:用指令助记符编写的程序机器语言汇编语言翻译(汇编)源程序目标程序汇编语言特点程序精练,执行速度快,适合于实时控制处理接口技术、中断技术很方便需要熟悉硬件,编程有一定难度高级语言面向对象和问题,接近自然语言,易学易用独立于机器一条语句可对应一段汇编语言程序既然有了高级语言,为什么还要学习汇编语言?二、汇编语言源程序的格式MCS-51的汇编语句采用典型的四分段格式:标号段操作码段操作数段注释段标号的构成原则是什么?注释段起什么作用?三、伪指令起始指令:ORG汇编结束:END─指导汇编过程的命令定义字节:DB──定义若干个8位数据例:ORG3000HTABL:DB30H,31H,’2’,’A’汇编后:TABL=3000H

(3000H)=30H, (3001H)=31H, (3002H)=32H, (3003H)=41H,定义字:DW──定义若干个16位数据汇编后:TAB=3010H

(3010H)=12H

(3011H)=34H

(3012H)=00H

(3013H)=56H

例:

ORG3010HTAB:DW1234H,56H赋值:EQU──将一个数或符号赋给变量位地址赋值:BIT四、源程序的汇编第一次汇编:查出机器码,并对应地址列表第二次汇编:计算偏移量rel什么叫汇编?有几种汇编的方法?1.手工汇编rel=目标地址-源地址-3(对3字节指令)2.机器汇编利用专用软件(称为汇编程序),由计算机完成汇编工作。经过两次扫描过程:第一次扫描:检查语法错误,确定符号名字;建立使用的全部符号名字表;每一符号名字后跟一对应值(地址或数)。第二次扫描:是在第一次扫描基础上,将符号地址转换成地址(代真);利用操作码表将助记符转换成相应的目标码。

4.2汇编语言程序的结构一、汇编语言程序设计步骤1.分析题意,明确要求2.建立数学模型并确定算法3.画程序流程图程序流程图是解题步骤及算法的具体化直观清晰地体现了程序的设计思路4.分配内存单元确定程序与数据的存放地址熟悉所用单片机指令系统所编程序要正确并具有可读性5.编写程序6.程序优化缩短程序长度加快运行速度节省存储单元7.上机调试检验源程序的正确性使用开发系统利用仿真软件二、顺序程序结构

根据ASCII码表,十进制数0~9的ASCII码和它的BCD码之间仅相差30H,本题需要把一个字节的两位BCD数进行拆分,然后分别和30H拼接,即得到相应的ASCII码。程序按顺序执行,无分支,无转移例1:将压缩BCD码转换成ASCII码源程序XCHD是什么指令?SWAP是什么指令?三、分支程序结构具有判断和转移功能的程序【例4-4】求符号函数Y的值源程序EQUEQUJNBACC.7,POSI是什么指令?四、循环程序结构例1:已知数块长度L,求累加和已知内部RAM的BLOCK单元开始有一无符号数据块,块长在LEN单元。请编出求数据块中各数累加和、并存入SUM单元的程序解法一:先判断后处理程序中INCR2指令有什么用途?解法二:先处理后判断EQUEQUEQU例2:查找最大值算法:逐个比较,大者送入MAX单元查找最大值源程序1EQUEQUEQUJCNEXT是什么指令?五、主程序调用子程序结构序绝对调用:ACALLaddr11长调用:

LCALLaddr16子程序返回:RET例:将一批压缩BCD码转换成ASCII码

编写程序,把以R0所指为起始地址的压缩BCD码转换为ASCII码,存于以R1所指为起始地址的片内RAM中,已知BCD数的字节数在R2中

BCD码与ASCII码之间是什么关系呢?

BCD码ASCII码

0 30H 1 31H 2 32H 3 33H 4 34H 5 35H 6 36H 7 37H 8 38H 9 39H(A)+30H[]ASCII将其编成子程序,如下所示

ORG 0000HSTART:MOV A, @R0 ACALLGT ;调用转换子程序

MOV @R1,A ;存转换结果

INC R1 MOV A, @R0 ;再取原BCD码字节

SWAPA ;高4位交换到低4位

ACALLGT ;调用转换子程序

MOV @R1,A INC R0 INC R1 DJNZ R2, START;未完继续

HRER:SJMP HERE GT: ANL A, #0FH ;屏蔽高4位

ADD A, #30H ;求相应的ASCII码

RET END

然后再编写主程序,调用下面子程序实现本题要求下次课前请预习4.3-4.4节,并思考下列问题欲将外部RAM起始地址为DATA的数据块(设数据块长度为20)传送到内部RAM起始地址为30H的存储区,应如何编程?已知以外部RAM2000H为起始地址的存储区有20个有符号数,要求把正数和正零取出来存放到内部RAM以20H为起始地址的存储区(负数和负零不作

温馨提示

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

评论

0/150

提交评论