Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
91
Добавлен:
23.02.2015
Размер:
5.07 Mб
Скачать

Указатель стека (sp – stack pinter)

Регистр SPдоступен для чтения/записи.Cостояние регистра послеRESET: 01FFh. Указатель стека – 16-битовый регистр, который всегда указывает на следующее свободное место в стеке (на адрес).

Примечание.Состояние регистраSPпослеResetеще зависит от типаMCU, по значению в этом состоянии можно программно определить типMCU.

3.7.3. Работа со стеком

Стек предназначен для сохранения контекста CPU(регистров: РС, СС, А, Х) во время вызова подпрограмм и обработчиков прерываний, а также для сохранения пользовательских данных (с помощью инструкцийPUCH,POP). Последовательность сохранения контекста регистров в стеке:PCL,PCH,X,A,CC.

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

Положение указателя стека можно изменить на произвольное значение в пределах допустимого диапазона командой LDSP,A. Начальное значение указателя стека устанавливается командойRSP.

Размер стека и его расположение в памяти зависит от типа MCU, например:

– ST72254: 128 байт (от 0100hдо 017Fh);

– ST72521: 256 байт (от 0100hдо 01FFh).

При установке микроконтроллера в начальное состояние регистр SPуказывает на старший адрес стека. После записи байта в стек содержимое регистраSPуменьшается на единицу, адресуя незаполненную ячейку стека (рис. 3.5).

Рис. 3.5. Иллюстрация работы стека

3.8. Система команд st7

Символы, используемые при описании команд.

– {…} означает содержимое регистра или ячейки памяти.

– $ означает шестнадцатеричное число.

– # означает непосредственный операнд.

3.8.1. Способы адресации

Ядро ST7 обеспечивает 17 различных способов адресации, которые могут быть разделены на семь основных групп:

Способ адресации

Пример команды

Неявная (Inhern)

nop

Непосредственная (Immediate)

Ld A,#$45

Прямая (Direct)

Ld A,$36

Индексная (Indexed)

Ld A,($58,X)

Непрямая, косвенная (Indirect)

Ld A,([$72],X)

Относительная (Relative)

Jrne loop

Битовых операций

Bset byte,#7

Набор команд ST7 разработан cучетом минимизации их формата (количества байт). Основные способы адресации могут быть подразделены на два подспособа, названныедлинным и коротким.

Длинный способ может использовать полное 64-килобайтное адресное пространство, однако использует большее число байт и циклов центрального процессора. Короткий способ адресации более компактный и более быстрый, но получает доступ только к нулевой странице памяти к диапазону адресов 0000h–00FFh. Только короткий способ адресации используется в командахCLR,CPL,NEG.BSET, BRES, BTJT, BTJF, INC, DEC, RLC, SLL, SRL, SRA, SWAP.

Ассемблер ST7 оптимизирован для использования длинной и короткой способов адресации. В качестве примера в табл. 3.4 приведены способы адресации.

Т а б л и ц а 3.4

Соседние файлы в папке МетодУказания