- •1.1.1. Кодирование символов
- •2. Системный отладчик Debug
- •2.1. Адресация памяти
- •2.2. Работа в отладчике
- •Лабораторная работа № 1
- •3. Основы программирования
- •3.1. Процесс программирования
- •3.1.1. Этапы создания программы
- •3.1.2. Компиляция программы. Опции командной строки
- •3.2. Cинтаксис ассемблерной программы
- •3.3. Простейшая программа
- •3.4. Скелет (каркас) программы
- •3.4.1. Модуль EXE
- •3.4.2. Модуль COM
- •3.5. Образ программы в памяти
- •3.5.1. Модуль EXE
- •3.5.2. Модуль COM
- •3.6. Работа с отладчиком Turbo Debugger (TD)
- •Лабораторная работа №1
- •4. Операторы и директивы
- •4.1. "Препроцессорные" директивы INCLUDE и EQU
- •4.2. Директивы описания и инициализации переменных DB, DW и DD
- •4.2.1. Директива DB (Define Byte - определить байт)
- •4.2.2. Директивы DW и DD (Define Word и Define Double Word)
- •4.3. Операторы Assembler
- •4.3.1. Операторы обработки данных
- •4.3.2. Операторы передачи управления
- •4.4. Вспомогательные псевдооператоры
- •4.5. Работа с макрооператорами
- •Лабораторная работа № 2
- •4.6. Приложение к лабораторной работе № 2. Адресация
- •4.6.1. Форматы машинных команд и их кодирование
- •4.6.2. 16-битный режим адресации операндов в памяти
- •5. Сервисные функции DOS
- •5.1.1. Ввод с клавиатуры символьной информации
- •5.1.2. Системные функции DOS ввода данных с клавиатуры
- •5.1.3. Команды работы со строками
- •5.1.4. Системные функции DOS вывода данных
- •Лабораторная работа №3
- •Лабораторная работа №4
- •6. Функции BIOS для работы с экраном и клавиатурой
- •6.1. Прямое программирование видеобуфера в текстовом режиме
- •6.2. Прерывание 10h. Видеофункции BIOS
- •6.3. Прерывания 16h, 1Ah, 15h
- •6.3.1. Прерывание 16h
- •6.3.2. Прерывание 1Ah
- •6.3.3. Прерывание 15h
- •Лабораторная работа №5
- •Заключение
- •Рекомендуемая литература
- •Использованная литература
Если в качестве операнда в правой части написана числовая константа, то директива является просто определением именованной константы (на практике чаще всего используется именно этот случай, например, для задания числа элементов массива). Значение именованной константы, заданной директивой EQU, не может быть изменено при помощи другой директивы EQU.
Если в качества операнда в правой части написан некий текст, который нельзя отнести ни к чему перечисленному выше, имя в правой части будет просто сокращенным обозначением текста.
Примеры:
counter equ CX N equ 2*К-1
maxbyte equ OFFh
noflle equ "File not found"
4.2. Директивы описания и инициализации переменных DB, DW и DD
4.2.1.Директива DB (Define Byte - определить байт)
Впростейшем варианте директива DB имеет формат:
Имя db Нач_Значение
Операнд Нач_Значение может быть в общем случае выражением, а в частном случае именем другой переменной (определенной ранее), константой, символом и знаком "?".
По этой директиве компилятор выделяет 1 байт памяти и закрепляет за ним указанное имя. Практически компилятор вводит псевдоним адреса выделенного байта, удобный для программиста. Кроме того компилятор хранит информацию о том, что любой двоичный код, который будет находиться по этому адресу, будет представлять собой 1-байтовую переменную.
Далее компилятор вычисляет выражение, стоящее в правой части и его значением инициализирует описанную переменную. Если вместо операнда стоит знак "?", то инициализация не производится и значение переменной непредсказуемо.
Примеры:
р db 1 ; р=1 q db 2 ; q=2
r db ? ; r не инициализировано s db 3+2 ; s=5
t db 'Ю' ; В байте t находится ASCII-код буквы Ю
Массив определяется либо как директива DB с несколькими операндами, либо как несколько директив db с именем только у первой директивы. В следующих двух примерах определяется один и тот же массив А с тремя элементами:
A db 7, ?, 'r' A db 7
db ? db 'r'
48