Jest użyteczne porównanie między gazem i NASM tutaj: http://www.ibm.com/developerworks/linux/library/l-gas-nasm/index.html
patrz w szczególności ta część, która myślę, że adresy Twoje pytanie:
Listing 2 wprowadza również pojęcie licznik lokalizacji (linia 6). NASM udostępnia specjalną zmienną (zmienne $ i $$) do manipulowania licznikiem lokalizacji. W GAS nie ma sposobu na manipulowanie licznikiem położenia i trzeba użyć etykiet do obliczenia kolejnej lokalizacji (danych, instrukcji itp.). Na przykład, aby obliczyć długość łańcucha, należy użyć następującego idiom w NASM:
prompt_str db 'Enter your name: '
STR_SIZE equ $ - prompt_str ; $ is the location counter
$ daje bieżącą wartość licznika lokalizacji i odejmując wartość etykiety (wszystkie nazwy zmiennych są etykietami) z tego licznika lokalizacji podaje liczbę bajtów obecnych między deklaracją etykiety a bieżącą lokalizacją. Dyrektywa equ służy do ustawiania wartości zmiennej STR_SIZE na wyrażenie następujące po niej. Podobna idiom w gazie wygląda następująco:
prompt_str:
.ascii "Enter Your Name: "
pstr_end:
.set STR_SIZE, pstr_end - prompt_str
Etykieta koniec (pstr_end) daje kolejny adres lokalizacji i odejmując początkowy adres etykieta podaje rozmiar. Zwróć też uwagę na użycie .set w celu zainicjowania wartości zmiennej STR_SIZE na wyrażenie następujące po przecinku. Odpowiednia .equ może również być używana. Nie ma alternatywy dla dyrektywy zestawu GAS w NASM.
Dzięki, będę spróbować – orustam