Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Assembler 01.doc
Скачиваний:
19
Добавлен:
09.11.2019
Размер:
727.04 Кб
Скачать

6. Команды сдвига и циклического сдвига.

6.1. Разработать в COM-формате и записать в текстовом редакторе NORTON программу exshr.asm:

MOV CL,03

MOV AL,10110111B

SHR AL,1 ;Сдвиг вправо на 1

SHR AL,CL ;Сдвиг вправо на 3

Первая команда SHR сдвигает содержимое регистра АХ на 1 бит. Выдвинутый в результате бит попадает в флаг CF, а самый левый бит регистра АХ заполняется нулем. Вторая команда сдвигает содержимое регистра АХ еще на три бита. При этом флаг CF последовательно принимает значения 1, 1, 0, а в три левых бита в регистре АХ заносятся нули.

6.2. Выполните ассемблирование и компоновку разработанной программы. При ассемблировании программа tasm.exe может быть не выполнена, если вы совершили ошибки при наборе программы. Для проверки отсутствия ошибок после ввода команды tasm.exe удалите панели NORTON комбинацией клавиш Ctrl O. Программа tasm.exe выдает сообщение об ошибке и номер строки вашей программы, в которой имеется ошибка. Номер строки с ошибкой указывается в скобках ( ). Для восстановления панелей NORRTON необходимо повторить комбинацию клавиш Ctrl O. Если вы получили сообщение об ошибке, необходимо вернуться в текстовый редактор NORRTON, нажав клавишу F4 и исправить программу.

6.3. Вызовите отладчик DEBUG для пошагового выполнения вашей программы. Выполните трассировку программы определяя регистры, в которых произошли изменения после каждого шага. Содержимое регистра АХ необходимо перевести в двоичную форму. При выполнении программы определяйте состояние флага CF после каждой команды. Листинг вашей программы и выводы о выполнении команды SHR запишите в отчет. При сдвигах влево применяется команда SHL. В этом случае правые биты заполняются нулями.

6.4. Разработать в COM-формате и записать в текстовом редакторе NORTON программу exsar.asm:

MOV CL,03

MOV AL,10110111B

SAR AL,1 ;Сдвиг вправо на 1

SAR AL,CL ;Сдвиг вправо на 3

Команда SAR выполняет арифметический сдвиг вправо.

Команда SAR имеет важное отличие от команды SHR: для заполнения левого бита используется знаковый бит. Таким образом, положительные и отрицательные величины сохраняют свой знак. В приведенном примере знаковый бит содержит единицу.

6.5. Выполните ассемблирование и компоновку разработанной программы.

6.6. Вызовите отладчик DEBUG для пошагового выполнения вашей программы. Выполните трассировку программы определяя регистры, в которых произошли изменения после каждого шага. Содержимое регистра АХ необходимо перевести в двоичную форму. При выполнении программы определяйте состояние флага CF после каждой команды. Листинг вашей программы и выводы о выполнении команды SAR запишите в отчет.

6.7. Разработать в COM-формате и записать в текстовом редакторе NORTON программу exror.asm:

MOV CL,03

MOV AX,10110111B

ROR AX,1 ;Сдвиг вправо на 1

ROR AX,CL ;Сдвиг вправо на 3

MOV AX,03

MOV DX,02

SHL AX,1 ;Умножение пары регистров

RCL DX,1 ;DX:AX на 2

Команда ROR выполняет операцию циклического сдвига. Первая команда ROR при выполнении циклического сдвига переносит первый единичный бит регистра АХ в освободившуюся левую позицию. Вторая команда ROR переносит таким образам три правых бита.

Для сдвига влево может применятся команда ROL. Команды RCR и RCL выполняют циклический сдвиг вправо и влево с переносом.

Для нашего примера в сдвиге участвует флаг СF. Выдвигаемый из регистра бит заносится в флаг CF, а значение CF при этом поступает в освободившуюся позицию.

Комбинация команд простого и циклического сдвига SHL и RLC позволяет выполнить умножение на 2 32-битового числа, которое находится в регистровой паре DX:AX.

Команда SHL сдвигает все биты регистра АХ влево, причем самый левый бит попадает в флаг CF. Затем команда RLC сдвигает все биты регистра DX влево и в освободившийся правый бит заносит значение из флага CF.

6.8. Выполните ассемблирование и компоновку разработанной программы.

6.9. Вызовите отладчик DEBUG для пошагового выполнения вашей программы. Выполните трассировку программы определяя регистры, в которых произошли изменения после каждого шага. Содержимое регистра АХ необходимо перевести в двоичную форму. При выполнении программы определяйте состояние флага CF после каждой команды. Сравните число в регистровой паре DX:AX до и после выполнения программы. Листинг вашей программы и выводы о выполнении команды

ROR запишите в отчет.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]