LaTeX 渲染有问题。将就着看吧。

# 指令

指令是计算机处理的最基本单位

操作码(指令执行的内容)+ 操作数(要操作的对象)

多周期实现方案

  • 取指令

  • 译码 / 取寄存器

  • 执行 / 有效地址 / 完成分支

  • 访问内存,存储结果

要素:

  • 操作码

  • 源操作数引用

  • 结果操作数引用

  • 下一指令引用

# 指令格式

# 扩展操作码

不同地址数的指令具有不同长度的操作码

849b68ccb8402d2588526f25cb5f9d30.png

怎么区分?看最前面有多少个 1.

例题:

假设指令字长为 16 位,操作数的地址码为 6 位,指令有零地址、一地址、二地址 3 种格式。

  1. 设操作码固定,若零地址指令有 M 种,一地址指令有 N 种,则二地址指令最多有几种?

    由于操作码固定,最多有二地址,则 16 - 6 * 2 = 4,操作码有 4 位

    那么总共有 16 种指令。

    二地址指令有 16 - M - N 种。

  2. 采用扩展操作码技术,二地址指令最多有几种?

    对于二地址指令操作码有 4 位,全 1 不可用

    0000~1110, 15 种

  3. 采用扩展操作码技术,若二地址指令有 P 条,零地址指令有 Q 条,则一地址指令最多有几种?

    2^4 - P:二地址没有用的操作码(指令前缀)个数(4 位)

    (2^4 - P)* 2^6:一地址总共可以表示的总数(一地址操作码为 10 位)

    (2^4 - P)* 2^6 - R:一地址没有用的操作码个数

    [(2^4 - P)* 2^6 - R] * 2^6:零地址总共可以表示的总数

    Q = [(2^4 - P) 2^6 - R] * 2^6*

# 寻址方式

# 记号

  • A: 指令中地址字段的内容

  • R: 指向寄存器的指令地址字段内容

  • EA: 被访问位置的实际(有效)地址

  • (X): 存储器位置 X 或寄存器 X 的内容

  • 操作数 = (EA),即操作数为 EA 内的内容

# 立即寻址

操作数 = A

立即数。

# 直接寻址

EA = A

把地址写在指令里面,进行一次存储器访问

# 间接寻址

EA = (A)

两次存储器访问

7d5f5a89194f02dff0ad79122ad99017.png

# 寄存器寻址

EA = R

给出寄存器编号,读寄存器内的值

# 寄存器间接寻址

EA = (R)

寄存器里存的是地址,拿到地址再读一次存储器

# 偏移寻址

EA = (R) + A

在读出的地址上加一个立即数得到新的地址

类型

相对寻址

基址寄存器寻址

变址寻址

# 偏移寻址:相对寻址

隐含引用的寄存器是程序计数器(PC)

EA = (PC) + A

在 PC 寄存器读出的地址上加一个立即数得到新的地址

# 偏移寻址:基址寄存器寻址

EA = (B) + A

在寄存器读出的地址上加一个立即数得到新的地址

# 偏移寻址:变址寻址

EA = A + (IX)

A 是基地址,从寄存器 IX 里读出一个数与它相加得到新的地址

# 栈寻址

方式:栈指针保存在寄存器中,对寄存器中栈位置的访问实际上是一种寄存器间接寻址方式

# 指令格式的设计原则

指令尽量短

有足够的操作码位数

操作码的编码必须有唯一的解释

指令长度是字节的整数倍

合理选择地址字段的个数

指令尽量规整

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

北沐清 微信支付

微信支付

北沐清 支付宝

支付宝