c 阶乘的代码汇编语言,8086程序实现:如何计算一个数字的阶乘?(汇编编程)...

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

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

例子 -Input : 04H

Output : 18H

as In Decimal : 4*3*2*1 = 24

In Hexadecimal : 24 = 18H

Input : 06H

Output : 02D0H

as In Decimal : 6*5*4*3*2*1 = 720

In Hexadecimal : 720 = 02D0H

1190000039752869

假设–

程序的起始地址:0400

输入存储器位置:0500

输出存储器位置:0600和0601

重要–

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

在8086微处理器中, 用户具有直接指令(MUL)将两个数相乘, 因此我们不必像8085中那样将乘数乘以乘数

8086比8085的优势(如果是乘法):无需编写庞大的代码, 因为8086的代码很小

容易记住

已经有乘法指令

算法–输入要查找其阶乘的编号, 并将该编号存储在CX寄存器中(LOOP指令的条件)

在AX(MUL指令的条件)中插入0001, 在DX中插入0000

使用LOOP指令将CX与AX相乘直到CX变为零(0)

将AX的内容复制到内存位置0600

将DX的内容复制到内存位置0601

停止执行

程序–地址内存注释0400MOV CX, [0500]CX

0404MOV AX, 0001AX

0407MOV DX, 0000DX

040AMUL CXDX:AX

040CLOOP 040A转到[040A]直到CX-> 00

0410MOV [0600], AX[0600]

0414MOV [0601], DX[0601]

0418HLT停止执行

说明–MOV CX, [0500]将0500内存位置内容加载到CX寄存器

MOV AX, 0001用0001加载AX寄存器

MOV DX, 0000加载DX寄存器为0000

MUL CX将AX与CX相乘并将结果存储在DX:AX对中

LOOP 040A运行循环直到CX不等于零

MOV [0600], AX将AX寄存器内容存储到内存位置0600

MOV [0601], DX将DX寄存器内容存储到内存位置0601

HLT停止执行程序

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值