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
。
答案 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