english version while1 - stránky o programování

Instrukční sada procesorů x86

Instrukce pro práci s řetězci dat

  1. REP
  2. REPE
  3. REPNE
  4. MOVS
  5. CMPS
  6. SCAS
  7. LODS
  8. STOS
REP (REPeat string operation) : REP
opakuj řetězcovou operaci
Následující řetězcová operace (MOVS, STOS) bude prováděna opakovaně. Počet opakovaní udává hodnota registru CX (ECX), která je po každém provedení řetězcové instrukce snížena o jedničku. Opakování je prováděno dokud je CX různé od nuly.
formát: 1111 0010 (f2)
funkce: L : (CX)-1=>CX; Je-li(CX)>0, pak proveď řetězcovou operaci
příznaky: podle řetězcové operace
REPE (REPeat string operation to Equal) : REPE
opakuj řetězcovou operaci do shody
Následující řetězcová operace (CMPS, SCAS) bude prováděna opakovaně. Počet opakovaní udává hodnota registru CX (ECX), která je po každém provedení řetězcové instrukce snížena o jedničku. Opakování je prováděno dokud je CX různé od nuly. Opakování bude předčasně ukončeno v případě, že řetězcová operace vynuluje příznak ZF.
formát: 1111 0010 (f2)
funkce: L : (CX)-1=>CX; Je-li(CX)>0 a zároveň (ZF)=1, pak proveď řetězcovou operaci
příznaky: podle řetězcové operace
REPNE (REPeat string operation to Not Equal) : REPNE
opakuj řetězcovou operaci dokud je shoda
Následující řetězcová operace (CMPS, SCAS) bude prováděna opakovaně. Počet opakovaní udává hodnota registru CX (ECX), která je po každém provedení řetězcové instrukce snížena o jedničku. Opakování je prováděno dokud je CX různé od nuly. Opakování bude předčasně ukončeno v případě, že řetězcová operace nastaví příznak ZF.
formát: 1111 0011 (f3)
funkce: L : (CX)-1=>CX; Je-li(CX)>0 a zároveň (ZF)=0, pak proveď řetězcovou operaci
příznaky: podle řetězcové operace
MOVS (MOVe String) : MOVS src, dst
přesuň řetězec
Přesun slabiky (MOVSB), slova (MOVSW) nebo dvojslova (MOVSD) ze zdrojového řetězce (DS:SI) do cílového (ES:DI). Podle příznaku směru (DF) budou po každém přesunu změněny registry SI (ESI 32-bit) a DI (EDI 32-bit) o velikost delta nahoru (DF=0) nebo dolů (DF=1). Delta je buď 1 byte (MOVSB), 2 byte (MOVSW) nebo 4 byte (MOVSD).
příznaky: nemění
CMPS (CoMPare String) : CMPS src, dst
porovnej řetězec
Odečítá slabiky (CMPSB), slova (CMPSW) nebo dvojslova (CMPSD) zdrojového řetězce (DS:SI) s cílovím (ES:DI). Podle příznaku směru (DF) budou po každém porovnání změněny registry SI (ESI 32-bit) a DI (EDI 32-bit) o velikost delta nahoru (DF=0) nebo dolů (DF=1). Delta je buď 1 byte (CMPSB), 2 byte (CMPSW) nebo 4 byte (CMPSD).
příznaky: mění AF,CF,OF,PF,SF,ZF
SCAS (SCAn String) : SCAS src
prohledej řetězec
Odečítá slabiku (SCASB), slovo (SCASW) nebo dvojslovo (SCASD) zdrojového řetězce (DS:SI) se střadačem (AX). Podle příznaku směru (DF) bude po každém porovnání změněn registr SI (ESI 32-bit) o velikost delta nahoru (DF=0) nebo dolů (DF=1). Delta je buď 1 byte (SCASB), 2 byte (SCASW) nebo 4 byte (SCASD).
příznaky: mění AF,CF,OF,PF,SF,ZF
LODS (LOaD String) : LODS src
načti řetězec
Přesouvá slabiku (LODSB), slovo (LODSW) nebo dvojslovo (LODSD) zdrojového řetězce (DS:SI) do střadače (AX). Podle příznaku směru (DF) bude po každém přesunu změněn registr SI (ESI 32-bit) o velikost delta nahoru (DF=0) nebo dolů (DF=1). Delta je buď 1 byte (LODSB), 2 byte (LODSW) nebo 4 byte (LODSD). Opakování (REP) nemá příliš využití.
příznaky: nemění
STOS (STOre String) : STOS dst
ulož řetězec
Přesouvá slabiku (STOSB), slovo (STOSW) nebo dvojslovo (STOSD) ze střadače (AL/AX/EAX) do cílového řetězce (ES:DI). Podle příznaku směru (DF) bude po každém přesunu změněn registr DI (ESI 32-bit) o velikost delta nahoru (DF=0) nebo dolů (DF=1). Delta je buď 1 byte (STOSB), 2 byte (STOSW) nebo 4 byte (STOSD). Naplnění bloku konstantou (nejčastěji nulou).
příznaky: nemění
Kontakt
Prohlášení o dostupnosti
Tisk stránky
Autor: Václav Bubník © 2005
vbubnik@post.cz
XHTML 1.0| CSS