NASM: Simpler Beispielcode
-
Hallo!
Ich habe es endlich geschafft einen guten Compiler zu finden... NASM.
Jetzt brauche ich nur noch einen absolut simplen Beispielcode um zu sehen, ob mein Compiler und Linker auch wirklich funktionieren.Kann mir einer bitte einen absolut simplen Code für NASM (64 bit Windows) posten?
P.S. Ja, ich bin ein totaler Noob. Bitte habt Nachsicht.
Danke schonmal im Voraus!
-
Ich hab jetzt mal mein neues Buch aufgeschlagen... folgenden Code will ich mit MASM (nicht NASM) compilieren:
DATEN SEGMENT Meldung db "Assembler ist garnicht so schwer." db "$" DATEN ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATEN Anfang: mov ax, DATEN mov ds, ax mov dx, offset Meldung mov ah, 9 int 21h mov ah, 4Ch int 21h CODE ENDS END Anfang
Er gibt mir aber Errors raus...
1. test.asm(12) : error A2004:symbol type conflict
2. test.asm(25) : warning A4023:with /coff switch, leading underscore required for start address : AnfangKönnt ihr mir helfen?
-
Ok ich habe jetzt schon heraus gefunden dass ein Win32 Assembler Programm wie folgt aufgebaut ist...
.386 .model flat, stdcall .data .code start: end start
Aber compilieren kann ich das noch nicht irgendein Tipp?
-
NASM ist die Rohheit in Person. Du kannst zwar sections definieren, aber Dinge wie
assume
oder Funktionen kennt NASM nicht.
-
Das ist 16 Bit Code, der geht in 64 Bit (Windows) nicht.
Benutze einen Dos-Emulator und schau, wie weit du damit kommst, oder schau dich
einmal auf diesen Seiten um:http://www.deinmeister.de/w32asm1.htm
http://www.codingcrew.de/masm32/index.phpDu kannst auch den PC-Emulator Bochs nehmen, die Hilfsanleitung auf
http://www.henkessoft.de/OS_Dev/OS_Dev1.htm ist ganz gut.Ansonsten gibt es seit einiger Zeit den Source Code von Dos 1 und 2
http://www.computerhistory.org/atchm/microsoft-ms-dos-early-source-code/
-
Vielen dank für die Links, damit komm ich definitiv weiter
Also ich hab jetzt mal ein Grundgerüst gebaut...
.386 .model flat .data TestMessage db "test...",0 .code start: end start
Das lässt sich auch compilieren aber der Linker gibt mir aus:
LINK : fatal error LNK1221: a subsystem can't be inferred and must be defined
Was mache ich falsch? Ich benutze den MASM Compiler und Linker von Visual Studio.
Danke schonmal im Voraus
-
Du müsstest noch ein Subsystem angeben, entweder in den Projekteinstellungen oder mit dem
/SUBSYSTEM
-Schalter: https://msdn.microsoft.com/de-de/library/w40575ex.aspx
-
DANKE DANKE DANKE endlich... meine Güte war das eine schwere Geburt.
Eine Sache noch... welche Parameter muss ich dem Compiler übergeben, damit er nur ein OBJ File erstellt und nichts anderes? Mein Code ist:
@echo off ml.exe test.asm pause
-
Habs jetzt mit
ml.exe /c test.asm
probiert aber da kommt irgendso eine komische Wahrnung:
warning A4023:with /coff switch, leading underscore required for start address : start
Wie kriege ich das weg?
-
so jetzt mal ruhe mit den komische Fragen
warning A4023:with /coff switch, leading underscore required for start address : start
steht doch wortwörtlich da - dein "start" muss "_start" heissen
-
Sauber! Jetzt klappt alles vielen Dank an euch alle!