assembly 汇编语言问题,小人计算机程序

nimxete2  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(186)

我尝试用一种旧的汇编语言在LMC中编写两个不同的程序。第一个如下:
编写一个LMC程序,该程序采用两个输入、一个倒计时起始数字和一个步进值(例如:从35开始倒数,每次5),直到它到达零。它应该打印每一步,如果序列不是在零结束,则打印零之前的最后一个数字,但如果数字变为负数,则不打印该数字。使用13和3作为输入的示例输出如下:13、10、7、4、1。使用12和3作为输入的示例输出为:十二九六三零
我试过类似的方法:

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

哪种不起作用
我尝试编写的第二个LMC程序如下:
编写计算一个三角形的面积和周长的代码。程序应该接受3个输入,依次是三角形的底边、高度和第三条边。代码应该在输出框中产生2个值,第一个数字是面积,第二个数字是周长。(提示:您可能希望使用DAT语句来存储一些值)。
我都不知道从何说起。
任何帮助都将不胜感激。
我还有一些示例代码可以帮助您:
计算周长和面积-将长度和宽度作为输入,首先打印周长,然后打印面积。

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;

两个数相乘。

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;

将输入的第一个数字与自身相加,然后从总数中减去输入的第二个数字

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;

求一个数字的平方

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
2admgd59

2admgd591#

在伪代码中:

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

相关问题