Suchen einen bestimmten Assembler...



  • Hi, ich hab vor ner weile mit ASM angefangen und auch schon paar kleine Programme geschrieben. Ich hatte damals nen 32-bit Version und ich MASM 5.2 (ich weiss.. die Version ist uralt) und das klappte alles wunderbar.
    Dann hab ich mir nen x64 OS geholt und plötzlich gingen alle Programme nicht mehr weil sie nicht mit der Version von Windows kompatibel sind...
    Ich hab dann versucht das aktuelle masm runterzuladen und.. es war komplett anders, kann es sein dass sich die Syntax komplett verändert hat?
    Weil

    DATEN SEGMENT
    
    Meldung db "Test"
    	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
    

    erkennt der neue MASM nichtmehr... und ich hab eigentlich keine Lust ne komplett neue Syntax zu lernen.

    Gibt es denn noch einen Assembler der diese Syntax versteht und der Programme erstellen kann die auf einem x64 OS laufen?

    Danke



  • Novio schrieb:

    und ich hab eigentlich keine Lust ne komplett neue Syntax zu lernen.

    Warum?

    Novio schrieb:

    Gibt es denn noch einen Assembler der diese Syntax versteht und der Programme erstellen kann die auf einem x64 OS laufen?

    Lass doch die Fesseln fallen und befrei deinen Geist von diesem 30-jährigen int 21h... 😉



  • Oder um es anders zu sagen: Nein, gibt es nicht. DOS-Programme laufen nicht mal mehr in Windows ohne 3rd-party-Software. Entweder orientierst du dich mehr in Richtung 32- oder 64-Bit Windows-Programme um, oder du besorgst dir einen passenden Emulator, in dem du deine Programme laufen laesst.
    Mit anderer Syntax hat das uebrigens im Prinzip nichts zu tun.



  • Verstehe danke...
    Kennt ihr zufällig ne gute Dokumentation der MASM32 Syntax?
    Denke mal vom Prinzip ist noch alles gleich oder? (ausser dass es auch 32-bit Register gibt)



  • Du kannst dich zum Einstieg an eines der Win32-Tutorials in den FAQ halten. Die meisten verwenden MASM.
    Dazu sollte man aber noch sagen, dass beim Programmieren fuer MASM oft mit den MASM-eigenen Macros derart uebertrieben wird, dass der Code schnell mal mehr aussieht wie ein schlechter Basic-Dialekt, denn wie Assembler.

    Falls du absoluter ASM-Neuling bist, wuerde ich abc.w widersprechen und dir empfehlen mit einem Einsteigertutorial fuer 16Bit-Programme (DOS) anzufangen.
    Um die Programme laufen zu lassen brauchst du zwar einen Emulator (zB. DOS-Box), aber dafuer gibt es in diesem Bereich AFAIK nach wie vor die meisten und besten Einsteigertutorials.
    Bei Tutorials zu TASM solltest du dann zB. auch den NASM mit der Option -t (TASM-kompatibilitaetsmodus) verwenden koennen.



  • Ugh ich denke ich brauch ne kleine Starthilfe, von ASM hab ich grundlegend schon ahnung, nur MASM überfordert mich grad...Könntest du vielleicht den Coden den ich oben gepostet hab "MASM-Reif" machen ... also so dass ich ihn nur noch kopieren müsste.. also genau das Programm.

    Danke 😞



  • Der Code sollte IMHO bereits in korrekter MASM-Syntax sein. Mit einer aktuellen 32Bit-MASM-Version kannst du diesen 16Bit-Code wie gesagt aber nicht verarbeiten und es ist auch nicht moeglich, ihn sinnvoll ohne Weiteres fuer 32Bit-MASM anzupassen.
    Du kannst versuchen, einen passenden MASM mit der Suchmaschine deiner Wahl zu finden, oder einen alten TASM ... evtl. nimmt NASM das aber auch in seinem TASM-Modus.





  • Novio schrieb:

    Hi, ich hab vor ner weile mit ASM angefangen und auch schon paar kleine Programme geschrieben. Ich hatte damals nen 32-bit Version und ich MASM 5.2 (ich weiss.. die Version ist uralt) und das klappte alles wunderbar.
    Dann hab ich mir nen x64 OS geholt und plötzlich gingen alle Programme nicht mehr weil sie nicht mit der Version von Windows kompatibel sind...
    Ich hab dann versucht das aktuelle masm runterzuladen und.. es war komplett anders, kann es sein dass sich die Syntax komplett verändert hat?

    Nobuo T hat es bereits gesagt, du benötigst einen 16-Bit Linker für das OMF Format. Den alten MASM 6 gibt es bei MS noch samt Linker zum Herunterladen.

    Die DOS-Maschine (WOW) führt den Code problemlos aus.

    .model small, stdcall
    .stack 200h
    .386
    
    .data
        Meldung BYTE "Test", 0dh, 0ah
    
    .code
    main PROC
        mov ax, @data           ; Initialisiere das DS Segment Register
        mov ds, ax
    
        mov ah, 40h
        mov bx, 1
        mov cx, SIZEOF message
        mov dx, OFFSET message
        mov ah, 4Ch             ; analog zu ExitProcess, 4C00h
        mov al, 0            
        int 21h            
    main ENDP
    END main
    

Anmelden zum Antworten