STACK16_SIZE dup (?)
oznacza powtórzenie danych w nawiasach przez STACK16_SIZE
razy. Jest to równoważne pisaniu ?, ?, ?, ?,
... (100 godzin razy)
Dane w parens to "niezainicjalizowane dane". Oznacza to, że pamięć jest alokowana, ale nie jest ustawiona na żadną konkretną wartość podczas ładowania.
Zestaw nie zawiera tablicy "typ". Jeśli tak, to tylko w przypadku debugerów do użytku podczas kontroli danych. Jednak w tym fragmencie kodu, stack16
jest symbolem z adresem rozpoczynającym blok pamięci od bajtów —, który jest sprzeczny z intuicją i potencjalnie źródłem subtelnego błędu. Dla stosu procesora naprawdę powinno być zdefiniowane jako 16-bitowe słowa (dw
) lub 32-bitowe słowa (dd
).
Ale jaki typ ma stack16? Pochodzę z tła C, więc myślałem w kategoriach tablic. Czy jest to jak symbol zastępczy dla adresu pamięci? To znaczy. wszystkie zmienne w TASM są podobne do 'void *' i mogą wskazywać na dowolny rodzaj danych. Tak więc stack16 wskazuje na pierwszy element tablicy o wielkości 100 bajtów. Czy to jest poprawne? – sashoalm
Nieważne, znalazłem dobre wyjaśnienie na http://www.csi.ucd.ie/staff/jcarthy/home/alp/alp5.html – sashoalm
ARR1 DB 5 DUP (2) co myślisz o tym wyrażeniu? jaka jest wartość wewnątrz tablicy? – muco