- •!Производительность вс
- •Методы и средства повышения надежности эвм
- •Регистр флагов
- •Способы адресации
- •Команды пересылки данных, синтаксис команд.
- •Команды двоичной арифметики, синтаксис команд.
- •Команды логических операций, синтаксис команд.
- •Псевдокоманды
- •Общий вид строк программ на языке ассемблера.
- •Метка: назначение, синтаксис, правила именования, директива метки, вызов метки
- •Организация сегментов: сегменты и их значения, порядок следования и синтаксис
- •Оператор, операнд. Операторы адресации
- •Другие операторы(дополнительные) и их описание
- •Макроопределение
- •Прерывание dos
- •Символьный ввод/вывод, функции.
- •Прерывание и функции работы с мышью
- •Прерывание и функции системного таймера
- •Команды передачи управления
- •Команды безусловного перехода: синтаксис и область использования
- •Команды условного перехода: мнемоника и таблица условных переходов, операнд команд
- •Комментарии в программе
- •Модульное программирование
- •Концепция модульного программирования
- •Модуль, спецификация модуля
- •Разновидность модулей
- •Характеристики модуля:
- •Машинный код, языки программирования низкого уровня, язык ассемблера, ассемблер
- •Debug: ассемблирование и дизассемблирование
- •Строка в ассемблере, исполняемый файл. Трансляция программ
- •Программы ассемблера для компьютеров с процессором Intel.Типы программ на языке ассемблера
- •Средства dos вывода на экран в текстовом режиме
- •Способы моделирования (определения) в массиве
- •Клавиатурные функции dos и bios
- •Двухмерные массивы, вычисления адреса элемента
- •Машинная команда, части машиной команды
- •Директивы процессора (препроцессора)
- •Идентификаторы объектов программы, правила записи идентификаторов
- •Структура программы на языке ассемблера и ее описание
- •Организация цикла с помощью loop
- •Инкремент и декремент
- •Раздельная трансляция: назначение, варианты компоновки
- •!Высказывания, виды высказываний. Логические переменные и функции
- •Логические операции. Таблицы истинности логических операций
- •Заголовок модуля. Имена и идентификаторы в модуле
- •Структуры (тип данных) и объединения
Организация сегментов: сегменты и их значения, порядок следования и синтаксис
Сегмент – кусок кода программы. Виды сегментов:
1. Сегмент кода – содержит машинные команды для выполнения.
2. Сегмент данных – содержит данные, константы и рабочие области, необходимые программе.
3. Сегмент стека - содержит адреса возврата как для программы , так и для вызовов подпрограмм, а также используется для передачи параметров в процедуры.
Сегмент программы описывается директивами SEGMENT и ENDS.
Базовый синтаксис:
имя_сегмента segment readonly выравн. тип разряд 'класс'
...
имя_сегмента ends
Имя сегмента — метка для получения сегментного адреса, а также для комбинирования сегментов в группы.
Выравнивание. Указывает ассемблеру и компоновщику, с какого адреса может начинаться сегмент. Значения этого операнда:
BYTE — с любого адреса;
WORD — с четного адреса;
DWORD — с адреса, кратного 4;
PARA — с адреса, кратного 16 (граница параграфа);
PAGE — с адреса, кратного 256.
Тип. Выбирает один из возможных типов комбинирования сегментов:
тип PUBLIC (все такие сегменты с одинаковым именем, но разными классами будут объединены в один);
тип STACK — загоняет все сегменты в стек
PRIVATE (значение по умолчанию) — сегмент такого типа не объединяется с другими сегментами.
Разрядность определяет максимальный разряд сегмента.
• USE16 ( до 64 Кб)
• USE32. (до 4 Гб)
Класс сегмента — это любая метка, взятая в одинарные кавычки.
Для обращения к любому сегменту следует сначала загрузить его сегментный адрес в какой-нибудь сегментный регистр.
assume регистр:связь...
Директива ASSUME указывает ассемблеру, с каким сегментом или группой сегментов связан тот или иной сегментный регистр.
Выражения, операторы <>,(), арифметические операторы
Выражение— это набор чисел, меток или строк, связанных друг с другом операторами. Все выражения вычисляются в ходе ассемблирования программы, в полученном коде используются только значения.
Оператор <>(угловые скобки). Часть выражения, заключенная в угловые скобки, не вычисляется, а применяется как строка символов.
Оператор () (круглые скобки). Часть выражения, заключенная в круглые скобки, вычисляется в первую очередь.
mov al, 2*(3+4) ;
mov al,14
Арифметические операторы: + (плюс), – (минус), * (умножение), / (целочисленное деление), MOD (остаток от деления). Они выполняют соответствующие арифметические действия.
Кроме того, к арифметическим операторам относится унарный минус — минус, который ставят перед отрицательным числом.
Операторы сравнения: EQ (равно), GE (больше или равно), GT (больше), LE (меньше или равно), LT (меньше), NE (не равно). Результат действия каждого из этих операторов — 1, если условие выполняется, и 0 — если не выполняется.
Оператор, операнд. Операторы адресации
Операнд– объект, над которым выполняется машинная команда или оператор языка программирования.
Команда может иметь один или два операнда, или вообще не иметь операндов. Число операндов неявно задается кодом команды.
В качестве операндов могут выступать
идентификаторы;
цепочки символов, заключенных в одинарные или двойные кавычки;
целые числа в двоичной, восьмеричной, десятичной или шестнадцатеричной системе счисления.
Операторы адресации:
SEG выражение — сегментный адрес;
OFFSET выражение — смещение;
THIS тип — текущий адрес (MASM и TASM);
Тип PTR выражение — переопределение типа;
LARGE выражение — 32-битное смещение (TASM и WASM);
SMALL выражение — 16-битное смещение (TASM и WASM);
SHORT выражение — 8-битное смещение.
SEG и OFFSET возвращают соответствующую часть адреса своего аргумента:
THIS создает операнд, адресом которого является текущее значение счетчика:
PTR создает аргумент, адресом которого является значение выражения, а тип указан явно:
LARGE, SMALL и SHORT используются с командами передачи управления, если возникают двусмысленности при косвенных переходах.
