先决条件- 8085程序找到一个数的阶乘

问题–编写汇编语言程序, 以应用8086微处理器计算数字的阶乘

例子 -

Input : 04HOutput : 18Has In Decimal : 4*3*2*1 = 24   In Hexadecimal : 24 = 18HInput : 06HOutput : 02D0Has In Decimal : 6*5*4*3*2*1 = 720   In Hexadecimal : 720 = 02D0H

假如–

程序的起始地址:0400

输出存储器地位:0500

输入存储器地位:0600和0601

重要–

如果给定数字是16位数字, 则AX寄存器将主动用作第二个参数, 并且乘积存储在DX:AX寄存器对中。这意味着DX寄存器保留32位数字的高位, 而AX寄存器保留32位数字的低位。

在8086微处理器中, 用户具备间接指令(MUL)将两个数相乘, 因而咱们不用像8085中那样将乘数乘以乘数

8086比8085的劣势(如果是乘法):

  • 无需编写宏大的代码, 因为8086的代码很小
  • 容易记住
  • 曾经有乘法指令

算法–

  1. 输出要查找其阶乘的编号, 并将该编号存储在CX寄存器中(LOOP指令的条件)
  2. 在AX(MUL指令的条件)中插入0001, 在DX中插入0000
  3. 应用LOOP指令将CX与AX相乘直到CX变为零(0)
  4. 将AX的内容复制到内存地位0600
  5. 将DX的内容复制到内存地位0601
  6. 进行执行

程序–

地址内存正文
0400MOV CX, [0500]CX <-[0500]
0404MOV AX, 0001AX<-0001
0407MOV DX, 0000DX <-0000
040AMUL CXDX:AX <-AX * CX
040CLOOP 040A转到[040A]直到CX-> 00
0410MOV [0600], AX[0600] <-AX
0414MOV [0601], DX[0601] <-DX
0418HLT进行执行

阐明–

  1. MOV CX, [0500]将0500内存地位内容加载到CX寄存器
  2. MOV AX, 0001用0001加载AX寄存器
  3. MOV DX, 0000加载DX寄存器为0000
  4. MUL CX将AX与CX相乘并将后果存储在DX:AX对中
  5. LOOP 040A运行循环直到CX不等于零
  6. MOV [0600], AX将AX寄存器内容存储到内存地位0600
  7. MOV [0601], DX将DX寄存器内容存储到内存地位0601
  8. HLT进行执行程序

更多汇编编程开发相干内容请参考:lsbin - IT开发技术:https://www.lsbin.com/

查看以下更多8085汇编程序实现相干的内容:

  • 8085程序减去两个带有或不带有借位的8位数字:https://www.lsbin.com/1641.html
  • 8085程序查找数字的平方根:https://www.lsbin.com/1575.html
  • 8085和8086微处理器之间有什么区别?:https://www.lsbin.com/3473.html