ganz kleine Frage zu Variablen in FASM



  • hi,

    Um es ganz kurz zu machen.
    Sind folgende Codeteile richtig?

    var1 db 12
    
    mov ah,byte [var1] ; Kopiert den Wert von war1 nach ax
    mov bx,var1 ; kopiert die Adresse von var1 nach bx
    mov byte [bx],ah ; der Wert von bx wird als andresse angesehen und in diese wird ;der Wert von ah geschrieben
    

    ganz genau weiß ich nicht, was der [] operator bewirkt.
    Könnte bitte einr ganz kurz erklären, was was ist?

    Ein Vergleich zu den c operatoren & und * wäre sehr gut, da ich diese perfekt verstehe.
    Aber in fasm komm ich immer durcheinander

    mfg



  • Ich kenne nur den MASM32-Assembler von Microsoft (Intel-Syntax), den es auch frei im Internet gibt.
    FASM soll Flat-Assembler heissen, hoffendlich mit Intel-Syntax und Flat(32bit-Adressierung)?!

    var1 db 12
    
       mov ah, var1       ; Kopiert den Wert von var1 nach ah 
        ; oder
        mov ah, [var1]     ; das Gleiche, Kopiert ebenfalls den Wert von var1 nach ah 
        ; oder
        mov ah, byte ptr [var]  ; das Gleiche, Kopiert ebenfalls den Wert von var1 nach ah 
                                ; der Assembler kennt hier die Operandengrössen - byte ptr ist deshalb hier überflüssig
                                ;
        mov ebx, offset var1     ;kopiert die Adresse von var1 nach ebx  (32-Bit Programmierung !)
            ;mov bx, offset var1     ;kopiert die Adresse von var1 nach ebx  (nur bei 16-Bit Programmierung !)
       ;oder
       lea  ebx, var1           ;kopiert die Adresse von var1 nach ebx  (32-Bit Programmierung !)  
    
       ;und jetzt geht
       mov  [ebx], ah
       ;oder umständlicher geschrieben
       mov byte ptr [ebx], ah
    

    Man kann die Assemblersprache nicht von C-Operatoren ableiten - du musst Assembler üben bis der Groschen fällt!

    @Wlufy "Ein Vergleich zu den c operatoren & und * wäre sehr gut, da ich diese perfekt verstehe."

    Dann haste es ja leicht, die Zusammenhänge zu begreifen.


Anmelden zum Antworten