如何理解DCPU-16规格组装示例的第一行?

时间:2012-04-05 12:31:43

标签: assembly dcpu-16

我正在尝试理解specs,但未能理解给出的示例的第一行:

SET A, 0x30              ; 7c01 0030

以下是我从规格中理解的内容:

  • 第一个字(7c01)完全定义了指令
  • 运算符为0x1,即命令SET a, b
  • b = 111100 = 0x3C(当我转换为Hex时)=字面值0x3C
  • a = 000000 =注册A

所以我将指令理解为SET A, 0x3C

有人可以告诉我哪里出错吗?

2 个答案:

答案 0 :(得分:9)

好评,我终于得到了答案。

您缺少规范中的“值”部分,其中包含:

Values:
....
0x1f: next word (literal)

所以我们有:

0x7c01 = 0111110000000001

0001 = SET
000000 = register A
011111 = 1F -> next word -> [PC++]

下一个字是0x0030 ......瞧瞧。

答案 1 :(得分:0)

@cli_hlt几乎是正确的

dcpu文档说:

  

在基本指令中,第一个字的低五位   指令是操作码,剩下的11位是分开的   进入五位值b和六位值a。

     

b总是在a之后由处理器处理,并且是低五   位。在位(LSB-0格式)中,基本指令的格式为:   aaaaaabbbbbooooo

所以正确的答案是:

0x7c01 = 0111110000000001

00001 = SET
00000 = register A
011111 = 1F -> next word -> [PC++]