- •Машинное исполнение
- •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. Передача параметров.
Определение данных
МЕТОДИЧЕСКИЕ УКАЗАНИЯ:
1. Для выполнения лабораторной работы вы должны войти в каталог группы из панели NORTON. Каждый студент должен иметь в каталоге группы свой личный каталог. Все программы должны создаваться и записываться в личном каталоге студента.
2. В соответствии с имеющимися директивами в ассемблере разрешено определение данных различной длины: например, директива DB определяет байт, а директива DW определяет слово. Элемент данных может содержать непосредственное значение или константу, определенную как символьная строка или как числовое значение.
3. Основной формат определения данных в ассемблере:
[имя] Dn выражение
- Имя элемента данных не обязательно (это указывается квадратными скобками), но если в программе имеются ссылки на некоторый элемент, то это делается посредством имени.
- Для определения элементов данных имеются следующие директивы: DB (байт), DW (слово), DD (двойное слово), DQ (учетверенное слово) и DT (десять байт).
- Выражение может содержать символьную строку или числовую константу.
4. Только директива DB позволяет определять символьную константу с произвольным количеством символов. В директивах DW, DD, DQ и DT допускается ввод символьных констант только с двумя буквами.
5. Директивы DW, DD, DQ и DT записывают числовое значение в объектном коде в обратной последовательности байтов.
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ:
1. Директивы определения данных.
1.1. Установите курсор в панели NORTON на файл exasm2.asm. Клавишей F4 вызовите текстовый редактор NORTON. В сегменте данных после константы FLDC запишите следующие константы:
FLD1DB DB 'Personal Computer'
FLD2DB DB 110
FLD3DB DW 110H
FLD4DB DB 110B
FLD1DB - символьная строка. Символьная строка используется для описания данных, таких, как, например, имена людей или заголовки страниц. Содержимое символьной строки отмечается одиночными кавычками. Ассемблер переводит символьные строки в объектный код в обычном формате ASCII.
FLD2DB - числовая константа. Числовые константы применяются для арифметических значений и для адресов памяти. Для описания числовой константы кавычки не ставятся. Ассемблер преобразует все числовые константы в шестнадцатиричные и записывает байты в объектном коде в обратной последовательности - справа налево. Константа FLD2 имеет десятичный формат и допускает использование цифр от 0 до 9. Ассемблер преобразует десятичное число в шестнадцатиричный объектный код.
FLD3DB - числовая константа. Она имеет шестнадцатиричный формат и допускает использование цифр от 0 до F. Признаком шестнадцатиричного числа является буква Н в конце числа. При записи шестнадцатиричного числа первой цифрой числа должна быть цифра от 0 до 9. Для записи числа FFFFH, например, необходимо вводить: 0FFFFH.
FLD4DB - числовая константа. Она имеет двоичный формат и допускает использование цифр 0 или 1. Признаком двоичного числа является буква В в конце числа.
1.2. Записать измененный файл и выйти из текстового редактора.
1.3. Выполнить ассемблирование и компоновку измененной программы.
1.4. Просмотреть листинг программы с помощью текстового редактора LEXICON. Выписать в отчет из листинга фрагмент из сегмента данных с константами введенными в программу.
1.5. Вызвать отладчик DEBUG для выполнения программы exasm2.exe. Для этого ввести в командной строке DOS:
DEBUG exasm2.exe
1.6. Выполнить трассировку программы до тех пор, пока не произойдет инициализация сегмента данных, т.е. в пошаговом режиме нужно выполнить команды:
MOV AX,DATASG
MOV DS,AX
Трассировка выполняется вводом команды R, затем вводом несколько раз команды Т.
1.7. Вывести на экран дамп сегмента данных командой:
D DS:00
Дамп содержит 8 параграфов, каждый параграф содержит 16 байт. Выписать в отчет параграфы из дампа данных, которые содержат машинные коды 4 констант введенных в сегмент данных при редактировании программы exasm2.asm.