2016-02-24 108 views
1

由於我是LC-3編程的新手,我遇到了這個問題。LC-3組件減去兩個數字

編寫一個LC-3代碼,從R0中的值中減去R1中的值,並將結果放入R5中。也就是說,寫出R5:= R0 - R1的彙編代碼。假設R1 = 10,R0爲12

回答

1

根據您的問題,我們可以假設,12和10已經在R0R1,所以正確的算法始於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 
+0

非常感謝你的幫助...真的很感謝!!! ... :) – mandy

+0

嘿泰勒,我運行該程序,但它沒有顯示任何輸出。我的LC-3控制檯窗口只顯示「暫停處理器」..請問你爲什麼要顯示該聲明? – mandy

+0

據我瞭解,程序不應該顯示任何輸出(至少在控制檯上)。指示是「將結果放入R5中。」 –