Frage zu MASM



  • Hallo,

    ich hab mir den MASM32 gesaugt und den 16 Bit Linker. nun bin ich gerade beim
    The Real Adok's Way to Assembler Tutorial und habe den folgenden Code abgetippt und gespeichert als test.asm

    Code:
    MODEL TINY ;Für COM-Files
    CODE SEGMENT ;Beginn Code-Seg
    ASSUME CS:CODE;Zuweisung an CS
    ORG 100h ;Startadresse COM
    start: ;Startlabel
    MOV AX,0902h ;Funkt. 9h, ASCII-Code 2h
    MOV BX,15 ;Farbcode Weiß
    MOV CX,1 ;Anzahl der Zeichen = 1
    INT 10h ;Zeichen auf Screen bringen
    MOV AX,4C00h ;Funkt. 4Ch
    INT 21h ;DOS-Exit
    CODE ENDS ;Ende Code-Seg
    END start ;Ende des Proggys

    nun gebe ich folgendes ein:
    E:\masm32\bin>ml /c c:\test.asm
    Microsoft (R) Macro Assembler Version 6.14.8444
    Copyright (C) Microsoft Corp 1981-1997. All rights reserved.

    Assembling: c:\test.asm
    c:\test.asm(1) : error A2008: syntax error : MODEL

    E:\masm32\bin>ml /at c:\test.asm
    Microsoft (R) Macro Assembler Version 6.14.8444
    Copyright (C) Microsoft Corp 1981-1997. All rights reserved.

    MASM : warning A4018: invalid command-line option : /at
    MASM : fatal error A1017: missing source filename

    E:\masm32\bin>
    hab ich da was falsch gemacht?

    Thx 4 Help schonmal.



  • Moin AmigaDos,

    irgendwie hast Du zwei Möglichkeiten vermischt, wie man den Quellcode gestalten kann.

    1. Vollständige Segmentkontrolle
    2. Vereinfachte Segmentkontrolle

    Vollständige Segmentkontrolle

    CODE SEGMENT WORD PUBLIC 'CODE'
    
    ASSUME CS:CODE, DS:CODE
    
                org 0100h
    
    start:      jmp begin
    
                ; Hier könnten nun Daten plaziert werden, deshalb jmp begin als erster Befehl,
                ; um den Datenbereich zu überspringen
    
    begin:      MOV AX,0902h ;Funkt. 9h, ASCII-Code 2h
                MOV BX,15 ;Farbcode Weiß
                MOV CX,1 ;Anzahl der Zeichen = 1
                INT 10h ;Zeichen auf Screen bringen
    
                MOV ax, 04c00h
                INT 021h
    
    CODE ENDS
    
    END start
    

    Vereinfachte Segmentkontrolle

    .MODEL TINY, C, OS_DOS ;Für COM-Files
    
    .CODE
    
    .startup
    
            MOV AX,0902h ;Funkt. 9h, ASCII-Code 2h
            MOV BX,15 ;Farbcode Weiß
            MOV CX,1 ;Anzahl der Zeichen = 1
            INT 10h ;Zeichen auf Screen bringen
    
    .exit 0
    
    END
    

    Beide Varianten übersetzt Du folgendermaßen:

    ml /AT /c test.asm
    link16 /TINY test.obj;
    (Mein 16-Bit-Linker habe ich link16 genannt, ist der von Microsoft)

    Ciao...



  • Dann ist das Tutorial dreck, den so steht der Code da drinne. Und angebelich soll da alles MASM kompatibel sein.

    Ps. den 16 Bit linker hab ich auch link16 genannt

    kann mir denn eventuell jemand ein leicht verständliches ASM Tutorial auf Deutsch empfehlen? link geben?



  • Das Tutorial ist wohl für TASM gemacht, und von MASM gibt's ja auch verschiedene Versionen (5 und 6 meine ich hauptsächlich), die nicht alle genau die gleiche Syntax schlucken.



  • Ja das ist schon klar, bei Basic gibts auch verschiedene Syntax,

    aber ich denke mal so wie bei Basic, gibts doch bei ASM auch nen Std. Satz an Befehlen den jeder Compiler kennen muss, und der rest is nur Compiler bezogener extra. oder nicht?

    ich brauch ja nur nen Tutorial für den hauptsyntax



  • Es gibt keine Hauptsyntax, jeder Assembler macht das anders. TASM und MASM sind noch die zwei ähnlichsten.



  • gibt es garkein Standart unter ASM ? kann ich mir irgendwie nicht vorsteellen, aber kennt denn wenningstens jemand nen gutes Tutorial zu MASM?



  • also ich hab dos-asm-programmierung mit snakebytes-AssemblerTut angefangen und ich denke, dass der das ganz gut gemacht hat (einfach mal googlen)


Anmelden zum Antworten