我想找一个阶乘数,我先取内存。(英特尔8085)
编辑:我是初学者。我不知道怎么写它的汇编代码。
伪代码:
input n
fact = 1
loop:
..multiply fact by n
..decrement n
..test n
..jump if not zero to loop
output fact发布于 2010-03-16 23:50:48
首先,如果你想使用8085,你最好学习如何写它。汇编程序,特别是对于旧的8位微处理器,不是你可以简单地拿起盒装软件然后打补丁的东西。
其次,你到底用什么来表示数字呢?8085具有8位总线,可将寄存器用作16位。如果您被限制为16位数字,您可以使用查找表,因为您不能表示9!不管怎么说。
第三,如果你是以算法的方式来做的,你可能想要先看看你用来做乘法的是什么。8085没有片上乘法。(我曾经在一次使用Z80的多精度乘法和除法比赛中获胜,它有一些8085没有的功能。特别是,我能够使用备用寄存器组来做一些有用的事情。)
发布于 2013-07-24 15:12:52
使用这个程序,你可以找到一个8位数的阶乘,它的答案不超过24位!输入是在地址位置#2070中给出的,而输出是在2个存储器位置中获得的,顺序是#2074 #2073 #2072
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发布于 2012-11-22 07:39:47
使用英特尔8085处理器,取8位数字,在本例中为5,我可以这样写:
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转换为十六进制...
https://stackoverflow.com/questions/2455690
复制相似问题