Читать «Assembler. Программирование на языке ассемблера IBM PC» онлайн - страница 20

Unknown Author

Выделив байт под переменную, ассемблер запоминает его адрес. Когда он снова встретит в тексте программы имя этой переменной, то он заменит его на данный адрес (в этой заменё и заключается трансляция имен). Таким образом, в отличие от машинного языка, в ЯА уже не надо следить за адресами ячеек, в которых размещаются переменные, а достаточно дать переменным имена и затем ссылаться на них по этим именам, все остальное сделает за нас ассемблер.

Адрес ячейки, выделенной переменной с именем X, принято называть значением имени X (не путать с содержимым ячейки по этому адресу!). Кроме того, по описанию переменной ассемблер запоминает, сколько байтов занимает переменная в памяти. Этот размер называется типом имени переменной. Значение (адрес) и тип (размер) имени переменной однозначно определяют ячейку, обозначаемую этим именем. Напомним, что с одного и того же адреса в ПК могут начинаться ячейки разных размеров - и байт, и слово, и двойное слово, поэтому кроме начального адреса ячейки надо знать и ее размер. В связи с этим ассемблер запоминает как адрес переменной, так и ее размер.

В языке Я А имеются так называемые операторы. Это общее название таких понятий, как функции и операции (типа арифметических). Об операторах рассказ впереди, а сейчас рассмотрим лишь один из операторов - оператор типа, который записывается так: 3

Значением этого оператора является размер (в байтах) ячейки, выделенной под переменную с указанным именем. Если переменная описана по директиве DB, т. е. как байтовая переменная, то для ее имени значение этого оператора равно 1.

Отметим, что в ЯА есть стандартная константа с именем BYTE и значением 1, поэтому можно записать так:

ТУРЕ X = BYTE = 1

Операнд - константное выражение со значением от -128 до 255

Мы рассмотрели, как можно описать переменную, которой не присваивается никакого начального значения. Но Я А позволяет описывать и переменные с на-чальными значениями. Для этого в качестве операнда директивы DB указывается выражение, которое ассемблер вычислит и значение которого запишет в ячейку, отведенную под переменную. Это и есть начальное значение переменной. Позже, при выполнении программы, его можно будет и изменить, можно будет что-то записать в эту ячейку, но к началу выполнения программы в этой ячейке уже будет находиться данное значение.

В простейшем и наиболее распространенном случае начальное значение байтовой переменной задается в виде числа с величиной от -128 до 255. Например:

A DB    254    ;    OFEh

В DB    -2    ;    OFEh    (=256-2=254)

С DB    17h    ;    17h

По каждой из этих директив ассемблер отводит один байт под переменную и записывает в этот байт указанное число. Таким образом, к началу выполнения программы переменная А будет иметь значение 254, переменная В - значение -2, а переменная С - значение 17h.