1

現在の私の懸念の 1 つは、LCD 画面で CountRoutes、FindRoutes、または DisplayRoutes を実行するために、C プログラムから呼び出す必要があるいくつかのアセンブリ言語サブルーチンを作成することです。たとえば、これはルートアドレスを保存したコードで、最初のサブルーチンである CountRoutes では、-1 を見つけてカウントを停止する前に、メモリ内にあるルートの数をカウントする必要があります。

これは私がこれまで行ってきたことであり、機能していません。変更する必要があるのは、.byte null 行を無視し (下の 2 つの文字列にジャンプ)、文字列の最後にいるかどうかを確認し (0 を満たす)、別の .word が見つかるまでもう一度ジャンプすることです。 6 または -1。

            .word  4
            .byte  null
            .asciz "Dee Bridge"
            .asciz ""

            .word  5
            .byte  'x
            .asciz "Echt Terminus"
            .asciz "Express"

            .word  -1              ; route 0xffff terminates the data set

.area   text

_RouteCount::
            pshx
            tfr     d,y         ;
            ldx     #0          ; Clear index
Loop:       ldab    1,y+        ; Fetch next character; inc Y
            bmi     Done        ; If -1 is found, exit loop
            bra     Loop        ; Repeat loop 
            ldx     #1          ; Store no match flag in X
            beq
            bra     Loop
Done:       tfr     Y,D         ; Transfer index in D
            pulx
            rts   
4

0 に答える 0