Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly STA(0:1)在混合物中的行为是什么?_Assembly_Taocp - Fatal编程技术网

Assembly STA(0:1)在混合物中的行为是什么?

Assembly STA(0:1)在混合物中的行为是什么?,assembly,taocp,Assembly,Taocp,在MIX中,STA将寄存器的内容存储在给定的内存位置 我看不出TAOCP是如何涵盖标志周围的行为的。在以下示例中,MIX的行为如何: 位置2000包含:+5 4 6 2 1 A寄存器包含:-7 8 1 3 2 STA2000(0:1)做什么 这是否被认为是从A寄存器中获取值3 2并将其放入内存位置2000的0:1字段中?如果是,是否存在将任何非符号值隐式转换为+?或者字段规范中的0是否意味着“取寄存器的符号和任何剩余字节并将这些值放入该位置” 口译1:2000->+2 4 6 2 1 口译2:2

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

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

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

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

STA2000(0:1)做什么

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

口译1:2000->+2 4 6 2 1

口译2:2000->-2 4 6 2 1


或者有第三种选择吗?

因此,在
STA
的定义中,是的,
F
字段很时髦

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

在存储操作中,字段F的意义与加载操作相反:字段中的字节数取自寄存器的右侧部分,如果需要插入适当的内容字段(M),则向左移位除非符号是字段的一部分,否则该符号不会更改。[我的重点]

它给出了各种示例,其中:

  Location 2000 contains: | - | 1 | 2 | 3 | 4 | 5 |
  Register A    contains: | + | 6 | 7 | 8 | 9 | 0 |
这是您的解释2

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

  • 如果
    F
    (0:0)

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

    • 源的符号存储在目标的符号中
    • 源的
      n
      右侧字节存储在目标的
      (1:n)
      字节中
    • 目的地的其余部分不变
  • 如果
    F
    (m:n)
    m
    1..5
    中,
    n
    m..5
    中):
    • 源的
      n-m+1
      右侧字节存储在目标的
      (m:n)
      字节中
    • 目的地的其余部分(包括标志)不变
[我很久没有考虑过
MIX
…我承认我记得它太离奇了,没有什么用处。我不能说我改变了主意!]

  STA 2000(0:1) gives:    | + | 0 | 2 | 3 | 4 | 5 |