- •Машинное исполнение
- •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. Выполнить раздел 1 данной лабораторной работы (пп.1.1.-1.7.), изменив с помощью текстового редактора NORTON следующие константы:
FLD1DB DB 11,12,13,14,15,16 ;Определение нескольких констант
FLD2DB DW 10 DUP(?) ;Десять неопределенных слов
FLD3DB DB 5 DUP(14) ;Пять байт, содержащих 0ЕН
FLD4DB DB 3 DUP(4 DUP(8)) ;Двенадцать восьмерок
Если выражение содержит несколько констант, разделенных запятыми и ограниченных только длиной строки, ассемблер определяет эти константы в виде последовательности смежных байтов.
Если необходимо повторение константы применяется следующий формат:
[имя] Dn число-повторений DUP (выражение)
3. Директива определения байта (dв).
3.1. Директива DВ определяет элементы, которые имеют длину в один байт. Символьное выражение в DВ может содержать строку символов любой длины.
Числовое выражение в DВ может содержать одну или более однобайтовую константу. Байт представляется двумя шестнадцатиричными цифрами. Наибольшее положительное шестнадцатиричное число - это 7FH; все большие числа от 80Н до FFH представляют отрицательные значения. В десятичном исчислении эти пределы выражаются числами +127 и -128.
3.2. Выполнить раздел 1 данной лабораторной работы (пп.1.1.-1.7.), изменив с помощью текстового редактора NORTON некоторые константы и введя новые:
FLD1DB DB ? ;Не инициализировано
FLD2DB DB 32 ;Десятичная константа
FLD3DB DB 20H ;Шест. константа
FLD4DB DB 01011001B ;Двоичная константа
FLD5DB DB 01,'JAN',02,'FEB',03,'MAR';Таблица
FLD6DB DB '32654' ;Символьное число
FLD7DB DB 10 DUP(0) ;Десять нулей
4. Директива определения слова (dw).
4.1. Директива DW определяет элементы, которые имеют длину в одно слово (два байта). Символьное выражение в DW ограничено двумя символами, которые ассемблер представляет в объектном коде так, что, например, 'PC' становится 'CP'.
Числовое выражение в DW может содержать одну или более двухбайтовую константу. Два байта представляются четырьмя шестнадцатиричными цифрами. Наибольшее положительное шестнадцатиричное число в двух байтах - это 7FFFH; все большие числа от 8000Н до FFFFH представляют отрицательные значения. В десятичном исчислении эти пределы выражаются числами +32767 и -32768.
4.2. Выполнить раздел 1 данной лабораторной работы (пп.1.1.-1.7.), изменив с помощью текстового редактора NORTON следующие константы:
FLD1DB DW 0FFF0H ;Шест. константа
FLD2DB DW 01011001B ;Двоичная константа
FLD3DB DW FLDC ;Адресная константа
FLD4DB DW 3,4,7,8,9 ;Пять констант
FLD5DB DW 5 DUP(0) ;Пять нулей
Поле FLD3DB определяет адрес - в данном случае смещение на адрес FLDC. В результате генерируется объектный код 0004 (R означает перемещаемость этого адреса в памяти).
5. Директива определения двойного слова (dd).
5.1. Директива DD определяет элементы, которые имеют длину в два слова (четыре байта). Числовое выражение может содержать одну константу или более, каждая из которых имеет максимально четыре байта (восемь шестнадцатиричных цифр). Наибольшее положительное шестнадцатиричное число в четырех байтах - это 7FFFFFFFН; все большие числа от 80000000Н до FFFFFFFFH представляют отрицательные значения. В десятичном исчислении эти пределы выражаются чис-
лами +2147483647 и -2147483648.
5.2. Выполнить раздел 1 данной лабораторной работы (пп.1.1.-1.7.), изменив с помощью текстового редактора NORTON следующие константы:
FLD1DB DD ? ;Не инициализировано
FLD2DB DD 'PC' ;Символьная строка
FLD3DB DD 32572 ;Десятичное значение
FLD4DB DD FLD3DB-FLDC ;Разность адресов
FLD5DB DD 14,19 ;Две константы
В поле FLD4DB генерируется разница между двумя адресами, адресом FLD3DB и адресом FLDC - 000ЕН(14)-0004Н(4)=000АН(10).
Символьное выражение директивы DD ограничено двумя символами. Ассемблер преобразует символы в машинные коды и выравнивает их слева в четырехбайтовом двойном слове, как показано в поле FLD2DB в объектном коде.