0

アセンブリ言語に関しては初心者です。「簡単な 68k エディター/アセンブラー」を使用して、ユーザーに 2 つの値を要求し、それらを合計して表示する 68k アセンブリ コードを記述しています。問題は、コードが停止し続け、この問題をトラブルシューティング/デバッグする方法がわからないことです。

エラーを追跡する方法を理解するのを手伝ってくれる人はいますか? 私は感謝するでしょう。前もって感謝します。

*-----------------------------------------------------------
* Program    : Sum of Two Numbers
* Written by : Me
* Date       : July 15, 2012
* Description: This program will read in 2 numbers the user
*inputs and find the sum.
*-----------------------------------------------------------

    org     $8000

    START       movea.l #MSG1, A3
                trap    #3
                clr.w   D2
                JSR     Loop
                trap    #2
                move.w  d2, d4
                movea.l #msg2, a3
                trap    #3
                clr.w   d2
                jsr     loop
                trap    #2
                movea.l #msg3, A3
                trap    #3
                add.w   d4, d2
                JSR     DISP
                trap    #2
                trap    #9
    LOOP        trap    #0
                trap    #1
                cmp.b   #$0D, D1
                BEQ     BREAK
                and.b   #$0F, d1
                mulu    #10, d2
                add.w   d1, d2
                jmp     loop
    Break       rts
    DISP        clr.b   d3
    DISDIV      divu    #10, D2
                move.b  #16, d5
                ror.l   d5, d2
                or.b    #$30, d2
                move.b  d2, -(A7)
                addq    #1, d3
                clr.w   d2
                ror.l   d5, d2
                bne     DISDIV
    DISDIG      move.b  (a7)+, D1
                trap    #1
                subq.b  #1, D3
                bne     DISDIG
                rts
                org     $8100
    MSG1        DC.B    'Please enter the first of two numbers (two digits) ', 0
    MSG2        DC.B    'Please enter the second of two numbers (two digits) ', 0
    MSG3        DC.B    'The sum of the two 2 digit numbers you entered is ', 0
                end     start
4

2 に答える 2

1

コードは次のように開始する必要があります。

LEA    MSG1, A1
MOVE.B #14, D0
TRAP   #15

これにより、ユーザーへの最初のメッセージが表示されます。I/O トラップの呼び出しの詳細については、EASy68K ホームページを参照してください。

于 2012-07-16T16:32:19.330 に答える
0

ほとんどの場合、使用しているトラップは Easy68K で使用されているものではありません。Easy68Kが使用するトラップについては、こちらを参照してください。

トラップ命令の機能は、68K アセンブリ言語では定義されていませんが、オペレーティング システムによって割り当てられます (OS がトラップを使用する場合、トラップを無視するものもあります)。トラップ命令を実行すると、68000 はトラップ ベクトルが指すコードを実行するだけです。トラップに割り当てられた「ビルトイン」機能はありません。

于 2012-07-16T14:18:02.643 に答える