- •Машинное исполнение
- •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. Таблица содержащая 64 неинициализированных слова записывается в следующей форме:
STACK DW 64 DUP(?)
Таблица инициализированная символьными значениями записывается в следующей форме:
MONTAB DB 'JAN','FEB','MAR',...'DEC'
Таблица инициализированная числовыми значениями записывается в следующей форме:
COSTAB DB 205,208,209,212,215,224,...
Таблица может также содержать смешанные данные (регулярно чередующиеся числовые и символьные поля):
STOKTBL DB 12,'Computers',14,'Paper....',17,'Diaskettes'
Элементы таблицы можно закодировать вертикально:
STOKTBL DB 12,'Computers'
DB 14,'Paper....'
DB 17,'Diskettes'
3. Рассмотрим таблицу состоящую из трех символьных значений:
MONTBL DB 'January..'
DB 'February.'
DB 'March....'
Каждый элемент таблицы имеет 9 байт. Адрес элемента 'January' - MONTBL, адрес элемента 'February' - MONTBL+9, адрес элемента 'March' - MONTBL+18. Для поиска символьного значения 'March', программа должна выполнить следующие шаги:
а) преобразовать введенный номер символьного значения (N3) из ASCII 33 в двоичное 03;
б) вычесть единицу из номера символьного значения: 03 - 1 = 02;
в) умножить результат на длину элемента (9): 02 x 9 = 18;
г) прибавить произведение (18) к адресу MONTBL; в результате получится адрес требуемого символьного значения: MONTBL+18.
4. В некоторых ЭВМ символы представляются в коде EBCDIC. Например, цифры от 0 до 9 в коде ASCII представляются как 30...39, а в коде EBCDIC - как F0...F9. Пробел в коде ASCII представляется шестнадцатиричным числом 20Н, а в коде EBCDIC - числом 40Н.
При передаче данных между персональными компьютерами и большими ЭВМ с помощью команды XLAT можно выполнить перекодировку данных между форматами ASCII и EBCDIC.
5. Сортировка элементов таблицы заключается в сравнении соседних элементов таблицы. Если первый элемент больше второго, то элементы меняются местами. Таким образом выполняется сравнение элемента 1 с элементом 2, элемента 2 с элементом 3 и т.д. до конца таблицы с перестановкой элементов там, где это необходимо. Если в проходе были сделаны перестановки, то весь процесс повторя-
ется с начала таблицы, т.е. сравниваются снова элементы 1 и 2, 2 и 3 и т.д. Если в проходе не было перестановок, то таблица отсортирована и можно прекратить процесс.
6. При работе с таблицами в ассемблере могут применяться операторы TYPE (тип), LENGTH (длина) и SIZE (размер). Например, для следующей таблицы из десяти слов:
TABLEX DW 10 DUP(?) ;Таблица из 10 слов
программа может использовать оператор TYPE для определения типа (DW в данном случае), оператор LENGTH - для определения DUP-фактора (10) и оператор SIZE - для определения числа байтов (10 x 2 = 20). Например:
MOV AX,TYPE TABLEX ;AX=0002
MOV BX,LENGTH TABLEX ;BX=000A (10)
MOV CX,SIZE TABLEX ;CX=0014 (20)
Значения LENGTH и SIZE можно использовать для окончания табличного поиска или сортировки. Например, если регистр SI содержит продвинутый адрес таблицы при осуществлении поиска, то проверка на конец таблицы может быть следующей:
CMP SI,SIZE TABLEX
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ: