Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Директивы задания констант




Для присвоения некоторому постоянному выражению символического имени (идентификатора) используется директива EQU или оператор «=», формат которых приведен на рис.5.8. В качестве выражения могут быть использованы константы, имена меток, имена и строки в кавычках.

 

Рис. 5.8. Директивы задания констант

 

С помощью директивы EQU идентификатору можно ставить в соответствие как числовые выражения (константы, формулы), так и текстовые строки, а оператор равенства может использоваться только с числовыми выражениями. Константы, определенные с помощью оператора «=», можно переопределять в исходном тексте программы, а определенные с использованием директивы EQU нельзя.

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

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

 

times EQU 10

fielda DB TIMES DUP (?)

 

В регистр СХ будет занесено значение 1EH:

 

countr EQU 1EH

...

MOV CX,countr

 

Директивой EQU можно задавать и символьные строки, например,

 

pre EQU 'PC'

 

C помощью директивы можно переименовать регистр:

 

akk EQU AX

MOV akk,25

 

Оператор «=» удобно использовать для определения простых абсолютных (то есть не зависящих от места загрузки программы в память) математических выражений. Причем в его выражениях можно использовать метки и ссылки на адреса – главное, чтобы в итоге получилось абсолютное выражение:

 

per1 DB 12, 7, 41

per2 DB 43, 5, 12, 'P', 21, 110

len = 43

len = len+1;можно и через предыдущее определение

len2 = per2 – per1;длина массива (три)

 

Вопросы для самопроверки

1. Определите символьную строку по имени tit, содержащую константу «Hello, world»?

2. Определите следующие значения в элементах данных с именами от fld1 до fld5:

2.1. двухбайтовый элемент, содержащий неопределенное значение;

2.2. однобайтовый элемент, содержащий шестнадцатеричный эквивалент десятичного числа 41;

2.3. однобайтовый элемент, содержащий шестнадцатеричный эквивалент десятичного числа –12;

2.4. массив четырехбайтовых элементов, содержащий последовательные значения: 16, 19, 20, 27, 30;

2.5. символьную строку 'Hello'.

3. Сколько байт в памяти будет зарезервировано в памяти следующей директивой:

per1 DB 20 DUP(30 DUP(5))

 

4. Имеется массив ARRAY DW 4, 41, 3H, 55H, 101B. Записать в регистр в AX третий элемент массива, а в регистр BX – пятый элемент массива.

5. Написать директиву привязки всех сегментных регистров к сегменту кода по имени text.

6. Написать две директивы описывающие сегмент стека по имени text.

7. В программе имеются три директивы:

 

per1 DB 5, 12, 1, 'А', 'ab'

per2 DB 3, 75, 11

per3 = per2 – per1

 

Чему равно значение директивы per3 в данном случае?

8. Сколько байт памяти зарезервирует следующая директива?

 

fld DB 'А и Б сидели на трубе'

 





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 555 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Наука — это организованные знания, мудрость — это организованная жизнь. © Иммануил Кант
==> читать все изречения...

2282 - | 2079 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.034 с.