abc Asembler - elektronski priručnik
XV dio Stringovi

String instrukcije

Svaka string instrukcija može zahtijevati izvorišni operand, odredišni operand ili oba. Za 32-bitne segmente, string instrukcije koriste ESI i EDI registre da pokažu na izvorišne i odredišne operande, respektivno.
Za 16-bitne segmente, međutim, SI i DI registri se koriste da pokažu na izvorište i odredište, respektivno.
Postoji 5 osnovnih instrukcija za procesiranje stringova. To su:

  • MOVS – Ova instrukcija pomjera 1 Byte, Word ili Doubleword podataka iz jedne memorijske lokacije u drugu.
  • LODS – Ova instrukcija puni iz memorije. Ako je operand od jednog bajta, on se puni u AL registar, ako je operand jedan word, on se puni u AX registar, a doubleword se puni u EAX registar.
  • STOS – Ova instrukcija sprema podatke iz registra (AL, AX, ili EAX) u memoriju.
  • CMPS – Ova instrukcija poredi 2 podatka u memoriji. Podaci mogu biti veličine byte, word ili doubleword.
  • SCAS – Ova instrukcija poredi sadržaje registra (AL, AX ili EAX) sa sadržajem stavke u memoriji.

Svaka od gore navedenih instrukcija ima byte, word i doubleword verziju; a string instrukcije mogu biti ponavljane upotrebom repeticionog prefiksa.
Ove instrukcije koriste ES:DI i DS:SI par registara, gdje DI i SI registri sadrže validne offset adrese koje se odnose na bajtove spremljene u memoriji. SI je normalno povezan sa DS (data segment), a DI je uvijek povezan sa ES (extra segment).
DS:SI (ili ESI) i ES:DI (ili EDI) registri pokazuju na izvorišne i odredišne operande, respektivno. Za izvorišni operand se pretpostavlja da je u DS:SI (ili ESI), a odredišni operand u ES:DI (ili EDI) u memoriji.
Za 16-bitne adrese, koriste se SI i DI registri, a za 32-bitne adrese, koriste se ESI i EDI registri.
Sljedeća tabela daje različite verzije string instrukcija i pretpostavljeni prostor za operande.

Osnovna
Instrukcija

Operandi u

Byte
Operacija

Word
Operacija

Doubleword
Operacija

MOVS

ES:DI,  DS:EI

MOVSB

MOVSW

MOVSD

LODS

AX,  DS:SI

LODSB

LODSW

LODSD

STOS

ES:DI,  AX

STOSB

STOSW

STOSD

CMPS

DS:SI,  ES:DI

CMPSB

CMPSW

CMPSD

SCAS

ES:DI,  AX

SCASB

SCASW

SCASD

Stringovi    <    Index    >    Repeticioni prefiksi