单片机汇编伪指令
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
;第三字节加法并送结果
分Βιβλιοθήκη Baidu程序
分支程序可以分为: 分支程序可以分为:
单分支 双分支 多分支
Copyright http://www.myvtc.edu.cn 2006
单分支
单分支程序的基本结构: 单分支程序的基本结构:
Y 条件成立? 条件成立?
N
程序段
下条指令
Copyright http://www.myvtc.edu.cn 2006
VCC GND 31 19 C2 30pF GND R1 C3 30pF 9 C1 47uF 12 13 14 15 1 2 3 4 5 6 7 8 Y1 6.000MHZ 18 EA/VP X1 X2 RESET INT0 INT1 T0 T1 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 RD WR PSEN ALE/P TXD RXD AT89C51 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 17 16 29 30 11 10 GND VD0 VD1 VD2 VD3 R9 330 R8 330 R7 330 R6 330 R5 330 R4 330 R3 330
E8H 80H 56H 7BH
43H 42H 41H 40H
89H 2BH 79H CAH
加数 1 存放处
加数 2 存放处
相加结果存放处
A + E 1 8
0 8 9
A 8 2
B 0 B
2 5 7
3 6 9
4 7 C
F B A
Copyright http://www.myvtc.edu.cn 2006
(2) 汇编语言源程序。 汇编语言源程序。 按照双字节加法的思路,实现 字节加法的源程序如下 字节加法的源程序如下: 按照双字节加法的思路,实现4字节加法的源程序如下: ORG 0000H MOV A,30H ADD A,40H MOV 40H,A MOV A,31H ADDC A,41H MOV 41H,A ;第二字节加法并送结果 ;最低字节加法并送结果
Copyright http://www.myvtc.edu.cn 2006
三:单片机汇编语言程序主要的几种程序设计方法: 单片机汇编语言程序主要的几种程序设计方法:
顺序程序:顺序程序是最简单、最基本的程序结构, 顺序程序:顺序程序是最简单、最基本的程序结构,其特点是按指令
的排列顺序一条条地执行,直到全部指令执行完毕为止。 的排列顺序一条条地执行,直到全部指令执行完毕为止。
Copyright http://www.myvtc.edu.cn 2006
MOV A,32H ADDC A,42H MOV 42H,A MOV A,33H ADDC A,43H MOV 43H,A ;第四字节加法并送结果,进位 第四字节加法并送结果, 位在CY中 位在 中 SJMP $ END
Copyright http://www.myvtc.edu.cn 2006
Copyright http://www.myvtc.edu.cn 2006
常见的伪指令
8. 符号定义伪指令EQU或“=” 格式:符号名 格式:符号名 EQU 表达式 或 符号名=表达式 符号名= 功能:将表达式的值或某个特定汇编符号定义为一个指定 的符号名,只能定义单字节数据,并且必须遵循先定义后 使用的原则,因此该语句通常放在源程序的开头部分。 例如: LEN=10 SUM EQU 21H … MOV A,#LEN;执行指令后,累加器A中的值为0AH A,#LEN;执行指令后,累加器A中的值为0AH …
10K
+
VCC
VD4 VD5
VD6 VD7
R2 330
Copyright http://www.myvtc.edu.cn 2006
流程图: 流程图: 虚线框代表 一个单分支
源程序: 源程序:
ORG JB JZ MOV SJMP JISHU:MOV SJMP QUAN:MOV TOend: SJMP END 0000H P, P,JISH QUAN P2, P2,#00H TOend P2,#0FFH TOend P2,#0FH $
分支程序: 分支程序:分支程序是通过转移指令对相应条件的判断实现改变程序
的执行方向的设计方法。 的执行方向的设计方法。
循环程序:在程序中需要反复的执行的程序段, 循环程序:在程序中需要反复的执行的程序段,为了避免在程序中多
次的编写, 次的编写,可以通过利用条件转移或无条件转移指令来控制程序的 执行。 执行。
汇编语言程序设计方法( 2-3 汇编语言程序设计方法(一)
一、MCS-51单片机汇编语言的伪指令 单片机汇编语言的伪指令
伪指令又称汇编程序控制译码指令,属说明性汇编指令。 “伪”字体现在汇编时不产生机器指令代码,不影响程序的执行, 仅产生供汇编时用的某些命令,在汇编时执行某些特殊操作。
MCS-51单片机汇编语言程序设计中,常用的伪指令(七条):
节十六进制数和内部RAM 40H单元开始的 个单元中存放的 字节十六 单元开始的4个单元中存放的 节十六进制数和内部 单元开始的 个单元中存放的4字节十六 进制数相加,结果存放到40H开始的单元中。(如0a0ab234fh存放在片 开始的单元中。 进制数相加,结果存放到 开始的单元中 如 存放在片 开始的4个单元如图所示 内RAM30h开始的 个单元如图所示 开始的 个单元如图所示)
Copyright http://www.myvtc.edu.cn 2006
双分支程序设计 内部RAM的 40H单元和 单元和50H单元各存放了一个 位无符 单元各存放了一个8位无符 例 :内部 内部 的 单元和 单元各存放了一个 号数,请比较这两个数的大小, 号数,请比较这两个数的大小,比较结果用发光二极管显 为低有效) 示(LED为低有效): 为低有效 管脚连接的LED1发光; 发光; 若(40H)≥(50H),则P1.0管脚连接的 , 管脚连接的 发光 管脚连接的LED2发光。 发光。 若(40H)<(50H),则P1.1管脚连接的 < , 管脚连接的 发光
Copyright http://www.myvtc.edu.cn 2006
二、单片机汇编语言程序设计的基本步骤如下
题意分析、熟悉并了解汇编语言指令的基本格式和主要特点、 题意分析、熟悉并了解汇编语言指令的基本格式和主要特点、明确 被控对象对软件的要求、设计出算法等。 被控对象对软件的要求、设计出算法等。 分配内存工作区及有关端口地址。 分配内存工作区及有关端口地址。 画出程序流程图。编写较复杂的程序时, 画出程序流程图 。编写较复杂的程序时 ,画出程序流程图是十分必 要的。程序流程图也称为程序框图,是根据控制流程设计的, 要的。程序流程图也称为程序框图,是根据控制流程设计的,它可以使程 序清晰,结构合理,便于调试。 序清晰,结构合理,便于调试。 编制汇编源程序。 编制汇编源程序。 仿真、调试和优化程序。 仿真、调试和优化程序。 固化程序。 固化程序。
Copyright http://www.myvtc.edu.cn 2006
一、顺序程序
顺序程序是最简单的程序结构, 顺序程序是最简单的程序结构,在顺序程序中没有任 何的转移指令,以下是一个典型的例子。 何的转移指令,以下是一个典型的例子。
例1:字节(双字)加法。将内部 :字节(双字)加法。将内部RAM 30H开始的 个单元中存放的 字 开始的4个单元中存放的 开始的 个单元中存放的4字
3、赋值伪指令 EQU 告诉汇编程序,将汇编语句操作 数的值赋予本语句的标号。 格式: 标号名称 EQU 数值 或汇编符号 “标号名称”在源程序中可以作 数值使用,也可以作数据地址、位 地址使用。 先定义后使用,放在程序开头。 例: led_lamp equ p1.0 counter equ 100 display_addr equ 2000h …………. mov r0, #counter mov dptr, #display_addr mov c, led_lamp
程序段N-1 程序段 程序段N 程序段
Copyright http://www.myvtc.edu.cn 2006
单分支程序举例
的个数为奇数, 例:如图所示,设计一段程序实现功能:如果(A)中1的个数为奇数, 如图所示,设计一段程序实现功能:如果( ) 的个数为奇数 所有的二极管发光;如果全0,则只让VD0-VD3发光;否则全灭。 发光; 所有的二极管发光;如果全 ,则只让 发光 否则全灭。
双分支
双分支程序的基本结构: 双分支程序的基本结构:
条件成立? 条件成立? N 程序段1 Y 程序段2 程序段
Copyright http://www.myvtc.edu.cn 2006
多分支
多分支程序的基本结构: 多分支程序的基本结构:
条件N=? 条件 ? 0 1 …… N-1 N
程序段1 程序段2 程序段 程序段
判断奇偶标 志位的值 判断(A)的值 判断 的值 是否为0 是否为 (A)有偶数个 有偶数个 1,二极管灭 , (A)有奇数个 , 有奇数个1, 有奇数个 二极管全亮 (A)为0,VD0为 , VD3亮 亮
开始
Y 位P=1? N Y (A)=0? N P1 FFH P1 00H P1 0FH
结束
注意: 单片机中, 注意:在MCS-51单片机中,实现单分 单片机中 支常用的指令有: 、 支常用的指令有:JZ、JNZ、DJNZ、 、 、 CJNE、JC、JNC、JB、JNB、JBC等。 、 、 、 、 、 等
33H 32H 31H 30H A0H ABH 23H 4FH
加数 1 存放处
Copyright http://www.myvtc.edu.cn 2006
题意分析示意图
(1) 题意分析。 题意分析。 题目的要求如图所示。
33H 32H 31H 30H
A0H ABH 23H 4FH
43H 42H 41H 40H
ORG—定位伪指令 END—结束汇编伪指令 EQU—赋值伪指令 DB—定义字节指令 DW—定义数据字指令 DS—定义存储区指令 BIT—位定义指令
Copyright http://www.myvtc.edu.cn 2006
1、起始地址伪指令 ORG ORG addr16 用于规定目标程序段或数据块的起 始地址, 指 令 ljmp 设置在程序开始处。 main 存 放 于 0000H开始的 例: Org 0000h 单元 ljmp main org 0100h main: … …. 2、汇编结束伪指令 END 告诉汇编程序,对源程序的汇编到 此结束。 一个程序中只出现一 次,在程序的 最末尾。 例: …… 程序最末尾 …… end
Copyright http://www.myvtc.edu.cn 2006
6.定义空间伪指令DS 4.定义字节数据伪指令DB
格式:[标号:] DS 表达式 格式:[标号:] DB 字节数据表 功能:从指定的地址开始,保留 功能:字节数据表可以是多个字节数 多少个存储单元作为备用的空间。 据、字符串或表达式,它表示将字节数据表中的 如: ORG 1000H 数据从左到右依次存放在指定地址单元。 BUF: DS 50 ; TAB: DB 22H ;22H存放在1032H单元。 例如:ORG 1000H TAB: DB 2BH, 0A0H, ‘A’, 2*4 ; 表示从1000H开始的地方预留50个 表示从1000H单元开始的地方存放数 (1000H~1031H)存储字节空间。 据2BH,0A0H,41H(字母A的ASCII码), 7. 数据地址赋值伪指令XDATA 08H 格式:符号名 格式:符号名 XDATA 表达式 5.定义字数据伪指令DW 功能:将表达式的值或某个特定 格式:[标号:] DW 字数据表 汇编符号定义为一个指定的符号名,可以 功能:与DB类似,但DW定义的 先使用后定义,并且用于双字节数据定义。 数据项为字,包括两个字节,存放时高位 例如: 在前,低位在后。 DELAY XDATA 0356H 例如:ORG 1000H LCALL DELAY ;执行指令后,程 DATA: DW 324AH, 3CH ; 序转到0356H单元执行 序转到0356H单元执行 表示从1000H单元开始的地方存 放数据32H,4AH,00H ; 3CH(3CH以 字的形式表示为003CH)