Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

STOSB  ; A := AL, DI := DI+1. MOV SI, OFFSET A. Контрольные вопросы. Задания




STOSB                                ; A: = AL, DI: = DI+1

MOV AX, 0FFFFH

STOSW                              ; B: = AX, DI: = DI+2

 

Префиксы повторения позволяют применить цепочечные команды сразу к целым последовательностям байт или слов. При этом размер последовательности указывается в регистре CX. Цепочечная команда с префиксом повторения выполняется CX раз и пока истинно условие выполнения команды для конкретного префикса повторения. После выполнения команды с префиксом повторения значение регистра CX уменьшается на 1. Другими словами, цепочечная команда с префиксом повторения выполняется пока значение регистра CX не равно 0 и пока истинно условие выполнения команды для конкретного префикса повторения. Некоторые префиксы не имеют условий выполнения команд, и цепочечные команды с этими префиксами выполняются ровно CX раз. Вообще, с префиксом повторения может быть выполнена любая команда процессора, но это, как правило, бывает нецелесообразно. В основном с префиксами повторения используются цепочечные команды. Однако использование команд LODSB и LODSW с префиксами повторения обычно также бывает нецелесообразно. Каждый префикс повторения, как и любая команда процессора, имеет свое мнемоническое обозначение. Синтаксис записи команды с префиксом повторения следующий:

< префикс_повторения> < команда> < операнды>

 

То есть команда записывается как обычно, но ей предшествует мнемоническое обозначение префикса повторения.

При использовании префикса повторения REP число раз, которое должна выполниться команда, указывается в регистре CX. Этот префикс не имеет условий выполнения команды, и команда выполняется ровно CX раз. Пример использования префикса повторения REP с цепочечной командой MOVSB (предполагается, что флаг DF сброшен):

A DB 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; описание переменных

B DB 10 DUP?

. . .

MOV DS, SEG A               ; настройка DS: SI на A

MOV SI, OFFSET A

MOV ES, SEG B               ; настройка ES: DI на B

MOV DI, OFFSET B

MOV CX, 10

REP MOVSB                              ; пересылка 10 байт из A в B

 

Префиксы REPE и REPZ идентичны. Команда с этими префиксами выполняется, пока значение регистра CX не равно 0 и пока значение флага нуля ZF равно 1. Эти префиксы можно использовать с цепочечными командами CMPS и SCAS (обобщенные мнемоники – без букв ‘B’ и ‘W’ в конце) для обнаружения первого несовпадающего значения двух последовательностей (команда CMPS) или для обнаружения первого несовпадающего значения элемента последовательности и регистра AL/AX (команда SCAS). Следует отметить, что префиксы REP, REPE и REPZ транслируются в один и тот же машинный код, но их действие различно для разных строковых команд – использование этих префиксов с командой MOVS даст выполнение команды ровно CX раз, а с командами CMPS и SCAS – в зависимости от входных данных.

Префиксы REPNE и REPNZ идентичны. Команда с этими префиксами выполняется, пока значение регистра CX не равно 0 и пока значение флага нуля ZF равно 0. Эти префиксы можно использовать с цепочечной командой SCAS для поиска определенного значения (которое определяется регистрами AL/AX) в последовательности байт или слов.

Пример использования префикса повторения REPNZ с командой SCASB для отыскания заданного значения в последовательности байт (предполагается, что флаг DF сброшен):

A DB 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; описание переменных

. . .

MOV ES, SEG B               ; настройка ES: DI на A

MOV DI, OFFSET B

MOV CX, 10

MOV AL, 5

REP SCASB; поиск значения 5 в последовательности A

       ; теперь значение DI установлено на след. байт после найденного значения

Контрольные вопросы

1. Какие цепочечные команды существуют для МП 8086?

2. В чем особенность цепочечных команд?

3. Какими способами можно определить массив в программе на ассемблере?

4. Для чего служит директива SEG?

5. Для чего служит директива OFFSET?

6. В каких частях программы можно размещать данные?

7. Объясните выбор части программы, в которой размещаются данные для вашей программы?

8. В чем состоит отличие префиксов повторения REP и REPNE?

Задания

1. Сложить элементы массива A с соответствующими элементами массива B и записать результат в массив B.

2. Умножить элементы массива A на соответствующие элементы массива B и записать результат в массив B.

3. Прибавить к элементам массива A единицу и записать результат в массив B.

4. Разделить элементы массива A на 2 и записать результат в массив B (использовать команду арифметического сдвига).

5. Обнулить нечетные элементы массива A и записать результат в массив B.

6. Обнулить все элементы массива A меньшие 20 и записать результат в массив B.

7. Выполнить с элементами массива A и соответствующими элементами массива B операцию логического «И» и записать результат в массив B.

8. Выполнить с элементами массива A и соответствующими элементами массива B логическую операцию «ИСКЛЮЧАЮЩЕЕ ИЛИ» и записать результат в массив B.

9. Ввести строку и символ. Если символ входит в строку, то в регистр SI записать номер позиции, в которой он встретился.

10. Составить программу, удаляющую все пробелы из введенной строки.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...