Wykonanie rozkazu: Różnice pomiędzy wersjami

Przejdź do nawigacji Przejdź do wyszukiwania
Nie podano opisu zmian
 
(Nie pokazano 3 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 1: Linia 1:
=== Wykonanie rozkazu ===
Na wykonanie rozkazu składają się następujące fazy:
Na wykonanie rozkazu składają się następujące fazy:
# Pobranie rozkazu 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
# '''Pobranie rozkazu'''
# Określenie efektywności rozkazu.
# '''Określenie efektywności rozkazu'''
# Wyznaczenie argumentu efektywnego
# '''Wyznaczenie argumentu efektywnego'''
# Wykonanie czynności określonej kodem rozkazu
# '''Wykonanie czynności określonej kodem rozkazu'''
# Jeśli rozkaz nie był rozkazem skoku i nie wystąpiły przypadki szczególne, IC zwiększany jest o długość wykonanego rozkazu
# '''Ustalenie nowej zawartości licznika rozkazów'''. Jeśli rozkaz nie był rozkazem skoku i nie wystąpiły przypadki szczególne, IC zwiększany jest o długość wykonanego rozkazu.


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


=== Efektywność rozkazu ===
== 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.


=== Wyznaczenie argumentu efektywnego ===
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≠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)

Menu nawigacyjne