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

Z MERA 400 wiki
Przejdź do nawigacji Przejdź do wyszukiwania
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:
 
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:

Wersja z 08:48, 13 sie 2017

Instrukcje wejścia-wyjścia służą do realizacji dwóch zadań:

  1. programowego podziału pamięci,
  2. komunikacji z urządzeniami peryferyjnymi.

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 osobnym dokumencie, tutaj zajmiemy się jedynie kwestiami ogólnymi oraz szczegółami komunikacji z peryferiami.

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 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 2 - kanał lub urządzenie zajęte
  • Adres 3 - rozkaz poprawnie przyjęty przez kanał lub urządzenie
  • Adres 4 - błąd parzystości pamięci

Tak więc poprawne użycie instrukcji IN/OU może mieć postać:

        OU r2, r3
        .word noans, busy, ok, parity
noans:  
        ... ; obsługa przypadku "brak odpowiedzi"
busy:   
        ... ; obsługa przypadku "zajętość"
parity: 
        ... ; obsługa przypadku "błąd parzystości"
ok:     
        ... ; kontyunuacja programu

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
  • N0-2 - kod operacji rozkazu
  • N3-7 - numer urządzenia lub przedłużenie kodu operacji
  • N8-10 - numer urządzenia
  • N11-14 - numer kanału
  • N15 - 0: rozkaz dotyczy kanału, 1: rozkaz nie dortyczy urządzeń we/wy

W przypadku MULTIXa i PLIXa znaczenie argumentów opisane jest w dokumentach Styk programowy MERA-MULTIX i Styk programowy MERA-PLIX.