Тема Команди за обработка на низ от знаци



Дата27.09.2016
Размер37.73 Kb.
#10747
Тема 9. Команди за обработка на низ от знаци (Верижни команди)

Оптималната текстообработка изисква елегантни функции за достъп и работа с низове от знаци, като: запомняне; извикване на елементи от низа; преместване; претърсване на низове.

За тези цели са предвидени следните специални инструкции с низове:

За запомняне на един елемент от низа:

STOS адрес_DST Запомняне на елемент в низ (поредица от знаци)

STOSB Запомняне на байт в низ

STOSW Запомняне на дума в низ

STOSD Запомняне на двойна дума в низ

(Store String Byte/ Word/ Double word operands)

Мнемоничен код: STOS низ_приемник

Действие: Прехвърля съдържанието на AL (респ. AX) в низ, адресиран чрез ES:DI.

При използването на инструкцията STOS асемблер се нуждае най-малко от едно име на низ, за да установи типа на низа. Името може да отпадне, ако се използват другите инструкции.

За преместване на един елемент от низ в регистъра AL, респ. AX:

LODS адрес_SRC Зареждане на елемент от низ (елемент от поредица от знаци)

(Load String)

LODSB Зареждане на байт от низ

(Load Byte of String)

LODSW Зареждане на дума от низ

(Load Word of String)

LODSD Зареждане на двойна дума от низ

(Load Dowble word of String)

Мнемоничен код: LODS низ_източник

Действие: Зарежда един байт (респ. дума или двойна дума) от низ-източник (адресиран чрез DS:SI, при LODSD – чрез DS:ESI) в AL (АX или EAX).

При използването на инструкцията LODS асемблер се нуждае най-малко от едно име на низ, за да установи типа на низа. Името може да отпадне, ако се използват другите инструкции.

За преместване на един елемент от низ от една клетка на паметта в друга:

MOVS DST, SRC Прехвърляне на елемент от низ (елемент от поредица от знаци)

(Move String)

MOVSB Прехвърляне на байт от низ

(Move Byte of String)

MOVSW Прехвърляне на дума от низ

(Move Word of String)

MOVSD Прехвърляне на двойна дума от низ (Move Double word of String)

Мнемоничен код: MOVS низ-приемник, низ-източник

Действие: Копира един байт (респ. дума или двойна дума) от низа-източник, адресиран чрез DS:SI (при MOVSD чрез DS:ESI), в адресираната чрез ES:DI (при MOVSD чрез ES:EDI) клетка от паметта.

При използването на инструкцията MOVS асемблер се нуждае най-малко от едно име на низ, за да установи типа на низа. Името може да отпадне, ако се използват другите инструкции.

За сравняване на един елемент от низ със съдържанието на AL, респ. AX:

SCAS адрес_DST Претърсване на низ

(Scan String)

SCASB Търсене на байт в низ

(Scan Byte-String)

SCASW Търсене на дума в низ

(Scan Word-String)

SCASD Търсене на двойна дума в низ

(Scan Double word-String)

Мнемоничен код: SCAS низ_1

Действие: Изважда един байт (респ. дума) от низа, адресиран чрез ES:DI, от AL (респ. от AX). Резултатът не се запомня, обаче флаговете се установяват съобразно с този резултат.

При използването на инструкцията SCAS асемблер се нуждае най-малко от едно име на низ, за да установи типа на низа. Името може да отпадне, ако се използват другите инструкции.

За поелементно сравняване на два низа

CMPS DST, SRC Сравняване на низове (поредица от знаци)

(Compare String)

CMPSB Сравняване на низове по байтове

(Compare Byte String)

CMPSW Сравняване на низове по думи

(Compare Word String)

CMPSD Сравняване на низове по двойни думи

(Compare Double word-String)

Мнемоничен код: CMPS низ_1, низ_2

Действие: Изважда елемент от низ_2 (адресиран чрез ES:DI) от елемент от низ 1 (адресиран чрез DS:SI) и установява флаговете. Съдържанията на низовете не се променят.

При използването на инструкцията CMPS асемблерът се нуждае най-малко от едно име на низ, за да установи типа на низа. Името може да отпадне, ако се използват другите инструкции.

При тези инструкции операндите-източници се адресират чрез регистрите DS:SI, а операндите-цели – посредством ES:DI. Необходимият адрес (адреси) на областта за низа-източник и/или низа-цел винаги трябва да бъдат заредени предварително в тези регистри. Отделните операции върху низовете протичат по следния начин:

Изпълнява се елементарната операция с низове. След това се променят съдържанията на SI и/или DI. Ако DF = 0, брои се възходящо, следователно низът се обработва в посока на нарастване на адресите на клетките от паметта, ако DF = 1, брои се обратно, низът се обработва следователно в посока на намаляване адресите на клетките от паметта.

Когато е с префикс за повторение като REP, операцията с низ се изпълнява повторно. При това броят на желаните повторения, т.е. дължината на низа от знаци, трябва да бъде записан предварително в CX. След всяка операция с низ съдържанието на CX намалява с единица. Цялата операция се повтаря дотогава, докато съдържанието на CX стане 0. Ако се приложи условен префикс за повтаряне като REPE/REPZ или REPNE/REPNZ с инструкцията SCAS или CMPS, се проверява едно допълнително условие: след проверка на нулевия флаг (ZF) повторението се прекъсва преждевременно, ако условието за повторение (равно, неравно и т.н.) не е вече изпълнено.

Състоянието на флаг DF може да се управлява с командите (без операнди):

CLD (Clear Direction Flag) — сваляне на флага за посока DF в 0.

STD (Set Direction Flag) — вдигане на флага за посока DF в 1.

INS/ INSB/ INSW/ INSD Въвеждане на елемент от низ от входно-изходен порт.

OUTS/ OUTSB/ OUTSW/ OUTSD Извеждане на елемент от низ във входно-изходен порт.

Пример: Фрагмент от програма, която извежда последователност от символи във входно-изходен порт с номер 378 (LPT1, Printer Port), съответстващ на принтера.



.data

str_pech db “Текст за печат”

.code



mov dx, 378h



lea di, str_pech

mov cx, 16

rep outsb






Каталог: UPLOADED
UPLOADED -> Магистърска програма „Глобалистика" Дисциплина „Политическият преход в България" Доц д-р П. Симеонов политическа система и политически партии на българския преход студент: Гергана Цветкова Цветкова Факултетен номер: 9079
UPLOADED -> Конкурс за научно звание „професор" по научна специалност 05. 02. 18 „Икономика и управление" (Стопанска логистика) при унсс, обявен в дв бр. 4/ 15. 01. 2010
UPLOADED -> Здравната каса забавя парите за болници, аптеки, пациенти
UPLOADED -> Автобиография Лична информация
UPLOADED -> Отчет на ип "Реал Финанс" ад към 31 декември 2009 г. А. Статут и предмет на дейност ип „Реал Финанс"
UPLOADED -> „Здравеопазване
UPLOADED -> „Здравеопазване
UPLOADED -> „Здравеопазване
UPLOADED -> Москов се закани на директори на болници заради борчове и ктб
UPLOADED -> „Здравеопазване


Сподели с приятели:




©obuch.info 2024
отнасят до администрацията

    Начална страница