在分支程序 Motorola 68K 中不显示输出
Not displaying output in branching program Motorola 68K
在完成循环后,我无法将任何输出显示到我的答案缓冲区,即使我输入 2 它也没有将其显示为输出。我确定我的问题出在 for、if 或 factor 块中,但我已经查看我的代码一段时间了,但没有任何帮助。感谢您的帮助!
for:
cmp.l D0,D3 *D3-D0
bne if *!= 0
move.l D3,(A2)+
bra done
if:
move.l D0,D7
divu D3,D7
clr.w D7
swap D7
move.w D7,D6
tst.w D6
beq factor
addq #1,D3
bra for
factor:
move.b #'*',(A2)+
move.b D3,(A2)+
bra done
divu D3,D0
swap D0
clr.w D0
swap D0
subq #1,D3
bra for
此处:
move.l D3,(A2)+
bra done
写入值本身和 as long 不会显示任何内容,因为它从零开始,而且您必须添加 #'0'
:
move.b D3,(A2)
add.b #'0',(A2)+
bra done
这里也一样:
factor:
move.b #' * ',(A2)+
move.b D3,(A2)+
第一行是可疑的并且可能依赖于汇编程序,因为你在一个字节中存储了一个 3 字节的字符串...
第二行漏加了0个ascii码。我会改写为:
factor:
move.b #' ',(A2)+
move.b #'*',(A2)+
move.b #' ',(A2)+
move.b D3,(A2)
add.b #'0',(A2)+
在完成循环后,我无法将任何输出显示到我的答案缓冲区,即使我输入 2 它也没有将其显示为输出。我确定我的问题出在 for、if 或 factor 块中,但我已经查看我的代码一段时间了,但没有任何帮助。感谢您的帮助!
for:
cmp.l D0,D3 *D3-D0
bne if *!= 0
move.l D3,(A2)+
bra done
if:
move.l D0,D7
divu D3,D7
clr.w D7
swap D7
move.w D7,D6
tst.w D6
beq factor
addq #1,D3
bra for
factor:
move.b #'*',(A2)+
move.b D3,(A2)+
bra done
divu D3,D0
swap D0
clr.w D0
swap D0
subq #1,D3
bra for
此处:
move.l D3,(A2)+
bra done
写入值本身和 as long 不会显示任何内容,因为它从零开始,而且您必须添加 #'0'
:
move.b D3,(A2)
add.b #'0',(A2)+
bra done
这里也一样:
factor:
move.b #' * ',(A2)+
move.b D3,(A2)+
第一行是可疑的并且可能依赖于汇编程序,因为你在一个字节中存储了一个 3 字节的字符串...
第二行漏加了0个ascii码。我会改写为:
factor:
move.b #' ',(A2)+
move.b #'*',(A2)+
move.b #' ',(A2)+
move.b D3,(A2)
add.b #'0',(A2)+