我寫了LC3機器上的彙編程序。爲什麼不是我的彙編程序設置R1爲正確的值?
我的裝配程序是一個程序LC3倍增R2和R3,並將結果存儲在R1。
這是我的源代碼(帶註釋)
;Sets pc to this address at start of program
.ORIG x3000
;R1 will store the result lets clear it(ANd with 0)
AND R1,R1,x0
;R2 will be multiplied by R3, let's clear both of them
AND R2,R2,x0
AND R3,R3,x0
;Test case 4 * 3 = 12;
ADD R2,R2,4
ADD R3,R3,3
;Add to increment zone
LOOP Add R1,R1,R2;
;Decrement the counter, in this case the 3 or R3
ADD R3,R3,x-1
BrP LOOP
HALT
.END
我的測試用例乘以4 * 3的結果應該是12和應當被存儲在R1。然而,當我在我的LC3模擬器中運行此程序,這是我得到的輸出
R3保留在最後的正確值,但R1保留-1 ....有沒有人看到我的代碼問題?我確信在開始清除R1並繼續增加對R3 R1和存儲結果到R1,而計數器,R3,或在這種情況下,3是大於零。
我只是運行你的程序,這不是我得到的。你把你的斷點放在哪裏?你應該把它放在HALT指令中。否則,您的值可能會被HALT陷阱覆蓋。 – m0skit0
還要注意,你在循環中的任何地方都沒有使用R2。 – m0skit0
是不是隻用於調試的斷點?爲什麼在HALT指令中放置一個斷點? HALT是否已經停止了該程序? – committedandroider