Не отображается вывод в программе ветвления Motorola 68K - PullRequest
2 голосов
/ 27 апреля 2019

У меня проблемы с отображением любого вывода в буфер ответов после прохождения цикла, даже когда я вставляю 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

1 Ответ

1 голос
/ 27 апреля 2019

здесь:

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)+
...