русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Директива DB


Дата добавления: 2013-12-23; просмотров: 2024; Нарушение авторских прав


Директивы определения данных

Чтобы различать эти случаи, вводят термины

NEG А A DB 1

"ссылка назад" и "ссылка вперед".

Ссылка назад (см. слева) - это ссылка на имя, которое по тексту программ описано раньше,

а ссылка вперед (см. справа) - это ссылка на имя, которое будет описано позже.

 

При трансляции ассемблер просматривает текст программы на ЯА сверху вниз.

 

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

 

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

 

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

- Одна из них предназначена для описания данных размером в байт,

- вторая - для описания данных размером в слово

- а третья - для описания данных размером в двойноеслово.

- В остальном эти директивы практически не отличаются друг от друга.

 

По директиве DB (define byte, определить байт) определяются данныеразмером в байт.

 

Ее синтаксис (без учета возможного комментария в конце) таков:

 

[имя] DB <операнд> {,<операнд>}

 

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

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



 

 

Существует два основных способа задания операндов директивы DB:

· ? (знак неопределенного значения),

· константное выражение со значением

от -128 до 255.

 

Остальные способы задания операндов производны от этих двух.

Операнд ?

 

Возможный пример:

X DB ?

 

По этой директиве описывается переменная X.

Для нее отводится один байт памяти, в который ничего не записывается (в этом байте будет то, что осталось от предыдущей программы, и предугадать, что там находится, нельзя).

В этом случае говорят, что переменная не получает начального значения.

Где отводится этот байт?

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

Поэтому, встречая директиву DB, он

- отводит под указанную переменную первыйиз еще незанятых байтов памяти.

Это следует учитывать и,

 

 

например,

не надо вставлять директиву DB между командами.

Выделив байт под переменную, ассемблер

- запоминаетего адрес.

Когда он снова встретит в тексте программы имя этой переменной, то он заменит его на данный адpec(в этой замене и заключается трансляция имен).

 

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

 

Адрес ячейки, выделенной переменной с именем X, принято называть значением Х (не путать с содержимым ячейки по этому адресу!).

Кроме того, по описанию переменной ассемблер запоминает, сколько байтов занимает переменная в памяти.

Этот размерназывается типом имени переменной.

 

Значение (адрес) и тип (размер) имени переменной однозначно определяют ячейку, обозначаемую этим именем.

 

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

-и байт,

и слово,

и двойное слово,

 

поэтому кроме начального адреса ячейки надо знать и ее размер.

В связи с этим ассемблер запоминает как адреспеременной, так и ее размер.

 

В языке ЯА имеются так называемые операторы.

 

Это общееназвание такихпонятий как функции и операции(типа арифметических).

 

Об операторах рассказ впереди, а сейчас рассмотрим лишь один из операторов - оператор типа, который записывается так:

 

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

 

Если переменная описана по директиве DB, т. е. как байтовая переменная, то для ее имени значение этого оператора равно 1.

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

 

TYPE X = BYTE = 1

 

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

от -128 до 255

 

Мы рассмотрели, как можно описать переменную, которой не присваивается никакого начального значения.

Но ЯА позволяет описывать и переменные с на­чальными значениями.

Для этого в качестве операнда директивы DBуказывается выражение, которое ассемблер

- вычислит и значение которого

- запишет в ячейку, отведенную под переменную.

 

Это и есть начальное значение переменной.

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

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

Например:

 



<== предыдущая лекция | следующая лекция ==>
А DB I NEG A | Директива с несколькими операндами


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.