MOVS/MOVSB/MOVSW - přesun bytový nebo slovní řetězec
Verze z 4. 1. 2013, 17:44, kterou vytvořil Zdeno Sekerák (diskuse | příspěvky)
- 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