c语言程序调用汇编语言程序设计,汇编语言及C语言程序设计.ppt

汇编语言及C语言程序设计

第4章 汇编语言及C语言程序设计 4.1 程序设计概述 4.2 汇编语言源程序的编辑和汇编 4.3 汇编语言程序设计 4.4 C51基本语法 4.5 C51与汇编的结合 4.1 程序设计概述 4.1.1 程序设计语言简介 1. 机器语言 机器语言就是用二进制(可缩写为十六进制)代码来表示指令和数据。也称为机器代码、指令代码。机器语言是计算机唯一能识别和执行的语言,用其编写的程序执行效率最高,速度最快,但由于指令的二进制代码很难记忆和辨认,给程序的编写、阅读和修改带来很多困难。所以,没有人使用机器语言来编写程序。 2. 汇编语言 用助记符表示的指令就是计算机的汇编语言,汇编语言与机器语言一一对应。用汇编语言编写程序,每条指令的意义一目了然,给程序的编写、阅读和修改带来很大方便。而且用汇编语言编写的程序占用内存少,执行速度快,尤其适用于实时应用场合的程序设计。因此,在单片机应用系统中主要是用汇编语言来编写程序。 汇编语言也有它的缺点:缺乏通用性,程序不易移植,是一种面向机器的低级语言。即使用汇编语言编写程序时,仍必须熟悉机器的指令系统、寻址方式、寄存器的设置和使用方法。每个计算机系统都有它自己的汇编语言。不同计算机的汇编语言之间不能通用。 3. 高级语言 高级语言是一种面向算法、过程和对象的程序设计语言,它采用接近人们自然语言和习惯的数学表达式及直接命令的方法来描述算法、过程和对象,如BASIC、 C语言等。高级语言的语句直观,易学,通用性强,便于推广、交流,但高级语言编写的程序经编译后所产生的目标程序大,占用内存多,运行速度较慢,这在实时应用中是一个突出的问题。 4.1.2 汇编语言程序设计步骤 使用汇编语言设计程序大致上可分为以下几个步骤: (1)分析题意,明确要求。解决问题之前,首先要明确所要解决的问题和要达到的目的、技术指标等; (2)确定算法。根据实际问题的要求、给出的条件及特点,找出规律性,最后确定所采用的计算公式和计算方法,这就是一般所说的算法。算法是进行程序设计的依据,它决定了程序的正确性和程序的指令。 (3)画程序流程图,用图解来描述和说明解题步骤。程序流程图是程序设计的依据,它直观清晰的体现了程序的设计思路。流程图是用预先约定的各种图形、流程线及必要的文字符号构成的。标准的流程图符号如图4-1所示。 (4)分配内存工作单元,确定程序与数据的存放地址。 (5)编写源程序。流程图设计后,程序设计思路就比较清楚了,接下来的任务就是选用合适的汇编语言指令来实现流程图中每一框内的要求,从而编制出一个有序的指令流,这就是源程序设计。 (6)程序优化。程序优化的目的在于缩短程序的长度,加快运算速度和节省存储单元。如恰当的使用循环程序和子程序结构,通过改进算法和正确使用指令来节省工作单元及减少程序执行的时间。 (7)上机调试、修改、最后确定源程序。只有通过上机调试并得出正确结果的程序,才能认为是正确的程序。对于单片机来说,没有自开发的功能,需要使用仿真器或利用仿真软件进行仿真调试,修改源程序中的错误,直至正确为止。 4.2 汇编语言源程序的编辑和汇编 4.2.1 伪指令 指令能使CPU执行某种操作,能生成对应的机器代码。 伪指令不能命令CPU执行某种操作,也没有对应的机器代码。它的作用仅用来给汇编程序提供某种信息。 常用的伪指令如下: 1.汇编起始伪指令 ORG 格式:[标号:] ORG 16位地址 功能:规定程序块或数据块存放的起始地址。如: ORG 8000H START:MOV A,#30H …… 该伪指令规定第一条指令从地址8000H单元开始存放,即标号START的值为8000H。 2.汇编结束伪指令 END 格式:[标号:] END [表达式] 功能:结束汇编。 汇编程序遇到END伪指令后即结束汇编。 3.定义字节数据伪指令 DB 格式:[标号:] DB 8位字节数据表 功能:从标号指定的地址单元开始,将数据表中的字节数据按顺序依次存入。 数据表可以是一个或多个字节数据、字符串或表达式,各项数据用“,”分隔,一个数据项占一个字节单元。例如 ORG 1000H TAB:DB -2,-4,100,30H,‘A’, ‘C’ …… 汇编后:(1000H)=FEH,(1001H)=FCH,(1002H)=64H,(1003H)=30H,(1004H)=41H,(1005H)=43H 用单引号括起来的字符存其ASCⅡ码,负数存其补码。 4.定义字数据伪指令 DW 格式:[标号:] DW 16位字数据表 功能:从标号指定的地址单元开始,将数据表中的字数据按从左到右的顺序依次存入。 应注意:16位数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值