Операнды команд

Непосредственные операнды – это те операнды, которые записываются в сам код команды.

Константы могут представлять сами непосредственные операнды или абсолютные адреса памяти.

Имена – это адреса ячеек памяти. При трансляции ассемблер преобразует имена в адреса. Способ преобразования имени в значение зависит от принятых способов адресации. Основным способом адресации в машинных языках является относительная адресация: адрес в команде задается в виде смещения относительно какого-либо базового адреса, значение которого содержится в некотором базовом регистре. В качестве базового могут применяться или специальные регистры DS, CS (для Intel), или РОН (для RISC-архитектур).

Литералы – это записанные в особой форме константы. Физически литералы – это те же имена. При появлении в программе литерала ассемблер выделяет ячейку памяти и записывает в нее заданную в литерале константу. Далее при появлении этого литерала ассемблер заменяет далее все появления этого литерала на обращение по адресу этой ячейки. Таким образом, литеральные константы хранятся в памяти в одном экземпляре независимо от числа обращений к ним.

Специальный синтаксис – это явное описание способа адресации, т.е. указание базового регистра и смещения.

Директивы.

Директивы являются указаниями ассемблеру о том, как проводить ассемблирование.

EQU – директива определения имени. Перед этой директивой обязательно стоит имя, а операнд этой директивы определяет значение имени. Операндом может быть выражение, вычисляемое при ассемблировании. Имя также может определятся другим именем.

DD – директива определения данных. Выделяет ячейки памяти и записывает в них значения, определяемые операндом директивы. Одной директивой могут определяться несколько объектов данных. В ассемблерах могут существовать либо одна общая директива DD, тогда тип данных, размещаемых в памяти, определяется формой записи операндов, либо несколько подобных директив для разных типов данных.

BSS – директива резервирования памяти. Выделяет ячейки памяти, но значения в них не записывает. Объем выделяемой памяти определяется операндом директивы.

END – директива конца программного модуля. Указывает ассемблеру на прекращение трансляции. В главном модуле операндом этой директивы является имя точки, на которую передается управление при начале выполнения программы. Во всех других модулях эта директива употребляется без операндов.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: