2017-12-07 8 views
0

16ビットワードの場合は、わかりにくい問題があります。以下では、対応するコードと想像を添付して、私が助けを求めていることについて少し説明します。16ビットワードlc-3 BRとJMP命令

ここ
.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 

画像がimage

である私は誰かがこの例で助けることができれば、それは非常に高く評価されるだろうようpcoffset9を計算する方法がわからないNZPコードが、イムを取得します。

答えて

1

次のようにPCOffsetである計算する式

ADDRESS_OF_SYMBOL - (INSTRUCTION_ADDRESS + 1)

.orig x3000 
    LEA R0, HELLO_WORLD    ; x3000 
    PUTS        ; x3001 
    HALT        ; x3002 
    HELLO_WORLD .stringz "HELLO WORLD" ; x3003 
.end 

ようPCOffsetで次のようにLEA命令である

ADDRESS_HELLO_WORLD - (+ ADDRESS_LEA (x3000 + 1)= 2

LEA命令を実行すると、PCがFetchの一部としてすでにインクリメントされていることを覚えているので、PCはx3001になります。 2を追加して、HELLO_WORLDというラベルのある場所のアドレスをx3003にします。

+0

こんにちはありがとう、私は同じロジックがJMP命令にも当てはまるのだろうかと思いましたか? @Brandon –

+0

JMP命令にはPCオフセットがありません。そうではありません。たぶんあなたはJSR命令を考えています。 – Brandon

+0

上記の例では、アセンブリビットとして0000 001 000000001が得られましたが、それは正しいでしょうか? –

関連する問題