- •!Производительность вс
- •Методы и средства повышения надежности эвм
- •Регистр флагов
- •Способы адресации
- •Команды пересылки данных, синтаксис команд.
- •Команды двоичной арифметики, синтаксис команд.
- •Команды логических операций, синтаксис команд.
- •Общий вид строк программ на языке ассемблера.
- •Метка: назначение, синтаксис, правила именования, директива метки, вызов метки
- •Псевдокоманды
- •Организация сегментов: сегменты и их значения, порядок следования и синтаксис
- •Оператор, операнд. Операторы адресации
- •Другие операторы(дополнительные) и их описание
- •Макроопределение
- •Прерывание dos
- •Символьный ввод/вывод, функции.
- •Прерывание и функции работы с мышью
- •Прерывание и функции системного таймера
- •Команды передачи управления
- •Команды безусловного перехода: синтаксис и область использования
- •Команды условного перехода: мнемоника и таблица условных переходов, операнд команд
- •Комментарии в программе
- •Модульное программирование
- •Концепция модульного программирования
- •Модуль, спецификация модуля
- •Разновидность модулей
- •Характеристики модуля:
- •Машинный код, языки программирования низкого уровня, язык ассемблера, ассемблер
- •Debug: ассемблирование и дизассемблирование
- •Строка в ассемблере, исполняемый файл. Трансляция программ
- •Программы ассемблера для компьютеров с процессором Intel.Типы программ на языке ассемблера
- •Средства dos вывода на экран в текстовом режиме
- •Способы моделирования (определения) в массиве
- •Клавиатурные функции dos и bios
- •Двухмерные массивы, вычисления адреса элемента
- •Машинная команда, части машиной команды
- •Директивы процессора (препроцессора)
- •Идентификаторы объектов программы, правила записи идентификаторов
- •Структура программы на языке ассемблера и ее описание
- •Организация цикла с помощью loop
- •Инкремент и декремент
- •Раздельная трансляция: назначение, варианты компоновки
- •!Высказывания, виды высказываний. Логические переменные и функции
- •Логические операции. Таблицы истинности логических операций
- •Заголовок модуля. Имена и идентификаторы в модуле
- •Структуры (тип данных) и объединения
Общий вид строк программ на языке ассемблера.
Строка имеет следующий синтаксический вид:
метка команда/директива операнд(ы) ;комментарии
Все поля не обязательны. Метка может быть любой комбинацией английских букв и символов. Второе поле содержит команды процессора, транспортируемые в исполняемый код или директиву управляющую работой ассемблера. Если команду или директиву необходимо продолжить на следующей строке, то используется символ обратный слеш: \.
По умолчанию язык ассемблера не различает заглавные и строчные буквы в написании команд или директив.
Метка: назначение, синтаксис, правила именования, директива метки, вызов метки
Метка в языке ассемблера может содержать следующие символы:
все буквы латинского алфавита;
цифры от 0 до 9;
спецсимволы: _, @, $, ?.
В качестве первого символа метки может использоваться точка, но некоторые компиляторы не рекомендуют применять этот знак. В качестве меток нельзя использовать зарезервированные имена Ассемблера (директивы, операторы, имена команд).
Первым символом в метке должна быть буква или спецсимвол (но не цифра). Максимальная длина метки – 31 символ. Все метки, которые записываются в строке, не содержащей директиву ассемблера, должны заканчиваться двоеточием :. Когда метка стоит перед директивой ассемблера, она оказывается операндом этой директивы.
Директивы, работающие напрямую с метками: LABEL, EQU и =.
Директива LABEL определяет метку и задает ее тип. Тип может быть одним из:
BYTE (байт),
WORD (слово),
DWORD (двойное слово),
FWORD (6 байт),
QWORD (учетверенное слово),
TBYTE (10 байт),
NEAR (ближняя метка),
FAR (дальняя метка).
Метка получает значение, равное адресу следующей команды или следующих данных, и тип, указанный явно.
В зависимости от типа команда mov метка,0 запишет в память байт , заполненный нулями, а команда call метка выполнит ближний или дальний вызов подпрограммы.
Директива EQU присваивает метке значение, которое определяется как результат целочисленного выражения в правой части.
Метка = выражение
Специальные предопределенные метки:
@date или ??date - это может быть текущая дата
@cpu - тип процессора
$ - текущий адрес
Псевдокоманды
Псевдокоманда— это директива ассемблера, которая приводит к включению данных или кода в программу, хотя сама она никакой команде процессора не соответствует. Псевдокоманды определения переменных указывают ассемблеру, что в соответствующем месте программы располагается переменная, определяют тип переменной (байт, слово, вещественное число и т.д.), задают ее начальное значение и ставят в соответствие переменной метку, которая будет использоваться для обращения к этим данным. Псевдокоманды определения данных записываются в общем виде следующим образом:
имя_переменной d* значение
где D* — одна из нижеприведенных псевдокоманд:
DB — определить байт;
DW — определить слово (2 байта);
DD — определить двойное слово (4 байта);
DF — определить 6 байт (адрес в формате 16-битный селектор: 32-битное смещение);
DQ — определить учетверенное слово (8 байт);
DT — определить 10 байт (80-битные типы данных, используемые FPU).
Поле значения может содержать одно или несколько чисел, строк символо, операторов ? и DUP, разделенных запятыми. Например:
text_string db 'Hello world!'
number dw 7
Если вместо точного значения указан знак ?, переменная считается неинициализированной и ее значение на момент запуска программы может оказаться любым.
Если нужно заполнить участок памяти повторяющимися данными, используется специальный оператор DUP.
