Instrukcje wejścia-wyjścia: Różnice pomiędzy wersjami

Przejdź do nawigacji Przejdź do wyszukiwania
 
(Nie pokazano 3 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 4: Linia 4:
# komunikacji z urządzeniami peryferyjnymi.
# komunikacji z urządzeniami peryferyjnymi.


Rozkazy IN i OU są dwuargumentowe: pierwszym argumentem jest rejestr, drugim argument normalny. Najmłodszy bit argumentu normalnego mówi o tym, czy rozkaz jest kierowany do pamięci (1), czy do urządzeń zewnętrznych (0). Szczegóły pierwszego przypadku użycia opisane są w [[Pamięć operacyjna#Programowy podział pamięci|osobnym dokumencie]], tutaj zajmiemy się jedynie kwestiami ogólnymi oraz szczegółami komunikacji z peryferiami.
Rozkazy IN i OU są dwuargumentowe: pierwszym argumentem jest rejestr '''r''', drugim argument normalny '''N'''. Najmłodszy bit argumentu '''N''' mówi o tym, czy rozkaz jest kierowany do pamięci (1), czy do urządzeń zewnętrznych (0). Szczegóły pierwszego przypadku użycia opisane są w [[Pamięć operacyjna#Programowy podział pamięci|osobnym dokumencie]], tutaj zajmiemy się jedynie kwestiami ogólnymi oraz szczegółami komunikacji z peryferiami.


= Postać rozkazów IN/OU =
= Postać rozkazów IN/OU =


Podstawowe argumenty rozkazów IN i OU nie różnią się niczym od pozostałych przypadków z grupy z argumentem normalnym - możliwe jest użycie wszystkich dostępnych modyfikacji. Wyjątkowe jest natomiast to, że cztery kolejne słowa pamięci po słowie (bądź dwóch, w przypadku bezpośredniego argumentu) rozkazu IN/OU zarezerwowane są dla czterech dodatkowych argumentów. Muszą one zawsze wystąpić i zawierają adresy pamięci, na które ustawiony zostanie licznik rozkazów po wykonaniu rozkazu IN/OU. W zależności od warunków, jakie wystąpiły w trakcie jego wykonywania, wybierany jest jeden z podanych adresów:
Podstawowe argumenty rozkazów IN i OU nie różnią się niczym od pozostałych przypadków z grupy z argumentem normalnym - możliwe jest użycie wszystkich dostępnych modyfikacji. Wyjątkowe jest natomiast to, że cztery kolejne słowa pamięci po rozkazie IN/OU zarezerwowane są dla czterech dodatkowych argumentów. Muszą one zawsze wystąpić i zawierają adresy pamięci, na które ustawiony zostanie licznik rozkazów po wykonaniu rozkazu IN/OU. W zależności od warunków, jakie wystąpiły w trakcie jego wykonywania, wybierany jest jeden z podanych adresów:


* Adres 1 - brak odpowiedzi od kanału bądź urządzenia (brak kanału, brak urządzenia, niesprawność)
* Adres 1 - brak odpowiedzi od kanału bądź urządzenia (brak kanału, brak urządzenia, niesprawność)
Linia 17: Linia 17:
Tak więc poprawne użycie instrukcji IN/OU może mieć postać:
Tak więc poprawne użycie instrukcji IN/OU może mieć postać:


<syntaxhighlight lang="asm">
         OU r2, r3
         OU r2, r3
         .word noans, busy, ok, parity
         .word noans, busy, ok, parity
Linia 28: Linia 27:
  ok:     
  ok:     
         ... ; kontyunuacja programu
         ... ; kontyunuacja programu
</syntaxhighlight>
 
Argumenty '''r''' i '''N''' przekazywane są za pomocą interfejsu do kanału, a dalej do urządzeń zewnętrznych. Ich znaczenie jest różne dla różnych kanałów i urządzeń. W komunikacji z kanałami znakowym i pamięciowym, znaczenie argumentów, i ich poszczególnych bitów jest następujące:
 
* '''r''' - informacja przekazywana do/z kanału lub adres pola sterującego
* '''N<sub>0-2</sub>''' - kod operacji rozkazu
* '''N<sub>3-7</sub>''' - numer urządzenia lub przedłużenie kodu operacji
* '''N<sub>8-10</sub>''' - numer urządzenia
* '''N<sub>11-14</sub>''' - numer kanału
* '''N<sub>15</sub>''' - 0: rozkaz dotyczy kanału, 1: rozkaz nie dotyczy urządzeń we/wy
 
W przypadku [[MULTIX]]a i [[PLIX]]a znaczenie argumentów opisane jest w dokumentach [[Styk programowy MERA-MULTIX]] i [[Styk programowy MERA-PLIX]].

Menu nawigacyjne