1. ホーム
  2. assembly

[解決済み] LC3 LEA 命令と格納された値

2022-03-02 05:27:41

質問

この質問で迷っています。命令後にレジスタ0に格納される値は何ですか? “LEA R0,A" が実行されましたか?答えはどうして x370C なのですか?AのアドレスをR0にロードするようになっているのでは?もしそうなら、どうやってそのアドレスを知ることができるのでしょうか? どなたか教えてください。よろしくお願いします。

.ORIG X3700
 LEA R0, A
 LDI R2, C LDR R3, R0, 2 
 AND R1, R1, #0 
 IN
 ST R0, D 
 JSR  F 
 HALT
F LD  R1, B
 ADD R1, R1, #1
 BRp F 
 RET

 A .FILL X1234
 B .FILL X370B
 C .FILL X370C
 D .BLKW 2
 E .STRINGZ "ABCD"
 G .FILL X1234
 .END

解決方法は?

コードの原点は x3700 で、12個の命令があるので、アドレスは A は次のようになります。 x3700 + x0C = x370C . ご想像の通りです。 LEA R0,A のアドレスをロードします。 AR0 というように R0 を含むことになります。 x370C が実行された後、その最初の命令が実行されます。

        .ORIG X3700
3700     LEA R0, A
3701     LDI R2, C
3702     LDR R3, R0, 2 
         ...
370b     RET

370c     A .FILL X1234
         ...