40 4. Język asemblerowy mikroprocesorów 8086/8088
W książce omówimy wersję MASM 4.00, która całkowicie zaspokaja potrzeby programisty i możliwości mikroprocesorów 8086/8088 oraz 80286 wraz z ich koprocesorami arytmetycznymi.
42.1. Zbiór znaków alfabetu
Programy źródłowe przygotowywane w języku MASM korzystają z następującego zbioru znaków
- alfabetu: wielkie litery: A * Z; małe litery: a - z cyfry: 0 - 9
- znaków specjalnych: + - */ = () []
- niewidocznych znaków w kodach ASCII:
Space (20H) (ang. blank, space ) - spacja,
CR (ODH) (ang. carriage return ) - powrót kursora, NL (OAH) (ang. linefeed) - nowy wiersz..
Między poszczególnymi elementami języka w programie źródłowym może wystąpić dowolna liczba spacji. Wystąpienie w programie znaku spoza wymienionego wyżej zbioru powoduje sygnalizowanie przez asembler błędu syntaktycznego. Wielkie i małe litery są rozróżnianie wyłącznie w łańcuchach. Tak więc przykładowo skróty mov, M()V, moV, Mov oznaczają ten sam kod rozkazu. Niektóre znaki specjalne i ich kombinacje mają w języku MASM szczególne znaczenie.
Kod ASCII
Znaczenie
Rozgraniczenie lub zakończenie słowa w programie źródłowym. Liczba spacji w tym przypadku jest dowolna i przykładowo zapis MOV ZMIENNA IBX], DX jest równoważny zapisowi MOV ZMIENNA [ BX ], DX Znak używany do poprawy czytelności programu źródłowego
Oddzielenie argumentów od siebie
lub postać 20H
• • •
Nazwa
spacja
znak tabulacji
przecinek
para apostrofów Ograniczenie łańcucha znaków (tekstu)
cudzysłów nawias okrągły
CR-NL
średnik
dwukropek
kropka
Ograniczenie łańcucha znaków (tekstu)
W wyrażeniach, określenie kolejności wykonywanych operacji
Zakończenie wiersza instrukcji programu źródłowego Początek pola komentarza nie analizowanego przez asembler
Ograniczenie symboli, które są definiowane jako etykiety, przedrostki z nazwami segmentów, w dyrektywach ASSUME, RECORD i innych Znak używany w nazwach rekordów, rozpoczyna
powered by
4.2. Podstawowe elementy języka
niektóre pomocnicze dyrektywy
& |
AND • |
<...> |
nawias ostry |
$ |
znak dolara • |
f..] |
nawias |
kwadratowy | |
znak równości | |
— |
znak minusa |
+ |
znak plusa |
* |
gwiazdka |
/ |
znak dzielenia |
9 • |
pytajnik |
@ | |
— |
podkreślenie |
422. |
Stałe |
Znak stosowany w makroinstrukcjach
Znak stosowany w makroinstrukcjach
Skrót dla bieżącej wartości wskaźnika rozkazów
Znak używany w wyrażeniach adresowych
Oznaczenie dyrektywy, znak używany też przy inicjowaniu pola zdefiniowanego jako rekord Oznaczenie odejmowania w wyrażeniach lub znak wyrażenia (lub liczby)
Oznaczenie dodawania w wyrażeniach lub znak wyrażenia (lub liczby)
Oznaczenie mnożenia w wyrażeniach
Oznaczenie dzielenia w wyrażeniach
Oznaczenie wartości nieokreślonej, znak stosowany do
rezerwacji pamięci;
występuje też w nazwie symbolicznej
Znak, który może wystąpić w nazwie symbolicznej
Znak, który może wystąpić w nazwie symbolicznej
Stałe to wartości, które muszą być znane podczas tłumaczenia (asemblacji) programu źródłowego i nie mogą być zmieniane w czasie wykonywania programu. Wyróżniamy stałe numeryczne będące liczbami całkowitymi oraz stałe alfanumeryczne, nazywane inaczej tekstowymi lub łańcuchowymi.
Stałe numeryczne mogą być zapisane w systemie dwójkowym, ósemkowym, dziesiętnym lub szesnastkowym. Muszą być wyrażone 17bitami (wliczając bit znaku).
Liczba dwójkowa wyrażona cyframi 0 i 1 może przyjmować wartości z przedziału [-111111111111111,-ł-llllllllllllllll] i musi być zakończona literą B (lub b). Przykłady liczb dwójkowych: OB, IB, lOlOlOlOb, 111B, -1101100010B.
Liczba ósemkowa wyrażona cyframi 0...7 może przyjmować wartości z przedziału [-177777, +177777] i musi być zakończona literą O lub Q (o, q). Przykłady liczb ósemkowych: 45307Q, 50, -6745q, +0o.
Liczba dziesiętna wyrażona cyframi 0...9 może przyjmować wartości z przedziału [-65535, + 65535) i może być opcjonalnie zakończona literą D (lub d). Przykłady liczb dziesiętnych: 1230,-4398D, Od, +9999.
Liczba szesnastkowa wyrażona cyframi 0...9 oraz literami A...F może przyjmować wartości z przedziału [-OFFFF, + OFFFF] i musi być zakończona literą H (h). Ponadto, aby asembler rozróżniał liczbę szesnastkową od nazwy, liczba musi rozpo-czynać się od cyfry. Przykłady liczb szesnastkowych: 2H, -897h, OABCDH, OFFH.
Stałe alfanumeryczne to możliwe do wydrukowania znaki wyrażone w kodzie A^ II, ujęte w apostrofy lub cudzysłów. Są dopuszczalne znaki spacji (20H) oraz tabulacji (09H), niedopuszczalne są znaki nowego wiersza (OAH) i powrotu kursora