- •1)Блочная структура программы: внутренние и внешние процедуры
- •3) Блочная структура программы: расположение процедур в исходном файле
- •4) Использования прерываний в ассеемблер-программах
- •5)Команды передачи управления: безусловные переходы. Адресация в переходах
- •6) Команды передачи управления: организация циклов
- •7) Команды передачи управления: условные переходы
- •8) Команды сдвигов и их использования
- •13. Место языков ассемблера среди языков программирования.
- •14. Модели памяти и их использования в tasm.
- •16. Передача параметров между процедурой и вызывающей программой Ассемблер.
- •17. Предложение языка ассемблера: директивы.
- •18. Предложения языка ассемблера: команды.
- •19. Предложения языка ассемблера: коментарии.
- •20. Представление данных в ibm pc: алфавитно-цифровые данные
- •21 Представление данных в ibm pc : Вещественные данные
- •22 Представление данных в ibm pc: Двоично-десятичных чисел
- •23 Представление данных в ibm pc: Целые числа
- •24 Программные пакеты masm и tasm общие функции и различие
- •29. Способы адресации в командах мп intel 80 * 86
- •Регистровая адресация
- •Непосредственная адресация
- •30.Способы передачи параметров между процедурой и вызывающейся программой
- •31. Стек . Работа со стеком
- •32. Структуры и форматы команд мп intel 80 * 86. Команды пересылки данных
- •34. Структура мп Intel 80x86: используемые регистры
- •35. Структура мп Intel 80x86: Операционное устройство, Устройство шинного интерфейса
34. Структура мп Intel 80x86: используемые регистры
Микропроцессор содержит две основные части (рис. 2): операционное устройство и устройство шинного интерфейса. Оба устройства могут работать параллельно, что обеспечивает совмещение во времени процессов выборки и исполнения команд. Операционное устройство содержит регистры общего назначения, арифметико-логическое устройство (АЛУ), регистр флагов (F). блок управления и обеспечивает выполнение команд.
Рис. 2. Структура микропроцессора i8086.
Устройство шинного интерфейса содержит блок сегментных регистров, указатель команд (IР), сумматор адреса, очередь команд, буферы обеспечивающие связь с шиной, и предназначено для выполнения (функций, связанных с выборкой операндов, установлением очередности команд и формирования адресов операндов и команд.
Микропроцессор имеем следующие программно доступные регистры:
АХ(АН/AL) - регистр-аккумулятор;
ВХ(ВH/BL) - индексный регистр базы:
СХ(СН/CL) - регистр-счетчик;
DX(DH/DL) - регистр данных;
SР - регистр-указатель стека;
ВР - регистр-указатель базы;
SI - индекс источника;
DI - индекс приемника;
СS - регистр сегмента кода;
DS - регистр сегмента данных;
SS - регистр сегмента стека;
ES регистр дополнительного сегмента данных.
Регистр флагов содержит следующие флаги:
СF (Саrrу Flаg) - флаг переноса;
РF (Раrity Flаg) - флаг паритета;
АF (Auxiliary Flag) - вспомогательный флаг переноса;
ZF (Zero Flаg) - флаг нуля;
SF (Sign Flаg) - флаг знака;
OF (Overflow Flag) - флаг переполнения;
ТF (Тrар Flаg) - флаг трассировки;
IF (Interrupt Flаg) - флаг прерывания:
DF (Direction Flag) - флаг направления.
Пользовательские регистры
Пользовательскими регистры называются потому, что программист может использовать их при написании своих программ. К этим регистрам относятся (см. рис. 10):
1. Восемь 16-битных регистров, которые могут использоваться программистами для хранения данных и адресов (их еще называют регистрами общего назначения (РОН)):
АХ/АН/Аl
BX/BH/BL
DX/DH/DL
CX/CH/CL
ВР
SI
DI
SP
2. Четыре сегментных регистра:
СS, DS, SS, ES.
3. Регистры состояния и управления:
Flags, IP.
Почему многие из этих регистров приведены с наклонной разделительной чертой? Нет, это не разные регистры - это части одного большого 16-разрядного регистра. Их можно использовать в программе как отдельные объекты.
Отметим также, что регистр IР недоступен программисту непосредственно для манипуляций. Однако его значение может изменяться косвенно командами ветвления, вызова подпрограмм и выхода из подпрограмм.
Регистры общего назначения
Перечислим регистры, относящиеся к группе регистров общего назначения. Поскольку эти регистры физически находятся в микропроцессоре внутри арифметико-логического устройства (АЛУ), их называют регистрами АЛУ:
АХ/АН/Аl, (Accumulator register) - аккумулятор. Применяется для хранения промежуточных данных. В некоторых командах использование этого регистра обязательно.
BX/BH/BL (Base register) - базовый регистр, или регистр базы. Применяется для хранения базового адреса некоторого объекта, находящегося в памяти.
CX/CH/CL (Count register)- регистр-счетчик. Применяется в командах, производящих некоторые повторяющиеся действия. Его использование зачастую неявно и скрыто в адгоршме работы соответствующей команды К примеру, команда организации цикла 1оор, кроме передачи управления команде, находящейся но некоторому адресу, анализирует и уменьшает на единицу значение регистра СХ.
DX/DH/DL (Data register) - регистр данных. Так же, как и регистр АХ/АН/Аl, хранит промежуточные данные. В некоторых командах его использование обязательно; для некоторых команд это происходит неявно.
Следующие два регистра используются для поддержки так называемых цепочечных команд, производящих последовательную обработку цепочек элементов, каждый из которых может иметь длину 16 или 8 бит:
SI (Source Index register) - индекс источника. Этот регистр используется цепочечными командами и содержит текущий адрес элемента цепочки-источника.
DI (Destination Index register) - индекс приемника. Этот регистр используется цепочечными командами и содержит текущий адрес цепочкиприемника.
В архитектуре микропроцессора i8086 на программно-аппаратном уровне поддерживается такая структура данных, как стек. Для работы со стеком микропроцессор имеет специальный набор команд, а в программной модели микропроцессора для этою существуют специальные регистры:
SР (Start Pointer register) - регистр указателя стека. Содержит указатель вершины стека в текущем сегменте стека.
ВР (Base Pointer register) - регистр указателя базы кадра стека. Предназначен для организации произвольного доступа к данным внутри стека.
Такой набор регистров может показаться неудобным, в силу своем жесткой функциональной ограниченности. Большинство регистров может использоваться при Программировании для хранения операндов практически В любых сочетаниях. Однако, как мы отметили выше, некоторые команды используют фиксированные регистры для выполнения своих действий. Это нужно обязательно учитывать. Использование жесткого закрепления регистров для некоторых команд уменьшает их функциональность, но позволяет более компактно кодировать их машинное представление. Знание этих особенностей позволит вам при необходимости хотя бы на несколько байт с экономить намять, занимаемую кодом вашей программы.
