LC-3アセンブリのプログラムで作業していますが、JSR
に問題があります。 PCを変更したり、ラベルにジャンプしたり、以前のPCをR7に書き込んだりする代わりに、単に次の命令に進むだけです。ここで関連するセクションである:LC-3:JSRはPCを変更しません
....
NXTNODE LDR R2, R2, #0 ; get next node
BRz DONE ; now that node is loaded in R2, compare the first and last name
AND R6, R6, #0
AND R3, R3, #0
AND R3, R4, #0 ; copy search term pointer to R3
ADD R6, R2, #0 ; copy node pointer to R6
ADD R6, R6, #3 ; point to last name
AND R5, R5, #0
ADD R5, R5, #1 ; init loop counter
OUTP JSR COMPARE ; uses R6 to compare first and last name to search term.
; if they match, continue (R0 = 1). Otherwise, go to NXTNODE.
ADD R0, R0, #-1
BRnp NXTNODE ; no match, don't print
LDR R0, R6, #0 ; there was a match. Load first name to R0
TRAP x22
LEA R0, SPACE
TRAP x22
....
(インデントは値下げから少し厄介である)
COMPARE
この行に、異なる位置に配置されている:
COMPARE ST R1, ST1 ; R6 --> current node
命令でありますCOMPARE
ラベルに移動したことはありません。シミュレータは、次の命令に進むだけです。
以前は予想どおりに動作していましたが、何かを変更したに違いありません。それが何であるかわからない、または動作しない理由がわかりません。どんな助けでも大歓迎です。
答えてくれてありがとう、それは私の正確な問題でした。今朝もう一度チェックし、デバッグユーティリティの使い方が混ざっていることに気付きました。 –