K1801VM1 je jednočipový 16bitový mikroprocesor (OMP).
Je určen pro zpracování digitálních informací v systémech řízení procesů v řídicích a měřicích zařízeních a komunikačních systémech , jakož i pro řešení inženýrských a ekonomických problémů jako součást počítače . Příkazový systém K1801VM1 je velmi blízký architektuře PDP-11 a ve většině případů je s ní kompatibilní, ale není její přesnou kopií.
Struktura mikroobvodu zahrnuje následující hlavní funkční bloky:
Viz část: Strukturální diagram
Závěr | Označení | typ výstupu | Funkční účel závěrů |
---|---|---|---|
jeden | CLC | Vchod | Synchronizace |
2 | PYTEL | Zadejte výstup | Potvrzení zachycení RAP |
3 | DMGI | Vchod | Vstup pro poskytování RAP |
čtyři | DMGO | Výstup | Výstup poskytování RAP |
5 | DMR | Vchod | Požadavek RAP |
6 | SP | Vchod | Nezdokumentovaná funkce - externí zdroj frekvence pro časovač [3] . Připojte +5V |
7 | SEL1 | Výstup | Výběr prvního I/O registru |
osm | SEL2 | Výstup | Načtení druhého I/O registru |
9-20, 22-25 | AD0-AD15 | Zadejte výstup | Datové adresní bity |
21 | GND | - | Všeobecné |
26 | PA1 | Vchod | Číslo procesoru |
27 | PA0 | Vchod | Číslo procesoru |
28 | BSY | Výstup | Signál obsazenosti kanálu |
29 | DCLO | Vchod | Porucha napájení |
třicet | ACLO | Vchod | Výpadek střídavého napájení |
31 | IRQ1 | Vchod | První požadavek na radiální přerušení „vzdáleně“ |
32 | IRQ2 | Vchod | Druhý požadavek na radiální přerušení (vektor 100) |
33 | IRQ3 | Vchod | Požadavek na třetí radiální přerušení (Vektor 270) |
34 | INIT | Zadejte výstup | Nastavení výchozího stavu |
35 | VIRQ | Vchod | Vektorový požadavek na přerušení |
36 | IAKO | Výstup | Poskytování přerušení |
37 | DOUT | Výstup | Výstup dat (záznam dat) |
38 | RÁMUS | Výstup | Zadávání dat (čtení dat) |
39 | RPLY | Zadejte výstup | Synchronizace pasivního zařízení (odpověď) |
40 | WTBT | Výstup | Bytový výstup (zápis/bajt) |
41 | SYNCHRONIZOVAT | Výstup | Aktivní synchronizace zařízení (sdílení) |
42 | Ucc | - | Napájecí napětí |
Kód příkazu je označen osmičkovým číslem. Právě tento pohled je vhodný pro vizuální vnímání příkazů tohoto procesoru.
Označení týmu | Příkazový kód | tým |
---|---|---|
STŮJ | 000 000 | Stop |
POČKEJTE | 000001 | Očekávání |
RTI | 000002 | Návrat z přerušení |
BPT | 000003 | Přerušení příkazu pro ladění |
IOT | 000004 | Přerušení příkazu pro I/O |
RESETOVAT | 000005 | Resetujte externí zařízení |
RTT | 000006 | Návrat z přerušení |
JMP | 0001DD | Bezpodmínečný skok na absolutní adresu zakódovanou v DD. Například sekvence
000137 JMP@#7000
007000
říká procesoru, aby vzal adresu z místa následujícího po instrukci skoku a skočil na zadanou adresu (v tomto případě osmičkovou adresu 7000). |
RTS | 00020R | Návrat z podprogramu |
JSR | 004RDD | Volání podprogramu |
EMT | 104000-104377 | Přerušení příkazů pro systémové programy. Například EMT 16 má kód 104016. Pro všechny příkazy EMT má přerušení stejný vektor, na jehož adrese by měl být podprogram, který příkazu přidělí číslo (v našem příkladu je to 16) a najde adresa specifického příkazu EMT obsluhujícího podprogram. |
PAST | 104400-104777 | příkaz přerušení. Například TRAP 4 má kód 104404. Pro všechny příkazy TRAP má přerušení stejný vektor, na jehož adrese by měl být podprogram, který z příkazu extrahuje číslo (v našem příkladu je to 4) a najde adresu specifického příkazu TRAP obsluhujícího podprogram.
Mezi EMT a TRAP není žádný zásadní rozdíl. V systémových programech je obvyklé používat příkaz EMT (pro počítač je BC monitor a diagnostický systém), v uživatelských programech příkaz TRAP. |
NOP | 000240 | (10100000) Žádná operace |
CLC | 000241 | (10100001) Smazat vlajku C (nosit = nosit) |
CLV | 000242 | (10100010) Vymazat příznak V (oVerflow = přetečení) |
CLZ | 000244 | (10100100) Vymazat příznak Z (nula = nula) |
CLN | 000250 | (10101000) Vymazat příznak N (záporná = záporná hodnota) |
CCC | 000257 | (10101111) Vymazat všechny číslice |
SEC | 000261 | (10110001) Nastavit příznak C (přenášet = přenášet) |
SEV | 000262 | (10110010) Nastavit příznak V (oVerflow = přetečení) |
SEZ | 000264 | (10110100) Nastavit příznak Z (nula = nula) |
SEN | 000270 | (10111000) Nastavit příznak N (záporná = záporná hodnota) |
SCC | 000277 | (10111111) Nastavte všechny číslice |
101PNZVCVe skutečnosti jsou výše uvedené příkazy s 101xxxxx kódy od 240 do 277 jediným příkazem pro změnu P příznaků ve slově stavu procesoru, zapsaného v binární formě N,Z,V,C , indikující, který z příznaků by měl být operací ovlivněn (1) nebo ignorován (0). . Příkaz s kódem tedy 263 (10110011)zároveň nastaví příznaky C a V na 1. Příkaz s mnemotechnickou pomůckou NOPa kódem 240je tedy speciálním případem tohoto příkazu a obsahuje masku příznaků, podle které žádný z měli by se změnit. Podle toho příkaz s kódem260 (10110000) | ||
TAMPON | 0003DD | Prohození horních a nízkých bajtů v 16bitovém slově, na které ukazuje DD. |
BR | 000400 | Bezpodmínečný skok o offset vzhledem k buňce následující po instrukci. Například kód 000400 znamená skok na buňku následující po příkazu BR, kód 000401 znamená přeskočit jednu 16bitovou buňku, 000402 znamená dvě atd. Přesně řečeno, tento příkaz a všechny instrukce skoku podle offsetu je nejlepší zvážit v binární nebo hexadecimální. Pak to bude vypadat jako 1NNNNNNNN(bin) nebo 1NN(hex), kde N je hodnota offsetu. To znamená, že příkaz je zapsán v horním bajtu slova a offset je v dolním bajtu. Záporné hodnoty offsetu jsou zapsány ve dvou doplňcích . To znamená, že offset -1 bude zakódován jako FF (hex) a instrukce bude 1FF (hex) nebo ekvivalentně 777 (oct). S kódem 777 se provede přechod na jednu 16bitovou buňku zpět, tedy na samotnou instrukci BR, a dojde ke smyčce. S kódem 776 - 2 buňky zpět, 775 - tři. atd. |
BNE | 001000 | Skok o offset, pokud není stejný. Kód příkazu je 2NN (hex) - viz popis příkazu BR. Přechod se spustí, pokud je příznak Z procesoru 0.
Text příkazového programu adresy v assembleru
1000: 020104 CMP R1,R4
1002:001001 BNE MET
1004: 010102 MOV R1,R2
1006: 010103 MET: MOV R1,R3
Zde porovnávací instrukce CMP porovnává obsah obecných registrů R1 a R4 a nastaví příznaky procesoru C, V, Z, N podle výsledků porovnání a instrukce BNE skočí o +1 šestnáctibitové slovo vpřed, pokud příznak Z je 0. |
CLR(B) | *050 DD | Vymažte části slova, na které ukazuje DD. Příkaz 0050DD má mnemotechnický znak CLR a 1050DD má mnemotechnický znak CLRB. |
HŘEBEN) | *051DD | Invertujte bity slova, na které ukazuje DD. |
INC(B) | *052DD | Přidání 1 ke slovu, na které ukazuje DD. |
DEC(B) | *053DD | Odečtěte 1 od slova, na které ukazuje DD. |
NEG(B) | *054DD | Změna znamení |
ADC(B) | *055DD | Noste sčítání |
SBC(B) | *056DD | Proveďte odčítání |
TST(B) | *057DD | Kontrola slova a nastavení příznaků procesoru C, V, Z, N na základě výsledků takové kontroly. |
ROR(B) | *060 DD | Otočit doprava |
ROL(B) | *061DD | Otočit doleva |
ASR(B) | *062DD | Aritmetický posun doprava |
ASL(B) | *063DD | Aritmetický posun doleva |
OZNAČIT | 0064NN | Obnova ukazatele zásobníku (CS) |
SXT | 0067DD | Rozšíření znamení |
MTPS | 1064DD | Zápis stavového slova procesoru (SPW). |
MFPS | 1067DD | Čtení SSP |
MOV(B) | *1SSDD | Přeposílání |
CMP(B) | *2SSDD | Srovnání |
BIT(B) | *3SSDD | Kontrola výbojů |
BIC(B) | *4SSDD | Čištění výbojů |
BIS | *5SSDD | Booleovské sčítání |
XOR | 074RDD | XOR |
PŘIDAT | 06SSDD | Přidání |
SUB | 16SSDD | Odčítání |
BR | 0004XXX | Bezpodmínečné větvení |
BNE | 0010XXX | Větev, pokud se nerovná 0 |
BEQ | 0014XXX | Větev, pokud je rovna 0 |
Operand je určen hodnotami SS (zdroj - zdroj) a DD (cíl - přijímač), přičemž první číslice nastavuje režim adresování a druhá - číslo obecného registru procesoru. Pokud je například SS = 27, pak 2 je způsob adresování a 7 je číslo registru.
Procesor má 8 šestnáctibitových registrů: R0, R1, R2…R7. V tomto případě se R0-R5 používají k uložení operandů instrukcí. Registry R6 a R7 mají další speciální účel, ale všechny operace s nimi probíhají stejně jako s jakýmkoli jiným registrem.
Registr R6 funguje jako ukazatel zásobníku (SP, Stack Pointer) a obsahuje adresu vrcholu zásobníku. Zápis do zásobníku se obvykle provádí pomocí metody automatického dekrementování adres a čtení se provádí pomocí metody automatického přírůstku. Při provádění řady operací (obsluha hardwarových a softwarových přerušení, ale i volání a vracení se z podprogramů) procesor určitým způsobem mění hodnotu tohoto registru.
Registr R7 je programový čítač (PC, Program Counter) a obsahuje adresu další instrukce, kterou má procesor provést. Zápis čísla do R7 je ekvivalentní skoku na zadanou adresu.
Způsoby adresování:
Číslo | Metoda | Vysvětlení | Příklady |
---|---|---|---|
0 | Registrovat | Operand je obsah registru. Například instrukce 10304 (1SSDD) zkopíruje obsah registru R3 do registru R4 a zapíše se jako MOV R3, R4. | 10102 MOV R1, R2 |
jeden | Nepřímý registr | Registr obsahuje adresu operandu | 005011 CLR (R1)
005011 CLR@R1 |
2 | automatický přírůstek | registr obsahuje adresu operandu. Obsah registru poté, co je použit jako adresa, se zvýší o 2 (pro příkazy slova) nebo 1 (pro příkazy bajtů) | 005022 CLR (R2)+ |
3 | Nepřímé automatické zvýšení | registr obsahuje adresu adresy operandu. Obsah registru poté, co je použit jako adresa, se zvýší o 2 | 005032 CLR @(R2)+ |
čtyři | Auto-dekrementace | obsah registru se sníží o 2 (u slovních příkazů) nebo 1 (u bajtových příkazů) a použije se jako adresa operandu | 005042 CLR-(R2) |
5 | Nepřímé automatické snižování | obsah registru se sníží o 2 a použije se jako adresa adresy operandu. | 005052 CLR@-(R2) |
6 | index | obsah registru se přičte k číslu zapsanému za příkazem a výsledný součet se použije jako adresa operandu | 005062 CLR 2(R2) 000002 |
7 | nepřímý index | obsah registru se přičte k číslu napsanému za příkazem a výsledný součet se použije jako adresa adresy operandu | 005072 CLR @22(R2) 000022 |
Při adresování prostřednictvím registru RS jsou tyto metody adresování volány zvláštním způsobem:
Způsob adresování | Kód | Vysvětlení | Příklady |
---|---|---|---|
Přímo | 27 | Operand je uložen ve slově, které následuje za instrukcí. Ve skutečnosti se jedná o metodu automatického přírůstkového adresování pomocí registru PC, to znamená, že PC obsahuje adresu operandu, a to je vždy adresa buňky následující za instrukci. Poté se registr inkrementuje o 2, což v případě použití PC odpovídá „skoku“ na další adresu přes datovou buňku a číslo v ní uložené se neprovádí jako příkaz. | 012703 MOV #21, R3 000021 012700 MOV #IN,R0 xxxxxx IN: |
absolutní | 37 | adresa operandu je uložena ve slově po instrukci | CLR @#7000 JMP @#BEN |
relativní | 67 | obsah PC se přičte ke slovu uloženému v paměti za instrukcí a výsledný součet se použije jako adresa operandu. | JMP TV CLR 5554 |
nepřímo-relativní | 77 | do slova za příkazem se přičte obsah PC, výsledný součet se použije jako adresa adresy operandu. | CLR @MET INC @15342 |
Čipy typu K1801 | |
---|---|
Mikroprocesory | |
Práce s RAM |
|
Práce s GMD |
|
? |
|
Práce s externími zařízeními |
|
ROM |
|
Flash ROM |
|