如何打印字符串?

时间:2015-11-10 06:17:10

标签: easy68k

我似乎无法打印横幅A,#都在同一条线上。 我不允许通过添加CR和LF来编辑字符串。请帮忙!

     START:                  ; first instruction of program

loop
move.b #5,D0
trap #15

lea str,A1
move.b #0,D0
trap #15

bra loop


SIMHALT             ; halt simulator


             str
              dc.b '    #     '
              dc.b '   # #    '
              dc.b '  #   #   '
              dc.b ' #     #  '
              dc.b ' #######  '
              dc.b ' #     #  '
              dc.b ' #     #  '





END    START        ; last line of source

1 个答案:

答案 0 :(得分:0)

我在你的代码中发现了一些东西。

当您将任务编号传递给陷阱15调用时,您应该使用move.w存储它,这将确保陷阱处理程序只接收您想要的值。如果寄存器之前有一个分配给它的$ 12345678这样的数字,那么move.b#0,Dr会留下它包含$ 12345600,陷阱处理程序会将任务编号设为$ 5600而不是0。

在调用任务0以显示A1中保存的字符串时,您没有指定要在D1中显示的字符串长度(根据手册),这也应该是字长。手册确实说它在NULL上停止,但这是指在字符串中读取NULL字符,而不是在D1中。

所以你的代码变成了:

loop
    move.w #5,D0
    trap #15

    lea str,A1
    move.w #0,D0   ; Display string action
    move.w #70,d1  ; Maximum number of characters to display
    trap #15

    bra loop