Wykonanie rozkazu: Różnice pomiędzy wersjami

Przejdź do nawigacji Przejdź do wyszukiwania
brak opisu edycji
Nie podano opisu zmian
Nie podano opisu zmian
Linia 27: Linia 27:
=== Wyznaczenie argumentu efektywnego ===
=== Wyznaczenie argumentu efektywnego ===


Argument efektywny (oznaczony symbolem N) rozkazu jest to argument uzyskany z argumentu pierwotnego przez wykonanie wszystkich wskazanych modyfikacji i jest zawsze pełną liczbą 16-bitową. Jeśli żadna z modyfikacji nie jest wykonywana, argumentem efektywnym jest argument pierwotny rozkazu, wydłużony w razie potrzeby do pełnej 16-bitowej długości. Argument pierwotny zależy od postaci rozkazu i może być:
Argument efektywny (oznaczony symbolem N) rozkazu jest to argument uzyskany z argumentu pierwotnego przez wykonanie wszystkich wskazanych modyfikacji i jest zawsze pełną liczbą 16-bitową. Jeśli żadna z modyfikacji nie jest wykonywana, argumentem efektywnym jest argument pierwotny rozkazu, wydłużony w razie potrzeby do pełnej 16-bitowej długości.
* normalny
* krótki
* bajtowy


Możliwe są trzy modyfikacje argumentu:
Możliwe są trzy modyfikacje argumentu:


# '''Pre-modyfikacja''' - możliwa jest w każdym rozkazie zawierającym pierwotny argument i ma miejsce wówczas, gdy zostanie on poprzedzony rozkazem '''MD''' (modyfikuj). Argument efektywny rozkazu '''MD''' nazywamy modyfikatorem (MOD). Pre-modyfikacja polega na dodaniu modyfikatora do argumentu pierwotnego. Dodawanie wykonywane jest z zaniedbaniem ewentualnego nadmiaru. Rozkaz '''MD''' może być również poprzedzony rozkazem '''MD''', ale czwarty z kolei rozkaz '''MD''' jest traktowany jako nieprawidłowy i nie jest wykonywany, natomiast powoduje zgłoszenie przerwania.
# '''Pre-modyfikacja''' - możliwa jest w każdym rozkazie zawierającym pierwotny argument i ma miejsce wówczas, gdy zostanie on poprzedzony rozkazem MD (modyfikuj). Argument efektywny rozkazu M' nazywamy modyfikatorem (MOD). Pre-modyfikacja polega na dodaniu modyfikatora do argumentu pierwotnego. Dodawanie wykonywane jest z zaniedbaniem ewentualnego nadmiaru. Rozkaz M' może być również poprzedzony rozkazem MD, ale czwarty z kolei rozkaz MD jest traktowany jako nieprawidłowy i nie jest wykonywany, natomiast powoduje zgłoszenie przerwania.
# '''B-modyfikacja''' - możliwa jest w rozkazach z argumentem normalnym, w którym B oznacza numer rejestru indeksowego. Polega ona na dodaniu zawartości rejestru indeksowego do argumentu rozkazu. Dodawanie jest wykonywane z zaniedbaniem ewentualnego nadmiaru. Jako rejestry indeksowe mogą być użyte rejestry R1-R7. Zerowa zawartość pola B oznacza brak B-modyfikacji.
# '''B-modyfikacja''' - możliwa jest w rozkazach z argumentem normalnym, w którym B oznacza numer rejestru indeksowego. Polega ona na dodaniu zawartości rejestru indeksowego do argumentu rozkazu. Dodawanie jest wykonywane z zaniedbaniem ewentualnego nadmiaru. Jako rejestry indeksowe mogą być użyte rejestry R1-R7. Zerowa zawartość pola B oznacza brak B-modyfikacji.
# '''D-modyfikacja''' - możliwa jest w rozkazach z normalnym argumentem. Polega ona na tym, że uzyskany w wyniku poprzednich operacji argument traktowany jest jako adres argumentu efektywnego. Zerowa zawartość pola D oznacza brak D-modyfikacji. Jeśli D=1 to w celu otrzymania argumentu efektywnego dokonywany jest odczyt z bloku pamięci systemowej (przy Q=1) lub z bloku o numerze wskazanym zawartością NB (przy Q-1). Jeśli D=0, argumentem efektywnym jest argument wyznaczony w wyniku poprzednich modyfikacji.
# '''D-modyfikacja''' - możliwa jest w rozkazach z normalnym argumentem. Polega ona na tym, że uzyskany w wyniku poprzednich operacji argument traktowany jest jako adres argumentu efektywnego. Zerowa zawartość pola D oznacza brak D-modyfikacji. Jeśli D=1 to w celu otrzymania argumentu efektywnego dokonywany jest odczyt z bloku pamięci systemowej (przy Q=1) lub z bloku o numerze wskazanym zawartością NB (przy Q-1). Jeśli D=0, argumentem efektywnym jest argument wyznaczony w wyniku poprzednich modyfikacji.
Linia 44: Linia 41:
* R/C/ - zawartość rejestru uniwersalnego o numerze wskazanym w polu c rozkazu (występuje w przypadku C≠0)
* R/C/ - zawartość rejestru uniwersalnego o numerze wskazanym w polu c rozkazu (występuje w przypadku C≠0)
* M - zawartość następnego słowa za słowem podstawowym rozkazu (występuje, gdy C≠0)
* M - zawartość następnego słowa za słowem podstawowym rozkazu (występuje, gdy C≠0)
* MOD - modyfikator, argument efektywny rozkazu '''MD''' (występuje, gdy poprzednio użyto rozkazu '''MD''')
* MOD - modyfikator, argument efektywny rozkazu MD (występuje, gdy poprzednio użyto rozkazu MD)
* R/B/ - zawartośćś rejestru uniwersalnego wwskazanego w polu B rozkazu (występuje, gdy B≠0)
* R/B/ - zawartośćś rejestru uniwersalnego wwskazanego w polu B rozkazu (występuje, gdy B≠0)
* S/x/ - zawartość miejsca pamięci o adresie x
* S/x/ - zawartość miejsca pamięci o adresie x
Występowanie modyfikacji zależy od typu argumentu pierwotnego:
* dla rozkazów z normalnym argumentem możliwe są wszystkie przypadki modyfikacji
* dla rozkazów z krótkim argumentem możliwa jest tylko pre-modyfikacja
* dla rozkazów, których pole C jest przedłużeniem kodu operacji, czynności wyznaczania argumentu efektywnego nie są wykonywane.

Menu nawigacyjne