0

我似乎无法打印横幅 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
4

1 回答 1

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
于 2015-12-02T17:39:36.483 回答