2016-03-19 34 views
0

這是我要轉換爲LMC彙編代碼中的JavaScript代碼:LMC更改y值

<!DOCTYPE html> 
<html> 
<body> 
<script> 
var temp = 14; 
var y = 2; 
temp <<= y; 
document.write(temp); 
</script> 
</body> 
</html> 

我的任務是寫LMC一個程序,它會產生相同的結果,以更改Y值。

這是我到目前爲止有:

LOOP LDA COUNT 
ADD ONE 
STA COUNT 
LDA TOTAL 
ADD TEMP 
STA TOTAL 
LDA Y 
SUB COUNT 
BRZ ENDLOOP 
BRA LOOP 
ENDLOOP LDA TOTAL 
STA TEMP 
LDA TEMP 
ADD TEMP 
OUT 
HLT 
ONE DAT 001 
COUNT DAT 
TOTAL DAT 
TEMP DAT 14 
Y DAT 2 

它適用於2的Y值而不是像3,4等

任何想法任何其他價值?

回答

0

你試圖製作的是一個移位的程序,它將值左移。下面的代碼應該可以工作。 (不包括省略號後省略號或任何東西)

 inp 
    sta value 
    inp 
    sta shift 
    brz done ... do nothing 
    loop lda value .... return here to shift one bit to the left 
    add value 
    sta value 
    lda shift ... decrement and test bit shift counter 
    sub one 
    sta shift 
    brz done ... done if count is zero 
    bra loop ... else shift at least one more bit 
    done lda value .... arrive here when all shifts are done 
    ... output, halt and data definitions follow `enter code here` 
1

在口頭上:

Read R0 and R1 from Input 
while R1 > 0 { 
    Subtract 1 from R1 
    Add R0 to itself 
} 
Output R1 

在LMC彙編:

 INP 
    STA R0 
    INP 
    STA R1 
LOOP LDA R1 
    BRZ END 
    SUB ONE 
    STA R1 
    LDA R0 
    ADD R0 
    STA R0 
    BRA LOOP 
END LDA R0 
    OUT 

R1 DAT 
R0 DAT 
ONE DAT 1 

你可以看到這個代碼運行在這裏:Shift left in LMC Emulator