Строкові операції в асемблері
портал освітніх ресурсів
Рядкові операції називають ланцюжковими або операціями над ланцюжками байтів.
Рядок -це ланцюжок байтів, для якого відомий алгоритм визначення її довжини. У мовах програмування прописують процедуру визначення довжини рядка, а також вводять обмеження на те, які байти можуть утримуватися в рядку, а також в якому кодуванні повинні інтерпретуватися рядки- скільки байтів кодує символ, і яка таблиця використовуватиметься для зіставлення байтів і символов.В мові Сі під рядком розуміється послідовність байтів, що закінчується байтом зі значенням 0.
Строкові операції працюють з одним елементом рядка: байтом, словом, подвійним словом. Для того, щоб команда маніпулювала послідовністю таких елементів, використовуються команди-префікси:
REP-повторювати, доки вміст ECX не звернеться в 0
REPE/REPZ-повторювати поки що одно/нуль. Даний префікс змушує виконувати рядкову команду доти, доки вміст ECX не звернеться в 0
REPNE/REPZ-повторювати поки що не одно/не нуль. Даний префікс змушує виконувати рядкову команду доти, доки вміст ECX не звернеться в 0
1.Команди пересилання
2.Команди порівняння
CMPSB – порівняння рядків байтів.
CMPSW – порівняння рядків слів.
CMPSD - порівняння рядків подвійних слів
3.Команди пошуку(сканування)
SCASB – сканування рядка байтів.
SCASW - сканування рядка слів
SCASD - сканування рядка подвійних слів
4.Команда читання з рядка
LODSB – читання байта з рядка.
LODSW - читання слова з рядка.
LODSD – читання подвійного слова з рядка.
5.Команда запису в рядок
STOSB - запис байта у рядок.
STOSW - запис слова у рядок.
STOSD - запис подвійного слова у рядок.
6.Команда читання/запису рядка з порту
При використанні префіксів (REP, REPZ/REPE, REPNZ/REPNE) дія команд поширюється на ланцюжки байтів.
Використання рядкових команд