Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
на печать11.doc
Скачиваний:
41
Добавлен:
11.06.2015
Размер:
1.04 Mб
Скачать

7.Директивы описания данных в языке ассемблера

Псевдокоманда - это директива ассемблера, которая приводит к включению

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

ответствующем месте программы располагается переменная, устанавливают ее

тип (байт, слово, вещественное число и т. д.), задают начальное значение и ставят

в соответствие переменной метку, которая будет использоваться для обращения

к этим данным. Псевдокоманды определения данных записываются в общем виде

следующим образом:

имя_переменной d* значение

где D* — одна из нижеприведенных псевдокоманд:

DB - определить байт;

DW - определить слово (2 байта);

DD - определить двойное слово (4 байта);

DF - определить 6 байт (адрес в формате 16-битный селектор: 32-битное сме-

щение);

DQ - определить учетверенное слово (8 байт);

DT - определить 10 байт (80-битные типы данных, используемые FPU).

Поле значения может содержать одно или несколько чисел, строк символов (взятых в одиночные или двойные кавычки), операторов ? и DUP, разделенных запятыми. Все установленные таким образом данные окажутся в выходном файле, а имя переменной будет соответствовать адресу первого из указанных Значений.

text_string db 'Hello world!'

number dw 7

table db 1,2,3,4,5,6,7,8,9,OAh,OBh,OCh,ODh,OEh,OFh

float number dd 3.5e7

заполняет данными 33 байта. Первые 12 байт содержат ASCII-коды символов строки Hello world!, и переменная text_string указывает на первую букву в этой строке, так что команда

mov al,text_string

считает в регистр AL число 48h (код латинской буквы Н). Если вместо точного значения указан знак ?, переменная считается неинициализированной и ее значение на момент запуска программы может оказаться любым. Если нужно заполнить участок памяти повторяющимися данными, используется специальный оператор DUP, имеющий формат счетчик DUP (значение). Например, вот такое определение:

table_512w dw 512 dup(?)

создает массив из 512 неинициализированных слов, на первое из которых указы вает переменная table_512w. В качестве аргумента в операторе DUP могут выступать несколько значений, разделенных запятыми, и даже дополнительные вложенные операторы DUP.

8.Типы данных языка ассемблера. Константы на языке ассемблера. Адресные выражения. Типы данных • байт — восемь последовательно расположенных битов, пронумерованных от 0 до 7, при этом бит 0 является самым младшим значащим битом; • слово — последовательность из двух байт, имеющих последовательные адреса. Размер слова — 16 бит; биты в слове нумеруются от 0 до 15. Байт, содержащий нулевой бит, называется младшим байтом, а байт, содержащий 15-й бит - старшим байтом. Микропроцессоры Intel имеют важную особенность — младший байт всегда хранится по меньшему адресу. Адресом слова считается адрес его младшего байта. Адрес старшего байта может быть использован для доступа к старшей половине слова. • двойное слово — последовательность из четырех байт (32 бита), расположенных по последовательным адресам. Нумерация этих бит производится от 0 до 31. Слово, содержащее нулевой бит, называется младшим словом, а слово, содержащее 31-й бит, - старшим словом. Младшее слово хранится по меньшему адресу. Адресом двойного слова считается адрес его младшего слова. Адрес старшего слова может быть использован для доступа к старшей половине двойного слова. • учетверенное слово — последовательность из восьми байт (64 бита), расположенных по последовательным адресам. Нумерация бит производится от 0 до 63. Двойное слово, содержащее нулевой бит, называется младшим двойным словом, а двойное слово, содержащее 63-й бит, — старшим двойным словом. Младшее двойное слово хранится по меньшему адресу. Адресом учетверенного слова считается адрес его младшего двойного слова. Адрес старшего двойного слова может быть использован для доступа к старшей половине учетверенного слова. Константы Ассемблер поддерживает два типа констант: числовые константы и строковые константы. Числовые константы Числовые константы должны быть целыми и принимать значения в диапазоне от -2147483648 до 4294967295. По умолчанию числовые константы являются десятичными, однако встроенный ассемблер поддерживает также двоичные, восьмеричные и шестнадцатиричные константы. Двоичное представление обозначается записью после числа B, восьмеричное - записью буквы O, а шестнадцатиричное - записью после числа H или указанием перед числом $. Числовые константы должны начинаться с одной из цифр или символа $. Таким образом, когда вы записываете шестнадцатиричную константу с помощью суффикса H, то если первой значащей цифрой является одна из шестнадцатиричных цифр от A до F, то требуется дополнительный ноль. Например, 0BAD4H и $BAD4 представляют собой шестнадцатиричные константы, а BAD4H - это идентификатор, так как он начинается с буквы, а не с цифры. Строковые константы Строковые константы должны заключаться в одиночные или двойные кавычки. Указание двух последовательных кавычек одного типа вкачестве закрывающих кавычек считается за один символ. Приведем некоторые примеры строковых констант: 'Z' 'Borland Pascal' "That's all folks" '"That''s all falks," he said.' '100 '"' "'" Заметим, что в четвертой строке для обозначения одиночного символы кавычки используется две последовательных одиночных кавычки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]