0

在 MIX STA 中,将 A 寄存器的内容存储在给定的内存位置。

我看不出 TAOCP 是如何涵盖标志周围的行为的。MIX 在以下示例中的行为方式:

位置 2000 包含:+ 5 4 6 2 1

A 寄存器包含: - 7 8 1 3 2

STA 2000 (0:1) 有什么作用?

这是否被认为是从 A 寄存器中获取值 3 2 并将它们放入内存位置 2000 的字段 0:1 中?如果是这样,是否有任何非符号值到 + 的隐式转换?或者字段规范中的 0 是否意味着“获取 A 寄存器的符号以及任何剩余字节并将这些值放入该位置”?

解释 1:2000 -> + 2 4 6 2 1

解释 2:2000 -> - 2 4 6 2 1

还是有第三种选择?

4

1 回答 1

1

所以,是的,在 的定义中STA,这个F领域很时髦。

阅读第 1.3.1 节,存储操作(我的第 1 卷第 130 页,第三版)我发现:

存储操作中,字段 F 与加载操作的意义相反:字段中的字节数取自寄存器的右侧部分,并在必要时左移以插入 CONTENTS(M )。 除非它是该字段的一部分,否则不会更改该标志。 [我的重点]

它提供了各种示例,其中:

  Location 2000 contains: | - | 1 | 2 | 3 | 4 | 5 |
  Register A    contains: | + | 6 | 7 | 8 | 9 | 0 |
  STA 2000(0:1) gives:    | + | 0 | 2 | 3 | 4 | 5 |

这是你的解释 2

似乎该F字段是指目标单词中的字段,并且:

  • 如果F(0:0)

    • 源的符号存储在目标的符号中,
    • 目的地的其余部分保持不变。
  • 如果F(0:n)n1..5):

    • 源的符号存储在目标的符号中,
    • 源的n 右侧字节存储在(1:n)目标的字节中,
    • 目的地的其余部分保持不变。
  • 如果F(m:n)m1..5nm..5):
    • 源的n-m+1 右侧字节存储在(m:n)目标的字节中,
    • 目的地的其余部分(包括标志)不变。

[自从我上次考虑以来已经有很长时间了MIX……我承认我记得它太古怪了,没有用。我不能说我改变了主意!]

于 2020-03-21T14:06:17.417 回答