Podstawy konstruowania programów w języku Asembler 59
wym może być też symbol zdefiniowany przez dyrektywę EQU, tak jak to przedstawiono na poniższym przykładzie:
LICZBAl EGU 16
« 9 ft
M0V CX,LICZBAl
W asemblerze mamy nieustannie do czynienia z różnego typu liczbami. Zapisując je w instrukcjach programowych musimy zawsze pamiętać, jak one są duże, czy zmieszczą się do zadeklarowanej komórki lub rejestru, który jest zawsze tak samo szeroki.
Trzeba wiedzieć, iż liczby 8-bitowe ze znakiem mieszczą się w zakresie od +127(7FH) do -(minus) 128(80H), największa 8-bitowa liczba bez znaku wynosi 255 (OFFH); liczby 16-bitowe ze znakiem mieszczą się w zakresie od +32767 (7FFFH) do -(minus) 32768 (8000H), największa 16-bitowa liczba bez znaku wynosi 65535 (OFFFFH); 32-bitowe liczby ze znakiem mieszczą się w zakresie od + 2147483647 (7FFFFFFFH) do — (minus) 2147483648 (80000000H), największa 32-bitowa liczba bez znaku wynosi 4294967295 (OFFFFFFFFH).
Podczas kopiowania liczby do argumentu przeznaczenia, np. podczas działania rozkazu MOV AX,1000, asembler traktuje liczbę 1000 jako tysiąc (w systemie dziesiętnym). W przedstawieniu dwójkowym liczba tysiąc mieć będzie postać: 1111101000. Gdy ta liczba ładowana będzie do 16-bitowego rejestru przeznaczenia (AX), asembler dopisuje do niej z przodu sześć zer, rozszerzając ją do 16-bitowego rejestru. Analogicznie dzieje się dla przypadków z 8- i 32-bitowym rejestrem, gdy wpisywana do nich liczba dodatnia lub ujemna jest o wiele mniejsza niż rozmiar rejestru.
Po tej dłuższej, a jakże ważnej dygresji o rodzajach liczb powróćmy do trybów adresowania. W programach asemblerowych nie tylko stosujemy dwa proste tryby adresowania, poprzez rejestr i natychmiastowe, w których to trybach sięganie po dane lub ich adresy odbywa się bez udziału rejestrów segmentowych lub rejestru stosu; byłoby to zbyt proste, by było prawdziwe.
Tak jak w trybie adresowania natychmiastowego, w którym dana zawarta jest w rozkazie, tak też podobnie jest z trybem adresowania bezpośredniego, z tą jednakże różnicą, że teraz w rozkazie zawarty jest adres efektywny, a nie dane „natychmiastowe”; adres efektywny wyznacza położenie argumentu od początku segmentu. Argumentem adresowania bezpośredniego jest głównie etykieta, np.:
M0V AX, TABLICAl