[ Pobierz całość w formacie PDF ]
tosowań, których nie omówimy, np. .OPT NO LIST spowoduje, że
nie będzie wyprowadzany listing asemblacji. .OPT OBJ oznacza,
że chcemy asemblować do pamięci. Gdy brak tej dyrektywy, MAC
przez domniemanie przyjmuje .OPT NO OBJ.
Stosując .OPT OBJ trzeba dokładnie upewnić się, że jest
to bezpieczne. Np. małe programy możemy zawsze asemblować na
stronę 6, ponieważ MAC/65 zostawia ją wolną. W pozostałych
przypadkach użyteczna jest komenda edytora SIZE. MAC podaje
po niej trzy liczby: pierwsza jest najniższym adresem dostęp-
nej pamięci, druga wyznacza górną granicę obszaru zajętego
przez nasz program zródłowy, trzecia - szczyt pamięci. Można
asemblować tylko do obszaru między drugim, a trzecim adresem.
Nie niżej i nie wyżej. Jednakże dolną granicę można zmienić
z pomocą komendy LOMEM. Pisząc na przykład:
LOMEM 6000
--- 210 ---
powodujemy, że program zródłowy będzie umieszczany powyżej
6000 hex. Należy to, oczywiście, uczynić p r z e d pisa-
niem lub wprowadzeniem do pamięci programu zródłowego. Wtedy
adresy powyżej obszarów zajętych przez OS i DOS do wysokości
6000 hex będą bezpieczne dla kodu wynikowego.
Asemblowanie do pamięci ma zatem szereg wad, ale i pew-
ną zaletę. Po zasemblowaniu naszego programu możemy wrócić
do DOS, wywołać BUG/65 i program od razu "szlifować". Przed-
tem jednak musimy wykorzystać możliwości usunięcia błędów,
jakie zapewnia MAC/65 w czasie asemblowania.
Wykonanie asemblowania wywołuje komenda ASM. Jeżeli w
programie nie napisaliśmy .OPT OBJ, to po napisaniu:
ASM
uzyskamy to, że nasz program będzie asemblowany,na ekran wyp-
rowadzone zostaną komunikaty o błędach, ale kod wynikowy ...
nie będzie wytwarzany. Oto zaleta tego mechanizmu: możemy
usunąć wszystkie dostrzeżone przez MAC błędy i dopiero potem
wykonać asemblację.
ASM powoduje asemblowanie pliku zródłowego MAC/65, wyp-
rowadza listing i kod wynikowy. Składnia komendy jest nastę-
pujÄ…ca:
ASM #file1, #file2, #file3, #file4
file1 oznacza urządzenie (plik z dyskietki lub pamięć)
zawierające kod zródłowy, file 2 - urządzenie dla wyprowadze-
nia listingu, file3 - dla kodu wynikowego, natomiast file4
oznacza plik tymczasowy tworzony przez MAC/65.
Jeżeli nie określi się nazw plików (zastępuje się wtedy
je przecinkami) MAC przyjmie przez domniemanie, że są to:
file1 - kod zródłowy użytkownika w pamięci
file2 - edytor ekranu
file3 - pamięć (tylko gdy poda się .OPT OBJ)
file4 - nie ma.
Oto przykłady stosowania komendy:
ASM #D:SOURCE , , #D:OBJECT
Kod zródłowy będzie czytany z pliku o nazwie SOURCE, a
--- 211 ---
wynikowy wpisany do pliku OBJECT. Listing wypisany będzie na
ekranie:
ASM , #P: , , #D: TEMP
Kod zródłowy będzie czytany z pamięci, listing wyprowa-
dzony na drukarkę, kod wynikowy zapisany w pamięci, a plik ty-
mczasowy na dyskietkÄ™.
10.2.4 Makrorozkazy
Makrorozkazy - to fragmenty kodu tworzone i wykorzystywa-
ne w specjalny sposób. MAC/65 wprowadza zdefiniowane rozkazy
do odrębnego obszaru pamięci, a podczas asemblowania włącza je
do kodu zródłowego wykonując przy tym dodatkowy trzeci prze-
bieg. Stosowanie makrorozkazów składa się z dwóch odrębnych
faz: ich definiowania oraz ich wykorzystania czyli, jak to siÄ™
określa, r o z s z e r z a n i a. Ważną cechą makrorozkazów
jest możliwość przekazywania do nich parametrów z zasadniczego
programu.
Do definiowania nowych makrorozkazów służy para dyrektyw:
.MACRO nazwa-makrorozkazu
.ENDM
Między nimi, jak w klamrze umieszcza się kod.
Gdy zdefiniujemy makrorozkaz, jego nazwa może być wykorzy-
stana w programie zródłowym, raz lub wielokrotnie, zamiast mne-
moniku rozkazu. Rozpatrzmy prosty przykład makrorozkazu wyko-
nującego przechowanie na stosie zawartości rejestrów A, X i Y.
.MACRO PRZECHOWAJ
PHA
TXA
PHA
TYA
PHA
.ENDM
Po zdefiniowaniu tego makrorozkazu możemy go teraz włączać
do kodu zródłowego analogicznie jak mnemoniki.
Z pomocą makrorozkazów można budować biblioteki fragmentów
--- 212 ---
programów o dowolnej długości i następnie włączać je do pisa-
nych programów. Np. twórcy MAC/65 opracowali zbiór makrorozka-
zów do obsługi wejścia-wyjścia przedstawiony w pliku IOMAC.LIB
i skomentowany w instrukcji. Makrorozkazy zbudowano w ten spo-
sób, że najprostsze są wykorzystywane we wnętrzu bardziej zło-
żonych. Ponadto posłużono się zbiorem etykiet zdefiniowanych
w SYSEQU.
Do makrorozkazów można przekazywać p a r a m e t r y. W
samym wnętrzu makrorozkazu parametry oznaczane są jednolicie
numerami poprzedzonymi znakiem % dla wyrażeń liczbowych lub
parą znaków %$ dla łańcuchów znakowych. Rozpatrzmy makrorozkaz
@ CH, wykonujący ładowanie do rejestru X numeru IOCB pomnożo-
nego przez 16. Przyjmuje się, że gdy podana zostanie wartość
od 0 do 7, oznaczać będzie numer kanału, natomiast wartość
większa oznaczać będzie adres, pod którym znajduje się numer
kanału.
.MACRO @ CH
.IF %1>7
LDA %1 Numer IOCB podano w pamięci
ASL A
ASL A
ASL A
ASL A Numer IOCB pomnożony przez 16
TAX i przeniesiony do rejestru X
.ELSE
LDX #%1 16 Numer podano wprost
.ENDIF
.ENDM
W definicji tego makrorozkazu poznajemy także zastosowa-
nie asemblowania warunkowego. Zależnie od wielkości parametru
zostanie on potraktowany odmiennie i za każdym razem inna
część makrorozkazu zostanie zasemblowana.
Jaka jest forma stosowania tego makro? W tekście zródło-
wym należy podać jego nazwę, a za nią wypisać parametry, w tym
wypadku jeden - numer IOCB lub adres, pod którym numer ten się
znajduje. Oczywiście, możliwe jest przekazywanie w ten sposób
wielu parametrów - do 63 w jednym makro oznaczanych np. %7,
--- 213 ---
[ Pobierz całość w formacie PDF ]
Tematy
- Home
- herrmann horst Jan Pawel II zlapany za slowo
- Grzegorczyk Jan Piekło i niebo
- Jan od Krzyza Noc ciemna
- Goldstein Jan Wszystko co waĹźne
- Art of Public Speaking
- Graczowa_
- Arsan Emmanuelle.Emmanuelle 1 czyli Edukacja
- LE Modesitt Recluce 06 Fall of Angels (v1.5)
- John DeChancie Castle 04 Castle War
- 006. BBY 3645 Czerwone 湜şniwa
- zanotowane.pl
- doc.pisz.pl
- pdf.pisz.pl
- agniecha649.htw.pl