Otevřít hlavní menu

Změny

INS/INSB/INSW - vstup z portu do řetězce

Přidáno 2 285 bajtů, 9. 11. 2012, 22:57
Vytvorená stránka „;Instrukce : INS/INSB/INSW - vstup z portu do řetězce ;Časování : 5 (80286), 5-8 (80386) ;Popis : Instrukce INS přesouvá byte nebo slovo řetezce na p...“
;Instrukce
: INS/INSB/INSW - vstup z portu do řetězce

;Časování
: 5 (80286), 5-8 (80386)

;Popis
: Instrukce [[INS]] přesouvá byte nebo slovo řetezce na paměťové místo specifikované [[ES]]:[[DI]]. Registr [[DX]] ([[EDX]]) ukazuje přitom na vstupní port. Instrukci [[INS]] je přesouván byte nebo slovo podle prvního operandu instrukce [[INS]]. Operand v paměti musí být adresovatelný z registru [[ES]]. Instrukce [[INS]] nedovoluje, aby bylo číslo portu specifikováno jako bezprostrední hodnota. Port může být adresován jen při použití registrů [[DS]]. Po provedení instrukce je registr [[DI]] ([[EDI]]) automaticky inkrementován/dekrementován. Jestliže je [[DF]] = 0 (byla provedená instrukce [[CLD]]), je [[DI]] ([[EDI]]) inkrementován. Jestliže je [[DF]] = 1 (byla provedena instrukce [[STD]]), je [[DI]] ([[EDI]]) dekrementován. Inkrement/dekrement je roven 1 pro bytový přesun, 2 pro slovní přesun.


;Syntaxe:
INS destination_string,port
INSB (žádné operandy)
INSW (žá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ší než hodnota [[IOPL]], je generována všeobecná výjimka přivilegovaného módu. Táto výjimka je generována také v případe, že místo určení (cílový řetezec) leží v segmentu, do nehož nelze zapsat. Jestliže registry [[CS]], [[DS]] nebo [[ES]] obsahují neplatné efektívní adresy operandu, je generována všeobecná výjimka porušení ochrany paměti. Jestliže SS obsahuje neplatnou adresu, je generována výjimka "[[chyba zásobniku]]".


;Výjimky v reálnem módu
: Při umístení slovního operandu na offsetu 0FFFFH je generováno přerušení [[INT 13]].


;Poznámka pro 80386
: Šírka slova je 32 bitů. Adresy v paměti jsou vytvářený ze 32-bitových efektívnich adres. Číslo portu je vzato z registru [[DX]]. Efektívní adresa neovlivní adresu I/O portu.


;Příklad:
INS BTE_STRG, DX ; vstup bytu
INS WRD_STRG, DX ; vstup slova

INSB ; vstup byte
INSW ; vstup slova

[[Category:Assembler]]
[[Category:Instrukce mikroprocesoru 80386]]