首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在DCPU 16的原始规范中,IFN A,0x10如何转换为0xc00d

在DCPU 16的原始规范中,IFN A,0x10如何转换为0xc00d
EN

Stack Overflow用户
提问于 2012-04-29 19:17:05
回答 1查看 214关注 0票数 0

我正在尝试为Notch的DCPU-16规范编写一个汇编程序。这个CPU的原始规格可以在here上找到。

相关行:

代码语言:javascript
复制
SET A, 0x30 ;7c01 0030

..。

代码语言:javascript
复制
IFN A, 0x10 ;c00d

到目前为止,我理解这些说明,但对我来说,这篇文章应该至少有2个单词长,而不仅仅是0xc00d

代码语言:javascript
复制
SET A, 0x10 

应该是7c01 0010。所以

代码语言:javascript
复制
IFN A, 0x10 

应该是7c0d 0010,不是吗?

为什么IFN中的b参数不会导致指令需要PC++或nextword组件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-29 20:07:20

代码语言:javascript
复制
     0x1f: next word (literal)
0x20-0x3f: literal value 0x00-0x1f (literal)

这是您所询问的规范的核心部分。可以在操作码中编码0到31 (0x1f)之间的文字值。如果值太大,则文字值需要一个额外的单词,用0x1f表示。

因此IFN A, 0x10只需要一个单词,因为0x10字面量足够小,可以放入操作码中。16位操作码分为6位用于b操作数,6位用于a操作数和4位用于指令。因此b= 0x30 (0x20+literal),a= 0x00 (寄存器A),instr = 0xd (干扰素)。将它们与opcode = (b << 10) | (a << 4) | instr;放在一起,就会得到0xc00d。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10371672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档