8085微处理器的指令集分类

INTEL 8085具有非常丰富的指令集。它可以执行各种指令。所有这些说明可以大致分类如下-

描述操作码数量指令类型数
数据传输指令8313MOV, MVI etc.
算术指令6214ADD, SUB etc.
逻辑指令4315AND, XOR etc.
堆栈指令159PUSH, POP etc.
分支指令368JMP, JZ etc.
I / O指令22IN, OUT etc.
中断指令55RST 0, RST 1 etc.
总计24666

下表显示了控制指令及其含义的列表。

操作码操作数含义说明
NOP
没有
无操作
不执行任何操作,即仅提取和解码指令。
HLT
没有
暂停并进入等待状态
CPU完成当前指令的执行并停止进一步执行。要退出暂停状态,必须进行中断或复位。
DI
没有
禁用中断
中断使能触发器被复位,除TRAP之外的所有中断均被禁止。
EI
没有
启用中断
设置了中断使能触发器并启用了所有中断。
RIM没有
读取中断掩码该指令用于读取中断7.5、6.5、5.5的状态并读取串行数据输入位。
SIM没有
设置中断掩码该指令用于实现中断7.5、6.5、5.5和串行数据输出。

下表列出了逻辑指令及其含义。

操作码操作数含义说明
CMP
R
M
将寄存器或存储器与累加器进行比较
与累加器的内容相比,操作数(寄存器或存储器)的内容为M。
CPI8位数据
立即与累加器进行比较
将第二个字节数据与累加器的内容进行比较。
ANAR
M
累加器的逻辑AND寄存器或存储器
累加器的内容在逻辑上与寄存器或存储器的内容与M进行“与”运算,并将结果放入累加器中。
ANI
8位数据
逻辑和即时与累加器
累加器的内容与8位数据进行逻辑与运算,结果存储在累加器中。
XRA
R
M
累加器的异或寄存器或存储器
累加器的内容与寄存器或存储器的内容与M互斥或,结果存入累加器。
XRI
8位数据
与累加器互斥或立即
累加器的内容与8位数据进行异或运算,结果存储在累加器中。
ORAR
M
累加器的逻辑或寄存器或存储器
累加器的内容在逻辑上与寄存器或存储器的内容与M或,结果存入累加器。
ORI
8位数据
逻辑或立即与累加器
累加器的内容与8位数据进行逻辑或运算,结果存储在累加器中。
RLC
没有
向左旋转蓄能器
累加器的每个二进制位向左旋转一个位置。D7位放置在D0的位置以及进位标志中。CY根据位D7修改。
RRC
没有
向右旋转蓄能器
累加器的每个二进制位向右旋转一个位置。D0位放置在D7的位置以及进位标志中。CY根据位D0修改。
RAL
没有
向左旋转累加器
累加器的每个二进制位通过进位标志向左旋转一个位置。D7位放置在进位标志中,而进位标志放置在最低有效位置D0中。CY根据位D7修改。
RAR
没有
向右旋转累加器
累加器的每个二进制位通过进位标志向右旋转一个位置。D0位放置在进位标志中,而进位标志放置在最高有效位D7中。CY根据位D0修改。
CMA
没有
补余累加器
累加器的内容得到补充。没有标志受影响。
CMC
没有
补码
进位标志是互补的。其他标志均不受影响。
STC
没有
设定进位
设定进位
下表显示了数据传输指令及其含义的列表。
操作码操作数含义说明
MOVRd,Sc
M,Sc
Dt,M
从源(Sc)复制到目标(Dt)
该指令将源寄存器的内容复制到目标寄存器,而无需进行任何更改。
示例 -MOV H,L
MVI
Rd, data
M, data
立即移动8位
8位数据存储在目标寄存器或存储器中。
示例 -MVI B,55H
LDA
16位地址
加载蓄能器
由操作数中的16位地址指定的存储位置的内容将复制到累加器。
示例 -LDA 2034H
LDAX
B/D Reg. pair间接加载累加器
指定的寄存器对的内容指向一个存储位置。该指令将该存储器位置的内容复制到累加器中。
示例 -LDAX B
LXIReg. pair 16位数据
立即加载寄存器对
该指令将16位数据加载到寄存器或存储器中指定的寄存器对中。
示例 -LXI B,3225H
LHLD白
16位地址
直接加载H和L寄存器
该指令将地址指出的存储位置的内容复制到寄存器L中,并将下一个存储位置的内容复制到寄存器H中。
示例 -LHLD 3225H
STA
16位地址
16位地址
累加器的内容被复制到操作数指定的存储位置。
这是一个3字节的指令,第二个字节指定低位地址,第三个字节指定高位地址。
示例 -STA AB00H
STAX16位地址
间接存储累加器
累加器的内容被复制到由操作数的内容指定的存储位置。
示例 -STAX 4050H
SHLD
16位地址
直接存储H和L寄存器
寄存器L的内容存储在操作数中16位地址指定的存储位置中,而H寄存器的内容通过增加操作数存储在下一个存储位置中。
这是一个3字节的指令,第二个字节指定低位地址,第三个字节指定高位地址。
示例 -SHLD 3225H
XCHG
没有
用D和E交换H和L
寄存器H的内容与寄存器D的内容交换,而寄存器L的内容与寄存器E的内容交换。
示例 -XCHG
SPHL没有
将H和L寄存器复制到堆栈指针
该指令将H和L寄存器的内容加载到堆栈指针寄存器中。
H寄存器的内容提供高位地址,L寄存器的内容提供低位地址。
示例 -SPHL
XTHL
没有
用堆栈顶部交换H和L
L寄存器的内容与堆栈指针寄存器的内容指出的堆栈位置交换。
H寄存器的内容与下一个堆栈位置(SP + 1)交换。
示例 -XTHL
PUSH
Reg. pair将寄存器对推入堆栈
按以下顺序将操作数中指定的寄存器对的内容复制到堆栈中。
堆栈指针寄存器递减,并将高阶寄存器(B,D,H,A)的内容复制到该位置。
堆栈指针寄存器再次递减,低位寄存器的内容(C,E,L,标志)被复制到该位置。
示例 -PUSH B
POP
Reg. pair弹出堆栈到寄存器对
堆栈指针寄存器指出的存储器位置的内容被复制到操作数的低位寄存器(C,E,L,状态标志)。
堆栈指针加1,然后将该存储单元的内容复制到操作数的高位寄存器(B,D,H,A)。
堆栈指针寄存器再次加1。
示例 -POP B
OUT
8位端口地址
将数据从累加器输出到具有8位地址的端口
累加器的内容被复制到操作数指定的I / O端口中。
示例 -OUT 01H
IN8位端口地址
从具有8位地址的端口向累加器输入数据
读取操作数中指定的输入端口的内容,并将其加载到累加器中。
示例-IN 04H