Mein erstes ASM-Programm



  • Hallo zusammen.

    Habe das erste Beispielprogramm aus einem Assembler-Anfänger-Buch abgetippt und schon meckert mich der Assembler an.

    Das Programm:

    DATEN SEGMENT
    
        Meldung db "Assembler ist garnicht so schwer"
                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
    

    Die Fehlermeldungen:

    D:\Assembler\asm1.asm(13) : error A2004: symbol type conflict
    D:\Assembler\asm1.asm(29) : warning A4023: with /coff switch, leading underscore required for start address : Anfang

    Habe vor längerer Zeit schon mal mit ASM angefangen und einen älteren, befehlszeilenorientierten Assembler (MASM) benutzt - der beschwerte sich damals allerdings nicht. Jetzt benutze ich MASM32 in Version 9.00 und der schimpft mich. Passt dem vielleicht die Bezeichnung DATEN nicht mehr?

    Kann mir vielleicht einer von Euch helfen?

    Danke Euch für's lesen.

    Gruß

    Manolo



  • ... gibt bereits einen Thread mit diesem Problem



  • **
    C:\masm32\bin>ml /Fl test.asm
    Microsoft (R) Macro Assembler Version 8.00.50727.42
    Copyright (C) Microsoft Corporation. All rights reserved.

    Assembling: test.asm
    **

    Microsoft (R) Macro Assembler Version 8.00.50727.42	    07/01/07 18:24:22
    test.asm						     Page 1 - 1
    
     0000				DATEN SEGMENT   
    
     0000 41 73 73 65 6D 62		    Meldung db "Assembler ist garnicht so schwer" 
           6C 65 72 20 69 73
           74 20 67 61 72 6E
           69 63 68 74 20 73
           6F 20 73 63 68 77
           65 72
     0020  24			            db "$" 
    
     0021				DATEN ENDS 
    
     0000				CODE SEGMENT 
    
    				    ASSUME CS:CODE, DS:DATEN 
    
     0000				_Anfang: 
    
     0000  B8 0021 R		        mov ax, offset DATEN 
     0003  8E D8			        mov ds, ax 
    
     0005  BA 0000 R		        mov dx, offset Meldung 
    
     0008  B4 09			        mov ah, 9 
    
     000A  CD 21			        int 21h 
    
     000C  B4 4C			        mov ah, 4Ch 
    
     000E  CD 21			        int 21h 
    
     0010				CODE ENDS 
    
    				        END _Anfang 
    Microsoft (R) Macro Assembler Version 8.00.50727.42	    07/01/07 18:24:22
    test.asm						     Symbols 2 - 1
    
    Segments and Groups:
    
                    N a m e                 Size     Length   Align   Combine Class
    
    CODE . . . . . . . . . . . . . .	16 Bit	 0010	  	  Private 
    DATEN  . . . . . . . . . . . . .	16 Bit	 0021	  	  Private 
    
    Symbols:
    
                    N a m e                 Type     Value    Attr
    
    Meldung  . . . . . . . . . . . .	Byte	 0000	  DATEN	
    _Anfang  . . . . . . . . . . . .	L Near	 0000	  CODE	Public
    
    	   0 Warnings
    	   0 Errors
    

    Bei dir zu ändern _Anfang, END _Anfang und mov ax, offset DATEN
    Zum linken wirst du einen 16 Bit Linker benötigen, soll's im Internet geben.
    😉



  • du weißt, dass das 16Bit Realmode-DOS-Code ist? Also Sachen, die man seit über 10 Jahren nicht mehr so macht?



  • Und du weisst, dass man diese Sachen in DOS auch heute noch genauso macht (zumindest, wenn man keinen vernuenftigen Extender benutzt)? :p

    BTW steht ein solches Programm auch heute noch am Anfang praktisch jedes Windows-Programms. 😃



  • Nobuo T schrieb:

    Und du weisst, dass man diese Sachen in DOS auch heute noch genauso macht (zumindest, wenn man keinen vernuenftigen Extender benutzt)? :p

    BTW steht ein solches Programm auch heute noch am Anfang praktisch jedes Windows-Programms. 😃

    Er arbeitet aber offensichtlich nicht mit DOS, sondern mit Windows :p



  • Hä, rüdiger, ich versteh nicht was du sagen willst???


Anmelden zum Antworten