这是JavaScript中我想要转换为LMC汇编代码的代码:
<!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
它适用于y值为2,但不适用于3,4等任何其他值
有什么想法吗?
答案 0 :(得分: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。
答案 1 :(得分: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`