MOVS/MOVSB/MOVSW - přesun bytový nebo slovní řetězec

From Delphi & Pascal (česká wiki)
Jump to navigation Jump to search
Instrukce
MOVS/MOVSB/MOVSW - přesun bytový nebo slovní řetězec
Časování
5 (80286), 7 (80386)
Popis
Instrukce MOV přesouvají obsah slova (bytu) referovaného SI (ESI) do slova (byte) adresovaného ES:DI (ES:EDI). Cílový operand musí být adresovatelný z registru ES. Po vykonáni instrukce jsou DI(EDI) i SI (ESI) automaticky aktualizovaný. Při DF=0 (byla vykonána instrukce CLD) jsou registry inkrementovány, jinak (pri DF=1 (byla vykonána instrukce STD)) jsou registry automaticky dekrementovány. Dekrement/inkrement je 1 pro bytové a 2 pro slovní operace.


Syntaxe
MOVS destination_string, source_string
MOVSB (žádné operandy)
MOVSW (žádné operandy)


Ovlivňuje příznaky
žádné


Nedefinované příznaky
žádné


Výjimky v privilegovaném módu
Jestliže registry CS, DS nebo ES obsahují neplatné efektívni 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ásobníku". Jestliže je místo určení v segmentu nepřístupnem zápisu, je generována všeobecná výjimka porušení ochrany paměti.


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
Adresy v paměti jsou vytvárený pomocí 32-bitové efektívni adresy. Délka řetezce je odvozená od registru ECX.


Příklad
 LEA SI, MYSOURCE
 LEA DI, ES:HERDESTINATION
 MOV CX, 50
 REP MOVS HERDESTINATION