262
Jest więc obojętne, czy żądany rejestr wskażemy przez podanie jego symbolu literowego, ozy przez odpowiadającą mu cyfrę.
(8) - etykieta (maksymalnie 5 znaków zaczynających się od litery) umieszczona w polu operandów rozkazu skoku powoduje skok do rozkazu posiadającego taką samą etykietę w polu etykiety.
Np.: TU : JMP TAM; skocz do rozkazu o etykiecie TAM
TAM : ADD b'
W odróżnieniu od nazwy, której wartość liczbową nadawał programista, etykiecie nadaje wartość program tłumaczący.
(9) - wyrażenie arytmetyczne lub logiczne, w którym występują dane o postaciach wymienionych w p. (1) + (8), Wyrażenie może zawierać operatory +, -, * (mnożenie),/(dzielenie), MOD (modulo), operatory logiczne NOT,AND, OR, XOR (suma modulo 2), SHR (przesunięcie o jeden bit w prawo), SHL(prz.e-sunięcle o jeden bit w lewo) oraz lewe i prawe nawiasy. Np.
MVX C, 21 + 4AH/2
spowoduje wpisanie do rejestru C liczby 58.
Używając powyżej omówionych sposobów podania informacji można określić cztery wymagane typy informacji, na które składają się:
(a) - Wskazanie rejestru lub pamięci. Do tego celu mogą służyć dane w postaci (1), (2), (3), (4), (7), lub (9). Np.
MOV A, D; (A)-—(D)
MOV A, £, (A)—(D)
MOY 7, 2; (A) —— (D)
(b) - Wskazanie pary rejestrów. Pary te są określone następująco (nie można tu używać liczb)
B |
B i C |
D |
D i E |
H |
Ril |
PSW |
rejestr A i wskaźniki |
SP |
16-bitowy wskaźnik stosu. |
(c) - Określenie zawartości 2 lub 2 i 3 bajtu rozkazu. Do podania tej informacji można wykorzystać dowolną z postaci (1) 4 (9)-
Np.:
MVI 4,4 i (H) — 4
INI SP,00F0H SHL 2; (SP) — 03C0H TU :IXI H,TU ; (H)(L)-l6-bitowy adres
j rozkazu (wartość etykiety TU)
(d) - Określenie adresu. Do jego podania służyć może dowolna z postaci (1) - (9) dająca liczbę 16-bitową, np.:
JMP 0A2FH ; skok do rozkazu o adresie 0A2FH
JMP START ; skok do rozkazu opatrzonego etykie
tą START
Pola komentarza. W pole to można wpisać dowolny komentarz. Komentarz ten służy wygodzie programisty 1 jest Ignorowany przy tłumaczeniu programu. Komentarz musi zaczynać się od średnika (i).
Dyrektywy
Omówione do tej pory rozkazy języka symbolicznego będące literowymi symbolami rozkazów zamieniane są przez assembler na rozkazy maszynowe w tan sposób, że jednemu rozkazowi symbolicznego języka odpowiada Jeden rozkaz maszynowy.
Omawiane poniżej dyrektywy nie występują na liście rozkazów maszynowych i nie są zamieniane bezpośrednio na rozkazy Języka maszynowego, ale służą do starowania procesem translacji, do umieszczania danych w pamięci lub symbolicznego zapisu często powtarzanych ąekwencji rozkazów. Dyrektywy posiadają ten sam format co rozkazy (4 pola), przy czym dodatkowo w polu etykiety może pojawiać się nazwa (informacja typu (7)) nie zakończona ćbm. kropklem.
Poniżej podamy niektóre dyrektywy omawianego języka symbolicznego i funkcje, jakie spełniają.
ORG addx Początek (Origin)
Program tłumaczący (assembler) zamienia kolejne rozkazy maszynowe przyporządkowując im kolejne adresy w pamięci począwszy od adresu O* Dyrektywa ORG pozwala na dowolne ustawienie adresu rozkazu po niej następującego. Np. dyrektywa
umieszczona na początku programu symbolicznego spowoduje, że wynikowy program maszynowy będzie się zaczynał od adresu 02FAH. Dyrektywę ORG możemy w programie stosować wielokrotnie.
BQU data 16 Podstaw (Eąuate)
Dyrektywa ta nadaje wartość liczbową dowolnej nazwie. Np.
powoduje, że nazwy PTAK można używać zamiast liczby 26; np. teraz rozkaz
spowoduje wysłanie zawartości rejestru A do urządzenia wyjściowego o numerze 26.
Nazwy zdefiniowanej dyrektywą EQO nie można ponownie definiować (nadawać jej nowej wartości).
SET data 16 Ustaw (Set)
Dyrektywa ta wywołuje ten sam skutek co dyrektywa EQU z tym, że można ją stosować w programie wielokrotnie do tej samej nazwy (zmieniając przyporządkowaną jej liczbę).
DB lista
Zdefiniuj bajiy danych (Define Bytes of Data)