精品D幻灯片定稿第4章MCS-51汇编措辞法度模范设计
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.2.1 顺序程序设计
顺序程序是程序设计中最基本的结构,又称为简单程序。特点为顺 序执行每一条指令,直到最后。其执行过程如图4-3所示。
S1
S2
图4-3 顺序结构
【例4-1】编写一程序,将累加器A中的两位压缩BCD转换成ASCII码存入1000H、 1001H片外存储单元中。开始R0 ←AA←取A的低4位A←A+30H存入1000H 单元A←取A的高4位A←R0A←A+30H存入1001H单元结束 分析:由ASCII码表可知,0~9的的ASCII码为30H~39H,即BCD码与ASCII码 值的差值为30H。因此只要将两位BCD码分别取出与30H相加即可获得相应 的ASCII码值,其算法流程图如图4-4所示。
4.2,汇编语言程序设计 对于简单程序的编写,程序设计者往往能够立即完成软件的构思与编写,而对于比较复杂 的程序设计问题,则需要科学合理的程序设计步骤。从软件工程角度来说,开发一个应用 程序,一般需要经过以下几个步骤: 1.分析问题,建立数学模型 如果拿到问题,立即着手编写程序代码往往是很难成功的,通常需要首先分析题目的已知 条件,了解系统的硬件配制,明确题目的要求和要实现的功能,然后建立数学模型。 2.了解系统的硬件配置和性能指标,确定方案算法 所谓算法就是为了解决问题而采取的方法和步骤。在分析问题后,应根据系统的具体硬件 配置和性能指标等实际情况确定具体有效且计算机能够执行的方法和步骤。 3.用流程图表示出程序算法 确定算法后,应用简单直观的方法描述算法,以便为进一步编程做好准备。算法的描述方 法很多,其中比较常用的是流程图法。一般流程图的符号如图4-2所示。 4.根据流程图编写源程序 使用汇编语言编写源程序时,应首先合理规划和分配存储器单元,确定程序和数据的存放 区域,了解系统的I/O接口地址,最后按照流程图写出源程序。 5.调试运行程序 通常情况下,源程序编制好后必须经过上机调试才能运行。调试程序的一个重要功能是修 正语法和逻辑错误,直到达到题目的要求为止。,
所谓“伪”指令,即不是真正的可执行指令。如前所述,伪指令只能在对源程序进行汇编 时起控制作用,例如设置程序的起始地址,定义符号,给程序分配一定的存储空间等。常 用的伪指令共有8条,下面分别介绍。 1.ORG(Origin)——设置起始地址指令 用来设定程序或数据存储区的起始地址。指令格式为: ORG,16位地址 例如,有程序段如下,则表示程序存放的起始地址为1000H。 指令地址,,机器码 源程序 ,,,,,,ORG ,,1000H ,1000H,,,,78,2,,,,,MAIN:MOV,,R0,#20H ,1002H,,,,E6 ,,,,,,,,MOV,,A,@R0 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,… 若省略ORG指令后的16位地址,则汇编后目标程序的起始地址默认为0000H。ORG指令 在一个源程序中可以多次使用以指定不同程序段的起始地址,但是指定的多个地址应从小 到大,不能使程序段之间产生重叠。
程序如下:,,,,,,,,,,,,,,,,,,,,,, ORG,2000H MOV,DPTR,#1000H MOV,R0,A ANL,A,#00001111B ORL,A,#30H MOV,@DPTR,A MOV,A,R0 SWAP,A ORL,A,#30H INC,DPTR MOVX,@DPTR,A END
2.DB(Define,Byte),——定义字节型常数指令 指令的功能为从指定的存储单元开始,定义或存储一个或多个字节数据。指令格式 为: [标号:]DB,字节常数表 例如,,,,,,,,ORG,1000H TAB:,,,DB,,0A3H,18,‘AB’ 汇编结果为:(1000H)=A3H,,,,(1001H)=12H,,,,(1003H)=41H,,,(1004H) =42H 3.DW(Define,Word)——定义字型常数指令 指令的功能为从指定的存储单元开始,定义或存储一个或多个字数据。通常用于在 程序中定义地址表。指令格式为: [标号:]DW,字常数表 一个字数据占用两个存储单元,存放时高字节存入低位地址,低字节存入高位地址。 例如, ,,ORG,1000H TAB:DW,,1234H,18,00A3H 汇编结果:(1000H)=12H,,(1001H)=34H ,,,,,,,,,,,,,,,,,,(1002H)=00H,,(1003H)=12H ,, ,,,,,(1004H)=00H,,(1005H)=A3H
4.,EQU(Equate)——等值指令 指令功能是把操作数段中的地址或数据赋值给标号。赋值后的标号可在整个源程序中 使用。指令格式如下: 标号,,,EQU,,,数据或汇编符号 注意,与程序中一般意义的标号不同的是,这里的标号后不能加“:”。 例如,, ADDR,, EQU,,1000H,;给ADDR赋值1000H ,DAT1,, EQU,,0AH,,,;给DAT1赋值0AH ,,,,,,, … MAIN: MOV,,DPTR,#ADDR;DPTR←1000H ,,,,, MOV,,A,DAT1,,,,;A←(0AH) 上例中,ADDR被赋值以后,在程序中作为立即数使用,而DAT1赋值后被当作直接地 址使用。需要说明的是,使用EQU指令时必须先赋值后使用。
【例4-2】已知如图4-5所示,双字节4位压缩BCD码数 X 存于片内 RAM30H、31H单元,Y存于32H、33H单元,编程求 Z=X+Y,并将结 果Z存入片内RAM单元34H、35H、36H中 ADDSUM:MOV A,30H ADD A,32H ;低位字节相加 DA A ;BCD码修正 MOV 34H,A ;低位字节存入34H中 MOV A,31H ADDC A,33H ;高位字节与低位进位相加 DA A MOV 35H,A ;高位字节之和存入35H中 MOV A,#0 ADDC A,#0 DA A MOV 36H,A ;高位字节的进位存入36H中 END。
4.1.2 单片机汇编语言源程序的编辑和汇编
1.汇编语言的指令类型 用汇编语言编写的、具有特定功能的指令序列,称为汇编语言源程序。源程 序由两种类型的汇编语言语句(即指令)构成。语句是汇编语言的基本 组成单位,按性质不同分为两类:指令性语句(机器指令)和指示性语 句(伪指令)。 (1)机器指令 即指令系统中的全部指令,每条指令都有对应的机器代码,是机器真正能 够执行的指令。 (2) 伪指令 为汇编程序在汇编过程中提供控制或指示信息,并不直接产生机器代码,属 于机器不能执行的指令类型。 2.汇编 计算机不能直接识别和执行源程序。因此源程序必须经过汇编程序汇编产生 机器码目标程序文件,程序才能执行。这种将汇编语言源程序转换成机 器语言程序的过程称为汇编。对于初学者来说,应注意汇编语言源程序 和汇编程序两个术语的区别,它们的功能示例如图4-1所示。
图4-1 汇编过程
经过 汇编语言 源程序 汇编程序 汇编后 目标文件和源程序列表
汇编语言源程序的汇编过程分为手工汇编和机器汇编。 所谓手工汇编,即采用人工查指令表的方法将汇编指令翻译成相应机器代码。通常源 程序的人工汇编需要两次才能完成,第一次汇编查找每条指令的机器代码,第二次汇 编完成地址偏移量的计算。由于手工汇编需要计算和查找,繁琐而且容易出错,而且 程序修改时可能会引起指令的地址变化,转移指令的偏移量也随之改变,需要重新计 算,所以手工汇编主要应用于设计短小程序或调试程序的场合。 所谓机器汇编,即采用汇编程序对源程序进行自动汇编,由于单片机软硬件资源的限 制,该过程通常借助于PC系统机实现,象这种借助于一种计算机而为另一种计算机产 生目标代码的汇编方式又称为交叉汇编。交叉汇编的原理类似于手工汇编,在汇编程 序中通常存入了两张表,即MCS-51单片机的指令代码表和伪指令表。汇编程序通常 通过两次扫描完成汇编,第一次扫描查找源程序中每条指令的机器代码,第二次扫描 完成地址偏移量的计算,汇编后生成目标文件和列表文件。这是目前应用较广的汇编 方法。
5.DS(Define,Store)——定义存储区指令 指令功能为从指定的单元地址开始,保留一定数量的存储单元,以备使用。指令格 式如下: [标号:]DS,,表达式 其中,表达式指定保留的内存单元个数。 例如,ORG,1000H ,,,,,,,,,,,DS,,10 TAB:,DB,,10H ,,,,,,… 汇编结果:从1000H地址处开始,保留10个字节单元。(100AH)=10H。 6.BIT——位地址符号指令 指令功能为将位地址赋值给指定的符号名称,通常用于位符号地址的定义。指令功 能如下: 字符名称 BIT ,位地址 例如,X1,BIT,P1.0 汇编结果为将位地址P1.0赋给变量X1,即在程序中便可使用X1代替位地址P1.0。
纵上,汇编的主要功能为: (1)确定程序中每条汇编语言指令的指令机器码。 (2)确定每条指令在程序存储器中的存放地址。 (3)提供语法、编辑等方面的错误信息,但不能 提供程序的逻辑错误。 (4)产生目标执行文件(*.OBJ/*.HEX)的伪指令
• 1.机器语言 • 是计算机所能识别的唯一语言,由二进制代码0和1构成指
令和数据。其具有效率高、响应速度快的特点,但由于机 器语言编写的程序依赖于计算机的结构,可移植性差,繁 琐且难于记忆、识别和调试,通常编程时,不采用机器语 言。
2.汇编语言
•
是一种符号语言,指令由助记符表示。与机器语言相比,汇编语 言具有指令容易记忆、理解、识别和可读性好的优点,但实质上 由于汇编语言也是面向机器的语言,是机器语言程序的符号表示, 所以用户必须熟悉机器的硬件结构和指令系统,掌握计算机的工 作过程才能熟练编程。汇编语言程序通常用于实时控制领域,其 所能完成的操作不是一般高级语言所能实现的,而且源程序经汇 编生成的可执行文件一般运行效率较高。 • 另外,汇编语言所编写的源程序与经过汇编所产生的机器代码程 序之间有明显的一一对应关系,所以汇编语言编写的程序同样也 存在通用性差,程序不能移植的缺点。
7.DATA——数据地址赋值指令 指令功能为将数据地址或指令代码地址赋值给所指定的标号。通常在程序中用 于定义数据地址。指令格式如下: 标号:DATA,表达式 例如,AA:DATA,2000H 汇编结果为:AA=2000H。 注意,DATA与EQU的区别在于:EQU定义的标识符在汇编时不在符号表中登 记,因此必须先定义后使用,而DATA定义的标识符汇编时在符号表中登记, 所以可以先使用后定义。 8.,END,——汇编语言源程序结束指令 指令功能,表示源程序到此结束,END指令以后的指令汇编程序将不予处理。 一个程序中只能在末尾有一个END指令。 例如,,START:,… ,,,,,,,,,,,,… ,,,,,,,,,,,,END ,,START
3.高级语言
• 高级语言是接近于人的自然语言形式的计算机编程语
言的总称,例如C语言、BASIC语言等都是高级语言。 和汇编语言相比,高级语言指令简单易学,用户容易 掌握,且高级语言程序不依赖于具体的硬件结构和指 令系统,程序可移植性好,但是高级语言编写的源程 序必须经过编译或解释程序翻译成目标程序,机器才 能执行,而生成的目标程序需占用较多的存储单元, 执行时间较长,运行效率较低。 • 由于目前有些高级语言不具有直接处理接口和中断技 术的功能,因此高级语言一般很少应用于实时控制, 但随着语言的发展,这种情况将会有所改变。
第4章MCS-51汇编语言程序设计
本章要点:
程序设计语言分类及特点 汇编语言程序编写方法 顺序结构程序的编写方法 分支结构程序的编写方法 循环结构程序的编写方法 子程序的编写方法
4.1 汇编语言概述
• 4.1.1 程序设计语言的分类及特点 • 能够完成一定功能的指令序列称为程序,用来设计计算机
程序的语言称为程序设计语言,按照语言的结构及功能程 序设计语言可分为:机器语言、汇编语言和高级语言。