- •Машинное исполнение
- •1. Просмотр памяти.
- •2. Пример машинных кодов: непосредственные данные.
- •3. Пример машинных кодов: определение данных.
- •4. Пример машинных кодов: определение размера памяти.
- •5. Специальные средства отладчика.
- •6. Сохранение программы из отладчика.
- •Ассемблирование и выполнение программы
- •1. Ввод программы
- •2. Ассемблирование программы.
- •3. Компоновка программы.
- •4. Выполнение программы.
- •5. Ввод, ассемблирование, компоновка, выполнение и анализ листинга исходной программы.
- •Определение данных
- •1. Директивы определения данных.
- •2. Определение данных с числом повторений.
- •3. Директива определения байта (dв).
- •4. Директива определения слова (dw).
- •5. Директива определения двойного слова (dd).
- •6. Директива определения поля из четырех слов (dq).
- •7. Директива определения десяти байт (dt), директива equ.
- •Программы в com-файлах
- •1. Создание exe-файла.
- •2. Получение com-файла.
- •Логика и организация программы
- •1. Команда jmp.
- •2. Команда loop.
- •3. Сегмент стека.
- •4. Программа: расширение операции пересылки.
- •5. Программа: замена строчных букв на заглавные.
- •6. Команды сдвига и циклического сдвига.
- •7. Команды логических операций: and, or, xor, test, not.
- •Xor al,bl ;Логическое сравнение
- •Команды обработки строк
- •1. Rep: префикс повторения команды.
- •2. Программа: строковые операции.
- •3. Сканирование и замена.
- •4. Дублирование образца.
- •5. Программа: выравнивание справа при выводе на экран.
- •Арифметические операции 1: обработка двоичных данных
- •1. Сложение и вычитание.
- •2. Многословное сложение.
- •3. Умножение.
- •4. Повышение эффективности умножения.
- •5. Многословное умножение.
- •6. Сдвиг регистровой пары dx:ax.
- •7. Деление.
- •8. Деление вычитанием.
- •9. Преобразование знака.
- •Арифметические операции 2: обработка данных в форматах ascii и
- •1. Сложение в ascii-формате.
- •2. Вычитание в ascii-формате.
- •3. Умножение в ascii-формате.
- •4. Деление в ascii-формате.
- •5. Двоично-десятичный формат (bcd).
- •6. Преобразование ascii-формата в двоичный формат и наоборот.
- •Обработка таблиц
- •1. Прямой табличный доступ
- •2. Табличный поиск.
- •3. Табличный поиск с использованием сравнения строк.
- •4. Транслирующая команда xlat.
- •5. Программа: вывод шестнадцатиричных и ascii-кодов.
- •6. Программа: сортировка элементов таблицы.
- •Макрокоманды
- •If (условие)
- •If (условие)
- •1. Простое макроопределение.
- •2. Использование параметров в макрокомандах.
- •3. Комментарии в макрокомандах.
- •4. Использование макрокоманд внутри макроопределения.
- •5. Директива local.
- •6. Использование библиотек макроопределений.
- •7. Конкатенация (&).
- •8. Директивы повторения: rept, irp, irpc.
- •Inc ctr ;Увеличить счетчик
- •Inc dx ;Увеличить счетчик
- •Inc dx ;Увеличить счетчик
- •9. Макрокоманды, использующие директивы if и ifndef.
- •10. Макрокоманды, использующие директиву ifidn.
- •Связь между подпрограммами
- •1. Программа: использование директив extrn и public для меток.
- •2. Программа: использование директивы public в кодовом сегменте.
- •3. Программа: общие данные в подпрограмме.
- •4. Передача параметров.
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 запишите в отчет.