8085 微处理器中的 8085 地址寻址方式
使用助记符,无需更改内容,数据可以在三种不同的情况下传输:
从一个寄存器到另一个寄存器
从内存到寄存器,以及
从寄存器到内存
这些都可以由寻址方式指导。8085 中的寻址方式可以分为 5 组:
立即寻址方式
寄存器寻址方式
直接寻址方式
间接寻址方式
隐含寻址方式
立即寻址方式
在这种模式下,8/16 位数据作为操作数之一在指令本身中指定。例如,MVI E, ABH 表示将 ABH 复制到寄存器 A。
MVI E ABH
之前 | 之后 | |
---|---|---|
(A) | 任何值 | ABH |
例如,如果我们考虑指令 **MVI E, ABH**,则表示 ABH 将被移动或复制到寄存器 E。结果,E 的先前值将被覆盖。
地址 | 十六进制代码 | 助记符 | 注释 |
---|---|---|---|
2000 | 1E | MVI E, ABH | E ← ABH |
2001 | AB | ABH 作为操作数 |
此指令将具有以下所示的七个 T 状态。
**总结** - 所以这条指令 **MVI E, ABH** 需要 2 个字节,2 个机器周期(操作码获取和内存读取)以及 7 个 T 状态才能执行,如定时图所示。
寄存器寻址方式
在这种模式下,数据从一个寄存器复制到另一个寄存器。例如,MOV A, B:表示寄存器 B 中的数据被复制到寄存器 A。
MOV E, H
它在内存中只占用 1 个字节。**MOV E, H** 是这种类型的示例指令。它是一个 1 字节指令。假设 E 寄存器内容为 AB H,H 寄存器内容为 9C H。当 8085 执行此指令时,E 寄存器的内容将更改为 9C H。如下所示。
之前 | 之后 | |
---|---|---|
(E) | ABH | 9CH |
(H) | 9CH | 9CH |
地址 | 十六进制代码 | 助记符 | 注释 |
---|---|---|---|
2004 | 5C | MOV E, H | E ← H |
请注意,H 寄存器的內容根本没有改变。虽然英特尔将其称为“移动”指令,但在现实中,它似乎是“复制”指令。
MOVE, H 指令的定时图如下:
**总结** - 所以这条指令 **MOV E, H** 需要 1 个字节,1 个机器周期(操作码获取)和 4 个 T 状态才能执行,如定时图所示。
直接寻址方式
在这种模式下,数据直接从给定地址复制到寄存器。例如,LDA 3000H:表示地址 3000H 的数据被复制到寄存器 A。
LDA 4050H
让我们考虑 **LDA 4050H** 作为这种类型的示例指令。它是一个 3 字节指令。内存地址 4050H 的初始内容是 ABH。累加器的初始内容是 CDH。执行后,A 将被初始化为 ABH 值。内存位置 4050H 的内容仍然是 ABH。此指令执行的结果如下:
之前 | 之后 | |
---|---|---|
(4050) | ABH | ABH |
A | CDH | ABH |
地址 | 十六进制代码 | 助记符 | 注释 |
---|---|---|---|
2008 | 3A | LDA 4050H | A ← 内存位置 4050H 的内容 |
2009 | 50 | 地址的低位字节 | |
200A | 40 | 地址的高位字节 |
以下是指令 **LDA 4050H** 的定时图:
**总结** - 所以这条指令 **LDA 4050H** 需要 3 个字节,4 个机器周期(操作码获取、内存读取、内存读取、内存读取)以及 13 个 T 状态才能执行,如定时图所示。
间接寻址方式
在这种模式下,数据通过使用寄存器指向的地址从一个寄存器传输到另一个寄存器。例如,MOV A, M:表示数据从寄存器对 HL 指向的内存地址传输到寄存器 A。
MOV E, M
它在内存中只占用 1 个字节。**MOV E, M** 是这种类型的示例指令。它是一个 1 字节指令。假设 E 寄存器内容为 DBH,H 寄存器内容为 40H,L 寄存器内容为 50H。假设位置 4050H 的数据值为 AAH。当 8085 执行此指令时,E 寄存器的內容将更改为 AAH,如下所示:
之前 | 之后 | |
---|---|---|
(E) | DBH | AAH |
(HL) | 4050H | 4050H |
(4050H) | AAH | AAH |
地址 | 十六进制代码 | 助记符 | 注释 |
---|---|---|---|
2008 | 2A | MOV E, M | E ← HL 寄存器对指向的内存位置的内容 |
此 **MOV E, M** 指令的定时图如下:
**总结** - 所以这条指令 **MOV E, M** 需要 1 个字节,2 个机器周期(操作码获取、内存读取)以及 7 个 T 状态才能执行,如定时图所示。
隐含寻址方式
此模式不需要任何操作数;数据由操作码本身指定。例如:CMA、CMP。
CMP E
让我们考虑一个属于此类别的示例指令 CMPE。它是一个 1 字节指令,因此在执行此指令期间,它在内存中将只占用一个字节。此指令执行的结果已通过以下示例集进行了描述:
示例 1
之前 | 之后 | |
---|---|---|
(A) | 50H | 50H |
(E) | 70H | 70H |
(临时) | 任何值 | E0H |
(F) | 任何值 | Cy=1,AC=0,S=1,P=0,Z=0 |
示例 2
之前 | 之后 | |
---|---|---|
(A) | 70H | 70H |
(E) | 50H | 50H |
(临时) | 任何值 | 20H |
(F) | 任何值 | Cy=0,AC=0,S=0,P=0,Z=0 |
示例 3
之前 | 之后 | |
---|---|---|
(A) | 50H | 50H |
(E) | 50H | 50H |
(临时) | 任何值 | 00H |
(F) | 任何值 | Cy=0,AC=0,S=0,P=1,Z=1 |
地址 | 十六进制代码 | 助记符 | 注释 |
---|---|---|---|
2004 | BB | CMP E | Temp = 寄存器 A - 寄存器 E |
此指令 **CMP** 执行的定时图如下:
**总结** - 所以这条指令 **CMP E** 需要 1 个字节,1 个机器周期(操作码获取)以及 4 个 T 状态才能执行,如定时图所示。