Assembler: Podstawowe polecenia monitora

Dla osób chcących programować lub modyfikować programy w języku wewnętrznym znajomość poleceń monitorów jest po prostu niezbędna. Jednocześnie powszechnie wiadomo, że większość użytkowników C-64 korzysta z programów typu monitor bez jakiejkolwiek instrukcji. Ot, po prostu "na czuja" nawet do popularnych modułów z monitorami sprzedawcy nie zawsze dołączają odpowiednią dokumentację).

Poniższe zestawienie obejmuje naturalnie jedynie instrukcje podstawowe, bowiem tylko one mają praktycznie we wszystkich monitorach identyczny format. Uwaga: oczywiście wiecie o tym, ale dla porządku przypominamy, że wszystkie argumenty w programie monitora muszą być podawane w kodzie heksadecymalnym (szesnastkowyrn).

A (ASSEMBLE)

Umożliwia wprowadzenie linii zawierającej kod asemblera (mnemonik + argument). Programista musi określić numer pierwszej komórki pamięci, od której będzie zaczynał się program, dalszą numerację zazwyczaj przejmuje program monitora. Format instrukcji:

A C000 JSR $FCE2 - gdzie:
A - rozkaz monitora,
C000 - adres komórki pamięci,
JSR - mnemonik,
$FCE2 - argument mnemonika.

Jeżeli podczas wprowadzania instrukcji programista popełni błąd, wówczas na ekranie zostanie wyświetlony znak zapytania "?", albo program monitora nie policzy (wyświetli) następnego adresu pamięci.

C (COMPARE)

Instrukcja ta porównuje ze sobą dwa obszary pamięci. W wypadku różnic wyświetlane są komórki, w których ta różnica występuje. W niektórych monitorach wyświetlane są również zawartości tych komórek. Format instrukcji:

C 1000 2000 5400

W wyniku działania tej instrukcji zostają porównane dwa obszary. W przykładzie: pierwszy, począwszy od adresu 1000 do 2000, drugi - od 5000 do 6000

D (DISASSEMBLE)

Za pomocą tego rozkazu dokonujemy disasemblacji tzn. zamiany kodu maszynowego na kody asemblera. Korzystając z tego rozkazu należy określić adres początku obszaru pamięci, od którego ma się rozpocząć disasemblacja. Format instrukcji:

D FCE2 - gdzie:
D - instrukcja monitora,
FCE2 - początkowy adres pamięci, od którego chcemy rozpocząć disasemblację.

W przypadku, gdy program monitora natrafi na kod, który nie ma mnemonika, wówczas wyświetlone zostaną trzy znaki zapytania - (???).

F (FILL)

Rozkaz ten powoduje wypełnienie zadanego obszaru pamięci podaną wartością lub wartościami. Format instrukcji:

F C000 CFFF 01 02 - gdzie:
F - instrukcja monitora,
C000 - Początkowy adres pamięci, od którego można zacząć wypełnianie,
CFFF - końcowy adres pamięci,
O1 02 - wartości, którymi można wypełniać zadaną Pamięć.

G (GO)

Instrukcja ta uruchamia program począwszy od podanego adresu. Format instrukcji:

G C000 - gdzie:
G - instrukcja monitora, .
C000 - adres, od którego zostanie uruchomiony program.

W przypadku, gdy w programie wystąpi instrukcja RTS lub BRK, program automatycznie wróci do monitora.

H (HUNT)

Zadaniem tej instrukcji jest poszukiwanie w zadanym obszarze pamięci sekwencji danych. Dane te możemy podać w formie danych bajtów lub w formie znaków. Format instrukcji:

1. H C000 C100 78 A9 lub
2. H C000 C100 'TEXT' - gdzie:
H - instrukcja monitora,
C000 - początkowy adres pamięci, od którego można poszukiwać danych,
CFFF - końcowy adres pamięci,
78 A9 lub TEXT - poszukiwane dane.

Jeżeli w przeszukiwanym obszarze wystąpią podane dane, wówczas zostaną wyświetlone ich adresy.

L (LOAD)

Odpowiednik instrukcji LOAD w BASIC-u. Zazwyczaj dostępne są dwa formaty instrukcji:

1. L"Nazwa programu" 08
Powoduje załadowanie programu pod podaną nazwą z urządzenia o numerze 8 (stacja dysków) pod adres podany w nagłówku programu dwa pierwsze bajty.

2. L"Nazwa programu" 01 C000
Powoduje załadowanie programu pod podaną nazwą z urządzenia o numerze 1 magnetofon) pod adres C000. I tu mała uwaga: niektóre monitory nie są wyposażone w komunikaty błędów przy operacji wczytywania, co jest istotne dla użytkowników magnetofonów, gdyż program może zostać wczytany z błędem.

M (MONITOR)

W wyniku działania tej instrukcji na ekranie zostanie wyświetlona zawartość pamięci w formie liczb szesnastkowych. Zawartość pamięci można modyfikować najeżdżając kursorem na daną wartość, a następnie wprowadzając nową. Po całej operacji należy nacisnąć klawisz RETURN. Format instrukcji:

M C000 C450 - gdzie:
C000 - adres, od którego zaczyna się oglądanie pamięci, C050 - adres końcowy.

W niektórych monitorach, oprócz zawartości pamięci w firmie Iiczb szesnastkowych, zostaje wyświetlona zawartość w kodzie ASCII. Jeżeli dany znak w kodzie ASCII nie ma swej farmy możliwej do zobrazowania na ekranie, zostaje zastąpiony kropką.

R (REGISTER)

Wydanie tej dyrektywy powoduje wyświetlenie zawartości rejestrów procesora. Najczęściej są to:

PC - licznik programu,
SR - bajt stanu procesora,
AC - akumulator,
XR - rejestr indeksowy X,
YR - rejestr indeksowy Y,
SP - wskaźnik stosu.

Ponadto w niektórych monitorach wyświetlane są adresy przerwań IRQ i NMI. Jeżeli chce się zmodyfikować zawartość jakiego rejestru, wystarczy najechać kursorem w odpowiednie miejsce, za pomocą klawiatury wpisać nowi wartość i nacisną klawisz RETURN.

S (SAVE)

Odpowiednik instrukcji SAVE w BASIC-u. Pozwala na zapisanie na nośniku zewnętrznym dysk lub magnetofon) zawartości podanego obszaru pamięci. Format instrukcji:

S"Nazwa programu" 08 0801 2020 - gdzie:
S - instrukcja monitora,
08 - nr urządzenia zewnętrznego,
0801 - adres startowy,
2020 - adres końcowy.

W wyniku działania powyższej instrukcji na dyskietce (urządzenie 8) nagrany zostanie program o adresie startowym 0801 i końcowym 2020.

T (TRANSFER)

Rozkaz ten służy do przenoszenia dowolnych obszarów pamięci. Użytkownik musi określić adresy początku i końca wybranego do przeniesienia obszaru oraz adres początku obszaru, do którego ma nastąpi przeniesienie. Format:

T 0801 1000 C000
W wyniku działania tej instrukcji wartości będące w obszarze począwszy od adresu 0801, a skończywszy na adresie 1000, zostaną przeniesione do obszaru począwszy od adresu C000.

V (VERIFY)

Odpowiednik instrukcji VERIFY w BASIC-u. Pozwala na zweryfikowanie zapisanego na dyskietce czy taśmie programu. Format instrukcji:

V "Nazwa programu" 01 0801 - gdzie:
V - instrukcja monitora,
01 - nr urządzenia zewnętrznego magnetofon),
0801- adres startowy.

I tu mała uwaga: spotkałem się z monitorami, w których program monitora wykazywał, że weryfikacja została przeprowadzona bezbłędnie, mimo że wcześniej wprowadziłem zmiany w programie.

Commodore & Amiga, nr 4/1994, wyd. Bajtek

 © 1999-2020 Wszystkie prawa zastrzeżone
 Webmaster: Mariusz "Flooder" Młynek