单片机汇编语言程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.2 80C51汇编语言程序设计
汇编语言程序设计,就是采用汇编指令来编写计算机程序。要对应用中需使用的寄存器、存 储单元、端口等先要作出具体安排。在实际编程中,如何正确选择指令、寻址方式和合理使用工作寄存 器,包括数据存储器单元,如何对扩展的端口进行操作等,都是基本的汇编语言程序设计技巧。
程序结构一般采用以下三种基本控制结构,即顺序结构、分支结构和循环结构来组成,再加 上使用广泛的子程序及中断服务子程序,共有五种基本结构。
1: A, 0 ; 被加数低字节的内容送入A
1
;
0, A
;
R0
;
R1
;
A, 0
; 被加数高位字节送入A
A, 1 ;
0, A
;
例 2 将两个半字节数合并成一个一字节数。
设内部 40, 41H单元中分别存放着 8 位二进制数, 要求取出两个单元中的低半字节, 并成一个 字节后, 存入 50H单元中。 程序如下:
R2, 1;
R2, #50 ;
例 6 设在内部 的单元开始处有长度为 的无符号数据块, 试编一个求和程序, 并将和存入内 部 的 单元(设和不超过 8 位)。
汇编语言( )
指用指令助记符代替机器码的编程语言。汇编语言程序结构简单,执行速度快,程 序易优化,编译后占用存储空间小,是单片机应用系统开发中最常用的程序设计语言。 汇编语言的缺点是可读性比较差,只有熟悉单片机的指令系统,并具有一定的程序设计 经验,才能研制出功能复杂的应用程序。
高级语言( )
在汇编语言的基础上用自然语言的语句来编写程序,例如51、C51等,程序可读性强, 通用性好,适用于不熟悉单片机指令系统的的用户。 高级语言编写程序的缺点是实时性不高,结构不紧凑,编译后占用存储空间比较大,这 一点在存储器有限的单片机应用系统中没有优势。
4.2.1 顺序程序结构
例 1 两个无符号双字节数相加。 设被加数存放于内部的40H(高位字节), 41H(低位字节), 加数存放于50H(高位字节), 51H(低位字节), 和数存入 40H和41H单元中。
程序如下:
:C
;
R0, #41H ; 将被加数地址送数据指针R0
R1, #51H ; 将加数地址送数据指针R1
宏指令语句:用以代替汇编语言源程序中重复使用的程序段的一种语句,由汇编程序在汇编时产生 相应的目标代码。
汇编语言语句的格式 指令语句和伪指令语句的格式是类似的。
指令语句的格式为: 【标号】:助记符(操作码)【操作数】 ;【注释】
伪指令语句的格式: 名字 定义符 参数 ;注释
两种语句都由四个部分组成。其中每一部分称为域也称为字段,各字段之间用一个空格或字段定界符 分隔,常用的字段定界符有冒号“:” 、逗号“,”和分号“;”。其中方括号括起来的是可选择部 分。
因而,单片机的汇编语言不但不会被高级语言完全取代,甚至还将继续占据重要地 位。
4.1.2 汇编语言语句的种类和格式 汇编语言语句有三种基本类型:指令语句、伪指令语句和宏指令语句。
指令语句:每一个指令语句都在汇编时产生一个目标代码,对应着机器的一种操作。 例如: A,#0
伪指令语句:主要是为汇编语言服务的,在汇编时没有目标代码与之对应。 例如: 1
例 5 工作单元清零。 在应用系统程序设计时, 有时经常需要将存储器中各部分地址单元作为工作单元, 存放程序执 行的中间值或执行结果, 工作单元清零工作常常放在程序的初始化部分中。 设有50个工作单元, 其首址为外部存储器8000H单元, 则其工作单元清零程序如下:
:A , #8000H ;
1: , A ;
: R1, #40H ; 设置R1
A, 1 ;
A, #0 ;
A
;
R1
;
A, 1 ;
A, # 0 ;
A, 1
;
50H, A ;
4.2.2 分支程序设计 (a) 单分支流程; (b) 多分支流程
例 3 x, y均为8位二进制数, 设 x存入R0, y存入R1, 求解:
ຫໍສະໝຸດ Baidu 1
y
1
0
x0 x0 x0
程序如下: : R0, #00H, 1; R0中的数与00
字符等形式来描述。 3.高级语言:高级语言是接近于人的自然语言,面向过程而独立于机器的通用语言。
机器语言( )
直接用机器码编写程序、能够为计算机直接执行的机器级语言。机器码是一串由二 进制代码“0”和“1”组成的二进制数据,其执行速度快,但是可读性极差。机器语言一 般只在简单的开发装置中使用,程序的设计、输入、修改和调试都很麻烦。
2 1: ; 两数不等, 若(R0)<0,
R1, #01H ; (R0)>0, 则 R1←01H 2 : R1, #0 ; (R0)<0, 则 R1←0 2:
R1, #00H; 相等, R1← 0
例 4 比较两个无符号数的大小。
设外部 的存储单元 1和 2中存放两个不带符号的二进制数, 找出其中的大数存入外部 中的 3单元中。
1000H
1
2000H
2
2100H
3
2200H
:C
;
, #1 ;
A, ;
R2, A
;
, #2 ;
A, ;
C
A, R2; 1 ; 若第二个数大, A, R2; 0: , #3 ,A; B 1: A, ; 0
B:
4.2.3 循环程序设计 一、 循环程序
循环程序一般由四个主要部分组成: (1) 初始化部分: 为循环程序做准备, 如规定循环次数、 给各变量和地址指针预置初值。 (2) 处理部分: 为反复执行的程序段, 是循环程序的实体, 也是循环程序的主体。 (3) 循环控制部分: 这部分的作用是修改循环变量和控制变量, 并判断循环是否结束, 直到符合结 束条件时, 跳出循环为止。 (4) 结束部分: 这部分主要是对循环程序的结果进行分析、 处理和存放。
单片机汇编语言程序设计
1
4.1 单片机程序设计语言概述
所谓程序设计,就是按照给定的任务要求,编写出完整的计算机程序。要完成同样 的任务,使用的方法或程序并不是唯一的。因此,程序设计的质量将直接影响到计算机 系统的工作效率、运行可靠性。
4.1.1 按照语言的结构及其功能可以分为三种
1.机器语言:机器语言是用二进制代码0和1表示指令和数据的最原始的程序设计语言。 2.汇编语言:在汇编语言中,指令用助记符表示,地址、操作数可用标号、符号地址及