首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个求数阶乘的8085汇编语言程序

一个求数阶乘的8085汇编语言程序
EN

Stack Overflow用户
提问于 2010-03-16 23:30:40
回答 6查看 31.9K关注 0票数 0

我想找一个阶乘数,我先取内存。(英特尔8085)

编辑:我是初学者。我不知道怎么写它的汇编代码。

伪代码:

代码语言:javascript
复制
input n
fact = 1
loop:
..multiply fact by n
..decrement n
..test n
..jump if not zero to loop
output fact
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-03-16 23:50:48

首先,如果你想使用8085,你最好学习如何写它。汇编程序,特别是对于旧的8位微处理器,不是你可以简单地拿起盒装软件然后打补丁的东西。

其次,你到底用什么来表示数字呢?8085具有8位总线,可将寄存器用作16位。如果您被限制为16位数字,您可以使用查找表,因为您不能表示9!不管怎么说。

第三,如果你是以算法的方式来做的,你可能想要先看看你用来做乘法的是什么。8085没有片上乘法。(我曾经在一次使用Z80的多精度乘法和除法比赛中获胜,它有一些8085没有的功能。特别是,我能够使用备用寄存器组来做一些有用的事情。)

票数 4
EN

Stack Overflow用户

发布于 2013-07-24 15:12:52

使用这个程序,你可以找到一个8位数的阶乘,它的答案不超过24位!输入是在地址位置#2070中给出的,而输出是在2个存储器位置中获得的,顺序是#2074 #2073 #2072

代码语言:javascript
复制
    LHLD 2070
    ANI 00
    MOV C,L
    MOV D,A
    MOV E,A
    XCHG
    DCR C
    JZ EXPT
    JM EXPT
    MOV B,C
L1: DAD D

    JNC BAK1
    INR A
BAK1:   DCR C

    JNZ L1
L3: DCR B

    JZ STOP
    MOV C,B
    XCHG
    LXI H,0000
L2: DAD D

    JNC BAK2
    INR A
BAK2:   DCR C

    JNZ L2
    JMP L3
EXPT:   MVI A,01

    STA 2072
    JMP END
STOP:   SHLD 2072

    STA 2074
END:    HLT
票数 3
EN

Stack Overflow用户

发布于 2012-11-22 07:39:47

使用英特尔8085处理器,取8位数字,在本例中为5,我可以这样写:

代码语言:javascript
复制
mvi b,05
mov c,b
dcr b
l1: mov d,b
mvi a,00
l2: add c
dcr d
jnz l2
mov c,a
dcr b
jnz l1
hlt

那么5的阶乘就是十六进制的78。逻辑是..。5!= 5x4x3x2x1

所以加5四次,结果(即20)加三次,以此类推…(5+5+5+5)、(20+20+20)、(60+60)并将120转换为十六进制...

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2455690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档