Скачиваний:
30
Добавлен:
03.06.2014
Размер:
7.32 Mб
Скачать

3.1.4. Регистровый Файл(Register File)

Регистровый Файл разделен на Верхний(Upper) и Нижий(Lower) Регистровые Файлы (см. рис.4). Верхний Регистровый Файл содержит универсальные регистры оперативной памяти (Register RAM). Нижний Регистровый Файл содержит универсальные регистры оперативной памяти, Указатель Вершины стека (SP), Регистры специальных функций ЦП (CPU SFRs).

*1. Содержит универсальные регистры ОПЕРАТИВНОЙ ПАМЯТИ ( доступ через косвенную или индексную адресацию ,когда не используется работа с вертикальным окном ).

*2. Размещается в Нижнем Регистровом Файле (доступ через прямую регистровую, косвенную или индексную адресацию).

3.1.4.1. Указатель Вершины стека (sp)

Ячейки Памяти 18H и 19H содержат указатель вершины стека (SP). SP содержит адрес стека. SP должен указывать на адрес слова (четный адрес), который на два байта больше, чем желательный начальный адрес. Прежде, чем CPU выполняет вызов подпрограммы или программу обработки прерывания, он декрементирует дважды SP и затем копирует (PUSH) адрес следующей команды из программного счетчика в стек. После этого CPU загружает адрес подпрограммы или программы обработки прерывания в программный счетчик . После того, как CPU завершит подпрограмму или программу обработки прерывания, он выполняет команду возврата из подпрограммы (RET) и выталкивает содержимое вершины стека ( то-есть адрес возврата ) в счетчик программ.

Через стек также передаются параметры в подпрограммы. Параметры помещаются в стек в порядке, в котором с ними сталкиваются при просмотре исходного текста.

Параметры с 8 битами ( БАЙТ и КОРОТКОЕ ЦЕЛОЕ ЧИСЛО ) помещаются в стек с неопределенным старшим байтом. Параметры с 32 битами ( ДЛИННОЕ ЦЕЛОЕ, ДВОЙНОЕ СЛОВО, и REAL) помещаются в стек как два значения с 16 битами; старшая половина параметра помещается в стек первой .

Подпрограммы могут быть вложены. То-есть каждая подпрограмма может вызывать другие подпрограммы. CPU помещает содержимое счетчика программ в стек каждый раз, когда он выполняет вызов подпрограмм. При помещении данных в стек, стек растет вниз. Единственое ограничение к глубине вложения - количество доступной памяти. При возврате из каждой вложенной подпрограммы, он выталкивает адрес из вершины стека и следующий адрес возврата двигается в верхнюю часть стека.

Когда операции со стеком не выполняются, ячейки SP могут использоваться как универсальные регистры ОПЕРАТИВНОЙ ПАМЯТИ.

Так как после сброса содержимое регистра SP неопределено, пользователь, в начале своей программы, должен обязательно его инициализировать. Для инициализации Указателя Вершины стека программа пользователя должна загружать чётный адрес в указатель вершины стека. Выберите адрес, который на два байта больше чем желательный начальный адрес, потому что указатель вершины стека автоматически уменьшается прежде чем CPU помещает первый байт адреса возврата в стек. Не забудьте, что стек растет вниз, так что отведите достаточный участок памяти для максимальногочисла входов стека.

Стек может размещаться или во внутреннем Регистровом Файле или во внешней оперативной памяти.Следующий пример инициализирует верхнюю часть верхнего Регистрового Файла 8XC196KС как стек.

LD SP, #200H ; Загрузить Указатель вершины стека

Соседние файлы в папке lab96