【发布时间】:2012-04-26 00:02:28
【问题描述】:
我目前正在摆弄 DCPU-16 汇编器(请参阅 http://0x10c.com/doc/dcpu-16.txt 和 http://jazzychad.net/dcpu.html)。
在将汇编指令转换为十六进制/二进制的方式中,我不明白一件事。
举个例子,像这样的指令
SET B, 0x0002
应该将寄存器B的值设置为十进制2(或十六进制0x0002或二进制0b000010)
DCPU-16 的指令格式为
bbbbbbaaaaaaoooo
因此,低端的操作码占 4 位,第一个值占 6 位,第二个值占 6 位。
当手动转换指令时,我会这样做:
SET == 0x1 == 0b0001
B == 0x01 == 0b000001
0x0002 == 0b000010
以完整的指令结束
0b0000100000010001 == 0x811
但 DCPU-16 的正确值是
0b1000100000010001 == 0x8811
也就是说,添加了一个前导 1 - 这是为什么?
我对汇编程序和任何其他类型的硬核低级机器指令完全陌生,所以如果这是一个非常愚蠢的问题,请多多包涵。
【问题讨论】:
标签: assembly binary hex dcpu-16