ÚVOD | Novinky | 8 Bitů | Příslušenství | Drobnosti | TTL | Kontakt


Drobnosti / Utajené instrukce mikroprocesoru I8085



OCR z časopisu Sdělovací technika 9/1985 trana 326


NEZNÁMÉ INSTRUKCE MIKROPROCESORU 8085

Přestože se u nás mikroprocesor 8085 nevyrábí, je používán a je proto vhodné se seznámit se všemi možnostmi, které nabízí. V [1] se uvádějí tzv. nové instrukce, které pokrývají oblast operačních kódů nevyužitou v 8080. V žádném dostupném katalogu Intel nejsou popsány, zřejmě však při vývoji mikroprocesoru 8085 nevyšly náhodou, ale byly navrženy, aby vhodně doplnily stávající operační kód 8080. Navíc je u 8085 doplněn stavový registr PSW o další indikační bity viz obr. 1. Z 256

Fb7 Fb6 Fb5 Fb4 Fb3 Fb2 Fb1 Fb0
S   Z   X5  AC  0   P   V   CY
        |               |
        |               +------ přeběh
        +---------------------- přeplnění DCX,INX
Obr. 1. Stavový registr PSW 8085 s novými bity X5 a V

možných kombinací instrukčního kódu mikroprocesoru je 12 kombinací neobsazených. Dvě z nich využívá 8085 pro instrukce RIM a SIM. Zbývajících deset jsou „nové" instrukce. Mnemotechnické zkratky vycházejí ze zvyklostí tvoření názvů instrukcí Intel a jsou převzaty z [1].

Popis jednotlivých instrukcí

DSUB (08H) 10 taktů
DSUB (double substraction) je 16-bitové odečítání. Instrukce je komplementární s DAD B a pracuje obdobně: registrovaný pár BC odečte od registrového páru HL a výsledek uloží do HL. Podle výsledku nastavuje bity PSW: CY, S, X5, AC, Z, V, P.

ARHL (10H) 7 taktů
ARHL (aritmetic shift right HL) je aritmetická rotace registrového páru HL doprava o jeden bit. Nej nižší bit L se přesouvá do CY. Instrukce nastavuje jen CY.

RDEL (18H) 10 taktů
RDEL (rotate DE left) je rotace registrového páru DE doleva přes CY. Je analogická instrukci RAL. Nastavuje CY a V.

LDHI D8 (28H) 10 taktů
LDHI (load DE by HL indirect) je nepřímé naplnění registrového páru DE hodnotou HL + 8-bitovou hodnotou operandu instrukce. Tím je vlastně umožněno indexové adresování v rozmezí stránky 256 byte. Instrukce neovlivňuje žádný bit PSW.

LDSI D8 (38H) 10 taktů
LDSI (load DE by SP indirect) plní registrový pár DE hodnotou SP + 8-bitovou hodnotou operandu instrukce. Pomocí této instrukce lze usnadnit manipulace v zásobníku. Opět neovlivňuje žádný bit PSW.

RSTV (0CBH) 6/12 taktů
RSTV (restart by V) je další, již 9. instrukce restartu, dokonce podmíněná. Předá řízení na adresu 40H, je-li nastaven bit V (pak trvá 12 taktů), jinak funguje jako NOP (6 taktů). Žádné bity PSW nejsou vykonáním instrukce ovlivněny.

SHLX (0D9H) 10 taktů
SHLX (store HL by DE) uloží registrový pár HL nepřímo podle hodnoty registrového páru DE. Je to analogie instrukce STAX D. Žádný bit PSW není ovlivněn.

JNX5 adresa (0DDH) 7/10 taktů
JNX5 (jump non X5) je podmíněný skok na „adresu", není-li nastaven bit X5 stavového registru PSW procesoru, jinak se pokračuje následující instrukcí. Bit X5 je nastavován instrukcemi INX a DCX, které v 8080 neovlivňují PSW. Tím lze testovat 16-bitové vyčerpání délky. Instrukce neovlivňuje PSW.

LHLX (0EDH) 10 taktů
LHLX (load HL by DE) naplní registrový pár HL nepřímo podle hodnoty DE. Je inverzí k SHLX a analogií instrukce LDAX D. Neovlivňuje žádný bit PSW.

JX5 adresa (0FDH) 7/10 taktů
JX5 (jump on X5) je podmíněný skok na „adresu", je-li nastaven X5. Je to inverzní funkce k JNX5. Žádný bit PSW, není ovlivněn.

Další změna v instrukcích 8085 se týká INX a DCX. Pro instrukci INX platí, že při přechodu z hodnoty FFFFH na 0000 nastaví X5 do stavu log. 1, při ostatních hodnotách je stav log. 0. Pro instrukci DCX se X5 nastaví do stavu log. 1 při přechodu z 0000 na FFFFH.

Protože asemblery nepočítají s uvedenými mnemotechnickými kódy, lze ji definovat jako makra s příslušným názvem, např.:

DSUB	MACRO
	DB	8
	ENDM

Instrukce zlepší funkčnost procesoru. V [1] je uveden příklad 16-bitového násobení s instrukcí RDEL. Podprogram trvá typicky 278 µs.

Přiklad násobení

;MUL16 — násobení dvou 16-bitových kladných čísel
;BC X DE do D, E, H, L (32 bitů)
MUL16:	LXI	H,0
	MVI	A,17	;počet bitů
MUL16A:	DCR	A	;hotovo?
	RZ		;ano
	DAD	H	;výsledek rotovat
	RDEL		;nová instrukce
	JNC	MUL16A	;bez přičtení
	DAD	B	;přičtení
	JNC	MUL16A	;není přenos
	INX	D	;přenos z HL do DE
	JMP	MUL16A	;další bit

Z příkladu je zřejmé, že násobící algoritmus se dost zkrátí.


LITERATURA

[1] Dehnhardt, W.: Unbekannte 8085-Instruktionen; Elektronik č. 15/1978



ÚVOD | Novinky | 8 Bitů | Příslušenství | Drobnosti | TTL | Kontakt


Drobnosti / Utajené instrukce mikroprocesoru I8085



SAPI.cz - web o československých osmibitech, zejména SAPI-1. Provozuje EC1045 od roku 2011
Za korekce češtiny dekuji: MELSOFTovi, Silliconovi, Martinu Lukáškovi a NOSTALCOMPovi

Když začínám blbnout z 8bitů tak se chodím léčit mezi otaku.
Animefest.cz