3158
edycji
Nie podano opisu zmian |
|||
| Linia 15: | Linia 15: | ||
** '''-O <otype>''' - typ wyniku asemblacji. Możliwe wybory to: | ** '''-O <otype>''' - typ wyniku asemblacji. Możliwe wybory to: | ||
*** ''raw'' - binarny obraz gotowy do umieszczenia w pamięci maszyny i uruchomienia (domyślny wybór) | *** ''raw'' - binarny obraz gotowy do umieszczenia w pamięci maszyny i uruchomienia (domyślny wybór) | ||
*** ''debug'' - tekstowy opis zawartości kolejnych komórek pamięci | *** ''debug'' - tekstowy opis zawartości kolejnych komórek pamięci | ||
*** ''keys'' - tekstowy opis zawartości kolejnych komórek pamięci w formacie łatwym do wprowadzenia z pulpitu technicznego maszyny | *** ''keys'' - tekstowy opis zawartości kolejnych komórek pamięci w formacie łatwym do wprowadzenia z pulpitu technicznego maszyny | ||
** '''-o <wyjście>''' - nazwa pliku wyjściowego. Jeśli nie zostanie podana, domyślny wygór zależy od typu wyniku asemblacji: | ** '''-o <wyjście>''' - nazwa pliku wyjściowego. Jeśli nie zostanie podana, domyślny wygór zależy od typu wyniku asemblacji: | ||
*** ''raw'' - nazwa pliku wejściowego z pominiętym rozszerzeniem. Jeśli wejście nie jest plikiem, to wyjściem jest plik 'a.out' | *** ''raw'' - nazwa pliku wejściowego z pominiętym rozszerzeniem. Jeśli wejście nie jest plikiem, to wyjściem jest plik 'a.out' | ||
*** ''debug'' i ''keys'' - standardowe wyjście | *** ''debug'' i ''keys'' - standardowe wyjście | ||
** '''-c <cpu>''' - wybierz procesor, dla jakiego assembler produkuje binaria. Możliwe wybory to: ''mera400'', ''mx16''. Ustawienie procesora na MX-16 pozwala na użycie dodatkowych instrukcji oraz poszerza przestrzeń adresową programu z 32 do 64k słów. Domyślnie przyjmowany procesor to ''mera400''. Opcja nadpisuje wybór dokonany w źródłe dyrektywą '''.cpu'''. | ** '''-c <cpu>''' - wybierz procesor, dla jakiego assembler produkuje binaria. Możliwe wybory to: ''mera400'', ''mx16''. Ustawienie procesora na MX-16 pozwala na użycie dodatkowych instrukcji oraz poszerza przestrzeń adresową programu z 32 do 64k słów. Domyślnie przyjmowany procesor to ''mera400''. Opcja nadpisuje wybór dokonany w źródłe dyrektywą '''.cpu'''. | ||
| Linia 184: | Linia 182: | ||
lw r1, zmienna.a | lw r1, zmienna.a | ||
lw r2, zmienna.b | lw r2, zmienna.b | ||
== Wyrażenia == | == Wyrażenia == | ||
| Linia 315: | Linia 296: | ||
Ustala nową bieżącą pozycję assemblacji. Następne wygenerowane słowo zostanie umieszczone już pod podanym, nowym adresem. | Ustala nową bieżącą pozycję assemblacji. Następne wygenerowane słowo zostanie umieszczone już pod podanym, nowym adresem. | ||
=== .ifdef, .ifndef === | === .ifdef, .ifndef === | ||
| Linia 390: | Linia 359: | ||
EMAS używa mnemoników z [[Lista rozkazów|oryginalnej listy rozkazów]] MERY-400, ale wprowadza zmiany składniowe wynikające z innego zapisu argumentu normalnego. Nie używa przyrostków zależnych od lokalizacji argumentu. Czyli np. rozkaz ```LWn`` z listy rozkazów, gdzie ```n``` zmienia się w zależności od typu argumentu normalnego, ma zawsze mnemonik ```LW```. Lokalizację argumentu określa składnia dla rejestrów rB i rC. Poniższe przykłady ładowania wartości do rejestru r1 przedstawiają wszystkie możliwe postacie argumentu normalnego: | EMAS używa mnemoników z [[Lista rozkazów|oryginalnej listy rozkazów]] MERY-400, ale wprowadza zmiany składniowe wynikające z innego zapisu argumentu normalnego. Nie używa przyrostków zależnych od lokalizacji argumentu. Czyli np. rozkaz ```LWn`` z listy rozkazów, gdzie ```n``` zmienia się w zależności od typu argumentu normalnego, ma zawsze mnemonik ```LW```. Lokalizację argumentu określa składnia dla rejestrów rB i rC. Poniższe przykłady ładowania wartości do rejestru r1 przedstawiają wszystkie możliwe postacie argumentu normalnego: | ||
* LW r1, r2 - ładowana jest wartość z rejestru r2 | * LW r1, r2 - ładowana jest wartość z rejestru r2 | ||
* LW r1, r2+r3 - ładowana jest wartość z rejestru r2 sumowana z (B-modyfikowana) rejestrem r3 | * LW r1, r2+r3 - ładowana jest wartość z rejestru r2 sumowana z (B-modyfikowana) rejestrem r3 | ||
| Linia 398: | Linia 368: | ||
* LW r1, [0x1000] - ładowana jest wartość z komórki pamięci (D-modyfikacja) o adresie 0x1000 | * LW r1, [0x1000] - ładowana jest wartość z komórki pamięci (D-modyfikacja) o adresie 0x1000 | ||
* LW r1, [0x1000+r2] - ładowana jest wartość z komórki pamięci (D-modyfikacja) o adresie 0x1000 sumowana z (B-modyfikowanym) zawartością rejestru r2 | * LW r1, [0x1000+r2] - ładowana jest wartość z komórki pamięci (D-modyfikacja) o adresie 0x1000 sumowana z (B-modyfikowanym) zawartością rejestru r2 | ||
UWAGA: ```[]``` oznacza D-modyfikację, której efekt będzie różny w zależności od treści rozkazu, np.: | |||
* LW r1, [10] - załadowanie do rejestru r1 wartości z komórki pamięci 10 (pojedyncza dereferencja) | |||
* TW r1, [10] - załadowanie do rejestru r1 wartości z komórki pamięci wskazanej adresem zapisanym w komórce 10 (podwójna dereferencja) | |||
Przykłady użycia rozkazów z argumentem krótkim: | Przykłady użycia rozkazów z argumentem krótkim: | ||