汇编级编程找到阶乘

时间:2015-12-29 03:17:12

标签: microprocessors 8085

MVI B 07h
LXI H 0007h
LXI D 0007h
DCR B
LOOP1: DCR B
MOV C B
INR B
LOOP: DAD D
DCR C
JNZ LOOP
MOV E L
MOV D H
DCR B
JNZ LOOP1
HLT

我在代码中找不到问题。你能帮帮我吗?这给了我一些错误的答案。两个LSB位是正确的,但不是MSBs

1 个答案:

答案 0 :(得分:1)

我不确定您为什么要在LOOP1标签处对B寄存器执行额外减量(后跟增量),但B为{一,它导致C变为0,然后回绕到FFh并再执行乘法循环255次。

相反,为什么不取出DCR B / INR B,在乘法循环之前只需将H寄存器设置为0.完整程序如下所示:

MVI B, 07h
LXI H, 0007h
LXI D, 0007h
DCR B

LOOP1:
    MOV C, B
    LXI H, 0

    LOOP:
        DAD D
        DCR C
        JNZ LOOP

    MOV E, L
    MOV D, H
    DCR B
    JNZ LOOP1

HLT