Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: Assembler ::  NASM: Simpler Beispielcode  
Gehen Sie zu Seite 1, 2  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
Bizarre
Mitglied

Benutzerprofil
Anmeldungsdatum: 17.06.2016
Beiträge: 19
Beitrag Bizarre Mitglied 14:07:24 04.08.2016   Titel:   NASM: Simpler Beispielcode            Zitieren

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!


Zuletzt bearbeitet von Bizarre am 14:08:32 04.08.2016, insgesamt 2-mal bearbeitet
Bizarre
Mitglied

Benutzerprofil
Anmeldungsdatum: 17.06.2016
Beiträge: 19
Beitrag Bizarre Mitglied 17:22:17 04.08.2016   Titel:              Zitieren

Ich hab jetzt mal mein neues Buch aufgeschlagen... folgenden Code will ich mit MASM (nicht NASM) compilieren:

Assembler:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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 : Anfang

Könnt ihr mir helfen?
Bizarre
Mitglied

Benutzerprofil
Anmeldungsdatum: 17.06.2016
Beiträge: 19
Beitrag Bizarre Mitglied 20:13:20 04.08.2016   Titel:              Zitieren

Ok ich habe jetzt schon heraus gefunden dass ein Win32 Assembler Programm wie folgt aufgebaut ist...

Assembler:
1
2
3
4
5
6
7
8
9
.386
.model flat, stdcall
 
.data
 
.code
 
start:
end start


Aber compilieren kann ich das noch nicht :( irgendein Tipp?
Techel
Mitglied

Benutzerprofil
Anmeldungsdatum: 19.09.2015
Beiträge: 746
Beitrag Techel Mitglied 20:53:55 04.08.2016   Titel:              Zitieren

NASM ist die Rohheit in Person. Du kannst zwar sections definieren, aber Dinge wie assume oder Funktionen kennt NASM nicht.
nachtfeuer
Moderator

Benutzerprofil
Anmeldungsdatum: 08.04.2010
Beiträge: 2029
Beitrag nachtfeuer Moderator 14:07:36 05.08.2016   Titel:              Zitieren

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.php

Du 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.computerhistor ....... ms-dos-early-source-code/
Bizarre
Mitglied

Benutzerprofil
Anmeldungsdatum: 17.06.2016
Beiträge: 19
Beitrag Bizarre Mitglied 18:28:08 05.08.2016   Titel:              Zitieren

Vielen dank für die Links, damit komm ich definitiv weiter :)

Also ich hab jetzt mal ein Grundgerüst gebaut...

Assembler:
1
2
3
4
5
6
7
8
9
.386
.model flat
 
.data
TestMessage  db "test...",0
 
.code
start:
end start


Das lässt sich auch compilieren aber der Linker gibt mir aus:

Code:
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 :)
Techel
Mitglied

Benutzerprofil
Anmeldungsdatum: 19.09.2015
Beiträge: 746
Beitrag Techel Mitglied 18:33:00 05.08.2016   Titel:              Zitieren

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
Bizarre
Mitglied

Benutzerprofil
Anmeldungsdatum: 17.06.2016
Beiträge: 19
Beitrag Bizarre Mitglied 19:08:27 05.08.2016   Titel:              Zitieren

DANKE DANKE DANKE :D 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:

Code:
@echo off
ml.exe test.asm
pause
Bizarre
Mitglied

Benutzerprofil
Anmeldungsdatum: 17.06.2016
Beiträge: 19
Beitrag Bizarre Mitglied 19:39:48 05.08.2016   Titel:              Zitieren

Habs jetzt mit

Code:
ml.exe /c test.asm


probiert aber da kommt irgendso eine komische Wahrnung:

Code:
warning A4023:with /coff switch, leading underscore required for start address : start


Wie kriege ich das weg?
Gast3
Unregistrierter




Beitrag Gast3 Unregistrierter 10:01:17 06.08.2016   Titel:              Zitieren

so jetzt mal ruhe mit den komische Fragen

Zitat:
warning A4023:with /coff switch, leading underscore required for start address : start


steht doch wortwörtlich da - dein "start" muss "_start" heissen
C++ Forum :: Assembler ::  NASM: Simpler Beispielcode  
Gehen Sie zu Seite 1, 2  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.