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 を含むままにし、トラップ ハンドラはタスク番号を 0 ではなく $5600 として取得します。

A1 に保持されている文字列を表示するためのタスク 0 の呼び出しで、D1 に表示する文字列の長さを指定していません (マニュアルに従って)。これも単語の長さである必要があります。マニュアルには NULL で停止すると書かれていますが、これは D1 ではなく文字列で NULL 文字を読み取ることを指しています。

したがって、コードは次のようになります。

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 に答える