2016-03-19 4 views
0

Dies ist der Code in JavaScript, die ich LMC Assembler-Code konvertiert werden soll:LMC Änderung der y-Wert

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

Meine Aufgabe ist es, ein Programm für LMC zu schreiben, die die gleichen Ergebnisse produzieren würde die y sich ändern Wert.

Hier ist, was ich bisher:

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 

Es funktioniert nach einem y-Wert von 2, aber nicht für einen anderen Wert wie 3,4 etc

Irgendwelche Gedanken?

Antwort

0

Was Sie versuchen, ist ein Bitshift-Programm, das die Werte nach links verschiebt. Der folgende Code sollte funktionieren. (Geben Sie keine Ellipsen oder irgendetwas nach Auslassungs)

 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

In Worten:

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

In LMC Assembler:

 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 

Sie diesen Code hier laufen sehen: Shift left in LMC Emulator.