Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kharakhnin / ПОСОБИЕ_Харахнин.doc
Скачиваний:
278
Добавлен:
08.03.2016
Размер:
17.89 Mб
Скачать

Ozu_org xdata 0800h; Адрес начала области внешнего озу.

OZU_END XDATA 0FFFH; Адрес конца области внешнего ОЗУ.

2.4.2. Директивы резервирования и инициализации памяти

Эти директивы используются для резервирования и инициализации слов, байтов или битов. В абсолютном сегменте зарезервированное пространство начинается с текущего адреса. В перемещаемом сегменте зарезервированное пространство начинается с текущего смещения. Указатель расположения поддерживается отдельно для каждого сегмента, к нему можно обращаться, используя символ ($).

DB Заносит в память программ байтовую константу.

Директива имеет следующий формат: label: DB expression , expression …,

где label: - метка, адрес инициализированной памяти, expression - значение байта, которое может быть символом, символьной строкой или выражением.

Директива DB может быть определена только внутри сегмента кода. Если директива используется в другом сегменте, ассемблер генерирует сообщение об ошибке.

Пример: TABLE: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH

DBIT Резервирует пространство в битовом сегменте (20Н – 2FH).

Директива имеет следующий формат: Метка: DBIT выражение.

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

Пример:

ON_FLAG: DBIT 1 ;резервируется 1 бит.

OFF_FLAG: DBIT 1

DS Резервирует пространство памяти в текущем сегменте.

Директива имеет следующий формат: label: DS expression,

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

Директива резервирует пространство в текущем сегменте по текущему адресу. Затем текущий адрес увеличивается на значение выражения. Сумма счётчика адреса и значения выражения не может превышать границу текущего адресного пространства.

Пример: TIME: DS 8

DW Инициализирует память значением слова.

Директива DW инициализирует память программ 16-разрядными значениями слова. Директива имеет следующий формат:

label: DW expression , expression …,

где label: - метка, присвоенная адресу зарезервированной памяти, expression - выражения - данные, которые могут содержать символ, символьную строку или выражение.

Директива может быть определена только внутри сегмента кода. Если директива используется в другом сегменте, ассемблер генерирует сообщение об ошибке.

Пример: TABLE: DW 3F06H, 5B4FH, 666DH, 7D07H,7F6FH

2.4.3. Директивы управления состоянием ассемблера

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

END Сообщает о конце транслируемого модуля.

Директива END сообщает о конце ассемблерного модуля. Любой текст в ассемблерном файле, который появляется после этой директивы, игнорируется. Директива требуется в каждом исходном ассемблерном файле. Если директива отсутствует, ассемблер генерирует сообщение о фатальной ошибке.

Пример: ORG 0100H

.

END

ORG Изменяет значение ассемблерного счётчика адреса текущего сегмента программы.

Директива ORG ( начало) имеет следующий формат: ORG выражение.

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

Пример: ORG 0000H ; Стартовый адрес прикладной программы

JMP START ;

ORG 000BH ; Адрес - вектор прерывания при переполнении JMP INT_TIMER0 ; таймера счетчика 0.

USING Выбирает номер банка регистров общего назначения.

Формат директивы: USING expression,

где expression - № банка регистров.

Пример: USING 1 ; Использование первого банка регистров.

В о п р о с ы д л я з а к р е п л е н и я м а т е р и а л а

  1. Объясните, что такое регистровая адресация операндов.

  2. Объясните суть прямой адресации операндов.

  3. Чем характеризуется косвенно-регистровая адресация?

  4. В чем особенность непосредственной адресации?

  5. Объясните суть косвенной регистровой адресации по сумме базового и индексного регистров.

  6. В чем особенность команд CJNE ?

  7. Что будет находиться в А после выполнения команд (ранее в А = 03):

MOV R0,#20H

MOV @R0,#02H

ADD A,R0

ANL A,@R0

CPL A

8. В чем суть команд DJNZ ?

9. Какова дальность действия команд ветвлений?

10. В чем отличие команд LCALL и LJMP?

11. Объясните, как работает команда MOVC A,@A+DPTR.

12. Где размещается результат выполнения команды MUL AB, если он больше 255?

13. Какие команды позволяют загружать данные в стек и выгружать их из стека?

14. В чем отличие команд RL A и RLC A?

15. Проанализируйте фрагмент программы (С=1, A=05):

MOV R0,#20H

MOV @R0,#03H

SUBB A,@R0

CPL ACC.0

SWAP A

XCH A,@R0

XRL A,@R0

A = ?