
- •Команды и директивы
- •Общая структура программы на ассемблере
- •Основные элементы языка ассемблер:
- •Прямая адресация
- •Базовые команды передачи управления
- •Косвенный ближний (внутрисегментный) переход
- •Переходы по условию
- •Команды перехода по условию
- •Цикл со счетчиком
- •Процедуры
- •Доступ к параметрам
- •Средства обработки чисел с плавающей запятой
- •Архитектура сопроцессора
- •Форматы команд
Основные элементы языка ассемблер:
По сравнению с другими языками программирования в ассемблере редко используют непосредственные данные, к которым относятся цифровые литералы. Целочисленные константы, при написании в программе должны оканчиваться дополнительными буквенными символами, которые являются указателями базы системы счислений. Если 16-ричная константа начинается с буквы, то перед ней ставится 0. Шестнадцатеричная система счисления определяется буквой h, для восьмеричной q, для двоичной – b, для десятичной – d. Значение константного выражения определяется во время трансляции программы и не меняется во время выполнения программы.
Директивы инициализации и описания данных на языке ассемблер
Практически любая программа содержит в себе некоторый набор данных. Для описания простых типов данных в программе используют специальные директивы резервирования и инициализации данных, которые являются указанием транслятору на выделение определенного объема памяти. Машинного эквивалента этим директивам нет. Просто транслятор обрабатывает каждую такую директиву, выделяет необходимое количество байт памяти и при необходимости инициализирует эту область некоторыми значениями. DB,DW,DD – байт, слово, двойное слово соответственно.
Определение байта
Всегда следует помнить, что в каких-либо системах счисления мы не записывали бы данные, в памяти компьютера они хранятся в двоичном коде. Если мы говорим, что в какой-то ячейке записано десятичное число, то мы имеем в виду не физическое содержание ячейки, а лишь форму представления этого числа в исходном коде программы.
Множественная инициализация
Имя переменной может указывать на начало последовательности байт. Множественная инициализация используется для присвоения значений определенным байтам. Каждый инициализатор может использовать любое основание системы счисления при последовательном присвоении значения. Эти значения могут быть цифрами, символами, строковыми константами
Представление строк и символов
LongString db “this is long string, that”
db “clearly is going to take ”
db “several lines to shore “,0
Основные типы операндов
Большинство команд процессора вызываются с аргументами, которые в ассемблере принято называть операндами. Существует 3 основных типа операндов:
непосредственные операнд (immediate) является константой
регистр – представляет значение одного из регистров памяти (register)
память (memory) ссылается на значение в памяти
Процедура нахождения операнда для выполняемой команды называется способом или режимом адресации. Если команда использует 2 операнда, то для каждого из них должен быть задан способ адресации (!). Режимы адресации первого и второго операнда могут не совпадать. (!) Способы адресации являются элементом архитектуры процессора, отражая заложенные в нем возможности поиска операнда. (!) Не только названия режимов адресации, но даже и их количество могут различаться. Способов адресации столько, сколько их реализовано в процессоре. Непосредственная адресация: её особенностью является то, что в команде содержится не адрес операнда, а сам операнд. Её применяют для хранения различного рода констант. Операнд указывается в команде и после трансляции поступает в код команды. Непосредственные операнды определяются константным выражением, таким как число, символьная константа, арифметическое выражение или символическая константа. При непосредственной адресации не требуется обращение к памяти для выборки операнда и ячейки памяти для его хранения, что способствует уменьшению времени выполнения программы и занимаемого ею объема памяти.