Lc3 16位字lc-3 BR和JMP指令
当涉及到16位单词时,我有一个似乎无法解决的问题。下面我附上了相应的代码和想象,它给出了我所请求帮助的一点描述Lc3 16位字lc-3 BR和JMP指令,lc3,Lc3,当涉及到16位单词时,我有一个似乎无法解决的问题。下面我附上了相应的代码和想象,它给出了我所请求帮助的一点描述 .orig x3000 ld r1,n lea r5,data add r1,r1,#-1 loop: str r1,r5,0 add r5,r5,r2 add r1,r1,#-1 brp loop trap x25 data: .blkw 2 n: .fill 10 .end 这是图片 我得到了nzp代码,但我不知道如何计算pcoffset9,因此如果有人能帮
.orig x3000
ld r1,n
lea r5,data
add r1,r1,#-1
loop:
str r1,r5,0
add r5,r5,r2
add r1,r1,#-1
brp loop
trap x25
data: .blkw 2
n: .fill 10
.end
这是图片
我得到了nzp代码,但我不知道如何计算pcoffset9,因此如果有人能帮我处理这个例子,我将不胜感激。计算PCOffset的公式如下所示 符号的地址-(指令地址+1) 因此LEA指令中的PCOffset如下所示 地址\u你好\u世界-(地址\u LEA+1) x3003-(x3000+1)=2
执行LEA指令时,请记住,PC已作为Fetch的一部分递增,因此PC将位于x3001。我们将2添加到其中,以获得x3003标签HELLO_WORLD所在的地址。嘿,非常感谢,我想知道相同的逻辑是否也适用于JMP指令@BrandonJMP指令没有PCOffset。所以不。也许你在考虑JSR指令,在这种情况下是的。因此,在我上面提供的示例中,我得到了0000 001 00000000 1作为汇编位,这是正确的吗?不,我建议使用lc-3模拟器,大多数会向你展示给定指令的二进制是什么。
.orig x3000
LEA R0, HELLO_WORLD ; x3000
PUTS ; x3001
HALT ; x3002
HELLO_WORLD .stringz "HELLO WORLD" ; x3003
.end