第四章程序设计基础共52页文档

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作用,它们不能对数据储存器进行初始化。
7.位地址符号命令BIT
• 格式:字符名 BIT 位地址 • 其功能是将BIT之后的位地址值赋给
字符名。例如: • A1 BIT P1.0 • A2 BIT P1.1 • SETB A1 ; (P1.0)←1 • CLR A2 ; (P1.1)←0
4.2 汇编语言程序的基本结构
2.分支程序
(1)单分支程序。单分支程序都是使用前述 的条件转移指令实现的。例4.1:假设内 部RAM40H与41H单元中有两个无符号 数,现要求将其大者存入40H中,小者 存入41H中。
2.分支程序
• 源程序如下: • MOV A, 40H • CLR C • SUBB A 41H • JNC WAIT • MOV A, 40H • XCH A, 41H • MOV 40H,A • WAIT: SJMP WAIT
SJMP STORE
ZERO: MOV A
STORE:MOV 21H
(2) 多分支程序
• 例4.3 在某单片机应用系统中,接有一键盘,键值(代表哪个键
被按下)存放在内部 RAM的40H单元内。设计一段 程序实现如下功能:如果 (40H)=00H,调用子程序 SUBl ; 如 果 (40H)=01H , 调 用 子 程 序 SUB2 : 如 果 (40H)=02H,调用子程序SUB3;如果(40H)=03H,调 用子程序SUB4;如果(40H)=04H,调用子程序SUB5。 • 解:先画出本例的示意流程图如图4.3:
符串。例如:
ORG 2000H
DB
54H
TAB: DB 0B7H 34H 96H
STR: DB ‘6AB’
4.定义字符指令DB
经汇编后:(2000H)=54H (2019H)=B7H (2019H)=34H (2019H)=96H (2019H)=36H (2019H)=41H (2019H)=42H 其中36H,41H,42H分别是6、A、B的ASCII编码值。
5.定义字伪指令DW
• 格式:DW 16位数据表 该指令用于从指定地址开始,在程序储存器的
连续单元中定义双字节的数据。 例如:ORG 1000H TAB:DW 3456H,7BH,10H 汇编后 (1000H)=34H (1001H)=56H (1002H)=00H (1003H)=7BH (1004H)=00H (1005H)=10H
ABC EQU 30H
DLY EQU 8034H MOV A, ABC
LCALL DLY 这里ABC代表了30H的内存单元。DLY定义16位地址,实际是一个
子程序的入口地址。
4.定义字符指令DB
• 格式:DB 8位二进制常数表
DB伪指令的功能是从ROM的指定的地址单元开 始存入DB后面的数据,这些数据 可以是用 逗号隔开的字节串或括在单引号中的ASCII字
第4章 程序设计基础
• 4.1 MCS-51单片机汇编语言的伪指令
MCS-51单片机中除了前面讲述的指令系统中 111条指令外,还有另一类指令,这类指 令称 为伪指令。例如在程序的开头处有ORG,程序 结束处END,等等。这些指令在汇编后 不产 生机器码,只是在程序进行汇编时,向汇编软 件提供程序中的一些特殊信息。比如,程序起 止,定义的数据,表格存放位置等。
• 汇编语言程序一般有4种结构形式:顺 序结构,分支结构,循环结构利子程序 结构。
1.顺序结构
• 顺序结构是最简单的程序结构,其特点: 程序中的语句由前向后顺序执行,直到 最后,这种程序中的无分支、循环和子 程序调用。
2.分支程序
• 分支程序是通过条件转移指令实现的, 根据程序执行中的条件对程序进行判断, 满足 条件则进行程序转移,不满足条 件就顺序执行。对于MCS-51单片机,能 实现分支转移的指令有JZ,JNZ,CJNE, DJNZ和位状态条件判断指令JC,JNC, JB,JNB等。这些指令条件判断在指令 系统中已经作了说明。分支程序又分为 单分支和多分支结构:
来自百度文库.分支程序
• 例4.2:设变量X存于内部RAM20H单元, 函数值Y存于21H单元,试按照下式要求 对Y赋值。

X+3 X>0
• Y= 20 X=0

X X<0
• 流程图如图4.2所示:
2.分支程序
源程序如下:
MOV A, 20H
JZ ZERO
;(A)=0
JB ACC.7, STORE
ADD A, #03H
下面介绍单片机汇编语言程序设计中, 常用的伪指令有以下几种:
• 1. 起始伪指令ORG
ORG伪指令的功能是规定这条下面源程序和数据的起始地址格式为:ORG Addrl6.
例如:ORG 2000H START: MOV A
即 规 定 标 号 START 所 在 地 址 为 2000H , 也 就 是 第 一 条 指 令 从 2000H开始存放。一般说来,ORG Addrl6,表示了一个源程序或数据块 的起始地址。在一段程序中允许多次使用ORG指令,以规定不同的程 序段或数据块的起始位置,并规定地址从小到大,不允许重叠。
2.结束伪指令END
• END伪指令用来指示源程序到此全部结 束,在汇编时,当汇编程序检测到源程 序中 的该指令时,它就认为源程序已 经到此为止。对END后面的指令都不予 汇编。因此一个 源程序只能有一个 END语句,且放在整个程序的末尾。
3.赋值伪指令EQU
• 格式:字符名称EQU常数或汇编符号 EQU伪指令的功能是将一个常数和汇编符号赋给字符名称在使 用中要注意:(1)字 符名称不等于标号,不用“:”来作分 隔符:(2)和MOV传送指令不一样,用EQU赋值的常数和汇编符 号,其值在整个程序中有效;(3)使用EQU伪指令时必须先赋值, 后使用:(4)用EQU赋过值的符号名称可以用作数据地址,代码 地址,位地址或是一个立即数。可以是8位或16位的。例如:
6.定义储存空间伪指令DS
• 格式:DS 表达式 • 在汇编时,从指令地址开始保留DS之后表达
式的值所规定的储存单元以备后用。例如:
• ORG 1000H • DS 08H • DB 30H 汇 编 后 , 从 1000H 保 留 8 个 单 元 , 然 后
(1008H)=30H。 • 注意:以上DB,DW,DS只对程序储存器起
相关文档
最新文档