Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lc3 16位字lc-3 BR和JMP指令_Lc3 - Fatal编程技术网

Lc3 16位字lc-3 BR和JMP指令

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,因此如果有人能帮

当涉及到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,因此如果有人能帮我处理这个例子,我将不胜感激。

计算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