1 / 119
文档名称:

第3章 单片机汇编程序设计.ppt

格式:ppt   页数:119
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第3章 单片机汇编程序设计.ppt

上传人:企业资源 2012/2/3 文件大小:0 KB

下载得到文件列表

第3章 单片机汇编程序设计.ppt

文档介绍

文档介绍:MCS-51系列单片机汇编指令
MCS-51系列单片机从功能上可分成五大类:数据传送指令、算术运算指令、逻辑操作指令、控制转移指令和位操作指令。
指令格式
[标号:] 操作码助记符[目的操作数][,源操作数] [;注释]
ABCD: ADD A,#08H
ADD A,#08H
ABCD: ADD A,#08H ;这是一条加法指令
操作码助记符表明指令的功能,一般用说明其功能的英文单词的缩写形式表示
操作数用于给指令的操作提供数据
标号是该指令的符号地址,后面须带冒号
注释是对该指令的解释,前面须带分号
指令中用到的符号的含义
MCS-51单片机指令中常用符号的意义
Ri和Rn:R表示当前工作寄存器区中的工作寄存器,当前工作寄存器的选定是由PSW的RS1和RS0位决定的。
i = 0 或 1,即R0和R1,可用作间接寻址的寄存器***@Ri。
n = 0 ~ 7,即R0 ~ R7,当前工作寄存器组的8个寄存器。
#data: #表示立即数,data为8位常数。#data是指包含在指令中的8位立即数。
#data16: 包含在指令中的16位立即数。
ADD A,Rn
ADD A,***@Ri
P42
ADD A,#data
3
rel:相对地址。以补码形式表示的8位地址偏移量,范围为-128 ~ +127,主要用于无条件相对短转移指令SJMP和所有的条件转移指令中。
addr16:16位目的地址。目的地址可在全部程序存储器的64KB空间范围内,主要用于无条件长转移指令LJMP和子程序长调用指令LCALL中。
addr11:11位目的地址。目的地址应与下条指令处于相同的2KB程序存储器地址空间范围内,主要用于绝对转移指令AJMP和子程序绝对调用指令ACALL指令中。
MCS-51单片机指令中常用符号的意义
direct:表示直接寻址的地址,即内部数据存储器RAM单元的8位地址(0 ~ 127 或 0 ~ 255)或特殊功能寄存器SFR的地址。对于SFR可直接用其名称来代替其直接地址。
bit:位地址,指内部RAM和特殊功能寄存器SFR中可的直接寻址的位地址。
@:间接寻址寄存器的前缀标志,如***@Ri,***@DPTR,表示寄存器间接寻址。
MCS-51单片机指令中常用符号的意义
(X):表示某寄存器或某单元X中的内容。
((X)):表示由X间接寻址的单元中的内容,即(X)作地址,该地址的内容用((X))表示。
/ :表示对该位操作数取反,但不影响该位的原值。
←:表示指令操作流程,将箭头右边的内容送入箭头左方所指的寄存器或单元中去。
←→:表示将箭头双方的内容相互交换。
MCS-51单片机指令中常用符号的意义
MCS-51系列单片机寻址方式
寻址方式:指定操作数存放位置的方法。
MCS-51单片机操作数的寻址方式
立即寻址
寄存器寻址方式
直接寻址方式
寄存器间接寻址方式
变址寻址方式
位寻址方式
绝对寻址
相对寻址
MCS-51单片机指令的寻址方式
操作数在指令中直接给出(立即数),作为指令的一部分与操作码一起存放在ROM内,取指后即得到操作数本身,不需要另外去寄存器或存储器等处寻找和取数。
立即寻址方式主要用来给寄存器或存储单元赋初值,并且只能用作源操作数,不能用作目的操作数。
例如: MOV A, #70H ;A ←70H
MOV DPTR, #8200H ;DPH←82H,DPL←00H
立即寻址方式
74H
30H
n
n+1
ROM
累加器A
MOV A,#30H 指令执行流程
90H
20H
00H
ROM
DPTR
MOV DPTR,#2000H 指令的存储和执行
MOV A,#30H ;将(8位)立即数送累加器A
MOV DPTR,#2000H ;16位立即数送DPTR寄存器
寄存器数寻址(寄存器寻址)
寄存器的内容作为操作数,从该寄存器中读取或存放操作数
MOV A,R7 ;将寄存器R7中的内容送累加器A中。
MOV 20H,R0 ;将寄存器R0中的数据送内存20H单元
INC R1 ;将寄存器R1中的内容加一
ADD A,R3 ;A的内容与寄存器R3的内容相加送A
1 1 1 0 1 r r r
操作码
寄存器代码
E8H~EFH
MOV A,Rn
寄存器寻址方式的指令大多是单字节指令
寄存器寻址方式的寻址范围:
工作寄存器:4组共32个工作寄存器,但寄存器寻址只能使用当前寄存器组,因此指令中的寄存器名只能是R0 ~ R7。当前工作寄存器组通过PSW中RS1、RS0位状态确定。
部分特殊功能寄存器:如累加器A、寄存器B、数据指针DPTR、位累加器CY