Инструменты пользователя

Инструменты сайта


examination:asm:question11

Вопрос №11. Константы и переменные с начальным значением, их задание и использование на ЯА. Примеры.

Константы

Под константы, определенные в программе не выделяются участки памяти, они просто присваиваются во время компиляции программы, однако значения константы не могут быть изменены в процессе выполнения. Константы служат своего рода заменителями числовых значений в коде, записываются в виде

My_constant = 100

Mov ax, My_constant

При компиляции этого участка кода, в команде моv будет просто произведена замена буквенной переменной на числовую.

Целочисленные константы

Целочисленная константа (или целочисленный литерал) состоит из необязательного знака, одной или нескольких цифр и необязательного символа — суффикса (называемого основанием), который показывает, к какой системе счисления относится это число:

[{+ I -.}] цифры [основание]

Запись в квадратных скобках […] означает, что находящийся в них элемент не является обязательным и его можно опустить. Запись в фигурных скобках {…} означает, что нужно выбрать один из элементов, разделенных символом вертикальной черты |. Если основание в целочисленной константе не указано, предполагается, что число десятичное. Если шестнадцатеричная константа начинается с буквы, перед ней должен ставиться символ нуля (0), чтобы ассемблер не воспринял эту константу как идентификатор.

Вещественные константы

Существует два типа вещественных констант: десятичные и закодированные (шестнадцатеричные). Десятинные вещественные константы состоят из необязательного знака, за которым следует одна или несколько цифр, десятичная точка и еще несколько цифр, выражающих дробную часть числа, а затем показатель степени:

[знак]цифры. [цифры] [степень]

Ниже приведены определения понятий знак и степень:

знак {+ I -}

степень E [ {+ | -}]цифры

Поле знака является необязательным, в котором может находиться математический знак + или -. Ниже приведены примеры правильных вещественных констант:

2. + 3.0 -44.2E+05 26.E5

В самом простейшем случае для определения вещественной константы достаточно указать цифру и десятичную точку. Без десятичной точки эту константу компилятор будет считать целой.

Закодированные вещественные константы

Вещественную константу можно также задать и в шестнадцатеричном виде в форме закодированного вещественного числа. Разумеется, для этого нужно знать точный формат представления вещественных чисел в двоичном виде. Ниже приведен пример закодированного 4-байтового вещественного числа, соответствующего десятичному числу +1. 0:

3F800000r

Символьные константы

Символьной константой называется один символ, заключенный в одинарные или двойные кавычки. Ассемблер автоматически заменяет символьную константу на соответствующий ей ASCII-код. Вот несколько примеров:

'A'

«d»

Строковые константы

Строковой константой называется последовательность символов, заключенных в одинарные или двойные кавычки. Вместо нее ассемблер автоматически подставляет последовательность ASCII-кодов, соответствующих каждому символу строковой константы. Вот несколько примеров:

'ABC' 'X' «Привет, Вася!» ‘4096’

Если внутри строковой константы должен использоваться символ одинарной или двойной кавычки, это делается так, как показано ниже:

«Буква 'а' – первый символ алфавита» 'Он воскликнул: «Привет!», и зашел в комнату.'

Типизированные константы, несмотря на такое неудачное название и несмотря на то, что они объявляются в разделе констант const, в действительности могут являться не константами, а переменными, инициализируемыми при их объявлении, т.е. получающими начальное значение.

Типизированные константы могут использоваться для задания начальных значений локальным переменным, а при желании - и глобальным переменным. Подробнее об инициализации переменных см. в разд.

Типизированные константы ( переменные со стартовым значением) могут быть и глобальными, и локальными, как любые другае переменные. Но даже если объявляется переменная со значением внутри процедуры, т.е. заведомо локальная, то ее значение будет размещено не в стеке, а в сегменте данных.

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

Типизированная константа не может иметь файловый или процедурный тип.

Поскольку типизированная константа фактически представляет собой переменную с константным значением, она не может заменять обычную константу. Например, она не может использоваться в объявлении других констант или типов.

К структурированным типизированным константам относятся константы типа массивов, записей и множеств. Определение констант типизированного типа выполняется в разделе CONST после предварительного определения типа массивов в разделе TYPE. Определение константы состоит из имени константы, за которым после двоеточия записывается имя типа и далее через знак равенства - значение константы в виде множества констант, разделенных запятыми и заключенными в скобки.

examination/asm/question11.txt · Последние изменения: 2014/01/15 08:12 (внешнее изменение)