Assembler-noob

Hier könnt ihr sowohl zur x86 Architektur als auch zu Win32ASM Fragen stellen.

Moderatoren: crack, Krüsty, Marwin

Beitragvon Noob » Donnerstag 13. November 2003, 19:47

Hallo ihr da draußen,
also ich hab mich vor kurzem durch meine Technikerschule dazu motivieren lassen mich in den Assembler einzuarbeiten. Bis jetzt hab ich allerdings nur Erfahrung in C und sonst in keiner Programmiersprache bin also noch sozusagen ein echter Anfänger in Sachen Assembler.

Ich hab mir jetzt des Buch gekauft "Assembler-Grundlangen der Programmierung" von Marcus Roming und hab mir dann nach der Empfehlung des Buches das MASM-package gezogen.
Ich weiss bis jetzt auch wie ich den Quellcode eines Programmes unter MSDOS erzeuge also
halt einfach:
edit Hallo.ASM

nur wenn ich dann:
ml /c hallo.asm

eingebe will der Compiler einfach net compilieren. Da kommt dann die Meldung "kennt Befehl ml net".
Ich weiss leider net, was man da jetzt noch anders machen kann, oder was für Progs es zum compilen noch gibt aus dem package.Installiert hab ich das Package in dem ich einfach das Laufwerk angegeben hab und dann den Inhalt einfach in MASM32 installiert hab.

Was muss ich denn jetzt machen, damit ich den Quellcode compilen kann.

Bitte helft einen Anfänger
Noob
Newbie
 
Beiträge: 5
Registriert: Donnerstag 13. November 2003, 19:33

Beitragvon Krüsty » Donnerstag 13. November 2003, 21:56

Welches OS verwendest du?
Fakt ist, dass du, wenn du mit dem ml arbeiten willst, dem PC ja vorher sagen musst, wo diese Datei denn zu finden ist.
Unter MSDOS/Win9x/WinME geht das über die autoexec.bat am schnellsten.
Einfach unter den letzten eintrag folgende Zeile hinzufügen:
Code: Alles auswählen
PATH %PATH%;C:\masm32\BIN

Sollte dein Laufwerk, auf dem das MASM-Package installiert ist, nicht C sein, so ist statt C hier das entsprechende LW anzugeben.
Falls du damit nicht klar kommen solltest, einfach nochmal melden!

Noch ne kleine Bemerkung am Rande:
Aus dem Support-Hinweisen:
MASM32 geht davon aus, dass der Programmierer, welcher es benutzt, sowohl Erfahrungen mit der 32 Bit Windows API Programmierung besitzt als auch Assembler-Vorkenntnisse besitzt.
Das MASM32 Package ist nicht für Anfänger ausgelegt und es besitzt auch nicht die grundlegenden Informationen um Anfängern das Basiswissen zu vermitteln.

Was ich damit sagen will, trotz Buch kann das ein ziemliches durchbeißen werden. :D
Aber du wirst das schon schaffen.

Viel Spaß beim Proggen!
Krüsty
a member of CodingCrew.de
Air conditioned computer. Please keep WINDOWS closed.
Benutzeravatar
Krüsty
Administrator
 
Beiträge: 96
Registriert: Donnerstag 8. Mai 2003, 21:25
Wohnort: Dresden, Deutschland

Beitragvon Noob » Donnerstag 13. November 2003, 22:24

danke für die Hilfe. Ja des mit dem Autoexe.bat stand bei mir auch drinnen. Nur irgendwie hat des dann wohl net funktioniert.
Naja falls du noch nen Assembler weißt der eher was für Einsteiger ist, wäre es super wenn du mir des verraten könntest. Ich meine mit irgendwas muss doch jeder angefangen haben.

achja und ich verwende XP und Linux hab ich auch noch zur Auwahl nur als Hinweise für Assemblerprog.

Also danke nochmal für die Hilfe
Noob
Newbie
 
Beiträge: 5
Registriert: Donnerstag 13. November 2003, 19:33

Beitragvon Krüsty » Donnerstag 13. November 2003, 22:42

Jo, mit winxp und autoexec.bat sieht es mau aus, zumindest mit dem automatischen zuweisen des paths.
Es geht aber auch mit XP!
Rechtsklick auf Arbeitsplatz->Eigenschaften->Register: Erweitert. Dort auf Umgebungsvariablen klicken.
Dann gibt es dort 2 Listen. In der Unteren gibt es den Eintrag Path->Doppelklick drauf. Nun wird an das was da drin steht was angehängt.Auf keinen Fall etwas aus diesem Eintrag löschen!!!.
Also angehängt wird da:
Code: Alles auswählen
;C:\masm32\BIN

Das Semikolon (;) nicht vergessen!
Dann wird solange OK angeklickt, bis du wieder auf dem Desktop bist.

Wenn du nen Buch dazu hast, kommst du bestimmt durch. Es ist hat nur nicht die leichteste Sprache.

Krüsty
Zuletzt geändert von Krüsty am Samstag 1. Juli 2006, 16:53, insgesamt 1-mal geändert.
a member of CodingCrew.de
Air conditioned computer. Please keep WINDOWS closed.
Benutzeravatar
Krüsty
Administrator
 
Beiträge: 96
Registriert: Donnerstag 8. Mai 2003, 21:25
Wohnort: Dresden, Deutschland

Beitragvon Marwin » Freitag 14. November 2003, 17:35

Hi Noob,

im MASM32-Paket ist der Editor QuickEditor enthalten, mit dem kannst du bequem unter Windows deinen Quelltext bearbeiten, und per Menübefehl compilieren und linken (Project->Build All). Dabei solltest du aber beachten, dass im Pfad- & Dateinamen der Quellcode-Dateien nur normale Buchstaben, Zahlen, Unterstriche und Striche vorkommen sollten. Ansonsten könnte es Probleme verursachen bei der Parameterübergabe/-auswertung. Wenn du aber denoch unter der DOS-Konsole manuell den Quellcode compilieren und linken möchtest, dann mußt du ml /c c:\pfad\zur\quellcode\datei.asm angeben, und dich dabei im Ordner C:\MASM32\BIN befinden, da sonst die Datei ML.EXE ja nicht gefunden werden kann. Auch beim Linken mußt du den Pfad zur Quellcode-Datei angeben. Aber das einfachste ist eben der QuickEditor (c:\MASM32\qeditor.exe).
Unter DOS (nicht die Konsole!) kannst du ML.EXE und LINK.EXE aber nicht ausführen.
Wenn du mit Assembler unter Linux arbeiten möchtest, dann kannst du es mit FASM versuchen.

:P Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon Noob » Montag 17. November 2003, 22:29

Vielen Dank für eure Hilfen.
Ich werde die mal bald ausprobieren.
Also danke nochmal vom Noob ;)
Noob
Newbie
 
Beiträge: 5
Registriert: Donnerstag 13. November 2003, 19:33

Beitragvon Noob » Freitag 21. November 2003, 20:28

Hallo Leute also ich hab mal wieder ne Frage an euch.
Also ich des Programm für Hallo Welt geschrieben habe, hat er ohne Probs assembled.
Also es kam keine Fehlermeldung.

Aber beim Linken kam ne Fehlermeldung

fatal error LNK 1136: invalid or corrupt file

Woran kann denn des jetzt liegen. Wäre super wenn ihr mir wieder so helfen könntet wie am Anfang
Noob
Newbie
 
Beiträge: 5
Registriert: Donnerstag 13. November 2003, 19:33

Beitragvon Marwin » Freitag 21. November 2003, 20:37

Hast du den Befehl zum Linken über den QEditor gegeben? Gibt es sonst noch Ausgaben, welche beim Compilieren und Linken entstanden sind?

Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon Noob » Freitag 21. November 2003, 22:19

Nein beim compilen net und beim Linken auch net.
Ich hab des net im Quickeditor gemacht, da ich des noch im MSDOS machen wollte.
Also halt ml /c hallo.asm
link hallo.asm

und erst beim linken kam der fehler.

Quellcode:


.Model Small ;Speichermodell: Small
.Stack 100h ;StackgrӇe auf 256 Byte
.Data ;Beginn des Datensegments
Meldung DB "Hallo Welt$" ;Unsere Meldung
. Code ;Beginn des Codesegmentes
Start: mov ax,@data ;Datensegmentadresse nach ax
mov ds,ax ;Inhalt von AX nach DS
mov dx,OFFSET Meldung ;Offsetadr. nach dx
mov ah,09h
int 21h ;Schreibe String
mov ah,4Ch
int 21h ;Programm beenden
END Start
Noob
Newbie
 
Beiträge: 5
Registriert: Donnerstag 13. November 2003, 19:33

Beitragvon Krüsty » Donnerstag 11. Dezember 2003, 18:59

Ich kenne mich in MASM32 zwar nicht aus, aber man kann die .asm datei nicht linken. In der asm datei liegt doch der Quelltext, und nicht das Ergebnis des Compilierens. Es können nur .obj -Dateien gelinkt werden.

Deshalb mal probieren mit link hallo.obj .

Krüsty
a member of CodingCrew.de
Air conditioned computer. Please keep WINDOWS closed.
Benutzeravatar
Krüsty
Administrator
 
Beiträge: 96
Registriert: Donnerstag 8. Mai 2003, 21:25
Wohnort: Dresden, Deutschland

Beitragvon Marwin » Freitag 12. Dezember 2003, 15:10

Das ist richtig. Dieser Schreibfehler in deinem Post ist mir gar nicht aufgefallen. :rolleyes:

Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon CDW » Samstag 13. Dezember 2003, 16:04

hm, kann masm32 überhaupt 16-bit asm? (bzw. der Compiler kanns ja, aber der Linker ?, hab das vor längerer Zeit bei Iczelionwas drüber gelesen )
PS:
Hab dein Problem gefunden:
http://board.win32asmcommunity.net/showthr...ight=16bit+link
falls du net auf die Seite kommst oder so: da hat jemand genau dasselbe Prob wie du: masm32 compilt seinen Code, der linker macht aber net mit... Lösung: für 16-Bit exen braucht man auch einen 16-bit linker :)
den gibts für masm z.B hier :
ftp://ftp.microsoft.com/softlib/mslfiles/lnk563.exe
Oder du schaust dich einfach nach einem anderen compiler um (gibts so kleinere, fasm? oder sonstiges... imho ist masm32 für DOS einfach der Overkill)
CDW
Alter Hase
 
Beiträge: 62
Registriert: Donnerstag 2. Oktober 2003, 17:17

Beitragvon Marwin » Samstag 13. Dezember 2003, 16:25

Zumal MASM32 nicht auf DOS ausgelegt ist, sondern eben nur Win32-spezifische Inhalte zur Verfügung stellt (Hinweis: MASM32 bezeichnet nicht den Macro Assembler, sondern das Software-Packet).

Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland


Zurück zu Assembler

 


  • { RELATED_TOPICS }
    Antworten
    Zugriffe
    Letzter Beitrag

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

cron