КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ. Эти команды также называют командами обработки строк символов
Эти команды также называют командами обработки строк символов. Отличие названий состоит в том, что под строкой символов здесь понимается последовательность байт, а цепочка – это более общее название для случаев, когда элементы последовательности имеют размер больше байта – слово или двойное слово. Таким образом, цепочечные команды позволяют проводить действия над блоками памяти, представляющими собой последовательности элементов следующего размера: 8 бит – байт; 16 бит – слово; 32 бита – двойное слово. Содержимое этих блоков для микропроцессора не имеет значения. Это могут быть символы, числа и любая другая информация. Главное, чтобы размерность элементов совпадала с одной из перечисленных и эти элементы находились в соседних ячейках памяти. Всего в системе команд микропроцессора имеется семь операций-примитивов обработки цепочек. Каждая из них реализуется в микропроцессоре тремя командами, в свою очередь, каждая из этих команд работает с соответствующим размером элемента – байтом, словом или двойным словом. Особенность всех цепочечных команд в том, что они, кроме обработки текущего элемента цепочки, осуществляют еще и автоматическое продвижение к следующему элементу данной цепочки. Перечислим операции-примитивы и команды, с помощью которых они реализуются: пересылка цепочки: movs адрес_приемника, адрес_источника movsb movsw movsd сравнение цепочек: cmps адрес_приемника, адрес_источника cmpsb cmpsw cmpsd сканирование цепочки: scas адрес_приемника scasb scasw scasd загрузка элемента из цепочки: lods адрес_источника lodsb lodsw lodsd сохранение элемента в цепочке: stos адрес_приемника stosb stosw stosd получение элементов цепочки из порта ввода-вывода: ins адрес_приемника, номер_порта insb insw insd вывод элементов цепочки в порт ввода-вывода: outs номер_порта, адрес_источника outsb outsw outsd Логически к этим командам нужно отнести и так называемые префиксы повторения (используются в формате машинной команды, где имеются первые необязательные байты префиксов). Один из возможных типов префиксов – это префиксы повторения. Они предназначены для использования цепочечными командами. Префиксы повторения имеют свои мнемонические обозначения: rep repe или repz repne или repnz Эти префиксы повторения указываются перед нужной цепочечной командой в поле метки. Цепочечная команда без префикса выполняется один раз. Размещение префикса перед цепочечной командой заставляет ее выполняться в цикле. Листинг 6.1 Пересылка строк командой movs ; prg_10_1.asm masm .modelsmall .stack 256 .data source db 'Тестируемая строка', '$'; строка-источник dest db 19 DUP (' '); строка приемник .code assume ds: @data, es: @data main:; точка входа в программу mov ax, @data; загрузка сегментных регистров mov ds, ax; настройка регистров DS и ESна адрес сегмента данных mov es, ax cld; сброс флага DF – обработка строки от начала к концу lea si, source; загрузка в si смещения строки-источника lea di, dest; загрузка в DS смещения строки-приемника mov cx, 20; для префикса rep – счетчик повторений (длина строки) rep movs dest, source; пересылкастроки lea dx, dest mov ah, 09h; вывод на экран строки- ; приемника int 21h exit: mov ax, 4c00h int 21h end main СОДЕРЖАНИЕ РАБОТЫ 1. Отладить программу. 2. Написать программу для сравнения цепочек. ВОПРОСЫ ВЫХОДНОГО КОНТРОЛЯ 1. Перечислите цепочечные команды.
|