INTEL 8085具有非常丰富的指令集。它可以执行各种指令。所有这些说明可以大致分类如下-
描述 | 操作码数量 | 指令类型数 | 例 |
---|---|---|---|
数据传输指令 | 83 | 13 | MOV, MVI etc. |
算术指令 | 62 | 14 | ADD, SUB etc. |
逻辑指令 | 43 | 15 | AND, XOR etc. |
堆栈指令 | 15 | 9 | PUSH, POP etc. |
分支指令 | 36 | 8 | JMP, JZ etc. |
I / O指令 | 2 | 2 | IN, OUT etc. |
中断指令 | 5 | 5 | RST 0, RST 1 etc. |
总计 | 246 | 66 |
下表显示了控制指令及其含义的列表。
操作码 | 操作数 | 含义 | 说明 |
---|---|---|---|
NOP | 没有 | 无操作 | 不执行任何操作,即仅提取和解码指令。 |
HLT | 没有 | 暂停并进入等待状态 | CPU完成当前指令的执行并停止进一步执行。要退出暂停状态,必须进行中断或复位。 |
DI | 没有 | 禁用中断 | 中断使能触发器被复位,除TRAP之外的所有中断均被禁止。 |
EI | 没有 | 启用中断 | 设置了中断使能触发器并启用了所有中断。 |
RIM | 没有 | 读取中断掩码 | 该指令用于读取中断7.5、6.5、5.5的状态并读取串行数据输入位。 |
SIM | 没有 | 设置中断掩码 | 该指令用于实现中断7.5、6.5、5.5和串行数据输出。 |
下表列出了逻辑指令及其含义。
操作码 | 操作数 | 含义 | 说明 |
---|---|---|---|
CMP | R M | 将寄存器或存储器与累加器进行比较 | 与累加器的内容相比,操作数(寄存器或存储器)的内容为M。 |
CPI | 8位数据 | 立即与累加器进行比较 | 将第二个字节数据与累加器的内容进行比较。 |
ANA | R M | 累加器的逻辑AND寄存器或存储器 | 累加器的内容在逻辑上与寄存器或存储器的内容与M进行“与”运算,并将结果放入累加器中。 |
ANI | 8位数据 | 逻辑和即时与累加器 | 累加器的内容与8位数据进行逻辑与运算,结果存储在累加器中。 |
XRA | R M | 累加器的异或寄存器或存储器 | 累加器的内容与寄存器或存储器的内容与M互斥或,结果存入累加器。 |
XRI | 8位数据 | 与累加器互斥或立即 | 累加器的内容与8位数据进行异或运算,结果存储在累加器中。 |
ORA | R 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 | 没有 | 设定进位 | 设定进位 |
操作码 | 操作数 | 含义 | 说明 |
---|---|---|---|
MOV | Rd,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 |
LXI | Reg. pair 16位数据 | 立即加载寄存器对 | 该指令将16位数据加载到寄存器或存储器中指定的寄存器对中。 示例 -LXI B,3225H |
LHLD白 | 16位地址 | 直接加载H和L寄存器 | 该指令将地址指出的存储位置的内容复制到寄存器L中,并将下一个存储位置的内容复制到寄存器H中。 示例 -LHLD 3225H |
STA | 16位地址 | 16位地址 | 累加器的内容被复制到操作数指定的存储位置。 这是一个3字节的指令,第二个字节指定低位地址,第三个字节指定高位地址。 示例 -STA AB00H |
STAX | 16位地址 | 间接存储累加器 | 累加器的内容被复制到由操作数的内容指定的存储位置。 示例 -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 |
IN | 8位端口地址 | 从具有8位地址的端口向累加器输入数据 | 读取操作数中指定的输入端口的内容,并将其加载到累加器中。 示例-IN 04H |