- •Машинное исполнение
- •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. Передача параметров.
7. Команды логических операций: and, or, xor, test, not.
7.1. Разработать в COM-формате и записать в текстовом редакторе NORTON программу exand.asm:
MOV AL,11000101B ;Инициализация AL
MOV BL,01011100B ;Инициализация BL
MOV CL,AL ;Копирование AL
AND AL,BL ;Логическое умножение
MOV AL,CL ;Восстановление AL
OR AL,BL ;Логическое сложение
MOV AL,CL ;Восстановление AL
Xor al,bl ;Логическое сравнение
MOV AL,CL ;Восстановление AL
TEST AL,BL ;Управление флагами
NOT AL ;Логическая инверсия
AND: Если оба из сравниваемых битов равны 1, то результат равен 1; во всех остальных случаях результат - 0.
OR: Если хотя бы один из сравниваемых битов равен 1, то результат равен 1; если сравниваемые биты равны 0, то результат - 0.
XOR: Если один из сравниваемых битов равен 0, а другой равен 1, то результат равен 1; если сравниваемые биты одинаковы (оба - 0 или оба - 1), то результат - 0.
TEST: действует как AND - устанавливает флаги, но не изменяет биты.
Логическая команда NOT устанавливает обратное значение битов в байте или слове, в регистре или в памяти: нули становятся единицами, а единицы - нулями.
7.2. Выполните ассемблирование и компоновку разработанной программы.
7.3. Вызовите отладчик DEBUG для пошагового выполнения вашей программы. Выполните трассировку программы определяя регистры, в которых произошли изменения после каждого шага. Содержимое регистра АL необходимо перевести в двоичную форму после выполнения каждой логической команды. При выполнении программы определяйте состояние флага SF после каждой команды. Листинг вашей программы и выводы о выполнении логических команд запишите в отчет.
СОДЕРЖАНИЕ ОТЧЕТА:
1. Листинги программ.
2. Выводы о работе программ.
КОНТРОЛЬНЫЕ ВОПРОСЫ:
1. Объяснить, как выполняется команда JMP.
2. Объяснить, как выполняется команда SHL.
3. Объяснить, как выполняется команда INC.
4. Объяснить, как выполняется команда LOOP.
5. Объяснить, как выполняется команда CALL.
6. Объяснить, как выполняется команда RET.
7. Объяснить, как выполняются команды:
DEC
JNZ
8. Объяснить, как выполняются команды:
CMP
JB
9. Объяснить, как выполняются команды:
CMP
JA
10. Как изменить программу case.asm для: а) определения содержимого TITLEX заглавными буквами; б) преобразования заглавных букв в строчные.
11. Предположим, что регистр DX содержит 10111001 10111001, а регистр CL - 03. Определите содержимое регистра DX после следующих несвязанных команд: а) SHR DX,1; б) SHR DX,CL; в) SHL DX,CL; г) SHL DL,1; д) ROR DX,CL; е) ROR DL,CL.
12. Составьте из нескольких команд фрагмент программы для умножения содержимого регистра АХ на 4.
ОТВЕТЫ:
11. а) 01011100 11011100; б) 00010111 00110111; в) 11001101
11001000; г)10111001 01110010; д) 00110111 00110111; е) 10111001
00110111.
12. SHL AL,1
RCL AH,1
SHL AL,1
RCL AH,1
Л а б о р а т о р н а я р а б о т а N 6