第五章 MCS-51汇编语言程序设计0
第5章MCS51汇编语言程序设计
![第5章MCS51汇编语言程序设计](https://img.taocdn.com/s3/m/86f1067d8e9951e79b892788.png)
分支程序设计
• 程序计数器特点 PC目的 ← PC当前 + rel •《例5.5》( 121页 )
设变量 X存放于 VAR 单元,函数值 Y 存放 在 FUNC 单元,试按照下式的要求给 Y 赋值。 1 X>0 Y= 0 X= 0 -128 ≤ X≤ +127 -1 X < 0 将 X 值放入累加器 A 中,应用累加器判 0 指令 JZ 判断 A 中是否为 0,用位判断指令 JNB 判断累加器A中 b7 位是否为 0,完成编程。
MOV A,#20H
MOV A,#32
11
汇编语言源程序的格式 —— 注释
• • • • ;( 分号)后的内容为注释 仅说明功能不参加汇编 注释可增强源程序的可读性 注释可用英文、汉字等符号
12
§5.2: 汇编语言中的伪指令
伪指令对汇编源程序进行管理是必须的 机器汇编是由计算机自动完成的,为此,源 程序中应有向汇编程序发出指示信息,告诉 它应该如何完成汇编工作,这一任务是通过 使用伪指令来实现的 伪指令在汇编后不产生机器码
不使用ORG时,指令存放的起始地址为 0000H 用多个ORG时,定义地址不能重叠 多个ORG时,定义地址应从小到大
15
END —— 汇编结束伪指令
• 格式
END
• 功能
结束源程序文件的汇编
• 使用特点
1 个源程序文件仅能有 1 个 END 伪指令 1 个源程序文件的最后 1 行必须写 END 伪指令 源程序中间有END伪指令,则END后的指令无意义
21
§5.4: MCS-51程序设计举例
• • • • • 顺序程序设计 分支程序设计 循环程序设计 查表程序设计 子程序设计
22
MCS-51单片机程序设计
![MCS-51单片机程序设计](https://img.taocdn.com/s3/m/18186ff96c85ec3a86c2c51b.png)
+1
,当X>0
Y= 0
,当X=0
开始
-1
,当X<0
X=0
N
程序流程框图如图4.1所示。 Y
Y←0
X>0 Y
Y←1
N Y←-1
结束
程序如下: ORG
MOV CJNE MOV AJMP MP1: JB MOV LJMP MP2: MOV HERE: SJMP
1000H A,R0 A,#00H,MP1 R1,#00H HERE ACC.7 MP2 R1,#01H HERE R1,#0FFH HERE
1000H DPTR,#2000H DPL DPH DPTR,#3000H R2,DPL R3,DPH
;源数据区首地址 ;源首址暂存堆栈
;目的数据区首地址 ;目的首址暂存寄存器
LOOP:
POP POP MOVX INC PUSH PUSH MOV MOV MOVX MOV MOV DJNZ SJMP
;源数据区首地址 ;目的数据区首地址 ;循环次数 ;取数据 ;数据传送 ;源地址加1 ;目的地址加1 ;循环控制 ;结束
例4.8 外部RAM之间的数据传送程序。
把外部RAM 2000H开始单元中的数据传送到外部RAM 3000H开始的单 元中,数据个数在内部RAM的35H单元中。
START:
ORG MOV PUSH PUSH MOV MOV MOV
K=?
K=0
K=1
转向 0 分支 转向 1 分支
K= n-1
K=n
转向 n-1 分支 转向 n 分支
例4.5 设内部RAM的30H单元有一个数,根据该数值的不同 转移到不同的程序段进行处理,设数值的范围为0~10的 无符号数。
单片机原理及应用教程(C语言版)-第5章 MCS-51单片机的中断系统
![单片机原理及应用教程(C语言版)-第5章 MCS-51单片机的中断系统](https://img.taocdn.com/s3/m/eb52aa3fb90d6c85ec3ac657.png)
5.2.5 中断允许控制
例5-1 假设允许INT0、INT1、T0、T1中断,试 设置IE的值。 (2)汇编语言程序 按字节操作: MOV IE,#8FH 按位操作: SETB EX0 ;允许外部中断0中断 SETB ET0 ;允许定时器/计数器0中断 SETB EX1 ;允许外部中断1中断 SETB ET1 ;开定时器/计数器1中断 SETB EA ;开总中断控制位
IP (B8H)
D7 —
D6 D5 D4 D3 D2 D1 D0 — PT2 PS PT1 PX1 PT0 PX0
PT2:定时器/计数器T2的中断优先级控制位 PT2设置1则T2为高优先级,PT2设置0则T2为 低优先级。 后面各位均是如此,设置1为高优先级,设置0 为低优先级,不再一一赘述。 PS:串行口的中断优先级控制位。 PT1:定时器/计数器1的中断优先级控制位。 PX1:外部中断1的中断优先级控制位。 PT0:定时器/计数器0的中断优先级控制位。 PX0:外部中断0的中断优先级控制位。
5.2.4 中断请求标志
4.定时器/计数器T2中断请求标志
T2CON D7 D6 D5 (C8H) TF2 EXF2 D4 D3 D2 D1 D0
EXF2:定时器/计数器2的外部触发中断请求标志 位。T2以自动重装或外部捕获方式定时、计数,当 T2EX(P1.1)引脚出现负跳变时,TF2由硬件置1, 向CPU请求中断,CPU响应中断后,EXF2不会被硬 件清0,需要在程序中以软件方式清0。
5.2.3 外中断触发方式
TCON格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
IT0=1,外中断0为下降沿触发 CPU在每一个机器周期的S5P2期间对P3.2引 脚采样,若上一个机器周期检测为高电平,紧挨着 的下一个机器周期为低电平,则使IE0置1。 IT1:外中断1触发方式控制位。功能同IT0
第五章 MCS-51系列单片机汇编语言程序设计
![第五章 MCS-51系列单片机汇编语言程序设计](https://img.taocdn.com/s3/m/b6eb1881a0116c175f0e4838.png)
取第一个加数 加第二个加数 十进制调整 保存结果 图5-1 例1的程序流程图
13
2.分支结构程序设计 在实际应用中,不可能所有程序都是直线运行的, 相反,多数情况都需要根据不同的条件进行不同的 处理,这就会使程序跳转到不同位置去执行,这种 结构的程序称为分支结构程序。MCS-51单片机中条 件转移指令、比较转移指令、位转移指令等都可实 现程序分支。
3.循环结构程序设计
循环程序是指一段反复执行的程序。在许多问题中, 需多次执行一段完全相同的程序,只是参加运算(或处 理过程)的操作数不同。这时就可以采用循环程序结构。 循环程序可以缩短程序,减少程序所占的内存空间。一 般情况下,循环程序包括下面几部分: (1)循环体:需要多次执行的程序的主体。 (2)循环控制:对循环次数进行计数,判断循环结束的 条件。 (3)循环初值:包括循环次数、循环体中工作单元的初 值等。
汇编 汇编语言源程序
反汇编
机器语言目标程序
9
5.4 MCS-51单片机汇编语言程序设计实例 5.4.1 汇编语言程序设计步骤及程序质量评价标准
1.汇编语言程序设计步骤 用汇编语言编写程序,一般可按如下步骤进行: (1)建立数学模型 (2)确定算法 (3)制订程序流程图 (4)确定数据结构 (5)写出源程序 (6)上机调试程序
25
【例17】使P1口所接8 个发光二极管循环点亮, 每点亮一个发光二极管, 调用一次延时子程序。 设主频fosc=12MHz,延 时时间为20ms
主程序流程图 26
子程序流程图
源程序清单: START: START1:
START2:
DELAY:
DELAY1:
ORG 0000H AJMP START ORG 0040H MOV A,#1 MOV P1,A ACALL DELAY CJNE A,#80H,START2 AJMP START RL A AJMP START1 PUSH R2 PUSH R3 CLR PSW.4 CLR PSW.3 MOV R2,#100 MOV R3, #7 DJNZ R3,$ DJNZ R2,DELAY1 POP R3 POP R2 RET END
第5章-MCS-51单片机中断系统-PPT
![第5章-MCS-51单片机中断系统-PPT](https://img.taocdn.com/s3/m/5388a371ef06eff9aef8941ea76e58fafab045c5.png)
5、2、2 MCS-51单片机得中断源
IT1=1,外中断1为下降沿触发 采样:CPU在每一个机器周期得S5P2期间 对P3、3引脚采样,若上一个机器周期检测为 高电平,紧挨着得下一个机器周期为低电平,则 使IE1置1。 IT0:外中断0触发方式控制位。
CPU主要就是通过标志寄存器、控制 寄存器、优先级寄存器对中断源进行管
5、2、2 MCS-51单片机得中断源
(1)与中断标志相关得SFR
主要有:定时器/计数器T0、T1控制寄 存器TCON
串行口控制寄存器SCON 定时器/计数器2控制寄存器T2CON(第 6章介绍) (2)中断控制寄存器:TCON、IE (3)中断优先级寄存器:IP
DMA释放总线:当一批数据传送后, DMA控制器再向CPU发出“结束总线请 求”,CPU响应请求,收回总线使用权。
DMA方式速度高、效率高,可以与CPU 并行工作。
5、1、2 中断得相关概念
1、中断得概念
CPU在正常运行得时候, 外部或者内部发生了请求 CPU迅速去处理得事件,CPU 暂时中断当前得程序,去处理 所发生得事件,处理完事件后, 再返回到原来被中断得程序 继续运行。此过程称为中断。
图5-3 定时器得控制寄存器
TCON可位寻址。复位后TCON=00H。 TF1(TCON、7):T1溢出标志位
当T1计满溢出时,由内部硬件置位; 中断响应后自动清 0。
5、2、2 MCS-51单片机得中断源
TF0:T0溢出标志位 功能同TF1。
IT1:外中断1触发方式设置位 IT1=0,外中断1为低电平触发
5、1、1 微机得输入/输出方式
MCS-51 汇编语言程序设计
![MCS-51 汇编语言程序设计](https://img.taocdn.com/s3/m/a9cb8c63a45177232f60a2ee.png)
1. 分支程序设计
结构特点:不一定按指令的先后顺序依次运
行程序,程序的流向有两个或两个以上分支, 根据指定条件选择程序的流向。
P3.4=0? N
点亮所有二极管
Y
二极管交叉点亮
2. 分支程序的典型实例
实例:已知30H单元中有一变量X,要求编写 一程序按下述要求给Y赋值,结果存入31H单 元。
3. 8051汇编指令格式中,地址和数据的区别符号为( )。 A. 冒号 B. 分号 C. 逗号 D. 井号
4. 散转指令是单片机指令系统中专为散转操作提供的无条件 转移指令,指令格式如下: A. JMP @A+DPTR B. LJMP 标号 C. AJMP 标号 D. SJMP 标号
5. MCS-51系列单片机存储器结构的特点之一是存在着四种 物理存储空间,即片内RAM、片外RAM、片内ROM和片外ROM, 不同的物理存储空间之间的数据传送一般以( )作为数据传 输的中心。 A. 累加器A B. PSW C. PC D. RAM 6.分析下面程序段,累加器 A 中的内容为() 。 ORG 0000H MOV 30H,#45H MOV R0,#30H MOV A,#30H XCHD A,@R0 SJMP $ END A. 45H B. 35H C. 30H D. 34H
例4.6:编程实现P1口连接的8个LED显示方式如 下:从P1.0到P1.7的顺序,依次点亮其连接 的LED。
数
16位地址数 DPTR
+
ቤተ መጻሕፍቲ ባይዱ
A
PC
例: 根据R7的内容,转向各自对应的操作程
序 (R7= 0,转入OPR0;R7= 1,转入OPR1…R7= n,转入OPRn)
MCS-51单片机指令系统与汇编语言程序设计
![MCS-51单片机指令系统与汇编语言程序设计](https://img.taocdn.com/s3/m/0b9fe8e2da38376bae1fae28.png)
docin/sundae_meng
P73 例2.58
ORG 0100H
MOV DPTR,#DATA LOOP2: MOV R1,A
MOV R0,#30H
INC R1
MOV R1,#40H LOOP: MOVX A,DPTR
START:
ORG 1000H MOV DPTR,#TABLE MOV A,20H ANL A,#0FH MOVC A,@A+DPTR MOV 21H,A
docin/sundae_meng
TABLE:
MOV A,20H ANL A,#0F0H
SWAP A MOVC A,@A+DPTR MOV 22H, A SJMP $ DB 30H,31H,32H,33H,34H
docin/sundae_meng
ORG 1000H
START: MOV A, 40H
; 将X送入A中
JZ COMP
; 若A为0,转至COMP处
JNB ACC.7, POST ; 若A第7位不为1(X为正数),则程序转到
POST处,否则(X为负数)程序往下执行
MOV A, #0FFH ; 将1(补码)送入A中
docin/sundae_meng
2.4.1 汇编语言程序设计的步骤
汇编语言程序设计:根据任务要求,采用汇编语言编制程序的过程称为汇编 语言程序设计。 汇编语言程序设计的步骤: (1)拟订设计任务书 (2)建立数学模型 (3)确定算法 (4)分配内存单元,编制程序流程图 (5)编制源程序
进一步合理分配存储器单元和了解I/O接口地址;按功能设计程序,明确 各程序之间的相互关系;用注释行说明程序,便于阅读和修改调试和修改。 (6)上机调试 (7)程序优化
MCS-51汇编语言程序设计
![MCS-51汇编语言程序设计](https://img.taocdn.com/s3/m/6da2b04d2e3f5727a5e96293.png)
01:31
单片机原理与接口技术(第2版).李晓林.电子工业出版社
返回目录
2
本章目录
4.2.1 顺序结构程序 4.2.2 分支结构程序 4.2.3 循环结构程序 4.2.4 查表程序 4.2.5 子程序 4.3 汇编语言程序设计实例 习题与思考题
4.1 程序设计概述 4.1.1 程序设计的步骤 4.1.2 程序设计的方法 4.1.3 汇编语言的规范 4.1.4 汇编语言程序编辑和 汇编 4.2 结构化程序设计方法
01:31
单片机原理与接口技术(第2版).李晓林.电子工业出版社
返回目录
15
4.1.3 汇编语言的规范
(5)定义字伪指令 )定义字伪指令DW
[标号:] 标号: DW 16位二进制数表 16位二进制数表
---伪指令 伪指令DW 伪指令
功能: DW 指令是在程序存储器 ( ROM ) 中 , 从指定的 指令是在程序存储器( 功能 : DW指令是在程序存储器 ROM) 地址单元开始,定义若干个16位数据 一个16位数 位数据。 地址单元开始,定义若干个16位数据。一个16位数 要占两个存储单元,其中高8位存入低地址单元, 要占两个存储单元, 其中高 8位存入低地址单元, 位存入高地址单元。 低8位存入高地址单元。 例如: 例如: ORG 1100H 1100H TAB : DW 1234H, 0ABH 10 1234H, 以上伪指令经汇编以后, 将对从1100H 以上伪指令经汇编以后 , 将对从 1100H 开始的若 干内存单元赋值。 干内存单元赋值。
01:31
单片机原理与接口技术(第2版).李晓林.电子工业出版社
返回目录
16
4.1.3 汇编语言的规范
例如:ORG 1100H 例如: TAB :DW 1234H, 0ABH 10 (1100H)=12H (1101H)=34H (1102H)=00H (1103H)=ABH (1104H)=00H (1105H)=0AH
MCS-51汇编语言程序设计
![MCS-51汇编语言程序设计](https://img.taocdn.com/s3/m/7bc285ca9a89680203d8ce2f0066f5335a8167d8.png)
SJMP
$
END
循环结构的例子
某外部接口准备好数据之后,将其内部状态寄存器最高有效位 置为1。若单片机无其他任务,而且必须得到这个数据后才能进 行下一步的处理,则应一直检查该接口,直到其准备好方可读 取数据
若该接口电路的状态寄存器地址为DEV_STA,数据输入寄存器 地址为DEV_DATA,可以使用以下的代码段实现上述功能
循环结构的例子
MOV WAIT:MOVX
JNB MOV MOVX …………
DPTR, #DEV_STA
A, @DPTR
;读入状态
ACC.7, WAIT;没有就绪
DPTR, #DEV_DATA;就绪
A, @DPTR
;输入数据
;后续处理
这种通过CPU主动读取接口状态与输入/输出接口进行同步的方 式称作查询式I/O,接口速度较慢时,CPU利用率很低
;表起始位置 ;序号
;乘以2 ;暂存
分支结构的例子
MOVC PUSH MOV MOVC PUSH RET BR_TAB: DW BR0: ………… BR1: ………… …………
A, @A+DPTR
;查表得低8位
ACC
;入栈
A, R1
A, @A+DPTR; 查表得高8转移
转移指令 根据数值内容的,通常使用累加器判零转移、间接转移指令 单分支、双分支结构,通常使用条件转移指令 多分支结构,通常使用间接转移指令
分支结构的例子
将内部RAM的30H、31H单元中用原码表示的一个16位有符号 数的补码求出,结果仍存入原处。31H中为高8位,30H中为高 8位
NUM16 MAIN:
顺序结构的例子
ADD DA MOV MOV ADDC DA MOV SJMP END
C51单片机汇编语言程序设计
![C51单片机汇编语言程序设计](https://img.taocdn.com/s3/m/591773e4112de2bd960590c69ec3d5bbfd0ada7b.png)
C51单片机汇编语言程序设计一、二进制数与十六进制数之间的转换1、数的表达方法为了方便编程时书写,规定在数字后面加一个字母来区别,二进制数后加B十六进制数后加H。
2、二进制数与十六进制数对应表二进制十六进二进制制0000000100100011010001010110011101234567100010011010101111001101 11101111十六进制89ABCDEF3、二进制数转换为十六进制数转换方法为:从右向左每4位二进制数转化为1位十六进制数,不足4位部分用0补齐。
例:将(1010000110110001111)2转化为十六进制数解:把1010000110110001111从右向左每4位分为1组,再写出对应的十六进制数即可。
0101000011011000111150D8F答案:(1010000110110001111)2=(50D8F)16例:将1001101B转化为十六进制数解:把10011110B从右向左每4位分为1组,再写出对应的十六进制数即可。
100111109E答案:10011110B=9EH4、十六进制数转换为二进制数转换方法为:将每1位十六进制数转换为4位二进制数。
例:将(8A)16转化为二进制数解:将每位十六进制数写成4位二进制数即可。
8A10001010答案:(8A)16=(10001010)2例:将6BH转化为二进制数解:将每位十六进制数写成4位二进制数即可。
6B01101011答案:6BH=01101011B二、计算机中常用的基本术语1、位(bit)计算机中最小的数据单位。
由于计算机采用二进制数,所以1位二进制数称作1bit,例如110110B为6bit。
2、字节(Byte,简写为B)8位的二进制数称为一个字节,1B=8bit3、字(Word)和字长两个字节构成一个字,2B=1Word。
字长是指单片机一次能处理的二进制数的位数。
如AT89S51是8位机,就是指它的字长是8位,每次参与运算的二进制数的位数为8位。
MCS—51单片机汇编语言程序IDE设计与实现
![MCS—51单片机汇编语言程序IDE设计与实现](https://img.taocdn.com/s3/m/a04c231f6edb6f1aff001f8e.png)
MCS—51单片机汇编语言程序IDE设计与实现作者:常冠宇丁栋来源:《数字技术与应用》2013年第05期摘要:单片机IDE是单片机开发必不可少的工具,目前的单片机IDE主要由国外的几大开发公司设计,本文使用VC++作为开发工具,设计出适用于MCS-51单片机汇编语言程序的IDE。
关键词:MCS-51 单片机汇编 IDE 编译器中图分类号:TP313 文献标识码:A 文章编号:1007-9416(2013)05-0029-011 单片机简介1.1 单片机介绍单片机是一种集成电路芯片,它将CPU、RAM、ROM、I/O接口、中断系统等等功能集成到一块硅片上,构成一个微型计算机系统,所以单片机也叫做微控制器。
在工业控制领域中,单片机具有非常重要的地位。
MCS-51单片机是一种8位单片机,虽然目前已经有32位单片机的出现,但8位单片机在很多行业中仍在被广泛使用,其性能较之以前也有巨大的提升。
1.2 单片机发展方向单片机发展有两个方向:(1)改进集成电路工艺,提高芯片速度。
(2)根据不同领域需要,在保留基本外设装置和公共指令的基础上,将不同的外设装置集成到芯片中。
(3)MCS-51单片机指令。
MCS-51单片机的指令系统功能强、指令短、执行的速度也快,一共有111条指令以及8条伪指令,可以从功能上将其划分为数据传送、逻辑操作、算术操作、程序移位操作等四大类;空间属性上来分,分为单字节指令、双字节指令和三字节指令;时间属性上来分,分为单机器周期指令、双机器周期指令和四机器周期指令。
MCS-51单片机的指令由操作码和操作数组成,操作数又有无操作数、单操作数、双操作数三种情况。
格式如下:【标号:】操作码助记符【目的操作数】【,源操作数】【.注释】。
伪指令不用计算机做任何操作,只是帮助汇编,不影响程序执行。
2 IDE简介2.1 IDE介绍IDE(Integrated Development Environment,集成开发环境),包括代码编辑器、编译器、调试器、用户界面等,是用于编程语言开发的应用程序。
MCS51系列单片机指令系统及汇编语言程序设计课件
![MCS51系列单片机指令系统及汇编语言程序设计课件](https://img.taocdn.com/s3/m/084a014de97101f69e3143323968011ca300f70b.png)
第7页,共52页。
6. 相对寻址
以当前程序计数器PC的内容为基址,加上指令给出的一 字节补码数形成新的PC值的寻址方式。PC中的当前值称为 基地址,一字节补码数称为偏移量,新的PC值称为转移目 的地址。
例如:JC 80H ;C=1跳转
INC Rn
INC DPTR
第16页,共52页。
减1指令(4条)
DEC A DEC dir DEC @Ri
DEC Rn
十进制调整指令(1条)
DA A ;把A中按二进制相加后的结果调整成按BCD数相加的结果
第17页,共52页。
3.逻辑操作类指令(共24条)
逻辑操作类指令共有24条,主要包括“与”、“或”、“异或”、求反、清0、左右 移位等逻辑操作。
中(1050H)=64H。
堆栈操作类指令(2条)
PUSH dir POP dir
例:SP=07H,(35H)=55H,指令PUSH 35H执行后,55H送入08H地址单元,SP= 08H。
第13页,共52页。
交换指令(5条)
XCH A,Rn
XCH A,@Ri
XCH A,dir XCHD A,@Ri SWAP A 例:A=80H,R0=32H,(32H)=FFH,指令XCHD A,@R0执行后,
寄存器间接寻址的存储器空间包括:内部数据RAM和外部数据RAM。
内部数据RAM共用128字节,用一个字节的R0或R1可寻址整个空间。
外部数据RAM最大可达64K字节,仅用R0或R1无法寻址整个空间。在MCS-51系列单片机指 令中,对外部数据RAM作间接寻址有两种方法:第一种由P2口提供高8位外部数据RAM地址,由 R0或R1提供低8位地址,由此共同寻址64K空间;第二种是用16位的DPTR作寄存器间接寻址。
第5章 MCS-51汇编语言程序设计
![第5章 MCS-51汇编语言程序设计](https://img.taocdn.com/s3/m/4bd193b4dd3383c4bb4cd2cb.png)
2
MCS-51单片机原理、接口及应用
第 5 章 MCS-51的汇编语言程序设计
(2) 汇编语言程序设计要求设计人员必须对所使用的 计算机的硬件结构有较为详细的了解。特别是对各类寄 存器、端口、定时器/计数器、中断等内容要熟悉,以便 在程序设计时能熟练使用。 汇编语言程序共有四种结构形式: 顺序结构、循环结构、分支结构和子程序结构。
21
MCS-51单片机原理、接口及应用
第 5 章 MCS-51的汇编语言程序设计
30pf 12M
18 X TA L2 19 X TA L1 P 0.0/AD0 P 0.1/AD1 P 0.2/AD2 P 0.3/AD3 P 0.4/AD4 P 0.5/AD5 P 0.6/AD6 P 0.7/AD7 P 2.0/A8 P 2.1/A9 P 2.2/A10 P 2.3/A11 P 2.4/A12 P 2.5/A13 P 2.6/A14 P 2.7/A15 P 3.0/RXD P 3.1/TXD P 3.2/IN T0 P 3.3/IN T1 P 3.4/T0 P 3.5/T1 P 3.6/W R P 3.7/RD 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17
第 5 章 MCS-51的汇编语言程序设计
27
MCS-51单片机原理、接口及应用
第 5 章 MCS-51的汇编语言程序设计 ORG X EQU Y EQU START: MOV JZ JNB MOV SJMP POSI: COMP: 4200H 40H 50H A, X COMP ACC.7, POSI A, # -1 COMP
第 5 章 MCS-51的汇编语言程序设计
MCS-51单片机应用设计课后答案[1]
![MCS-51单片机应用设计课后答案[1]](https://img.taocdn.com/s3/m/1d6c5146b307e87101f69654.png)
第一章单片机概述/item.htm?id=125325142831.2除了单片机这一名称之外,单片机还可称为(微控制器)和(嵌入式控制器)。
1.3单片机与普通计算机的不同之处在于其将(微处理器)、(存储器)和(各种输入输出接口)三部分集成于一块芯片上。
4、单片机的发展大致分为哪几个阶段?答:单片机的发展历史可分为四个阶段:第一阶段(1974年----1976年):单片机初级阶段。
第二阶段(1976年----1978年):低性能单片机阶段。
第三阶段(1978年----现在):高性能单片机阶段。
第四阶段(1982年----现在):8位单片机巩固发展及16位单片机、32位单片机推出阶段1.5单片机根据其基本操作处理的位数可分为哪几种类型?答:单片机根据其基本操作处理的位数可分为:1位单片机、4位单片机、8位单片机、16位单片机和32位单片机。
1.6 MCS-51系列单片机的基本芯片分别为哪几种?它们的差别是什么?答:基本芯片为8031、8051、8751。
8031内部包括1个8位cpu、128BRAM,21个特殊功能寄存器(SFR)、4个8位并行I/O口、1个全双工串行口,2个16位定时器/计数器,但片内无程序存储器,需外扩EPROM芯片。
8051是在8031的基础上,片内又集成有4KBROM,作为程序存储器,是1个程序不超过4KB的小系统。
8751是在8031的基础上,增加了4KB的EPROM,它构成了1个程序小于4KB的小系统。
用户可以将程序固化在EPROM中,可以反复修改程序。
1.7 MCS-51系列单片机与80C51系列单片机的异同点是什么?答:共同点为它们的指令系统相互兼容。
不同点在于MCS-51是基本型,而80C51采用CMOS工艺,功耗很低,有两种掉电工作方式,一种是CPU停止工作,其它部分仍继续工作;另一种是,除片内RAM继续保持数据外,其它部分都停止工作。
1.8 8051与8751的区别是(C)(A)内部数据存储单元数目的不同(B)内部数据存储器的类型不同(C)内部程序存储器的类型不同(D)内部的寄存器的数目不同1.9在家用电器中使用单片机应属于微型计算机的(B)(A)辅助设计应用(B)测量、控制应用(C)数值计算应用(D)数据处理应用1.10说明单片机主要应用在哪些领域?答:单片机主要运用领域为:工业自动化;智能仪器仪表;消费类电子产品;通信方面;武器装备;终端及外部设备控制;多机分布式系统。
MCS-51汇编语言程序设计
![MCS-51汇编语言程序设计](https://img.taocdn.com/s3/m/7d57daeb5fbfc77da269b1e0.png)
后面用片内RAM的60H单元的地方就可以用RESULT。
19
(9) XDATA伪指令
格式: 符号 XDATA 直接字节地址 该伪指令与DATA伪指令基本相同,只是它针对的是片 外RAM字节单元。
<标号: >也是选择项,当源程序为主程序时才具有,且其值 为主程序第1条指令的符号地址;当源程序不是主程序时, END命令不应带<标号: >项。
18
(8) DATA伪指令
格式: 符号 DATA 直接字节地址 功能:该伪指令用于给片内RAM字节单元地址赋予DATA 前面的符号,赋值后可用该符号代替DATA后面的片内RAM 字节单元地址。
JNB F0, $ 与如下指令是等价的:
HERE:JNB F0,HERE
8
5.2 伪指令
伪指令是告诉汇编程序,如何汇编源程序的指令。 不属于指令系统中的指令。
用来对汇编过程进行某种控制,或者对符号、标号 赋值。
只有在汇编前的源程序中才有伪指令。经过汇编 得到目标程序(机器代码)后,伪指令已无存在的必 要,所以“伪”体现在汇编时,伪指令没有相应的机 器代码产生。
目标程序
00 E6 FB 0B 80NEXT 08 B644NEXT 0A DBLOOP 8A2A 80FE
A82F 7A00 E6 FB 0B 8005 08 B64401 0A DBF9 8A2A 80FE
23
5.4 MCS-51汇编语言程序的基本结构 与设计举例
MOV R2,#00H MOV A,R0 MOV R3,A INC R3 SJMP NEXT LOOP:INC R0 CJNE R0,#44H,NEXT INC R2 NEXT:DJNZ R3,LOOP MOV 2AH,R2 SJMP $
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9
伪指令
1、起始地址伪指令 ORG ORG addr16 用于设定目标程序段或数据块的起始地址。 注意:地址从小到大,且不能重叠。 它放在一段源程序(主程序、子程序)或数据块 的前面,说明紧跟在其后的程序段或数据块的起始 地址就是伪指令中的16位绝对地址或用标号、表达 式表示的地址。一般默认从0000开始。 例如: ORG 2000H START: MOV A, #7FH … 它表明标号为START的目标程序是从2000H单元 开始存放的。
4、 注释段:注释指令或程序的含义,便于阅读程序、 维护程序。 必须用“;”隔开,续行时,也必须以“;”开头 。
7
基本语法规则4
美元符号$的使用 用于表示该转移指令操作码所在的地址。例如,如下 指令: JNB F0, $ 与如下指令是等价的: HERE:JNB F0,HERE
8
5.2 伪指令
伪指令是告诉汇编程序,如何汇编源程序的指令。 不属于指令系统中的指令。 用来对汇编过程进行某种控制,或者对符号、标号 赋值。 只有在汇编前的源程序中才有伪指令。经过汇编 得到目标程序(机器代码)后,伪指令已无存在的必 要,所以“伪”体现在汇编时,伪指令没有相应的机 器代码产生。 不同版本的汇编语言,基本用法类似,但稍有不同。
R3 NEXT
LOOP:INC
CJNE INC NEXT:DJNZ MOV SJMP
R0
@R0,#44H,NEXT R2 R3,LOOP 2AH,R2 $
100E
1010 1012
DBLOOP
8A2A 80FE
DBF9
8A2A 80FE
23
END
5.4 MCS-51汇编语言程序的基本结构 与设计举例
10
伪指令
(1)起始地址伪指令
格式: [标号: ] ORG 16位地址
功能:用于设定目标程序段或数据块的起始地址。注意: 地址从小到大,且不能重叠。它放在一段源程序(主程序、 子程序)或数据块的前面,说明紧跟在其后的程序段或数 据块的起始地址就是伪指令中的16位绝对地址或用标号、 表达式表示的地址。一般默认从0000开始。 例如: ORG 2000H START: MOV A, #7FH … 它表明标号为START的目标程序是从2000H单元开始存 放的。 11
ORG DS 8100H 08H
;从8100H地址开始,保留8个连续的地址单元
15
例如:
ORG 1000H DS DB 20H 30H, 8FH
… 1002H 1001H 1000H 1021H 1020H 101FH 8FH 30H
…
汇编后:从1000H开始,预留 32(20H)
个字节的内存单元,然后从1020H
5
基本语法规则2
3.操作数 可以采用字母或数字等多种表示形式。 操作数是立即数,可用二进制、十进制和十六进制形式: 十六进制,后缀“H” 。 二进制,后缀“B” 。 十进制,后缀“D”,也可省略。 若十六进制的操作数以字符A~F中的某个开头时, 则需在它前面加一个 “0”,以便在汇编时把它和字符 A~F区别开来。 注意数字前加“#”。 带加、减运算符的表达式: 例如:MOV A, #100-1
用汇编语言与用高级语言进行程序设计很相似。对于比 较复杂的问题可以先根据题目的要求作出流程图,然后 再根据流程图来编写程序。对于比较简单的问题则可以 不作流程因而直接编程。 两者的差别还是很大的。一个很重要的差别就在于用汇 编语言编程时,对于数据的存放位置,以及工作单元的 安排等都要由编程者自己安排。而用高级语言编程时, 这些问题都是由计算机安排的,编程者则不必过问。 主要知识点:顺序程序;分支程序;循环程序; 查表程序;子程序;运算程序 ;
; 超过两字节,不合法
;按顺序存入01H、00H、01H、0ACH、0FCH、0DCH
13
例如:
ORG
TAB2: 汇编以后: (1500H)=12H (1501H)=34H (1502H)=00H (1503H)=80H。 DW
1500H
1234H, 80H
1503H 1502H 1501H 1500H
3
5.1 汇编语言源程序的格式
MCS-51的汇编语言的四分段格式如下: 标号: 操作码 操作数;注释 • 规则: (1)标号字段和操作字码段之间要有冒号“:”相隔; (2)操作码字段和操作数字段间的分界符是空格; (3)多操作数之间用逗号相隔; (4)操作数字段和注释字段之间的分界符用分号“;”相 隔。 • 操作码字段为必选项,其余各段为任选项。 例如: START: MOV NOP A,#00H ;0→A
2008H 2007H 2006H 2005H 2004H 2003H 2002H 2001H 2000H 44H 43H 42H 61H 35H 49H 7FH 8AH 30H
12
2000H , 所 以 TAB1 的 地 址 为
2000H,因此以上伪指令经汇编以后,将对 2000H开始的若干内存单元赋值。
汇编语言源程序:用助记符和标号地址编写的程序。 汇编语言面向机器,要经过汇编。 高级语言 面向算法、过程、对象,类似自然语言,可移植 性好,须经解释或翻译后才能被执行。
2
汇编
汇编语言源程序 汇编 机器语言目标程序
汇编程序
汇编:将汇编语言源程序转换成机器语言目标程序的过 程称为汇编。(可人工汇编或机器汇编) 汇编程序:能将汇编语言源程序转换成机器语言目标程 序的软件称为汇编程序。(机器汇编)
;开始写主程序
25
程序设计的学习目标
理解程序结构(顺序、分支、循环、子程序); 熟练掌握程序设计的思路方法和技巧; 要求掌握典型算法; 找到分析问题和解决问题的着眼点; 学会抓住不同问题的规律性; 举一反三,独立思考,有创意,有新意,独到。
80H 00H 34H 12H
14
(4) 预留存储空间伪指令 DS
格式:
[ 标号: ]
DS
表达式
功能:用于从指定地址开始,在程序存储器中保留指定数目的字 节单元作为预留存储区,供程序运行使用。源程序汇编时,对 预留单元不赋值。 例如: ADDRTABL: DS 20
;从标号ADDRTABL代表的地址开始,预留20个连续的地址单元
24
程序框架
1. ORG 0000H 2. LJMP MAIN
;跳转至主程序
中断入口地址
3. ORG 0003H 4. LJMP INT0_INT ;跳转至外部中断0的中断服务程序
5. ORG 000BH 6. LJMP T0_INT
;跳转至定时器0的中断服务程序
7. ORG 0013H 8. LJMP INT1_INT ;跳转至外部中断1的中断服务程序 9. ••• 主程序开始 0030H 11.MAIN: ••• 12. END
(3)定义数据字伪指令 DW
格式:
[标号: ]
DW 16位数据表
功能:用于从指定地址开始,在程序存储器的连续单元中定义
16位的数据字。存放时,数据字的高8位在前(低地址),低 8位在后(高地址)。 例如, DW DW “AA” “A” ;存入41H,41H ;存入00H,41H
DW
DW
“ABC”
100H, 1ACH, -804
第五章
51单片机汇编语言程序设计
5.1 汇编语言源程序的格式 5.2 伪指令
5.3 汇编语言源程序的人工汇编
5.4 MCS-51汇编语言程序的基本结构
与设计举例
1
引言
计算机能够直接执行的是:0和1组成的机器码指令程序。 上一章在讲解指令时的程序,其特点是:
.
1、指令是采用助记符,而不是用机器码表示; 2、地址是采用标号地址(符号地址),而不是真正的实际 地址。
(2)定义字节伪指令 DB
格式:
[标号: ]
DB
8位数据表
功能:用于从指定的地址开始,在程序存储器的连续单元中定义
字节数据。<8位数表>可以是一字节常数或字符,或用逗号分
开的字节串,或用引号括起来的字符串。 例如: TAB1: ORG DB DB 由 于 ORG 2000H 30H, 8AH, 7FH, 73 ‘5’, ‘a’, ‘BCD’
6
基本语法规则3
对于直接地址direct,有多种选择: (1)直接数据地址(各种进制),如MOV A、30H等; (2)标号地址,如MOV A,SUM等, SUM应该在程序中 某处加以定义; (3)带有加减的表达式,设SUM为已定义的标号地址, 如MOV A,SUM十13; (4)特殊功能寄存器名,如MOV A,P2等。
20
判断正误
ORG 0000 LEN1 DATA 31H LEN2 EQU 32H MOV A, LEN1+1 MOV B,LEN2+1 MOV R1,#LEN1 MOV R2,#LEN2 MOV R2,#LEN2+LEN1 ;CNT1 DATA R5 CNT2 EQU R6 ;CNT EQU ADD MOV R3,#LEN1+1 MOV R4,#LEN2+1 MOV DPTR,#TOEND TOEND:SJMP $ LEN1 DATA 31H LEN2 EQU 32H END
目பைடு நூலகம்程序
地址
1000 1002 1004 1005 1006 1007 1009 100A 100D
第一次汇编
A82F 7A00 E6 FB 0B 80NEXT 08 B644NEXT 0A
第二次汇编
A82F 7A00 E6 FB 0B 8005 08 B64401 0A
MOV
INC SJMP
R3,A
21
不能重复定义!! 不必先定义。
5.3 汇编语言源程序的人工汇编