NASM 8086 Adressierung von Variablen/Tabellen



  • Also ich habe folgenden Code:

    MAIN:
    call EINGABE        ;Erste Hexziffer eingeben
    
    ;Jetzt müsste ich irgendwie die Adresse von Ziffbasis um +1 erhöhen
    ; inc ziffbasis geht ja so leider nicht
    
    call EINGABE        ;Zweite Hexziffer eingeben
    jmp MAIN
    
    EINGABE
    ;Hier wird eine Hexziffer eingegeben
    mov [ziffbasis], al  ; Eingabe in Spalte Speichern
    RET EINGABE
    
           ziffbasis  db 0        ;Erste Hexziffer
                      db 0        ;Zweite Hexziffer
    

    Also wie kann ich ziffbasis hinbiegen, das ich beim 2ten Aufruf des Unterprogramms an die 2te Spalte der Tabelle schreibe?



  • Schon mal was von Pointern gehoert? 😉
    Ich wuerde vorschlagen, einen solchen zu verwenden statt einer fixen Adresse.
    Den koenntest du deiner Funktion uebergeben - zB. praktischerweise in irgendeinem Register, mit dem sich adressieren laesst.



  • Nobuo T schrieb:

    Schon mal was von Pointern gehoert? 😉

    Hm jo in c/c++ .
    Wie läuft das den in asm?



  • Vom Prinzip her genau so.
    Ein Offset kopierst du in NASM wie folgt:

    mov di, ziffbasis
    

    Damit hast du deinen Pointer auf ziffbasis in di stehen.



  • hm und wenn ich nun di inkrementiere bin ich in der 2ten spalte oder?


Anmelden zum Antworten