LC-3代码混淆

时间:2015-08-26 23:39:59

标签: assembly binary systems-programming lc3

对于这个问题,我们在LC-3中遇到了一个问题,并被告知要描述它的作用并说明RESULT中包含的内容。不幸的是,我正在用这种语言苦苦挣扎,我真的很困惑。我只是不明白这些不同的东西是什么。这是代码。

        .ORIG x3000
        LD R2, ZERO
        LD R0, M0
        LD R1, M1
LOOP    BRz DONE
        ADD R2, R2, R0
        ADD R1, R1, -1
        BR LOOP
DONE    ST R2, RESULT
HALT
RESULT .FILL x0000
ZERO   .FILL x0000
MO     .FILL x0004
M1     .FILL x0803
       .END

我甚至不知道从哪里开始。喜欢什么是" .ORIG x3000"?我认为x3000是一个内存位置?如果是这种情况,那么在底部向下,它会说" .FILL ......"那些记忆位置也不是吗?或者您填写的注册号码是多少?我很困惑。

所以我认为第二行将ZERO中的任何内容加载到寄存器R2中?然后将M0加载到R0中,然后将M1加载到R1中?我对正在加载的内容感到困惑。我们正在加载值,还是只是将内存地址放入寄存器?在所有LD指令之后,我们进入循环。我认为BRz意味着只要R1不为0就重新进行循环重复?那么,我猜R1是我们的循环控制元素? R2被添加到R0中的任何内容,结果存储在R2中。循环结束后,RESULT存储到R2?

DONE信号是什么?我想如果你想退出一个循环,你会指示计算机在它之后就是HALT。那么为什么DONE后面跟着HALT?

我假设的最后几行是初始化?比如,用x0000填充RESULT。什么是x0000?它是一个内存位置,还是一个数字?

有人可以帮我向我解释这个问题,并指导一下这个程序运行时会发生什么?

对不起,如果这是很多的话。我正在努力奋斗,不知道从哪里开始。

0 个答案:

没有答案
相关问题