Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: bscreator am 04. September 2008, 23:22

Titel: Problem mit INCLUDE...
Beitrag von: bscreator am 04. September 2008, 23:22
Hallo OS-Coder,
hab ein kleines Problem mit der Präprozessor-Direktive "INCLUDE" von NASM. Angeblich kann man damit Dateien einbinden. Hab jetzt mal einen Testlauf gemacht mit einem kleinen Hauptprogramm "Hello.asm", das zum Ausgeben eines Strings die Funktion in "PROC.ASM" verwenden soll:

HELLO.ASM:
%include "PROC.ASM"
org 0x100
jmp start
msg db 'Hello World',13,10,0
start:
mov si,msg
call putstr
ret
PROC.ASM:
putstr:
lodsb
or al,al
jz putstr_end
mov ah,0x0E
mov bx,0x0007
int 0x10
jmp putstr

putstr_end:
retn

leider wird nichts ausgegeben, obwohl die putstr-Funktion stimmt. Hab schon versucht, mit dem Copy-Befehl beide zusammenzubinden zu einem File und dann auszuführen, geht auch net. Hello und Proc befinden sich im gleichen Verzeichnis.
Wo liegt der Fehler ?

Titel: Re: Problem mit INCLUDE...
Beitrag von: kevin am 05. September 2008, 00:46
Daß dein Programm jetzt nicht mehr mit jmp start, sondern mit putstr: anfängt?
Titel: Re: Problem mit INCLUDE...
Beitrag von: bscreator am 05. September 2008, 15:06
glaub ich hab mich falsch ausgedrückt:
Das Hauptprogramm "HELLO.ASM" soll die in der Datei "PROC.ASM" definierte Funktion "putstr" verwenden, um den String auf den Bildschirm auszugeben.
"PROC.ASM" soll eine zentrale Datei sein, in der diese Funktion und später auch alle anderen Funktionen definiert sind.

Titel: Re: Problem mit INCLUDE...
Beitrag von: arax am 05. September 2008, 15:33
Das Problem ist noch nicht gelöst oder?

Das include wird ja mit
putstr:
lodsb
or al,al
jz putstr_end
mov ah,0x0E
mov bx,0x0007
int 0x10
jmp putstr

putstr_end:
retn

ersetzt, dann hast du
;---
putstr:
lodsb
or al,al
jz putstr_end
mov ah,0x0E
mov bx,0x0007
int 0x10
jmp putstr
;--
putstr_end:
retn

org 0x100
jmp start
msg db 'Hello World',13,10,0
start:
mov si,msg
call putstr
ret

und das Programm fängt mit lodsb an.

Auch als zentrale Datei muss das include wenigstens unter die Startfunktion, also nachdem von ihr weggesprungen wurde.
Titel: Re: Problem mit INCLUDE...
Beitrag von: bscreator am 05. September 2008, 16:43
Ach, hast ja recht.
Das kommt wohl davon, wenn man zuviel C und C++ programmiert :-D
Danke schön und könntet ihr euch noch meine Frage bzgl. Arbeitsspeicher und Adressen (ebenfalls Lowlevel-Coding) anschauen ?

 
Titel: Re: Problem mit INCLUDE...
Beitrag von: bluecode am 05. September 2008, 22:33
Das kommt wohl davon, wenn man zuviel C und C++ programmiert :-D
:? In C/C++ wird es doch exakt gleich gemacht, einfach eine Datei textuell eingefügt...
Titel: Re: Problem mit INCLUDE...
Beitrag von: bscreator am 06. September 2008, 13:47
Nene,
meinte, dass in C bzw. C++ die Includes am Anfang einer Datei  stehen
Titel: Re: Problem mit INCLUDE...
Beitrag von: bluecode am 06. September 2008, 15:40
Die includes können in C/C++ "überall" stehen. :wink: