2013-10-11 79 views
0

我正尝试在LMC中使用旧的汇编语言编写两个不同的程序。第一种情况如下:汇编语言问题。小男人计算机程序

编写一个LMC程序,该程序需要两个输入,一个数从下数,以及步数值(例如:从35减5),直到达到零。它应该打印每个步骤,如果序列不是以零结尾,而是在零之前的最后一个数字,但是如果数字为负数,则不应该打印该数字。使用13和3作为输入的示例输出将为:13,10,7,4,1。使用12和3作为输入的示例输出将为:12,9,6,3,0。

我已经尝试了一些东西的台词:

IN 
STO 91 
IN 
STO 92 
IN 
STO 93 
LDA 91 
ADD 92 
SUB 93 
OUT 
HLT 

不工作

第二LMC程序我想写如下:

编写代码来计算一个三角形的面积和周长。该程序应该有3个输入,依次为三角形的底部,高度和第三边。代码应该在输出框中生成2个值,第一个数字将是面积,第二个数字是周长。 (提示:您可能想使用DAT语句来启动一些值)。

我甚至不知道从哪里开始。

任何帮助,将不胜感激。

我也有一些示例代码帮助:

计算周长&区域 - 第一需L &W¯¯作为输入 打印出周长,然后面积。

00 LDA #01; 
01 STA 99; 
02 IN; 
03 STA 98; 
04 LDA #00; 
05 STA 96; 
06 IN; 
07 STA 97; 
08 ADD 97; 
09 ADD 98; 
10 ADD 98; 
11 OUT; 
12 LDA 96; 
13 ADD 98; 
14 STA 96; 
15 LDA 97; 
16 SUB 99; 
17 STA 97; 
18 SKZ; 
19 JMP 12; 
20 LDA 96; 
21 OUT; 
22 HLT; 

MULTIPLIES TWO NUMBERS。

00 IN; 
01 STA 99; 
02 STA 97; 
03 IN; 
04 STA 98; 
05 SUB 90; 
06 STA 98; 
07 SKZ; 
08 JMP 12; 
09 LDA 97; 
10 OUT; 
11 HLT; 
12 LDA 97; 
13 ADD 99; 
14 STA 97; 
15 LDA 98; 
16 JMP 05; 
90 DAT 001; 

将第一数量的输入到其自身, THEN减去第二输入从总

从输入
00 IN; 
01 STA 90; 
02 IN; 
03 STA 91; 
04 LDA 90; 
05 ADD 90; 
06 SUB 91; 
07 OUT; 
08 HLT; 

单程计数下降到零

00 IN; 
01 OUT; 
02 SUB 98; 
03 SKP; 
04 JMP 06; 
05 JMP 01; 
06 HLT; 
98 DAT 002; 

磨边甲NUMBER

00 IN; take input 
01 STA 99; save value as a mulitiplier 
02 STA 97; save value as multiplicand 
03 SUB 90; subtract one from counter 
04 STA 98; copy value to counter 
05 LDA 97; load our accumulator number 
06 ADD 99; Add original number 
07 STA 97; store intermediate sum 
08 LDA 98; Load counter 
09 SUB 90; subtract one from counter 
10 STA 98; Store counter value 
11 SKZ; skip if counter is at zero 
12 JMP 05; othewise, loop back to 5 
13 LDA 97; load our squared number 
14 OUT; Write output 
15 HLT; stop 
90 DAT 01; countdown value 
+1

您需要提供程序和错误。你还没有真正接近。你有一些工作的例子。首先,你需要2个输入,但你读了3个输入。其次,你需要倒数,这意味着你需要一个循环,但你没有分支语句。我会给你一个提示,你需要使用BRP。 –

回答

0

在伪代码:

Input R0 and R1 
repeat { 
    Output R0 
    Subtract R1 from R0 
} until the result goes negative 

而且在LMC汇编:

 INP 
    STA R0 
    INP 
    STA R1 
LOOP LDA R0 
    OUT 
    SUB R1 
    STA R0 
    BRP LOOP 
    HLT 
R0 DAT 
R1 DAT 

你可以看到代码在这里工作:Decrement by steps on LMC Emulator