簡體   English   中英

LC-3:JSR不會修改PC

[英]LC-3: JSR does not modify PC

我正在研究LC-3匯編中的程序,而JSR存在問題。 無需修改PC,跳轉到標簽並將之前的PC寫入R7,它只會繼續執行下一條指令。 這是相關的部分:

....
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標簽。 模擬器會逐步執行,直到下一條指令。

它以前按預期運行,但是我必須進行了一些更改,我不知道那是什么,或者為什么它不起作用。 任何幫助將不勝感激。

模擬器會逐步執行,直到下一條指令。

只是一個想法:

是否執行了COMPARE標簽上的代碼?

或-提出不同的要求: JSR指令后的寄存器是否具有從子例程返回后所需的值?

如果是,則模擬器可能會進入“跳過”模式,您也可能會從高級語言中了解到。

在此模式下,函數(高級語言)或子例程(匯編器)不會步進,但會執行,並且當函數或子例程完成時調試器將停止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM