1
由於我是LC-3編程的新手,我遇到了這個問題。LC-3組件減去兩個數字
編寫一個LC-3代碼,從R0中的值中減去R1中的值,並將結果放入R5中。也就是說,寫出R5:= R0 - R1的彙編代碼。假設R1 = 10,R0爲12
由於我是LC-3編程的新手,我遇到了這個問題。LC-3組件減去兩個數字
編寫一個LC-3代碼,從R0中的值中減去R1中的值,並將結果放入R5中。也就是說,寫出R5:= R0 - R1的彙編代碼。假設R1 = 10,R0爲12
根據您的問題,我們可以假設,12和10已經在R0
和R1
,所以正確的算法始於NOT
指令,並在HALT
結束;但是,其他說明包含在內以允許您運行此代碼。
解決方法是將R0
與-R1
相加。我們通過對R1
中的數字進行按位反轉(NOT
)並添加1來找到-R1
。這給出了R1的2的補碼否定。
如果你不明白補碼算術,我建議看看here。執行減法後,我們將原始數字恢復爲R1
。
.orig x3000
LD R0, A ; A(12) => R0 (this is assumed)
LD R1, B ; B(10) => R1 (this is assumed)
; find negative of the two's complement number in R1
NOT R1, R1
ADD R1, R1, 1
ADD R5, R0, R1 ; R0 - R1 => R5
LD R1, B ; Restore R1
HALT
A .fill 12
B .fill 10
.end
非常感謝你的幫助...真的很感謝!!! ... :) – mandy
嘿泰勒,我運行該程序,但它沒有顯示任何輸出。我的LC-3控制檯窗口只顯示「暫停處理器」..請問你爲什麼要顯示該聲明? – mandy
據我瞭解,程序不應該顯示任何輸出(至少在控制檯上)。指示是「將結果放入R5中。」 –