【问题标题】:Creating new instruction (double operand)创建新指令(双操作数)
【发布时间】:2020-09-24 07:02:05
【问题描述】:

我一直在读一本书,但我陷入了困境:

他们给我看了这张图表:

我自己提出了这个值(对你有意义吗?):

PC(程序计数器)= 16 位

TAR(临时地址寄存器)= 16 位

MAR(内存地址寄存器)= 16位

RTR = 8 位堆栈 = 16 位

索引 = 16 位

页 = 8 位

Aux1 = 8 位

Aux2 = 8 位

累加器 A = 8 位

累加器 B = 8 位

MBR = 8 位

指令寄存器 = 8 位

地址总线 = 16 位

数据总线 = 8 位

我想创建自己的指令(双操作数):某些寻址模式必须使用内部 CPU 寄存器(不仅限于累加器 A 和 B),例如页、索引、堆栈。

即:索引寄存器包含偏移量且指令中的操作数指示要添加到该偏移量的地址的寻址模式。

我在想这样的事情:

MOVE #$58, (INDEX) 但我觉得它不正确

我现在很迷茫:/...你能给我看一个例子,并简要解释一下你的寻址方式在什么情况下有用吗?

【问题讨论】:

    标签: assembly cpu-architecture instruction-set addressing-mode


    【解决方案1】:

    在 x86 平台上,您可以指定基址或索引寄存器。例如。 mov ax, WORD PTR [bx] OR mov ax, [bx+si],这里 bx 是基数,si 寄存器内容是索引。

    您提到的指令似乎表明值 INDEX 将添加到某些 DEFAULT 寄存器中的基地址。如果这是您的意图,那么说明就可以了。否则,应该规定提及基址寄存器是什么,但前提是存在许多可能的基址寄存器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-11
      • 2014-04-15
      相关资源
      最近更新 更多