- •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: Операционное устройство, Устройство шинного интерфейса
31. Стек . Работа со стеком
Стеком называют область программы для временного хранения произвольных данных. Разумеется, данные можно сохранять и в сегменте данных, однако в этом случае для каждого сохраняемого на время данного надо заводить отдельную именованную ячейку памяти, что увеличивает размер программы и количество используемых имен. Удобство стека заключается в том, что его область используется многократно, причем сохранение в стеке данных и выборка их оттуда выполняется с помощью эффективных команд push и pop без указания каких-либо имен.
Стек традиционно используется, например, для сохранения содержимого регистров, используемых программой, перед вызовом подпрограммы, которая, в свою очередь, будет использовать регистры процессора "в своих личных целях". Исходное содержимое регистров извлекается из стека после возврата из подпрограммы. Другой распространенный прием - передача подпрограмме требуемых ею параметров через стек. Подпрограмма, зная, в каком порядке помещены в стек параметры, может забрать их оттуда и использовать при своем выполнении.
Отличительной особенностью стека является своеобразный порядок выборки содержащихся в нем данных: в любой момент времени в стеке доступен только верхний элемент, т.е. элемент, загруженный в стек последним. Выгрузка из стека верхнего элемента делает доступным следующий элемент.
Элементы стека располагаются в области памяти, отведенной под стек, начиная со дна стека (т.е. с его максимального адреса) по последовательно уменьшающимся адресам. Адрес верхнего, доступного элемента хранится в регистре-указателе стека SP. Как и любая другая область памяти программы, стек должен входить в какой-то сегмент или образовывать отдельный сегмент. В любом случае сегментный адрес этого сегмента помещается в сегментный регистр стека SS. Таким образом, пара регистров SS:SP описывают адрес доступной ячейки стека: в SS хранится сегментный адрес стека, а в SP - смещение последнего сохраненного в стеке данного (смотрим рисунок). Обратите внимание на то, что в исходном состоянии указатель стека SP указывает на ячейку, лежащую под дном стека и не входящую в него.
32. Структуры и форматы команд мп intel 80 * 86. Команды пересылки данных
Основные команды могут иметь длину от 1 до 6 байт. Код операции всегда содержится в первом байте команды, а последующие байты, если они имеются, содержат адресную информацию. В этом микропроцессоре широко используется закрепление функций и режимов по умолчанию. Это позволяет экономить на длине команд и времени их выполнения.
Для того чтобы отменить определенный режим вызова операции, установленный по умолчанию, перед байтом кода операции могут быть помещены один или несколько байтов, называемых «префиксом команды». «Префикс команды» можно рассматривать по-разному. На языке ассемблера префикс рассматривается как часть команды, т.к. его действие распространяется только на одну команду или ее часть. На уровне машинных команд префикс удобно рассматривать как специальную команду, устанавливающую режим выполнения следующей команды.
Команды МП оперируют с операндами, хранящимися в памяти ЭВМ. Способы определения операнда называются режимом или способом адресации. В некоторых командах способ адресации операнда задается в первом байте команды, в других – информация о способе адресации содержится во втором байте команды, называемом постбайтом.
Постбайт может определять один или два операнда. Структура постбайта имеет вид:
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
КОП OP1, OP2 |
MOD |
REG / OP |
R / M |
||||||
|
|
|
|
|
|
|
|
|
|
Поля MOD иR/M определяют первый операнд, полеREG/OP – второй. ОбычноOP1является приемником, аOP2 источником. В некоторых командах допускается изменение направления передачи данных. В таких командах в первом байте вводится полеd, определяющее направление передачи данных, если d=1 то в регистр, еслиd=0 то из регистра.
Второй операнд, если он имеется, всегда находится в регистре, задаваемым полем REG/OP. В командах с одним операндом полеREG/OP используется для расширения кода операции, записанного в первом байте команды.
Регистр, используемый командой, задается в поле REG/OP номером и кодом операции первого байта, что позволяет использовать один и тот же номер для обозначения разных регистров.
Если команда оперирует с сегментными регистрами, то содержимое поля REG расценивается как номер сегментного регистра, иначе как номер регистра общего назначения. При этом, если команда может оперировать и байтом и словом, то в коде операции есть битW, который определяет длину операнда ( W=0 - байт,W=1 - слово). Используемые регистры и их номера приведены в таблице 2.
Номер регистра |
Рег. общего назначения |
Сегмент. Регистры |
Короткий номер сегментного регистра |
|
W = 1 |
W = 0 |
|||
000 |
AX |
AL |
ES |
00 |
001 |
CX |
CL |
CS |
01 |
010 |
DX |
DL |
SS |
10 |
011 |
BX |
BL |
DS |
11 |
100 |
SP |
AH |
|
|
101 |
BP |
CH |
|
|
110 |
SI |
DH |
|
|
111 |
DI |
BH |
|
|
Операнд, указываемый полями MOD иR/M, определяется в соответствии с имеющим место режимом адресации. Все способы адресации операндов в памяти обеспечивают формирование 16-разрядного адреса внутри сегмента или, как принято называть в технической документации, эффективного адреса, который обозначают буквами ЕА.
По умолчанию в режимах адресации с привлечением регистра BP при получении физического адреса используется сегментный регистр SS, в остальных режимах адресации используется сегментный регистр DS.Чтобы изменить используемый сегментный регистр предусмотрена специальная однобайтовая команда – префикс замены сегмента.
Он имеет следующий формат:
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
|
|
|
|
|
|
0 |
0 |
1 |
R E G |
1 |
1 |
0 |
|
|
|
|
|
|
|
|
|
где REG – короткий адрес сегментного регистра (см. таблицу 2).
Если перед командой стоит префикс замены сегмента, то при формировании адреса будет использоваться сегментный регистр, указанный в префиксе замены сегмента.
Нельзя изменить сегментный регистр при:
чтении следующей команды (всегдаCS);
обращение к стеку с участием SP (всегдаSS);
цепочечных командах (сегментный регистр операнда-получателя всегда ЕS).
Длина команд в микропроцессоре варьируется от 1 до 6 байт, не считая префиксов. В первых одном или двух байтах команды содержится код операции и указание способа адресации. После них могут находиться:
ни одного дополнительного байта;
двухбайтовый эффективный адрес (ЕА);
одно или двухбайтное смещение;
одно или двухбайтный непосредственный операнд;
одно или двухбайтное смещение и одно или двухбайтный непосредственный операнд;
двухбайтное смещение и двухбайтный сегментный адрес(только для прямого межсегментного перехода).
Команды пересылки данных общего назначения
К этой группе относятся следующие команды:
mov <операнд назначения>,<операнд-источник>
xchg <операнд1>,<операнд2>
mov - это основная команда пересылки данных. Она реализует самые разнообразные варианты пересылки.
Отметим особенности применения этой команды:
командой mov нельзя осуществить пересылку из одной области памяти в другую. Если такая необходимость возникает, то нужно использовать в качестве промежуточного буфера любой доступный в данный момент регистр общего назначения.
нельзя загрузить в сегментный регистр значение непосредственно из памяти. Поэтому для выполнения такой загрузки нужно использовать промежуточный объект. Это может быть регистр общего назначения или стек. Если вы посмотрите листинги 3.1 и 5.1, то увидите в начале сегмента кода две команды mov, выполняющие настройку сегментного регистра ds. При этом из-за невозможности загрузить впрямую в сегментный регистр значение адреса сегмента, содержащееся в предопределенной переменной @data, приходится использовать регистр общего назначения ax;
нельзя переслать содержимое одного сегментного регистра в другой сегментный регистр. Это объясняется тем, что в системе команд нет соответствующего кода операции. Но необходимость в таком действии часто возникает. Выполнить такую пересылку можно, используя в качестве промежуточных все те же регистры общего назначения. Вот пример инициализации регистра es значением из регистра ds:
Для двунаправленной пересылки данных применяют команду xchg. Для этой операции можно, конечно, применить последовательность из нескольких команд mov, но из-за того, что операция обмена используется довольно часто, разработчики системы команд микропроцессора посчитали нужным ввести отдельную команду обмена xchg. Естественно, что операнды должны иметь один тип. Не допускается (как и для всех команд ассемблера) обменивать между собой содержимое двух ячеек памяти. 33. Структура МП
Микропроцессор — это центральный блок персонального компьютера, предназначенный для управления работой всех остальных блоков и выполнения арифметических и логических операций над информацией.
Микропроцессор выполняет следующие основные функции:
чтение и дешифрацию команд из основной памяти;
чтение данных из основной памяти и регистров адаптеров внешних устройств;
прием и обработку запросов и команд от адаптеров на обслуживание внешних устройств;
обработку данных и их запись в основную память и регистры адаптеров внешних устройств;
выработку управляющих сигналов для всех прочих узлов и блоков компьютера.
В состав микропроцессора входят следующие устройства.
1. Арифметико-логическое устройство предназначено для выполнения всех арифметических и логических операций над числовой и символьной информацией.
2. Устройство управления координирует взаимодействие различных частей компьютера. Выполняет следующие основные функции:
формирует и подает во все блоки машины в нужные моменты времени определенные сигналы управления (управляющие импульсы), обусловленные спецификой выполнения различных операций;
формирует адреса ячеек памяти, используемых выполняемой операцией, и передает эти адреса в соответствующие блоки компьютера;
получает от генератора тактовых импульсов обратную последовательность импульсов.
3. Микропроцессорная память предназначена для кратковременного хранения, записи и выдачи информации, используемой в вычислениях непосредственно в ближайшие такты работы машины. Микропроцессорная память строится на регистрах и используется для обеспечения высокого быстродействия компьютера, так как основная память не всегда обеспечивает скорость записи, поиска и считывания информации, необходимую для эффективной работы быстродействующего микропроцессора.
4. Интерфейсная система микропроцессора предназначена для связи с другими устройствами компьютера. Включает в себя:
внутренний интерфейс микропроцессора;
буферные запоминающие регистры;
схемы управления портами ввода-вывода и системной шиной. (Порт ввода-вывода — это аппаратура сопряжения, позволяющая подключить к микропроцессору , другое устройство.)
К микропроцессору и системной шине наряду с типовыми внешними устройствами могут быть подключены и дополнительные платы с интегральными микросхемами, расширяющие и улучшающие функциональные возможности микропроцессора. К ним относятся математический сопроцессор, контроллер прямого доступа к памяти, сопроцессор ввода-вывода, контроллер прерываний и др.
Математический сопроцессор используется для ускорения выполнения операций над двоичными числами с плавающей запятой, над двоично-кодированными десятичными числами, для вычисления тригонометрических функций. Математический сопроцессор имеет свою систему команд и работает параллельно с основным микропроцессором, но под управлением последнего. В результате происходит ускорение выполнения операций в десятки раз. Модели микропроцессора, начиная с МП 80486 DX, включают математический сопроцессор в свою структуру.
Контроллер прямого доступа к памяти освобождает микропроцессор от прямого управления накопителями на магнитных дисках, что существенно повышает эффективное быстродействие компьютера.
Сопроцессор ввода-вывода за счет параллельной работы с микропроцессором значительно ускоряет выполнение процедур ввода-вывода при обслуживании нескольких внешних устройств, освобождает микропроцессор от обработки процедур ввода-вывода, в том числе реализует режим прямого доступа к памяти.
Прерывание — это временный останов выполнения одной программы в целях оперативного выполнения другой, в данный момент более важной. Контроллер прерываний обслуживает процедуры прерывания, принимает запрос на прерывание от внешних устройств, определяет уровень приоритета этого запроса и выдает сигнал прерывания в микропроцессор.
Все микропроцессоры можно разделить на группы:
микропроцессоры типа CISC с полным набором системы команд;
микропроцессоры типа RISC с усеченным набором системы команд;
микропроцессоры типа VLIW со сверхбольшим командным словом;
микропроцессоры типа MISC с минимальным набором системы команд и весьма высоким быстродействием и др.
Важнейшими характеристиками микропроцессора являются:
тактовая частота. Характеризует быстродействие компьютера. Режим работы процессора задается микросхемой, называемой генератором тактовых импульсов. На выполнение процессором каждой операции отводится определенное количество тактов. Тактовая частота указывает, сколько элементарных операций выполняет микропроцессор за одну секунду. Тактовая частота измеряется в МГц;
разрядность процессора — это максимальное количество разрядов двоичного числа, над которым одновременно может выполняться машинная операция. Чем больше разрядность процессора, тем больше информации он может обрабатывать в единицу времени и тем больше, при прочих равных условиях, производительность компьютера;
