📜  8085程序来查找前n个自然数的和

📅  最后修改于: 2021-06-28 09:24:16             🧑  作者: Mango

问题–编写一个汇编语言程序,以使用8085微处理器计算前n个自然数的总和。

例子 –

Input : 04H
Output : 0AH
as 01+02+03+04 = 10 in decimal => 0AH

用于计算前n个自然数之和的公式为\frac{(n(n+1))}{2}

算法 –

  1. 使用n作为输入,对其进行递增以获得n + 1。
  2. 将n乘以n + 1。
  3. 将获得的乘积除以2。

在8085微处理器中,不存在直接指令将两个数字相乘,因此乘法是通过重复加法完成的,因为4×5等于4 + 4 + 4 + 4 + 4(即5次)。
输入:04H
添加04H 5次
产品:14H(20 10 )

同样,在8085微处理器中,不存在直接除以两个数字的指令,因此除以重复的减法即可完成。
输入14H
继续从输入中减去2,直到其减少到0。
由于必须在14H变为0之前执行10 10次减法,因此商为10 10 => 0AH。

脚步 –

  1. 将数据从存储位置(201BH,任意选择)加载到累加器中
  2. 将此数据移到B
  3. 将累加器中的值加1并将其移至寄存器C
  4. 用0初始化累加器
  5. 乘法:继续将B加到累加器上。 B必须加的次数等于C的值
  6. 用00H初始化B。 B将存储除法的商
  7. 用02H初始化C。这是除法的除数
  8. 除法:继续从A减去C直到A变为0。对于每个减法,将B加1。
  9. 最终答案在B中。将其移至A。然后将A的值存储在201CH中(再次任意选择)

201CH包含最终答案。

ADDRESS LABEL MNEMONIC
2000H LDA 201BH
2001H
2002H
2003H MOV B, A
2004H INR A
2005H MOV C, A
2006H MVI A, 00H
2007H
2008H LOOP1 ADD B
2009H DCR C
200AH JNZ LOOP1
200BH
200CH
200DH MVI C, 02H
200EH
200FH MVI B, 00H
2010H
2011H LOOP2 INR B
2012H SUB C
2013H JNZ LOOP2
2014H
2015H
2016H MOV A, B
2017H STA 201CH
2018H
2019H
201AH HLT

将n的值存储在201BH中。该总和可在201CH处找到。