- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MOV A, # 3AH
MOV DPTR, # 0DFFFH
上述两条指令均为立即寻址方式, 第一条指令的功能是将 立即数 3AH送累加器A中, 第二条指令的功能是将立即数 0DFFFH送数据指针DPTR中(0DFH→DPH, 0FFH→DPL)。
2. 直接寻址
在指令中直接给出操作数的地址, 这种寻址方式就属于直 接寻址方式。在这种方式中, 指令的操作数部分直接是操作数 的地址。
MOVC A, @ A+PC JMP @A+DPTR;散转指令
6. 相对寻址
在MCS -51 指令系统中设有转移指令, 分为直接转移 和相对转移指令, 在相对转移指令中采用相对寻址方式。 这种寻址方式是以PC的内容为基本地址, 加上指令中给定 的偏移量作为转移地址。指令中给出的偏移量是一个 8 位 带符号的常数, 可正可负, 其范围为-128~+127。
在 MCS -51单片机指令系统中, 有以下 7种寻址方式: (1) 立即寻址; (2) 直接寻址; (3) 寄存器寻址; (4) 寄存器间接寻址; (5) 基址寄存器加变址寄存器间接寻址; (6) 相对寻址; (7) 位寻址。
1. 立即寻址
立即寻址方式是指操作数包含在指令字节中。 跟在指令 操作码后面的数就是参加运算的数, 该操作数称为立即数。 立即数有一字节和二字节两种可能, 例如指令:
3.1 寻址方式
所谓寻址方式, 就是寻找操作数地址的方 式, 在用汇编语言编程时, 数据的存放、传送、 运算都要通过指令来完成。 编程者必须自始 至终都要十分清楚操作数的位置, 以及如何将 它们传送到适当的寄存器去参与运算。每一 种计算机都具有多种寻址方式。寻址方式的 多少是反映指令系统优劣的主要指标之一。
三个区段都可有可无 例:START: MOV A, #30H ;This is a sample
CLR A ;下子程序完成双字节乘法
四、描述指令的一些符号的意义:
Rn——当前选定的寄存器区中的 8 个工作寄存器R0~R7, 即n=0~7。
Ri——当前选定的寄存器区中的 2 个寄存器R0、 R1, i=0、 1。
在MCS -51 单片机指令系统中, 直接寻址方式中可以访问 3 种存储器空间:
(1) 内部数据存储器的低 128 个字节单元(00H~7FH)。
(2) 特殊功能寄存器。 特殊功能寄存器只能用直接寻址方 式进行访问。
(3) 位地址空间。
3. 寄存器寻址
在该寻址方式中, 参加操作的数存放在 寄存器里。寄存器包括8个工作寄存器R0~ R7, 累加器A, 寄存器B、数据指针DPTR和 布尔处理器的位累加器Cy。
bit——内部数据RAM或特殊功能寄存器中的可直接寻 址位。
DPTR——数据指针, 可用作 16 位的地址寄存器。
A ——累加器。 B ——寄存器, 用于 MUL和 DIV指令中。 C ——进位标志或进位位。 @ —— 间 接 寻 址 寄 存 器 或 基 址 寄 存 器 的 前 缀 , 如 @Ri,@DPTR。 / ——位操作数的前缀, 表示对该位取反。 (X)—— X中的内容。 ((X))——由 X寻址的单元中的内容。 ← ——箭头左边的内容被箭头右边的内容所代替。
7. 位寻址
该种寻址方式中, 操作数是内部RAM单元中某一位的 信息。
3.2 指令系统
3.2.1 指令分类
按指令的功能, MCS -51 指令系统可分为下列 5 类: (1) 数据传送; (2) 算术运算; (3) 逻辑运算; (4) 位操作; (5) 控制转移。
3.2.2 数据传送类指令
1)内部RAM单元之间的数据传送
MOV
目的操作数, 源操作数
图 3 –1 MCS -51传送指令示意图
Байду номын сангаас
表 3.1 数据传送类指令一览表
注意:
没有MOV R2,R1 MOV R2,@R1 MOV @R0,@R1指令。
只能在指令集中选择合适的指令,不能自己创造 指令
表 3.1 数据传送类指令一览表
1. 数据传送到累加器A的指令 MOV A, R0 MOV A, direct MOV A, @Ri MOV A, #data 这组指令的功能是:把源操作数的内容送入累加器A。 例如: MOV A, #10H, 该指令执行时将立即数 10H送入累 加器A中。
微机原理
三、汇编语言程序每行的标准格式: [标号:] 操作码 [操作数] [;注释]
标号代表该指令所存放的第一个字节存储单元的地 址,故标号又称为“符号地址”。必须以冒号结束。 不能用指令、SFR名。其他语句可直接应用标号。 操作码也称“助记符”。表达指令功能 操作数表达指令对象。可以是数字或地址 指令 注释必须以分号开头,汇编时不处理。增强可读性
addr11——11位的目的地址, 用于AJMP, ACALL指令。 目的地址必须与下一条指令的第一个字节在同一个 2 KB程 序存储器地址空间之内。
rel—— 8 位带符号的偏移量字节, 用于SJMP和所有条 件转移指令中。 偏移量相对于下一条指令的第一个字节计 算, 在-128~+127 范围内取值。
2. 数据传送到工作寄存器Rn的指令
direct—— 8 位内部RAM单元的地址, 它可以是一个内部 数据区 RAM单元(00H~7FH)或特殊功能寄存器地址(I / O端口、 控制寄存器、 状态寄存器 80H~0FFH)。
#data——指令中的 8 位常数。 #data16——指令中的 16 位常数。 addr16——16 位的目的地址, 用于LJMP, LCALL指令, 可
4. 寄存器间接寻址
指令中给出间接寻址寄存器,其内容为操作数的地址。寻址 内部RAM区的数据时,可使用寄存器R0、R1 、 (SP)作为地址 指针; 当访问外部RAM时, 可使用R0、 R1及DPTR作为地址指针。 寄存器间接寻址符号为“@”, 例如:
5. 基址寄存器加变址寄存器间接寻址
这种寻址方式用于访问程序存储器中的数据表 格, 它以基址寄存器DPTR或PC的内容为基本地址, 加上变址寄存器A的内容作为操作数的地址, 例如: MOVC A, @A+DPTR