Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Assembler -курс лекций, 4 семестр.docx
Скачиваний:
13
Добавлен:
20.09.2019
Размер:
62.05 Кб
Скачать

“”Письменные лекции ассемблер”” Основные элементы языка ассемблер

Ассемблер предназначен для написания программ эффективных во времени и потреблении ресурсов. Структура программы на языке ассемблер зависит от того, для какой платформы мы пишем программу. По сравнению с другими языками программирования ассемблер имеет простейший синтаксис. Его особенностью является, по сравнению с машинными командами, 1) символичное наименование операторов и операндов, 2) отсутствие привязки к конкретным адресам памяти, 3) использование макросредств.

Утверждение языка ассемблер состоит из простых значений, литералов, имен, мнемокодов, операндов и комментариев. Мнемокод – это символическое обозначение команды или псевдокоманды.

Утверждения ассемблера бывают 4 типов:

  1. Команды или инструкции представляют собой символические аналоги машинных команд. В процессе трансляции инструкции ассемблера преобразуются в соответствующие команды системы команд микропроцессора.

  2. Макрокоманды – оформляемые определенным образом предложения текста программы, замещаемые во время трансляции другими предложениями

  3. Директивы – являются указанием транслятору ассемблера на выполнение некоторых действие. У директив нет аналогов в машинном представлении

  4. Строки комментариев – игнорируются транслятором

Команды и директивы

Формат директив и команд практически одинаковый. Команды – это утверждение, выполняемые в программе, а директивы – это утверждения для информирования ассемблера о том, как создавать выполняемый код. Утверждения имеют свободную форму записи, это значит, что их можно записывать с любой колонки, с произвольным количеством пробелов между операндами, но до комментария должен быть хотя бы один пробел, но утверждение должно быть записано в одной строке не заходя за 128 колонку. Имя интерпретируется как метка, переменная или ключевое слово, поэтому за ним всегда следует двоеточие. Имена имеют следующее ограничение: заглавные и строчные буквы не различаются, имя никогда не должно начинаться с цифры и следует избегать начало имени с «@». Различия между командами и директивами проявляется при ассемблировании. Директива – это утверждение, которое выполняется ассемблером во время трансляции исходной программы и получения машинных кодов. Директивы управляют работой компилятора или компоновщика, а не микропроцессора. Директивы используются для сообщения компилятору, какие константы применяются в программе, какие имена присвоены константами, какие сегменты относятся к сегменту кода, стека или данных, в каком формате выводится листинг исходного кода.

Команды ассемблера могут быть следующих типов: команды передачи управления, команды передачи данных, арифметические команды, логические команды, команды переходов, команды ввода/вывода (чтение из аппаратного порта)

Общая структура программы на ассемблере

  1. Заголовок программы на языке ассемблер – необязательный элемент (title)

  2. Упрощенный формат сегмента памяти (модель памяти) .MODEL [разрядность] модель [язык]. Разрядность – USE16, USE32. Модель памяти 1 .Model TINY не выделяют сегмент данных и стек. Эта модель предназначена для создания файлов типа com. Модель памяти 2 .Model SMALL 64кб на код и 64кб на данные. Модель памяти 3 .Model MEDIUM для хранения данных и сложных вычислительных алгоритмов. Модель памяти 3 .Model COMPACT должен быть использован большой объем памяти под данные. Также есть .Model LARGE и .Model HUGE

  3. Сегмент стека .STACK - эта директива предназначена для организации структуры памяти и установления размер пространства для стека. Если не указывается размер стека, то под него выделится 100кб.

  4. Сегмент данных .DATA директива организации структуры памяти, которая начинает или продолжает сегмент данных, где хранятся переменные. Данная директива используется при наличии директивы, определяющей модель памяти

  5. Сегмент кода .CODE – является директивой организации структуры памяти и отмечет начало сегмента кода, где должны находиться выполняемые команды. Данная директива используется только при наличии директивы модели памяти. Для малой и компактной модели памяти может быть только один сегмент кода и имя этому сегменту не присваивается. Для других моделей памяти допускается определение нескольких сегментов кода и различаются они между собой по именам.

  6. Директива .PROC – объявляет начало процедуры, endp – конец процедуры, при этом процедуры в языке ассемблер не могу перекрываться.

  7. Директива END – заканчивает программу, присутствует в программе всегда

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]