- •Машинное исполнение
- •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. Передача параметров.
2. Ассемблирование программы.
2.1. Войти в свой каталог на диске.
2.2. Записать в каталог файл exasm1.asm.
2.3. Выполнить ассемблирование исходной программы exasm1.asm с помощью ассемблера tasm.exe. Для этого в командной строке DOS необходимо ввести следующую команду:
tasm exasm1.asm,exasm1.obj,exasm.lst,exasm.crf
В этой командной строке указывается вызов ассемблера tasm, имя программы, которую требуется ассемблировать exasm1.asm, требования получения OBJ-файла, LST-файла и CRF-файла.
При выполнении ассемблирования программа tasm выдает коды ошибок, пояснения к ним и номера строк в исходной программе где имеется ошибка. Для просмотра данного сообщения необходимо отключить панели NORTON нажатием клавиш Ctrl O. В случае отсутствия ошибок ассемблер должен выдать сообщение:
Eror messages : None
Warning messages : None
Для восстановления панелей NORTON необходимо выполнить повторное нажатие этих клавиш (Ctrl O).
2.4. После выполнения командной строки DOS просмотреть полученный листинг программы (LST-файл) с помощью текстового редактора LEXICON. Для этого необходимо установить курсор в панели NORTON на файл exasm1.lst и нажать клавиши Alt F4. Записать листинг в отчет.
3. Компоновка программы.
3.1. Если в результате ассемблирования не обнаружено ошибок, то следующий шаг - компоновка объектного модуля. Файл exasm1.obj содержит только машинный код в шестнадцатиричной форме. Так как программа может загружаться почти в любое место памяти для выполнения, то ассемблер может не определить все машинные адреса. Кроме того, могут использоваться другие (под)программы для объединения с основной. Назначением программы tlink.exe является завершение определения адресных ссылок и объединение (если требуется) нескольких программ. Для компоновки ассемблированной программы в командной строке DOS введите следующую команду:
tlink exasm1.obj,exasm1.exe,exasm1.map
В этой командной строке указывается вызов компоновщика tlink, имя программы, которую требуется компоновать, требование получения исполнимого ЕХЕ-файла и требование получения map-файла, который содержит таблицу имен и размеров сегментов, а также ошибки, которые обнаружит программа tlink.exe.
3.2. Для вывода на экран таблицы имен и размеров сегментов необходимо в командной строке DOS ввести следующую команду:
tlink exasm1.obj,,con exasm1.map
CON означает что файл exasm1.map необходимо вывести на экран, а не на диск. Для просмотра файла exasm1.map необходимо отключить панели NORTON. На данном этапе единственной возможной ошибкой может быть указание неправильных имен файлов. Исправить это можно только перезапуском программы tlink.
4. Выполнение программы.
4.1. Для выполнения программы необходимо в панели NORTON установить курсор на файле exasm1.exe и нажать клавишу Enter. После этого программа пользователя выполнена.
4.2. Так как наша программа не вырабатывает видимых результатов, ее можно выполнить трассировкой под отладчиком DEBUG. Для этого необходимо ввести в командной строке DOS:
debug exasm1.exe
В результате DOS загрузит программу DEBUG, которая, в свою очередь, загрузит требуемый ЕХЕ-модуль. После этого отладчик выдаст дефис (-) в качестве приглашения.
4.3. Для просмотра сегмента стека введите:
D SS:0
Эту область легко узнать по 12-кратному дублированию константы STACKSEG.
4.4. Для просмотра сегмента кода введите:
D CS:0
Сравните машинный код с листингом ассемблера. Непосредственные операнды, приведенные в листинге ассемблирования как 0123 и 0025, в памяти представлены в виде 2301 и 2500 соответственно. В данном случае листинг ассемблирования не вполне соответствует машинному коду. Все двухбайтовые адреса (слова) и непосредственные операнды в машинном коде хранятся в обратном порядке.
4.5. Введите R для просмотра содержимого регистров.
4.6. Выполните программу с помощью команды Т (трассировка). В процессе пошагового выполнения программы обратите внимание на содержимое регистров.
4.7. Когда вы дойдете до команды RET, введите Q (Quit - выход) для завершения работы отладчика.
4.8. Используя команду DOS DIR проверьте наличие ваших файлов на диске. Для этого в командную строку DOS введите команду:
dir exasm1.*
В результате на экране появятся следующие имена файлов:
exasm1.asm
exasm1.obj
exasm1.lst
exasm1.crf
exasm1.map
exasm1.exe