OUTS/OUTSB/OUTSW - výstup bytového/slovního řetezce na port: Porovnání verzí

Z Delphi & Pascal (česká wiki)
Skočit na navigaci Skočit na vyhledávání
(Žádný rozdíl)

Verze z 10. 1. 2013, 16:27

Instrukce
OUTS/OUTSB/OUTSW - výstup bytového/slovního řetezce na port
Časování
5 (80286), 7 (80386)
Popis
Instrukce OUT přesouvá bytový nebo slovní rětezec adresovaný v paměti DS:SI na port specifikovaný adresou v DX. Druhý operand instrukce OUT určuje typ přesouvaných dat (slova nebo byty). SI je automaticky inkrementován o 1 při DF=0. Při DF=1 je SI dekrementován o 1. Přirustek je 1 pro bytové a 2 pro slovní operandy.


Syntaxe
OUTS port, source_string
OUTSB (žádné operandy)
OUTSW (žádné operandy)


Ovlivňuje příznaky
žádné


Nedefinované příznaky
žádné


Výjimky v privilegovaném módu
Jestliže je hodnota CPL (Current Privilege Level) větší nebo rovná hodnote IOPL (Input/Output Privilege Level), je generována všeobecná výjimka porušení ochrany paměti. Táto výjimka může být generována také v případe, že CS, DS nebo ES obsahuje neplatnou efektívni adresu operandu. Jestliže segment CS obsahuje neplatnou adresu, je generována výjimka "chyba zasobniku".


Výjimky v reálnem módu
Jestliže je slovní operand na offsetu 0FFFFH, je generováno přerušení INT 13.


Poznámka pro 80386
Šírka slova je 32 bitů. Adresy operandu v paměti jsou vytváreny ze 32-bitové efektívni adresy. Šestnactibitová část adresy je brána z registru DX. 32-bitová specifikace neovlivní adresu I/O portu. Délka řetezce je brána z registru ECX.


Příklad
 OUTS DX, BYT_WRD
 OUTS DX, WRD_STRNG
 OUTSB
 OUTSW