2013-10-11 135 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