STACK16_SIZE dup (?)
significa duplicare i dati tra parentesi per STACK16_SIZE
volte. È equivalente alla scrittura di ?, ?, ?, ?,
... (100 ore)
I dati in paren sono "dati non inizializzati". Cioè, la memoria è allocata, ma non impostata su alcun valore particolare sul carico.
L'assieme non fornisce un "tipo" di array. Se lo fa, è solo per i debugger da usare durante l'ispezione dei dati. Tuttavia, in questo snippet di codice, stack16
è un simbolo con un indirizzo che inizia un blocco di memoria di byte — che è contro-intuitivo e potenzialmente una fonte di un bug sottile. Per uno stack di CPU, deve essere definito come word a 16 bit (dw
) o parole a 32 bit (dd
).
Ma che tipo è stack16? Vengo dallo sfondo di C, quindi stavo pensando in termini di array. O è come un segnaposto per un indirizzo di memoria? Cioè tutte le variabili in TASM sono come 'void *' e possono puntare a qualsiasi tipo di dati. Quindi qui stack16 punta al primo elemento di una matrice di 100 byte. È corretto? – sashoalm
Non importa, ho trovato una buona spiegazione a http://www.csi.ucd.ie/staff/jcarthy/home/alp/alp5.html – sashoalm
ARR1 DB 5 DUP (2) cosa ne pensi di questa espressione? qual è il valore all'interno della matrice? – muco