Assembler in Visual Studio 2008

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

Moderatoren: crack, Krüsty, Marwin

Assembler in Visual Studio 2008

Beitragvon pacy » Sonntag 23. November 2008, 00:40

hallo *,

ich habe beschlossen mich ein wenig mit assembler zu beschäftigen. als entwicklungsumgebung würde ich gerne vs 2008 verwenden. ich habe zur einrichtung die anleitung von irvine verwendet (http://www.kipirvine.com/asm/gettingStarted/index.htm). das klappt soweit ganz gut, ich kann also unter vs 2008 direkt (ohne umwege über ein c++ sourcecodefile und damit ohne umwege über den inline assembler) asm sourcecode eingeben und auch assemblieren. allerdings hab ich dabei zwei probleme:

1. ich kann keine windows.inc verwenden
2. ich bekomme die fehlermeldungen vom assembler nicht im vs angezeigt

zu dem ersten problem habe ich schon folgendes versucht:

- masm32 package installiert und den pfad zu den *.inc dateien in visual studio mit eingetragen. funktioniert zwar technisch (*.inc datei wird gefunden) aber leider gibt der assembler eine ganze reihe von fehlern beim includen aus. kann ich auch irgendwie verstehen, da die ml.exe aus dem masm32 package version 6.xxx ist, der verwendete assembler aus dem vs aber version 10.xxx.

- ich habe verzweifelt nach einer möglichkeit gesucht, die beim masm32 package mitgelieferten ml.exe in visual studio einzubinden, das krieg ich aber leider nicht hin, da ich schlicht und einfach keine möglichkeit finde, die verwendete ml.exe im visual studio einzustellen.

- ich habe verzweifelt nach einer windows.inc im inet gesucht, die den ml.exe version 10.xxx unterstützt. leider kein ergebnis.

- da ich ja asm neuling bin und mir sowieso nicht klar ist, wofür ich die windows.inc eigentlich brauche :), habe ich nach alternativen gesucht, um betriebssystem routinen aufzurufen und bin im platform sdk, bzw. im win32.hlp package fündig geworden. für mein kleines testprogramm (irgendwo im inet downgeloaded - macht nichts weiter, als ein register zu löschen, einen errorcode zu pushen und dann die funktion ExitProcess aufzurufen) habe ich die funktion ExitProcess in der user32.lib gefunden. diese user32.lib finde ich in meinem system, dem visual studio ist der pfad dorthin bekannt, ich bekommen beim includen der datei auch keine fehlermeldung vom assembler, aber beim aufrufen der funktion ExitProcess, bekomme ich die meldung, dass diese funktion nicht bekannt sei.

Kann mir da bitte jemand helfen? also ich denke mir, ich brauche zum ausführen meines proggis entweder eine ml 10.xxx kompatible windows.inc oder eine möglichkeit die ml 6.xxx ins vs einzubinden oder hilfe, wie man die funktion ExitProcess aus der user32.lib aufruft.

zu meinem zweiten problem habe ich noch keine versuche unternommen. gibt es da die möglichkeit, die vom assembler ausgegebenen fehler im visual studio anzeigen zu lassen? so wie ich das verstehe, ist die ml.exe für das visual studio ein externes tool, was wohl die ursache für die fehlende unterstützung ist. ganz sicher bin ich mir da aber nicht, da ich zum beispiel die meldung "windows.inc includedatei nicht gefunden" im visual studio angezeigt bekomme, aber zum beispiel assemble vorgangsmeldungen nicht angezeigt bekomme.

schon mal vielen dank für eure antworten :)

gruß pacy
pacy
Newbie
 
Beiträge: 4
Registriert: Sonntag 23. November 2008, 00:02

Re: Assembler in Visual Studio 2008

Beitragvon pacy » Donnerstag 27. November 2008, 11:58

*bump*

hallo,

das keiner was zum visual studio sagen kann, leuchtet mir ein :), aber vllt. wäre bitte trotzdem jemand so nett, mir bei der sache mit der user32.lib zu helfen? wie kann ich denn betriebssystemroutinen aufrufen? ich habe versucht mir dieses wissen aus dem inet anzueignen, aber irgendwie fehlt mir da noch eine info um den zusammenhang des vielen gelesenen zu verstehen :(

danke euch!

gruß pacy
pacy
Newbie
 
Beiträge: 4
Registriert: Sonntag 23. November 2008, 00:02

Re: Assembler in Visual Studio 2008

Beitragvon crack » Donnerstag 27. November 2008, 19:48

die windows.inc ist normalerweise fester Bestandteil der Plattform SDK...

ml.exe in Version 6.xx? also das MASM32 Paket was Du hier bei uns herrunterladen kannst ist Version 9. sieh mal auf die Startseite ...
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Re: Assembler in Visual Studio 2008

Beitragvon pacy » Sonntag 30. November 2008, 00:29

hallo crack,

danke für deine antwort. also, auf deinen kommentar hin habe ich mir das masm32 package von hier runter geladen. v9. die ml.exe ist aber auch in diesem packet v6.14.8444. wie auch in meinem masm32 v10 package. nur der qeditor scheint (zumindest optisch, versionsnummern habe ich nicht kontrolliert) in dem v10 package neuer zu sein.

mein problem bleibt allerdings das gleiche, mein beispielquellcode produziert fehler. folgend mal der source von deinmeister.de:

Code: Alles auswählen
.386
.model flat

IFDEF masm
    option casemap :none
ENDIF

include include\windows.inc

IFDEF masm
    MessageBoxA equ _MessageBoxA@16
    ExitProcess equ _ExitProcess@4
ENDIF

extrn ExitProcess : near
extrn MessageBoxA : near

.data

    MessageBoxIrgendeintitel    db "Unglaublich, aber wahr",0
    MessageBoxNixsagenderInhalt db "Tolle Nachricht, was ?",0
    ErrorCode dd 0

.code

_anfang:

push MB_ICONHAND or MB_OKCANCEL
push offset MessageBoxIrgendeintitel
push offset MessageBoxNixsagenderInhalt
push 0 
call MessageBoxA       
push ErrorCode
call ExitProcess

end _anfang


und zwar wirft der assembler folgende fehler aus:

D:\masm32\include\windows.inc(53) : error A2119: language type must be specified
D:\masm32\include\windows.inc(122) : error A2004: symbol type conflict : bool
D:\masm32\include\windows.inc(7088) : error A2179: structure improperly initialized

diese fehler mehrfach, bis der assembler nach 100 aufhört :)

die sache mit dem visual studio habe ich vorerst aufgegeben, da mache ich dann weiter versuche, wenn ich es überhaupt mal geschafft habe, nen code zu assemblieren :)

gruß pacy
pacy
Newbie
 
Beiträge: 4
Registriert: Sonntag 23. November 2008, 00:02

Re: Assembler in Visual Studio 2008

Beitragvon crack » Sonntag 30. November 2008, 13:41

Ich hab da nur zwei Hypothesen:

Einerseits ist die include Datei in deinem Quelltext über eine relativen Pfadangabe spezifiziert, das könnte evtl. zu Problemen führen, möglicherweise solltest Du mal versuchen die Datei über eine absolut Pfadangabe zu laden.

Andererseits wäre es theoretisch möglich das etwas mit der Pfad Einstellung in den Umgebungsvariablen nicht ok ist, da emphehle ich Dir mal hier im Forum einige ältere Threads in denen ähnliche Probleme behandelt wurden.
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Re: Assembler in Visual Studio 2008

Beitragvon pacy » Dienstag 2. Dezember 2008, 13:13

hallo,

also ich habe eine lösung....verstehe sie allerdings nicht :)

das problem tritt nicht auf, wenn ich

1. den pfad der windows.inc so formuliere: include masm32\include\windows.inc
2. die userlib mit einbinde: includelib \masm\include\user32.lib

dann geht's, lasse ich eine der änderungen weg, so meckert er in oben genannter weise. wie dem auch sei, ich mach das halt jetzt so und hoffe, dass mich im laufe der zeit die einsicht von hinten überraschen wird :)

danke für eure hilfe,

gruß pacy
pacy
Newbie
 
Beiträge: 4
Registriert: Sonntag 23. November 2008, 00:02


Zurück zu Assembler

 


  • { RELATED_TOPICS }
    Antworten
    Zugriffe
    Letzter Beitrag

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]

cron