Читайте также:
|
|
Запомнить в ВПД содержимое регистров банка 0.
Начальный адрес ВПД – 0D000h
MOV PSW,#01000B; Выбор банка регистров 1
MOV R0,#8; Счетчик = 8
MOV DPTR,#0D000H; Определение начального адреса ВПД
MOV R1,#0; Определение начального адреса РПД
L: MOV A,@R1; (А) = (регистр)
MOVX @DPTR,A; Передача из аккумулятора в ВПД
INC R1; Переход к следующему регистру
INC DPTR; Приращение указателя адреса
DJNZ R0,L; R0=R0-1, если R0>0, то повторить
IV.Операции со стеком.
1. Перед загрузкой в стек содержимое регистра-указателя стека (SP) инкрементируется, а после извлечения из стека – декрементируется.
По сигналу системного сброса в SP заносится значение 07h. Для переопределения SP можно воспользоваться командой MOV SP,#D
Пример:
ORG 0h
MOV SP,#BUFSTEK; Инициализация стека
…; Программа
…
…
ORG 40h
BUFSTEK DS 10; Резервирование памяти для стека
2. Классический пример работы со стеком – подпрограмма обработки прерывания должна сохранить в стеке содержимое тех регистров, которые она сама будет использовать, а перед возвратом в прерванную программу должна восстановить их значения.
ORG 0C003H; Задание адреса вектора прерывания
LJMP SUB; Переход на подпрограмму обработки
ORG 0C100H
SUB: PUSH PSW; Сохранение в стеке PSW
PUSH A; Сохранение аккумулятора
PUSH B; Сохранение B
PUSH DPL; Сохранение DPTR
Дата добавления: 2015-07-11; просмотров: 247 | Нарушение авторских прав