繁体   English   中英

在分支程序 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    

写入值本身并且只要不显示任何内容,因为它从零开始,而且您必须添加#'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)+

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM