Der Relaisrechner - Dokumentation

Befehlsübersicht

Der Programmspeicher besitzt eine Breite von 16bit. Daraus ergeben sich die folgenden Maschinenbefehle. Die rot gekennzeichneten Felder identifizieren die Befehle einer bestimmten Befehlsklasse und sind für alle Befehle dieser Klasse gleich. Die gelb gekennzeichneten Felder dienen der Unterscheidung der einzelnen Befehle innerhalb einer Klasse und sind mit Y bezeichnet. Die weiß gekennzeichneten Felder sind Operatoren, die innerhalb eines einzelnen Befehls variieren können. Das sind eintweder Registercodes oder Datenworte.
Die Registercodes sind mit XXX bezeichnet und dienen der Selektion der Arbeitsregister in einem Maschinenwort. Die gültigen Bitkombinationen sind wie folgt zugeordnet:
RegisternameCodierung
REGXXX
REG0000
REG1001
REG2010
REG3011
REG4100
REG5101
REG6110
REG7111
Befehle mit einem Registeroperanden und 8bit-Datenwort
1514131211109876543210Bitstellennummer
12bit-MaschinenwortMnemonikErläuterungen
0 0 Y Y Y X X X 8bit-Datenwort allgemeine Definition des Maschinenwortes
0 0 0 0 0 REGA8bit-RAM-AdresseLDR REGA , [ADDR]Lade das Arbeitsregister REGA mit Inhalt der RAM-Zelle ADDR
0 0 0 0 1 REGA8bit-RAM-AdresseLDR [ADDR] , REGALade die RAM-Zelle ADDR mit dem Inhalt des Arbeitsregisters REGA
0 0 0 1 0 REGA 8bit-IO-AdresseLDI REGA , [ADDR]Lade das Arbeitsregister REGA mit Inhalt des IO-Registers ADDR
0 0 0 1 1 REGA 8bit-IO-AdresseLDI [ADDR] , REGALade das IO-Register mit dem Inhalt des Arbeitsregisters REGA
0 0 1 0 0 REGA 8bit-FESTWERTLD REGA , FWLade das Arbeitsregister REG mit dem 8bit-Festwert FW
0 0 1 0 1 REGA 8bit-Wort   
0 0 1 1 0 REGA 8bit-Wort   
 
Befehle mit einem Registeroperanden ohne Datenwort
1514131211109876543210Bitstellennummer
12bit-MaschinenwortMnemonikErläuterungen
0 0 1 1 1 X X XYYYYYYYY allgemeine Definition des Maschinenwortes
0 0 1 1 1 REGA00000000  
 
Befehle ohne Registeroperanden und ohne Datenwort
1514131211109876543210Bitstellennummer
12bit-MaschinenwortMnemonikErläuterungen
0 0 1 1 1 YYY11111111 allgemeine Definition des Maschinenwortes
0 0 1 1 1 00011111111 NOPkeine Operation
0 0 1 1 1 00111111111HALTdie CPU wird gestoppt 
0 0 1 1 1 01011111111RETURN 
0 0 1 1 1 01111111111  
0 0 1 1 1 10011111111  
0 0 1 1 1 10111111111  
0 0 1 1 1 11011111111  
0 0 1 1 1 11111111111  
 
Befehle mit zwei Registeroperanden und ohne Datenwort
 
Ladebefehle LD mit zwei Registeroperanden und ohne Datenwort
1514131211109876543210Bitstellennummer
12bit-MaschinenwortMnemonikErläuterungen
0 1 Y Y Y X X X X X XYYYYY allgemeine Definition des Maschinenwortes
0 1 0 0 0 REGA REGB00000LD REGA , R1[REGB]Lade das Arbeitsregister REGA mit Inhalt der RAM-Zelle REGB aus RAM-Seite1
0 1 0 0 1 REGA REGB00000LD R1[REGB] , REGALade die RAM-Zelle REGB in RAM-Seite1 mit dem Inhalt des Arbeitsregisters REGA
0 1 0 1 0 REGA REGB00000LD REGA , R2[REGB]Lade das Arbeitsregister REGA mit Inhalt der RAM-Zelle REGB aus RAM-Seite2
0 1 0 1 1 REGA REGB00000LD R2[REGB] , REGALade die RAM-Zelle REGB in RAM-Seite2 mit dem Inhalt des Arbeitsregisters REGA
0 1 1 0 0 REGA REGB00000 LD REGA , I[REGB]Lade das Arbeitsregister REGA mit dem Inhalt der IO-Zelle REGB
0 1 1 0 1 REGA REGB00000 LD I[REGB] , REGALade die IO-Zelle REGB mit dem Inhalt des Arbeitsregisters REGA
0 1 1 1 0 REGA REGB00000 LD REGA , REGBLade das Arbeitsregister REGA mit dem Inhalt des Arbeitsregisters REGB
0 1 1 1 1 REGA REGB00000 LD REGA , P[REGB]Lade das Arbeitsregister REGA mit dem Inhalt der Programmspeicherzelle REGB
 
Additionsbefehle ADD mit zwei Registeroperanden ohne CARRY und ohne Datenwort
1514131211109876543210Bitstellennummer
12bit-MaschinenwortMnemonikErläuterungen
0 1 Y Y Y X X X X X XYYYYY allgemeine Definition des Maschinenwortes
0 1 0 0 0 REGA REGB00010ADD REGA , R1[REGB]Addiere das Arbeitsregister REGA mit Inhalt der RAM-Zelle REGB aus RAM-Seite1
0 1 0 0 1 REGA REGB00010ADD R1[REGB] , REGAAddiere die RAM-Zelle REGB in RAM-Seite1 mit dem Inhalt des Arbeitsregisters REGA
0 1 0 1 0 REGA REGB00010ADD REGA , R2[REGB]Addiere das Arbeitsregister REGA mit Inhalt der RAM-Zelle REGB aus RAM-Seite2
0 1 0 1 1 REGA REGB00010ADD R2[REGB] , REGAAddiere die RAM-Zelle REGB in RAM-Seite2 mit dem Inhalt des Arbeitsregisters REGA
0 1 1 0 0 REGA REGB00010 ADD REGA , I[REGB]Addiere das Arbeitsregister REGA mit dem Inhalt der IO-Zelle REGB
0 1 1 0 1 REGA REGB00010 ADD I[REGB] , REGAAddiere die IO-Zelle REGB mit dem Inhalt des Arbeitsregisters REGA
0 1 1 1 0 REGA REGB00010 ADD REGA , REGBAddiere das Arbeitsregister REGA mit dem Inhalt des Arbeitsregisters REGB
0 1 1 1 1 REGA REGB00010 ADD REGA , P[REGB]Addiere das Arbeitsregister REGA mit dem Inhalt der Programmspeicherzelle REGB
 
Additionsbefehle ADC mit zwei Registeroperanden mit CARRY und ohne Datenwort
1514131211109876543210Bitstellennummer
12bit-MaschinenwortMnemonikErläuterungen
0 1 Y Y Y X X X X X XYYYYY allgemeine Definition des Maschinenwortes
0 1 0 0 0 REGA REGB00011ADC REGA , R1[REGB]Addiere das Arbeitsregister REGA mit Inhalt der RAM-Zelle REGB aus RAM-Seite1 und dem CARRY-Bit
0 1 0 0 1 REGA REGB00011ADC R1[REGB] , REGAAddiere die RAM-Zelle REGB in RAM-Seite1 mit dem Inhalt des Arbeitsregisters REGA und dem CARRY-Bit
0 1 0 1 0 REGA REGB00011ADC REGA , R2[REGB]Addiere das Arbeitsregister REGA mit Inhalt der RAM-Zelle REGB aus RAM-Seite2 und dem CARRY-Bit
0 1 0 1 1 REGA REGB00011ADC R2[REGB] , REGAAddiere die RAM-Zelle REGB in RAM-Seite2 mit dem Inhalt des Arbeitsregisters REGA und dem CARRY-Bit
0 1 1 0 0 REGA REGB00011 ADC REGA , I[REGB]Addiere das Arbeitsregister REGA mit dem Inhalt der IO-Zelle REGB und dem CARRY-Bit
0 1 1 0 1 REGA REGB00011 ADC I[REGB] , REGAAddiere die IO-Zelle REGB mit dem Inhalt des Arbeitsregisters REGA und dem CARRY-Bit
0 1 1 1 0 REGA REGB00011 ADC REGA , REGBAddiere das Arbeitsregister REGA mit dem Inhalt des Arbeitsregisters REGB und dem CARRY-Bit
0 1 1 1 1 REGA REGB00011 ADC REGA , P[REGB]Addiere das Arbeitsregister REGA mit dem Inhalt der Programmspeicherzelle REGB und dem CARRY-Bit
 
Sprungbefehle
1514131211109876543210Bitstellennummer
12bit-MaschinenwortMnemonikErläuterungen
1YYY12bit-SPRUNGADRESSEJMPXabsolute Sprünge
100012bit-SPRUNGADRESSEJMPZSprung bei ZERO=1
100112bit-SPRUNGADRESSEJMPCSprung bei CARRY=1
101012bit-SPRUNGADRESSEJMPNSprung bei SIGNUM=1
101112bit-SPRUNGADRESSEJMPOSprung bei OVERFLOW=1
110012bit-SPRUNGADRESSEJMPNZSprung bei ZERO=0
110112bit-SPRUNGADRESSEJMPNCSprung bei CARRY=0
111012bit-SPRUNGADRESSEJMPPSprung bei SIGNUM=0
111112bit-SPRUNGADRESSEJMPunbedingter Sprung

Sollte jemand seine Rechte durch eine Veröffentlichung auf dieser oder einer anderen meiner Seiten verletzt sehen, bitte ich um sofortige Kontaktaufnahme. Ich werde die entsprechenden Inhalte umgehend entfernen. Somit sind sowohl ein anwaltlicher Rat als auch eine kostenpflichtige Abmahnung nicht erforderlich! Weiterhin weise ich darauf hin, dass der Inhalt verlinkter Seiten nicht in meiner redaktionellen Verantwortung liegt.
Vielen Dank

www.schlaefendorf.de 2012

www.linux-web.de