русс | укр

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

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

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

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


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

Определение данных


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


Директивы ассемблера ASM386/486, указанные в таблице 18-2, выделяют память для числовых переменных и констант. Как и другие директивы по распределению памяти, ассемблер связывает тип с любой переменной, определенной с помощью этих директив. Величина типа измеряется в единицах памяти - байтах(10 для DT, 8 для DQ). Ассемблер проверяет соответствие типа переменной, используемой в команде, самой команде. Например, команда FIADD ALPHA будет ошибочна, если тип переменной ALPHA имеет величину, не равную 2 или 4 байтам, так как целочисленное сложение определено только для данных типа слово или короткое целое (двойное слово). Тип операнда также сообщает ассемблеру какую машинную команду выполнять: хотя для программиста существует только одна команда FIADD, но для операндов различного типа требуются различные машинные команды.

Иногда разумно использовать команду с операндом, тип которого не объявлен. Например, если регистр BX содержит указатель на переменную типа короткое целое, то программист может пожелать определить команду FIADD [BX]. Это может быть достигнуто информированием процессора о типе операнда в команде, то есть FIADD DWORD PTR [BX]. Соответствующие преобразователи для других рапределений памяти - WORD PTR, QWORD PTR и TBYTE PTR.

Однако ассемблер не проверяет типы операндов, используемых в командах управления процессором. Команда FRSTOR [BP] подразумевает, что программист поместил в регистр BP указатель на место (возможно в стеке), в котором заранее была сохранена запись о состоянии процессора размером 94 байта.

Начальное значение для числовых констант может быть получено несколькими способами. Двоичные целые константы могут быть определены как битовые строки, десятичные целые, восьмеричные целые или шестнадцатиричные строки. Упакованные десятичные величины обычно записываются как десятичные целые, хотя ассемблер будет принимать и обрабатывать и другие представления целых. Вещественные величины могут записываться как обычные вещественные десятичные числа (с десятичной точкой), как десятичные числа в научной нотации или как шестнадцатиричные строки. Использование шестнадцатиричных строк первоначально было предназначено для определения специальных величин, таких как бесконечности, NaNs и ненормализованные числа. Большинство программистов найдут, что обычные и научные десятичные дают простейший способ инициализации числовых констант. На рисунке 18-2 дан пример, показывающий несколько способов пррисвоения данным различных числовых типов одной и той же начальной величины.



Таблица 18-2. Директивы распределения памяти ASM386/486. +---------------------------------------------------------------+| Директивы | Интерпретация | Типы данных |+-------------+----------------------+--------------------------|| DW | Определить слово | Целое слово || DD | Определить двойное | Короткое целое, короткое || | слово | вещественное || DQ | Определить слово | Длинное целое, длинное || | длиной 4 байта | вещественное || DT | Определить 10 байтов| Упакованное десятичное, || | | временное вещественное |+---------------------------------------------------------------+ +---------------------------------------------------------------+| || ; ПРИМЕР ОПРЕДЕЛЕНИЯ КОНСТАНТЫ -126 || ; || ;EVEN ; выравнение слов в памяти || WORD-INTEGER DW 111111111000010B ; битовая строка || SHORT_INTEGER DD 0FFFFFF82H ; шестнадцатиричная || ; константа должна || ; начинаться с цифры || LONG_INTEGER DQ -126 ; обычное десятичное || SINGLE_REAL DD -126.0 ; "научное" || DOUBLE_REAL DD -1.26E2 ; представление || PACKED_DECIMAL DT -126 ; обычное десятичное || ; целое || ; || ; в следующем определении 'C005' означает знак и порядок, || ; '7E00..00' - мантисса, 'R' информирует ассемблер, что || ; представленная строка вещественного типа || ; || EXTENDED_REAL DT 0C0057E00000000000000R || |+---------------------------------------------------------------+ Рисунок 18-2. Пример числовых констант.

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



<== предыдущая лекция | следующая лекция ==>
PL/M-386/486 | Структуры и записи


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


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

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

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


 


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

 
 

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

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