STACK16_SIZE dup (?)
bedeutet, die Daten in Klammern durch STACK16_SIZE
mal zu duplizieren. Es entspricht dem Schreiben ?, ?, ?, ?,
... (100h mal)
Die Daten in Parens sind "nicht initialisierte Daten". Das heißt, Speicher wird zugewiesen, aber beim Laden nicht auf einen bestimmten Wert gesetzt.
Assembly stellt kein Array "type" zur Verfügung. Wenn dies der Fall ist, können Debugger nur zur Überprüfung der Daten verwendet werden. In diesem Code-Snippet ist stack16
jedoch ein Symbol mit einer Adresse, die einen Speicherblock mit den Bytes — beginnt, der kontraintuitiv und möglicherweise eine Quelle für einen subtilen Fehler ist. Für einen CPU-Stack sollte es wirklich als 16-Bit-Wörter (dw
) oder 32-Bit-Wörter (dd
) definiert werden.
Aber welcher Typ ist Stack16? Ich komme von C Hintergrund, also habe ich in Bezug auf Arrays gedacht. Oder ist es wie ein Platzhalter für eine Speicheradresse? I.e. Alle Variablen in TASM sind wie 'void *' und können auf jede Art von Daten zeigen. Hier zeigt stack16 also auf das erste Element eines Arrays von 100 Bytes. Ist das korrekt? – sashoalm
Macht nichts, ich fand eine gute Erklärung unter http://www.csi.ucd.ie/staff/jcarthy/home/alp/alp5.html – sashoalm
ARR1 DB 5 DUP (2) Was denkst du diesen Ausdruck? Was ist der Wert innerhalb eines Arrays? – muco