здесь:
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)+