
Заключение
Строковые (цепочечные) команды являются удобным инструментом при обработке массивов данных, как текстовых, так и числовых. Правильное их использование делает код программы лаконичнее, а время выполнения – меньше.
Литература
Абель П. Язык Ассемблера для IBM PC и программирования. – М.: Высш. шк., 1992. – 447 с.
Григорьев В.Л.. Микропроцессор i486. Архитектура и программирование (в 4-х книгах). – М.: ГРАНАЛ, 1993. – 346 с. (кн.1), 382 с. (кн.2-4).
Григорьев В.Л.. Программирование однокристальных микропроцессоров. М. Энергоатомиздат, 1987. - 288 с.
Дао Л.. Программирование микропроцессора 8088. М.: Мир, 1988. - 357 с.
Лю Ю - Чжен, Гибсон Г.. Микропроцессоры семейства 8086/8088. М.: Радио и связь, 1987. - 512 с.
Майко Г.В. Ассемблер для IBM PC. М.: Бизнес-Информ, Сирин 1997. - 212 с.
Пильщиков В.Н. Программирование на языке ассемблера IBM PC. М.: ДИАЛОГ - МИФИ, 1997. - 288 с.
Юров В.И. Ассемблер: учебник. С-Пб.: "Питер", 2000. - 589 с.
Приложения
Приложение 1. Пример программы.
Ниже приведен пример программы на языке Ассемблер, выполняющей поиск байтов в массиве (строке) str1 и вывод сообщения о номере позиции найденного символа в строке. Если ни одного искомого символа не было, то ничего не выводится.
name strings5
.model small
.stack
.data
rule db '0123456789' ; линейка
str1 db '*A******AA'
mess db 10,13,'position = '
pos db ' !$'
.code
;---------------------
start:
mov ax,@data
mov ds,ax
mov es,ax
assume es:@data
cld
mov cx,10
mov di,offset str1
mov al,'A' ; искомый символ
next:
repne scas str1 ; поиск
je Ok ; символ найден!
jmp eos ; конец строки
Ok:
push ax ; сохранить AL (искомый символ)
mov dx,di
dec dx ; т. к. di указывает на следующий байт!
sub dx,offset str1 ; смещение относительно начала строки
or dl,30h ; преобразовать в ASCII код
mov pos,dl ; вставить в текст сообщения
mov ah,09h
mov dx,offset mess
int 21h ; вывести сообщение
pop ax ; восстановить AL (искомый символ)
jmp next ; продолжить поиск
eos:
.exit
;---------------------
position
= 1!
position
= 8!
position
= 9!
position
= 1!
position
= 8!
position
= 9!
Результат работы программы: