Dyrektywa NAME określa nazwę, która będzie użyta dla oznaczenia modułu obiektowego wygenerowanego na podstawie bieżącego programu...
Serwis znalezionych hasełOdnośniki
- Smutek to uczucie, jak gdyby się tonęło, jak gdyby grzebano cię w ziemi.
- ¦ Podstawowe terminyzmienna dyskretna 73 zmienna kontrolna 72 zmienna niezależna 71 zmienna zależna 71 związek 74 związek dodatni 75 związek pozorny 72...
- — Prośba o pomoc, która czekała tysiąc lat, może poczekać jeszcze kilka godzin — albo dni — prychnęła Jonja...
- Przez chwilę wahała się - to, co chciała zrobić, nie było zakazane przez zwyczaj, ale mógł dokonać tego tylko ktoś bardzo poruszony, w sytuacji, która go...
- Cena bazowa netto Pole umożliwia podanie ceny netto, będącej wraz ze stopami marży i stawką podatku VAT podstawą naliczania ceny sprzedaży oraz punktem...
- Moze w zwiazku z tym pozostaje notatka, która tu wypisuje z poznanskiej "Teczy" nr 43 z roku 1928: "W miasteczku Kuncewicze na pograniczu wschodnim powstala wsród Zydów...
- naszych ewolucyjnych uprzedzeń mamy skłonność do myślenia o początku wszechświata jak o pewnej szczególnej chwili, przed którą wszechświat nie...
- wiela je godzin? - która godzina?wieprzki - prosiaki, a...
- – Kiedy tylko dotrzemy tam, gdzie mają w miarę rozwinięty przemysł – dodał po chwili – będziemy musieli sprawić sobie trochę odtylcowych...
- A za chwilę Paris miała poprowadzić Park Lane przez parcours - pod okiem Jane Lennox, która zamierzała opuścić tonący statek Jade’a...
- Maria była ciekawa, jaki związek ma krew, która wyciekała spomiędzy jej nóg, z byciem panną, lecz matka nie umiała jej tego wyjaśnić...
Smutek to uczucie, jak gdyby się tonęło, jak gdyby grzebano cię w ziemi.
Nazwa pliku obiektowego nie jest nazwą modułu obiektowego. Nazwa modułu obiektowego jest wbudowana w plik obiektowy. Dyrektywa NAME ma następujący format: NAME nazwa_modułu
nazwa_modułu jest
nazwą, która będzie użyta do oznaczenia modułu obiektowego. Jej długość nie może przekroczyć 40 znaków. Przy określaniu nazwy modułu należy przestrzegać zasad określonych dla nazw symbolicznych.
W danym pliku programu dyrektywa NAME może być użyta tylko jeden raz. Jeśli omawiana dyrektywa nie zostanie w ogóle użyta, to nazwą modułu obiektowego będzie nazwa pliku źródłowego bez rozszerzenia.
Przykład:
NAME
MOJ_MODUL
8
END
Dyrektywa END określa koniec modułu asemblerowego. Tekst, który występuje za dyrektywą END jest ignorowany przez program asemblujący. Dyrektywa END jest wymagana w każdym pliku asemblerowym.
Przykład:
END
8. Symbole
Symbol jest nazwą definiowaną w celu reprezentacji wartości, bloku tekstu, adresu lub nazwy rejestru.
Symbole mogą być również używane do reprezentowania stałych numerycznych i wyrażeń. Symbole mogą składać się z maksymalnie 31 znaków należących do poniższej listy:
A-Z, a-z, 0-9, _, ?
Nazwa symbolu może rozpoczynać się od dowolnego z tych znaków, za wyjątkiem cyfr 0-9.
Symbole mogą być definiowane w wielu różnych przypadkach. Można definiować symbol do reprezentacji wyrażeń:
NUMER EQU
5
PRAWDA SET
1
FALSZ SET
0
etykiet w programie
ETYKIETA_1: DJNZ R0, ETYKIETA_1
lub odniesień do adresu zmiennej
BUFOR_SZER DATA 99H
Symbole są używane w całym programie asemblerowym, gdyż są łatwiejsze do zrozumienia i zapamiętania, niż adres lub stała numeryczna.
9. Etykiety
Etykieta definiuje „miejsce” (adres) w przestrzeni programu lub danych. Wszystkie zasady dotyczące tworzenia nazw symbolicznych mają zastosowanie przy tworzeniu etykiet. Podczas ich definiowania, etykieta musi być pierwszym polem tekstowym w linii. Może być ona poprzedzona znakami tabulacji i/lub spacji. Znak dwukropka (:) musi wystąpić bezpośrednio po nazwie symbolicznej etykiety, aby można było rozpoznać, że jest to etykieta. W linii może być zdefiniowana tylko jedna etykieta. Na przykład: ETYK_1: DS 2
ETYK_2: ;etykieta na siebie samą
LICZBY: DB 27, 33, ‘ZNAKI’, 0 ;etykieta na stałe wartości
KOPIUJ: MOV R6, #12H ;etykieta na instrukcję w programie
W powyższym przykładzie, ETYK_1, ETYK_2, LICZBY i KOPIUJ są etykietami.
Etykieta może odnosić się do kodu programu, przestrzeni zmiennych w wewnętrznej lub zewnętrznej pamięci danych lub stałej przechowywanej w pamięci programu. Przy definiowaniu etykiety automatycznie przypisywana jest jej bieżącą wartość licznika położenia w danym segmencie.
Etykieta jest również używana w instrukcjach skoków, do wskazania miejsca (adresu) przeznaczenia.
Instrukcja występująca za etykieta jest tą instrukcją, która będzie wykonywana po skoku pod adres programu wskazany etykietą.
W programie można nie tylko wykonywać skoki pod określone etykiety, lecz także wywoływać podprogramy określone etykietą. W takim przypadku wykonywany jest kod znajdujący się za etykieta, aż do napotkania instrukcji asemblerowej RET.
9
10. Wyrażenia i operatory
Operand (argument operacji) może być stałą numeryczną, symbolem, ciągiem znakowym lub wyrażeniem.
Operatory są używane do łączenia i porównywania operandów wewnątrz programu asemblerowego.
Operatory nie są instrukcjami języka asemblera, ani nie generują kodu asemblerowego. Reprezentują tylko operacje, które są szacowane w czasie asemblacji programu. Dlatego operatory mogą obejmować tylko obliczenia wartości, które są znane podczas asemblacji programu.
Wyrażenie jest połączeniem liczb, ciągów znakowych, symboli i operatorów, które podlega zamianie na 16-bitowaą wartość binarną. Wyrażenia są szacowane podczas asemblacji i dlatego mogą być używane do obliczania wartości, które w innym przypadku byłyby trudne do wyznaczenia wcześniej.
10.1 Liczby
Liczby mogą być określane jako wartości: szesnastkowe, dziesiętne, ósemkowe lub dwójkowe. Podstawa liczby jest określana przez ostatni znak w zapisie liczby. Liczba, która jest zapisana bez specyfikatora podstawy, jest interpretowana jako liczba dziesiętna.
Poniższa tabela pokazuje specyfikatory podstawy liczb, przyrostki i przykłady.
Podstawa
Przyrostek
Dopuszczalne znaki
Przykłady
Szesnastkowa
H, h
0-9, A-F, a-f
1234H 0A0F0H 0F0H 1a24h 34fcH
Dziesiętna
D, d
0-9
123 23D 2092d
Ósemkowa
O, o, Q, q
0-7
172q 34Q 345o 44O
Dwójkowa
B, b
0 i 1
1001011b 10011B
Pierwszym znakiem liczby musi być zawsze cyfra z zakresu 0 do 9. Dlatego liczby szesnastkowe, których zapis wartości zaczyna się od litery muszą być poprzedzone cyfrą 0.
10.2 Znaki
Program asemblujący dopuszcza użycie znaków ASCII w wyrażeniach do tworzenia wartości numerycznych.
Wyrażenie takie może składać się maksymalnie z dwóch znaków objętych pojedynczym apostrofem (‘).
Umieszczenie większej ilości znaków spowoduje wygenerowanie błędu podczas asemblacji. Poniżej przedstawiono kilka przykładów:
‘A’ jest przeliczane na wartość 0041H
‘AB’ jest przeliczane na wartość 4142H
‘a’ jest przeliczane na wartość 0061H
‘ab’ jest przeliczane na wartość 6162H
‘’ ciąg pusty jest przeliczany na wartość 0000H
‘abc’ generuje BŁĄD
Znaki można również używać w każdym miejscu programu, gdzie wymagane są dane bezpośrednie.
LITERA_A EQU ‘A’
TEST:
MOV @R0,#’F’
SUBB A,#’0’
10.3 Ciągi znaków
Ciągi znaków mogą być używane w połączeniu z dyrektywą DB do definiowania wiadomości używanych w programie. Taki ciąg musi być objęty pojedynczym apostrofem (‘). Na przykład:
WIADOMOSC DB
‘Wcisnij dowolny klawisz, aby kotynuowac.’
generuje szesnastkowe dane (57H, 63H, 69H, 73H, 6EH 69H 6AH, ..., 61H, 63H, 2EH) rozpoczynając od adresu oznaczonego etykietą WIADOMOSC.
Ciągi i dane liczbowe mogą być łączone ze sobą w jednej linii. Na przykład: EOL_WIAD DB
‘Koniec linii’, 00H
10
dodaje wartość 00H na koniec ciągu ‘Koniec linii’.
Aby wstawić w definiowanym ciągu znakowym znak pojedynczego apostrofu, należy wyspecyfikować go dwukrotnie pod rząd.
MSG
DB
‘ISN’’T A QUOTE REQUIRED HERE?’
11