Autor Thema: Macro Problem  (Gelesen 10089 mal)

Nic

  • Beiträge: 13
    • Profil anzeigen
Gespeichert
« am: 14. April 2004, 12:59 »
Hi,
Ich habe mal wieder ein Assembler problem ...
Also erstmal hier der code:
;-----------------------------------------------------------------------------------------
;-                               Testprogramm by Nic                                     -
;-----------------------------------------------------------------------------------------

org 100h

mov ah,09
mov dx,msgEingabe
int 21h

InputChar
NewLine

mov ah,09
mov dx,msgDanke
int 21h

NewLine
Exit

;-----------------------------------------------------------------------------------------
;-                            Funktionen und Variablen                                   -
;-----------------------------------------------------------------------------------------

%macro InputChar 0
   mov ah,01
   int 21h
%endmacro

%macro NewLine 0
  mov ah,02
  mov dl,13
  int 21h
  mov dl,10
  int 21h
%endmacro

%macro Exit 0
  mov ah,4Ch
  int 21h
%endmacro

msgEingabe db "Bitte drücken sie eine Taste :","$"
msgDanke   db "Danke ...","$"
Wenn ich das Kompiliere bekomme ich fogende Fehlermeldung
macro.asm:18: error: symbol 'NewLine' redefined
wenn ich die Zeile lösche kann ich es ohne weitere probleme kompilieren blos wenn ich es ausführe bekomme ich eine Windows-Fehlermedung: Link:[link]http://home.arcor.de/nic.j/error.jpg[/link]

thx, Nic! ;)

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #1 am: 14. April 2004, 13:19 »
Also bei deinem kruzem Programm lohnt es sich eigentlich nicht das alles in Macros zupacken.Zudem würde ich eher empfehlen das entweder direkt als Code zu schreiben oder dann eben als Funktionen und diese mit call aufrufen.
----------------------
Redakteur bei LowLevel

Nic

  • Beiträge: 13
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 14. April 2004, 13:22 »
wohlmöglich hast du recht, aber das programm hab ich ja eigentlich nur geschreiben um den umgang mit Macros zu lernen...

Nic

  • Beiträge: 13
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 15. April 2004, 10:40 »
das problem hab ich immer noch :)

thx, Nic! ;)

Saberforce

  • Beiträge: 11
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 15. April 2004, 13:00 »
zu der fehlermeldung von NASM:

Du definierst NewLine neu am besten ersetzt du NewLine
mit NeueLinie dann sollte das ganze klappen

zu Windows:
Windows kann nicht mehr jeden interrupt ausführen (festplatten zugriffe etc.)
das ganze lässt sich nur im reinen dos lösen dort sind
die begrenzungen anders

aber bei Interrupts bin ich mir nicht 100 pro
sicher

greetz Saber

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #5 am: 15. April 2004, 13:38 »
Versuch doch mal die Macros oberhalb deines Programms hinzukopieren.
----------------------
Redakteur bei LowLevel

Nic

  • Beiträge: 13
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 15. April 2004, 14:03 »
ok, es funzt ...danke! ;)

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #7 am: 15. April 2004, 15:21 »
Zur erklärung:

Du musst Macros VORHER definieren, BEVOR du diese benutzt.

Daher immer ganz an den Anfang setzen. Der Compiler "übersieht" diese beim Compilen, bis sie benutzt werden.
----------------------
Redakteur bei LowLevel

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #8 am: 15. April 2004, 16:52 »
Lustigerweise hat er die Macros unter der Überschrift Funktionen:P hat damit aber garnix zu tun^^ Wird Zeit das unsre Tuts kommen glaub ich
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

Saberforce

  • Beiträge: 11
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 15. April 2004, 17:31 »
hmm wusste gar nit das man bei Nasm macros
voher setzten muss :D

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #10 am: 15. April 2004, 17:47 »
Ist generell so. Wenn du etwas benutzen willst, musst du es VORHER definieren damit der Compiler ja auch weiß das es sowas gibt.

Headerdateien bindest du bei C ja auch immer ganz oben ein ;)
----------------------
Redakteur bei LowLevel

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #11 am: 15. April 2004, 19:12 »
Oder stell dir vor du solllst ein Kroxldyfig von da nach da bringen und dir sagt keiner VORHER was ein Kroxldyfig ist:P
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

Nic

  • Beiträge: 13
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 16. April 2004, 12:06 »
@Roshl, Klar weiß ich was ein Kroxldyfig ist ...
[zitat]Kroxldyfig ist ein sehr schwer zu erklärendes Wort[/zitat]
(SouthPark) =)

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #13 am: 16. April 2004, 17:47 »
Mist er hats gemerkt:P
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #14 am: 17. April 2004, 21:44 »
das ERROR-bild kommt bei mir auch immer, wenn ich direkt auf Hardware zugreifen will unter WIN... Ich denke das liegt daran, dass WIN im P-Mode läuft...
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

 

Einloggen