0
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

4

1 回答 1

1

我不知道你为什么要在寄存器的LOOP1标签上做额外的递减(后面跟着递增),但是什么时候它会导致变为 0,然后它会环绕并再执行 255 次乘法循环。BBCFFh

相反,为什么不取出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
于 2015-12-29T05:05:43.153 回答