Читать «Assembler. Программирование на языке ассемблера IBM PC» онлайн - страница 20
Unknown Author
Выделив байт под переменную, ассемблер запоминает его адрес. Когда он снова встретит в тексте программы имя этой переменной, то он заменит его на данный адрес (в этой заменё и заключается трансляция имен). Таким образом, в отличие от машинного языка, в ЯА уже не надо следить за адресами ячеек, в которых размещаются переменные, а достаточно дать переменным имена и затем ссылаться на них по этим именам, все остальное сделает за нас ассемблер.
Адрес ячейки, выделенной переменной с именем X, принято называть значением имени X (не путать с содержимым ячейки по этому адресу!). Кроме того, по описанию переменной ассемблер запоминает, сколько байтов занимает переменная в памяти. Этот размер называется типом имени переменной. Значение (адрес) и тип (размер) имени переменной однозначно определяют ячейку, обозначаемую этим именем. Напомним, что с одного и того же адреса в ПК могут начинаться ячейки разных размеров - и байт, и слово, и двойное слово, поэтому кроме начального адреса ячейки надо знать и ее размер. В связи с этим ассемблер запоминает как адрес переменной, так и ее размер.
В языке Я А имеются так называемые операторы. Это общее название таких понятий, как функции и операции (типа арифметических). Об операторах рассказ впереди, а сейчас рассмотрим лишь один из операторов - оператор типа, который записывается так: 3
Значением этого оператора является размер (в байтах) ячейки, выделенной под переменную с указанным именем. Если переменная описана по директиве DB, т. е. как байтовая переменная, то для ее имени значение этого оператора равно 1.
Отметим, что в ЯА есть стандартная константа с именем BYTE и значением 1, поэтому можно записать так:
ТУРЕ X = BYTE = 1
Мы рассмотрели, как можно описать переменную, которой не присваивается никакого начального значения. Но Я А позволяет описывать и переменные с на-чальными значениями. Для этого в качестве операнда директивы DB указывается выражение, которое ассемблер вычислит и значение которого запишет в ячейку, отведенную под переменную. Это и есть начальное значение переменной. Позже, при выполнении программы, его можно будет и изменить, можно будет что-то записать в эту ячейку, но к началу выполнения программы в этой ячейке уже будет находиться данное значение.
В простейшем и наиболее распространенном случае начальное значение байтовой переменной задается в виде числа с величиной от -128 до 255. Например:
A DB 254 ; OFEh
В DB -2 ; OFEh (=256-2=254)
С DB 17h ; 17h
По каждой из этих директив ассемблер отводит один байт под переменную и записывает в этот байт указанное число. Таким образом, к началу выполнения программы переменная А будет иметь значение 254, переменная В - значение -2, а переменная С - значение 17h.