262
Jest więc obojętne, czy żądany rejestr wskażemy przez podanie Jego symbolu literowego, czy przez odpowiadającą mu cyfrę.
(8) - etykieta (maksymalnie 5 znaków zaczynających się od litery) umieszczona » polu operandów rozkazu skoku powoduje skok do rozkazu posiadającego taką samą etykietę w polu etykiety.
Np. i 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 (przesunięcie o Jeden bit w lewo) oraz lewe 1 prawe nawiasy. Np.
KVI 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.
MOT A, D; (A)—(D)
M0V A, 2; (A)-(D)
MOV 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 |
H i L |
PSW |
rejestr A i wskaźniki |
SP |
16-bitowy wskaźnik stosu. |
(c) - Określenie zawartości 2 lub 213 bajtu rozkazu. Do podania tej informacji można wykorzystać dowolną z postaci (1) (9).
Np.:
MVI 4,4 ; (H) —4
DCI SP.OOFOH SHL 2; (SP)—03C0H TU :DCI H,TU j (H)(L)-l6-bitowy adres
; 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-bltową, np.:
JMP 0A2FH JMP START
skok do rozkazu o adresie 0A2FH skok do rozkazu opatrzonego etykietą START
Pola komagtaria. W pola 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 (;).
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 sterowania 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 dwi. kropklem.
Poniżej podamy niektóre dyrektywy omawianego języka symbolicznego 1 funkcje, jakie spełniają.
ORG addr Początek (Origln)
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
ORG 02FAH
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.
EQU data 16 Podstaw (Equate)
Dyrektywa ta nadaje wartość liczbową dowolnej nazwie. Np.
PTAK EQU 26
powoduje, że nazwy PTAK można używać zamiast liczby 26; np. teraz rozkaz
OUT PTAK
spowoduje wysłanie zawartości rejestru A do urządzenia wyjściowego o numerze 26.
Nazwy zdefiniowanej dyrektywą Eęu 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 bajty danych (Define Bytes of Data)