2016-04-05 27 views
0

Ich benutze easy68k zum ersten Mal, und ich schrieb zwei Makros, die ich in meinem Programm aufrufen möchte. Die Makrodefinitionen wurden problemlos kompiliert.Easy68k: So rufen Sie ein Makro in der Montage auf?

Wenn ich jedoch versuche, das Makro aus dem Hauptprogramm (d. H. Nach der "org" -Anweisung) aufzurufen, kompiliert es nicht.

Ich versuchte alle die Syntax, die ich denken konnte, überprüfte den Hilfebereich und ein paar andere Seiten im Internet, und nichts funktionierte.

Derzeit, wenn ich den Code zu kompilieren, zeigt es zwei Fehlermeldungen:

Man sagt: Linie 57 (MUL_MAC d1, d3,) ERROR: Invalid argument Der andere sagt: Linie 60 (BSR MUL_SUB) ERROR: Invalid argument

Hier ist meine Quellcode (MC68000 Montage):

MUL_MAC macro   
    movem.l d6-d7, -(a7) 
    move.w \1, d6 
    clr.l d7 
loop\@ add.w \2, d7 
    dbra d6, loop\@ 
    move.w d7, \2 
    movem.l (a7)+, d6-d7 
    endm 

MUL_SUB equ *   ; Subroutine 
    move.w d2, d3 
    clr.l d4 
loop_sub add.w d1, d4 
    dbra d3, loop_sub 
    move.w d4, d2 
    rts 

PRINT_RES macro   
    movem.l d5-d7, -(a7) 
    clr.l a1 
    move #248, d7 ; Code to display character 
    cmp \1, \2 
    beq right\@ 
    move.b INC_L, d5 
loop_ch_2\@ move.b INC(a1)+, d0 
    trap #14 
    dbra d5, loop_ch_2\@ 
    bra finish\@ 
right\@ move.b COR_L, d5 
loop_ch_2\@ move.b COR(a1)+, d0 
    trap #14 
    dbra d5, loop_ch_2\@ 
finish\@ movem.l (a7)+, d5-d7 
    endm 

    ORG $1000 
START:     ; first instruction of program 

    clr.w d1 
    clr.w d2 
    clr.w d3 
    clr.w d4 

    move.w X, d1 
    move.w Y, d2 
    move.w d2, d3 
    move.w d2, d4 

    mulu d1, d4   ; Store the actual result in d2 to compare later 
    MUL_MAC d1,d3, 
    PRINT_RES d3,d4, 

    bsr MUL_SUB 
    PRINT_RES d2,d4, 

    move #228, d7 
    trap #14 

* Put program code here 

    SIMHALT    ; halt simulator 

* Put variables and constants here 

X ds 1 
Y ds 1 
INC dc.b 73, 78, 67, 79, 82, 82, 69, 67, 84 ; INCORRECT 
COR dc.b 67, 79, 82, 82, 69, 67, 84   ; CORRECT 
INC_L dc.b 9         ; Length of INCORRECT 
COR_L dc.b 7         ; Length of CORRECT 


    END START  ; last line of source 
+0

Define _ "kompiliert nicht" _. Erhalten Sie eine Fehlermeldung? Wenn ja, was genau sagt die Nachricht? – Michael

+0

Das ist ein guter Punkt, ich werde den Beitrag bearbeiten, um das einzuschließen, aber im Grunde zeigt es zwei Fehlermeldungen an, wenn ich das oben kompilierte: Man sagt: Linie 57 (MUL_MAC d1, d3,) FEHLER: ungültiges Argument Der andere sagt: Zeile 60 (bsr MUL_SUB) FEHLER: Ungültiges Argument – gameCoder95

Antwort

0

wenigstens würde ich die Hinter Kommas wie diese

entfernen