📜  查找数字的n次幂的8085程序

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

问题–使用8085微处理器编写用于计算数字的n次幂的汇编语言代码。

例子 –

Input : Base=>02H
        Exponent=>03H  
Output :08H 

在8085微处理器中,不存在直接指令将两个数字相乘,因此乘法是通过重复加法完成的,因为4 * 4等于4 + 4 + 4 + 4(即4倍)。
加载02H(基数)到寄存器B,加载03H(指数)到寄存器C->将D寄存器设置为02H->添加02H B(即2)次-> D寄存器现在包含04H->添加04H B(即2)次-> D寄存器现在包含08H->输出为08H。

算法 –

  1. 将基数加载到寄存器B中,然后将指数加载到寄存器C中。
  2. 要开始乘法,请将D设置为01H。
  3. 跳至步骤7。
  4. 减量C.
  5. 跳至第3步,直到C> 0的值。
  6. 将内存指针移到下一个位置并存储结果。
  7. 向E中装入B的内容并清除累加器。
  8. 重复将D的内容添加到累加器E次。
  9. 将累加器内容存储到D。
  10. 转到步骤4。

程序 –

Address Label Mnemonic Comment
2000H Base Data Byte for base
2001H Exponent Data Byte for exponent
2002H Result Result of factorial
2003H LXI H, 2000H Load data from memory
2006H MOV B, M Load base to B register
2007H INX H Increment memory
2008H MOV C, M Load exponent to C register
2009H MVI D, 01H Set D register to 1
200BH POWER_LOOP CALL MULTIPLY Subroutine call for multiplication
200EH DCR C Decrement C
200FH JNZ POWER_LOOP Call power_loop till C becomes 0
2012H INX H Increment memory
2013H MOV M, D Store result in memory
2014H HLT Halt
2100H MULTIPLY MOV E, B Transfer contents of B to E
2101H MVI A, 00H Clear accumulator to store result
2103H MULTIPLYLOOP ADD D Add contents of D to A
2104H DCR E Decrement E
2105H JNZ MULTIPLYLOOP Repeated addition
2108H MOV D, A Transfer contents of A to D
2109H RET Return from subroutine

解释 –

  1. 将寄存器B设置为基数,将寄存器C设置为指数。
  2. 通过一次调用MULTIPLY子例程将寄存器D设置为基。
  3. 通过调用MULTIPLY子例程,将C减1并将D加到自身B倍。
  4. 重复上述步骤,直到C达到0,然后退出程序。
  5. 结果在存储在存储器中的D寄存器中获得