3012
edycji
(Nie pokazano 2 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 1: | Linia 1: | ||
Na wykonanie rozkazu składają się następujące fazy: | Na wykonanie rozkazu składają się następujące fazy: | ||
# '''Pobranie rozkazu''' | # '''Pobranie rozkazu''' | ||
# '''Określenie efektywności rozkazu''' | # '''Określenie efektywności rozkazu''' | ||
# '''Wyznaczenie argumentu efektywnego''' | # '''Wyznaczenie argumentu efektywnego''' | ||
Linia 10: | Linia 8: | ||
Po zakończeniu każdego cyklu rozkazowego, w zależności od warunków zaistniałych w minikomputerze, następuje przejście do jednej z następujących czynności: | Po zakończeniu każdego cyklu rozkazowego, w zależności od warunków zaistniałych w minikomputerze, następuje przejście do jednej z następujących czynności: | ||
* zatrzymanie minikomputera w stanie STOP w wyniku wyłączenia klucza START | * zatrzymanie minikomputera w stanie STOP w wyniku wyłączenia klucza START | ||
* wykonanie przerwania | * [[Przerwania|wykonanie przerwania]] | ||
* przejście w stan CZEKAJ w wyniku rozkazu HLT | * przejście w stan CZEKAJ w wyniku rozkazu HLT | ||
* wykonanie następnego cyklu rozkazowego | * wykonanie następnego cyklu rozkazowego | ||
=== | == Pobranie rozkazu == | ||
Rozkaz pobierany jest z miejsca pamięci operacyjnej wskazanej zawartością IC. Jeśli Q=0 rozkaz jest pobierany z bloku pamięci systemowej, jeśli Q=1 - z bloku pamięci wskazanego zawartością rejestru NB. Adres pierwszego słowa rozkazu wskazany jest zawartością licznika rozkazów IC. Liczba pobranych słów zależy od długości rozkazu i wynosi 1 lub 2. | |||
== Efektywność rozkazu == | |||
Rozkaz jest nieefektywny (nie zostaje wykonany) w następujących przypadkach: | Rozkaz jest nieefektywny (nie zostaje wykonany) w następujących przypadkach: | ||
* błędny kod operacji | * błędny kod operacji | ||
Linia 21: | Linia 21: | ||
* rozkaz nielegalny został użyty w programie użytkowym | * rozkaz nielegalny został użyty w programie użytkowym | ||
W przypadku napotkania rozkazu nieefektywnego wykonywane są następujące czynności: | W przypadku napotkania rozkazu nieefektywnego wykonywane są następujące czynności: | ||
* wyzerowanie modyfikatora MOD | * wyzerowanie modyfikatora MOD, | ||
* wpisanie 1 do pozycji 6 rejestru zgłoszeń przerwań RZ | * jeśli wskaźnik przeskoku P=0, wpisanie 1 do pozycji 6 rejestru zgłoszeń przerwań RZ, | ||
* natychmiastowe zakończenie rozkazu | * jeśli wskaźnik przeskoku P=1, wyzerowanie wskaźnika P, | ||
* natychmiastowe zakończenie rozkazu. | |||
Zawartość rejestrów programowych nie ulega zmianie. Licznik rozkazów zawiera adres pierwszego słowa następnego rozkazu. | |||
== 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 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. | ||
Linia 40: | Linia 42: | ||
gdzie: | gdzie: | ||
* 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 | * 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) |