📜  机器指令的类型

📅  最后修改于: 2022-05-13 01:57:01.299000             🧑  作者: Mango

机器指令的类型

概述 :
根据执行的操作,机器指令可以分为以下几种:

  • 数据传输说明。
  • 数据操作指令(计算):算术和逻辑指令。
  • 程序控制指令。

1. 数据传输说明:

将数据从一个位置(寄存器/内存)传输到另一个位置(寄存器/内存)而不更改数据的指令。支持的数据传输操作如下:

  • LOAD :数据从内存传输到寄存器。
  • STORE :数据从寄存器传输到内存。
  • MOVE:数据从寄存器传输到寄存器。
  • IN :将数据从输入设备传输到寄存器。
  • OUT :将数据从寄存器传输到输出设备。
  • PUSH :从寄存器或内存中获取数据到栈顶。
  • POP :从栈顶获取数据到内存或寄存器。
  • XCHG:在内存和寄存器之间交换数据。

2.数据操作说明

  • 算术说明:
    执行算术运算,例如加法、减法、乘法、除法、递增、递减等。
    示例: ADD、SUB、MUL、DIV、INC、DEC 等。
  • 逻辑指令:
    执行按位逻辑运算,例如 AND、OR、Exclusive-OR、NOT、移位、循环等。
    例子 : AND、OR、NOT、XOR、SHL、SHR、ROL、ROR 等。
  • 算术和逻辑指令:
    执行算术左移、算术右移等操作。
    例子 : SAL、SAR 等

3.程序控制说明:

-> 比较测试指令:要比较和测试状态标志,我们需要条件代码寄存器的支持。条件代码寄存器 (CCR)具有以下标志位:

(i) 5 个状态位:指示算术和逻辑运算后的情况。

  • 进位标志(C):表示加法进位,减法借位
  • 溢出标志 (V):当运算结果超出可表示的范围时,CPU 将“V”标志设置为逻辑“1”。
  • 负标志(N):也称为标志标志。指示先前的结果是负数还是正数。
  • 半进位 (H) :仅用于 BCD(二进制编码十进制)操作。
  • 零标志 (Z):当结果为“0”时,Z 位设置为逻辑“1”,否则 Z=0。请注意,零是正数

(ii) 两个中断屏蔽位

(iii) 一站式禁用位

-> 无条件分支指令:它导致执行顺序无条件更改到新位置。示例: JUMP、goto 等。

-> 条件分支指令:这些指令用于检查存储在条件代码寄存器中的值以确定特定代码是否存在,如果存在则分支。例子 :

  • BL – 分支小于 – (<)
  • BGE – 分支大于等于 – (>=)
  • BNE – 如果不相等则分支 – (!=) 等。

-> 子程序:它是一个程序片段,存在于用户空间中,如果它被另一个用户程序调用,则执行一个定义明确的任务,并在完成时将控制权返回给调用程序。示例: CALL、RET 指令。子程序用于:

  • 常用代码段
  • 库例程

-> 停止和中断指令:它们如下 -

1. NOP指令:
意味着没有操作,除了程序计数器的推进外,不会导致处理器状态发生变化。它可以用来同步时间。

2. HALT指令:
它使处理器有序停止,保持空闲状态,直到通过中断、跟踪、重置或外部操作重新启动。

3. 中断指令:
它是一种机制,通过该机制,I/O 或指令可以暂停处理器的正常执行并使其自身得到服务。通常,将特定任务分配给该中断信号。在微处理器中,中断用于外围设备和微处理器之间的数据传输。说明是——

  • 重启 -
    它复位处理器,这可能包括将任何或所有寄存器设置为初始值,将程序计数器设置为初始位置,清除或设置中断,以及向外部设备发送复位信号。
  • 陷阱 -
    它是不可屏蔽和边沿触发的中断。 TRAP 在向量中断中具有最高优先级。在突然断电的情况下,它会执行 ISR 并将数据从主存储器发送到备份存储器。它可以使用 HOLD 信号延迟。它们可以通过复位微处理器来屏蔽。他们没有其他方法可以掩盖它。
  • 内部 –
    这是一个电平触发和可屏蔽中断。收到指令后,CPU 将下一条指令的地址保存在堆栈中并执行接收到的指令。它的优先级最低。它可以通过复位微处理器或通过 DI/SIM 指令来禁用。