2012-11-11 98 views
1

我正在使用McGraw-Hill的LC3模擬器來處理一些LC3彙編代碼。出於某種原因,無論我如何執行我的代碼,它都會繼續通過我的.END調用並最終更改我的寄存器。我錯過了什麼嗎?LC3模擬器繼續過去?

最近代碼:

.ORIG x3000 

BR MAIN 

;;value to square 
SquareVal .FILL x04 


MAIN 
    LD R1, SquareVal 
    AND R0, R0, #0 
    ADD R0, R0, R1 
    AND R3, R3, #0 
    LD R3, SquareVal 
    BR SQUARE_CONT 

SQUARE_VAL 
    ADD R0, R0, R1 
    BR SQUARE_CONT 


SQUARE_CONT 
    ADD R3, R3, #-1 
    BRp SQUARE_VAL 
    HALT 

.END 

回答

1

首先確保你的模擬器有加載的操作系統代碼。 HALT是一個系統陷阱,因此它需要操作系統。此外,這也意味着操作系統處理程序將更改您的註冊表。如果你不能忍受這種情況,你可以在用戶模式下進行無限循環(STOP: BR STOP

.END.END只表示源文件的結束,它對執行沒有影響。

+0

你可以阻止它通過你的HALT,但在指令上放置一個斷點。這將阻止系統調用。 –