【问题标题】:confusion on generating object code in SIC assemblers output在 SIC 汇编器输出中生成目标代码的困惑
【发布时间】:2015-06-09 01:26:11
【问题描述】:

所以现在我想了解目标代码是如何生成的,但是这两行真的让我很困惑,有人想给我解释一下吗?

RSUB is 4C0000, I understand RSUB is 4C Mnemonic, but where did 0000 came from?
EOF BYTE C'EOF'  Object code is 454F46, how did they get that?

INPUT BYTE X'F1'      F1
how did generate F1 in the object code?

STCH BUFFER, X        549039

BUFFER is 1039, and STCH in mnemonic is 54, but shouldn't it be 541039?


also after a few lines,

LDCH BUFFER, X       509039?

【问题讨论】:

    标签: assembly mnemonics object-code sic


    【解决方案1】:

    所有这些都应该在你的架构的指令集参考和你的汇编器手册中得到回答。

    RSUB 是 4C0000,我知道 RSUB 是 4C 助记符,但是 0000 在哪里 来自哪里?

    SIC 似乎使用 24 位字和固定长度的指令编码。由于该指令显然没有操作数,因此为零。也许 cpu 忽略了地址字段,所以你可以使用任何你想要的东西,或者它必须为零。找不到明确的答案。

    EOF BYTE C'EOF' 对象代码是 454F46,他们是怎么得到的?

    454F46 分别只是 EOF 的 ascii 代码。据推测,您的汇编器的 C 运算符指示它发出以下字符的 ascii 代码。

    INPUT BYTE X'F1' F1 在目标代码中是如何生成F1的?

    大概你的汇编器的X 操作符意味着发出具有给定十六进制值的字节。

    STCH BUFFER, X 549039 BUFFER 为 1039,助记符中的 STCH 为 54,但不应该是541039吗?

    地址仅为低 15 位。第 15 位用作指示索引寻址模式的标志,因此 1039 变为 9039

    【讨论】:

    • 非常感谢。你能解释一下STCH BUFFER的更多细节吗,还是有点困惑。他们是如何得到 549039 的?第15位是什么意思,你能告诉我目标代码过程(它是如何beomce 549039?
    • 保留地址的低 15 位,即1039,然后将下一位设置为 1(即位值8000)以指示索引地址模式,从而得到9039
    • 抱歉还是一头雾水,为什么1等于8000?是因为二进制值 2 的三次方吗?你的意思是低15位地址吗?只是数字的最后 4 个值,比如 1039?
    • 如果您在计算位时遇到问题,请将它们转换为二进制并返回。 1039=001 0000 0011 1001(这是 15 位)。在前面加上一个1 来表示间接模式,这样你就有了1001 0000 0011 1001,即十六进制的9039
    • 我明白了,谢谢! 1.如果总是以001开头,我是否会自动添加1?我的意思是我怎么知道何时将下一位设置为 1? 2.最后缓冲,X.X什么都不做,那为什么会在行呢? STCH 缓冲区,X
    猜你喜欢
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 2023-02-12
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多