[Assembler] unter Windows programmieren

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Hapablap, 7. Dezember 2008 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 7. Dezember 2008
    unter Windows programmieren

    Hi Leute,

    Ich versuche zur Zeit etwas mit Assembler auf meinem PC hinzubekommen. Ich hab bisher immer nur aufm Mikrocontroller Assembler programmiert und da ging das alles ein bisschen anders. Jetzt bin ich schon länger auf der Suche nach einer Möglichkeit aufm PC Assembler zu programmieren.
    Hab mir grad Microsoft Visual C++ Express Edition geholt, weil es dafür den Microsoft Macro Assembler 8.0 (MASM) gibt. Jetzt lad ich mir den aber runter und dann kommt ständig, dass für MASM Microsoft Visual C++ Express erforderlich ist, obwohl ich die ja installiert hab.

    Weiß jemand, was man da machen kann oder sonst eine Alternative, wie ich unter Windows Assembler programmieren kann?

    Danke schon mal!
    Hapablap
     
  2. 7. Dezember 2008
    AW: unter Windows programmieren

    Also in der Schule coden wir mit RIDE

    hast auch Simulation dabei für Ports etc.!

    Raisonance extranet
     
  3. 7. Dezember 2008
    AW: unter Windows programmieren

    Möchtest du jetzt Assembler programmieren oder C++ und Assembler? Wenn du nur Assembler programmieren willst warum ladest du dir dann Visual C++ runter? Bisschen verwirrend dein Beitrag.

    Wenn du Assembler programmieren möchtest dann wäre FASM oder MASM am besten:
    MASM32 Home Page (Version 10, wie kommst du den auf 8?)
    flat assembler

    Als IDE kann ich dir WinAsm WinAsm Studio, The Assembly IDE - Free Downloads, Source Code oder RadASM radasm.com - de beste bron van informatie over radasm. Deze website is te koop! empfehlen.
     
  4. 7. Dezember 2008
    AW: unter Windows programmieren

    Nein, also ich möchte Assembler programmieren. Visual C++ habe ich mir runtergeladen, weil ich auf der Microsofthomepage MASM 8 gefunden habe und das Setup mir sagt, dass ich vorher Visual C++ installieren muss.

    WinAsm hab ich auch ausprobiert, will aber irgendwie nicht so, wie ich es will Also es kommt jedes mal ein Fehler beim compilieren.

    Aber jetzt hab ich mir grad dieses masm32 geholt ... das sieht ziemlich gut aus! Hab da jetzt aber auch wieder ein Problem. Undzwar hab ich mir ein paar Hello World Codes geholt und diese versucht zu compilieren. Bekomme aber immer diese Fehlermeldung:

    für:

    Code:
    .model small
    .data
     Meldung db "Assembler ist gar nicht so schwer"
     db "$"
    .code
     Anfang: 
     mov ax, @data
     mov ds, ax
     mov dx,offset Meldung
     mov ah,9
     int 21h
     mov ah,4Ch
     int 21h
    
    end
    Bei dem Wikipedia Beispiel:

    Code:
    DATA SEGMENT ;- Beginn des Datensegments
    Meldung db "Hello World" ;- Die Zeichenkette "Hello World"
     db "$" ;- Endzeichen der Zeichenkette
    DATA ENDS ;- Ende des Datensegment
    CODE SEGMENT ;- Beginn des Codesegements
    ASSUME CS:CODE,DS:DATA ;- Dem Assembler die Segmente mitteilen
    Anfang: ;- Label für den Anfang des Programms
    mov ax, DATA ;- das Daten...
    mov ds, ax ; ...segment laden
    mov dx, offset Meldung ;- den Text in das Datenregister laden
    mov ah, 09h ;- dem Betriebssystem mitteilen, was wir wollen
    int 21h ;- diesen Befehl ausführen (hier Ausgabe des Texts)
    mov ax, 4C00h ;- dem Betriebssystem wieder mitteilen, was wir wollen
    int 21h ;- diesen Befehl wieder ausführen (Programm beenden)
    CODE ENDS ;- Ende des Codesegments
    END Anfang ;- dem Assembler das Ende des Labels Anfang mitteilen
    
    bekomme ich diese Fehlermeldung:

    Hat jemand vielleicht einen Code, mit dem ich eine einfache Bildschirmausgabe machen kann? Oder kann mir jemand sagen, wieso ich diese Fehlermeldungen bekomme?
     
  5. 7. Dezember 2008
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: unter Windows programmieren

    Das liegt daran, dass dein hello world programm in 16-bit programmiert ist und der standard linker damit nicht klar kommt. Dafür brauchst du eben einen anderen 16-bit linker.

    Ich habe ihn dir mal geuppt: No File | xup.in
    Am besten du machst ihn in dein masm32/bin Verzeichnis rein...

    Code:
     .MODEL Small
     .STACK 100h
     .DATA
    Meldung DB "Hallo Welt$"
     .CODE
    Start: 
     mov ax, @DATA
     mov ds, ax
     mov dx, OFFSET Meldung
     mov ah, 09h
     int 21h
     mov ah, 4Ch
     int 21h
    END Start
     
  6. 7. Dezember 2008
    AW: unter Windows programmieren

    Also danke erstmal für die Mühe
    Ich hab jetzt den neuen Linker in meinen bin Ordner kopiert und den alten überschrieben.
    Es geht aber leider immer noch nicht... Also ich hab mir deinen Code kopiert, eingefügt, abgespeichert. dann unter Project auf Assemble ASM file gedrückt. Dann bekomme ich:

    Hab dann noch einen anderen Code versucht und bekomme aber scheinbar immer:
    Weiß aber garnicht, was das soll ... vor allem hab ich ja nirgends irgendwas mit DGROUP.
     
  7. 7. Dezember 2008
    AW: unter Windows programmieren

    Also ich hab es mit diesen Befehlen gemacht und es geht ohne Error...

    Code:
    C:\masm32\bin\ml.exe /c "C:\ASM\test.asm"
    C:\masm32\bin\link16.exe "C:\ASM\test.obj"
     
  8. 8. Dezember 2008
    AW: unter Windows programmieren

    Also ich habs jetzt auch so versucht, wenn ich aber assembliere, dann bekomme ich keine obj-Datei:

    Bewirkt irgendwie nichts. Vorher hab ichs ja immer über die IDE versucht.
     
  9. 8. Dezember 2008
    AW: unter Windows programmieren

    Sicher?
    Entweder sie liegt im Ordner C:\Windows\system32 oder eben bei C:\masm32\projekte\helloworld\
    Ich tippe auf das erste^^

    Bei den IDEs kann man normalerweise auch den Linker festlegen mit Parametern, müssteste mal in den Einstellungen suchen. Ich nehme Radasm, da kann man es festlegen beim Erstellen eines neuen Projekts.
     
  10. 9. Dezember 2008
    AW: unter Windows programmieren

    Also ich finde es bei mir weder im Projekt Ordner, noch im system32 Ordner :-/
    Ich habs unter Windows Vista programmiert, aber das dürfte egal sein oder?
    Habs jetzt mittlerweile auch auf nem XP Rechner ausprobiert und habe da genau das gleiche Problem. Über die Konsole bekomm ich keine obj-Datei und über den MASM32 Editor Fehlermeldungen.
     
  11. 9. Dezember 2008
    AW: unter Windows programmieren

    Das kann doch nicht sein, ich hab genau die gleiche Version "Microsoft (R) Macro Assembler Version 6.14.8444" und entweder es wird eine obj Datei erstellt oder es wird ein Error ausgegeben... Da bei dir kein Error erscheint, muss einfach eine obj Datei erstellt worden sein.

    Oder schreib dir mal eine Bat Datei und führe die aus...
    Rechtsklick -> Neues Textdokument -> .txt in .bat umbenennen und das reinschreiben:

    Code:
    C:\masm32\bin\ml.exe /c "C:\masm32\projekte\helloworld\helloworld.asm"
    pause

    Du benutzt ja nicht zufällig ein 64-Bit Windows?
     
  12. 9. Dezember 2008
    AW: unter Windows programmieren

    Oh Mann, wie dumm ...
    Die Objektdatei ist ständig in meinen eigenen Dateien gelandet
    Vielen Dank!!! Ich muss einen Vortrag über Assembler halten, deshalb ist es mir sehr wichtig gewesen und jetzt klappt es endlich
    Wenn du Lust hast, kannst du mir ja noch dein Hallo Welt Script erklären
    Das einzige, was ich noch vom Mikrocontroller kenn ist mov und eben die Bezeichner für einen Programmabschnitt.
     
  13. 9. Dezember 2008
    AW: unter Windows programmieren

    Code:
     .MODEL Small
     .STACK 100h
     .DATA
    Meldung DB "Hallo Welt$" ;Dein String, $ terminiert den String ( Wichtig für die Funktion )
     .CODE
    Start: 
     mov ax, @DATA ;Datensegment Offset holen
     mov ds, ax ;und dann diesen in das Datensegment laden
     mov dx, OFFSET Meldung ;Den Offset des Strings in den 16-Bit Register dx laden
     mov ah, 09h ;Die Funktionsnummer 9 in das höherwertige Register ah ( ax ) schreiben
     int 21h ;Ausführen der Instruktion / Befehls 
     mov ah, 4Ch ;Funktion zum Beenden das Programmes
     int 21h ;Und wieder ausführen
    END Start
    Kommentare in Assembler beginnen mit ; und sind einzeilig.
     
  14. 9. Dezember 2008
    AW: unter Windows programmieren

    Danke! Dann kann ich nun closen,
    vielleicht werd ich trotzdem demnächst mal n bisschen mit Assembler experimentieren

    - closed -
     
  15. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.