Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Программирование на ассемблере




Общие сведения

Текст исходной программы состоит из операторов ассемблера, каждый из которых занимает отдельную строку этого текста. Раз­личают два типа операторов: инструкции и директивы. Первые при трансляции преобразуются в команды процессора, которые исполня­ются после загрузки в память загрузочного модуля программы, имеющего расширение.COM или.EXE. Операторы второго типа уп­равляют процессом ассемблирования - преобразования текста ис­ходной программы в коды объектного модуля (расширение.OBJ). Ассемблер интерпретирует и обрабатывает операторы один за дру­гим, генерируя последовательность из команд процессора и байтов данных.

Особо следует остановиться на использовании макрокоманд. При программировании на макроассемблере можно формировать обра­щение к часто повторяющейся последовательности команд при помо­щи одного оператора. Этот прием несколько напоминает вызов подпрограмм в языках высокого уровня, но между ними лежит зна­чительное различие, заключающееся в том, что подпрограмма, за­нимающая некоторый участок памяти, может быть исполнена неогра­ниченное число раз путем передачи ей управления из вызывающей программы, в которую подпрограмма сама затем возвращает управ­ление. В ассемблере используются макровызовы макроопределений. Макроопределение - это последовательность операторов, которые могут содержать формальные параметры. Макроопределение и коман­да обращения к макроопределению (макровызов) образуют макроко­манду. Макровызов - это оператор вызова макроопределения. Если макроопределение содержит формальные параметры, то макровызов обязан содержать фактические значения этих параметров, которые будут подставлены вместо соответствующих формальных. В резуль­тате макровызовва формируется реальная последовательность ко­манд - макрорасширение. Макрорасширение вставляется в исходный текст программы на место оператора макровызова. Таким образом, в исходный текст программы макрорасширение одного и того же макроопределения может быть вставлено несколько раз, по числу макровызовов. Каждое макрорасширение после трансляции естест­венно занимает свой участок памяти.

В ассемблере имеется три вида вызова подпрограмм.

- CALL NEAR (короткий вызов);

- CALL FAR (длинный вызов);

- INT (прерывание),

но ни одн из них не содержит явного механизма передачи па­раметров. Этот механизм определяется внутренней организацией вызываемой подпрограммы.

Общий формат оператора ассемблера имеет следующий вид:

[Метка:]Код_операции[Операнд1[,Операнд2]][;Комментарий],

где элементы, указанные в квадратных скобках, могут отсутство­вать.

Пробелы вводятся произвольно, но минимум один пробел дол­жен быть после кода операции.

Метка - это идентификатор, присваиваемый первому байту того оператора, в котором она появляется.

Код_операции - это мнемоническое обозначение соответствую­щих команд процессора.

Операнды оператора ассемблера описываются выражениями. Вы­ражения конструируются на основе операций над числовыми и текс­товыми константами, метками и идентификаторами переменных с использованием знаков операций и некоторых зарезервированных слов. Ниже приведены все определенные в ассемблере операции. Порядок старшинства операций от высшей к низшей:

LENGTH, SIZE, WIDTH, MASK, (), [], <>

.

:

PTR, OFFSET, SEG, TYPE, THIS

HIGH, LOW

+ (unary), - (unary)

*, /, MOD, SHL, SHR

+, -

EQ, NE, LT, LE, GT, GE

NOT

AND

OR, XOR

SHORT,.TYPE

Старшинство операций определяет порядок, по которому будет вычисляться выражение. Более старшие операции будут произво­диться раньше операций, имеющих меньшее старшинство. Операции, стоящие в одной строке, имеют равный приоритет. Операции равного старшинства вычисляются слева направо. Операции, стоящие в скобках, выполняются первыми.

Пример оператора ассемблера: l0c_1: mov ax,(DAT_1+4) SHR 4, здесь использованы следующие операции ассемблера: (), + и SHR.

 





Поделиться с друзьями:


Дата добавления: 2016-10-06; Мы поможем в написании ваших работ!; просмотров: 436 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Если вы думаете, что на что-то способны, вы правы; если думаете, что у вас ничего не получится - вы тоже правы. © Генри Форд
==> читать все изречения...

2215 - | 2158 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.007 с.