Алгоритм работы процессора

Содержание

Слайд 2

Формат команды процессора N (1,2,…) байт (в зависимости от архитектуры) Код

Формат команды процессора

N (1,2,…) байт (в зависимости от архитектуры)

Код команды

Числовая комбинация,

определяющая действия процессора

Операнд 1

Данные для команды или указание, откуда взять данные для команды

Операнд M


Слайд 3

Слайд 4

1) Как правило, ассемблерная строка однозначно соответствует одной процессорной команде. 2)

1) Как правило, ассемблерная строка однозначно соответствует одной процессорной команде.
2) Команда

языка Ассемблера имеет следующую структуру:
Меткаl: КОП Оп1,Оп2,… ;
пример команды на языке ассемблера
L1: mov r1, #12A9h ; Загрузка регистра константой

Команды микропроцессора

Данный оператор содержит команду пересылки, которая загружает константу 12A9h в регистр процессора r1. Константа задана программистом в виде шестнадцатиричного числа.
Оператор включает в свой состав следующие поля:
Метка — это символическое обозначение адреса.
В мнемонике команды, приведенной выше, метка обозначает адрес, начиная с которого байты данной команды будут расположены в ОЗУ после загрузки программы в память. Имя метки часто используется как операнд в командах переходов.
КОП — мнемоническое обозначение кода операции, выполняемой данной командой,
например mov — переслать
Оп1, Оп2,… — символические обозначения операндов, обычно они разделяются запятыми (хотя в некоторых Ассемблерах для разделения операндов используется пробел).

Слайд 5

Количество операндов в команде может быть различным, в большинстве современных процессоров

Количество операндов в команде может быть различным, в большинстве современных процессоров

— от 0 до 3. Если операндов больше, чем один, некоторые из них являются "источниками", а некоторые другие — "приемниками".
Например, команда сложения
add sum,op1,op2
содержит указания на два операнда-приемника (слагаемые) — op1 и op2, а также указание на элемент данных (sum), куда команде следует поместить результат.

Количество операндов, которые программист может указать в команде, определено отдельно для каждой команды конкретного процессора его разработчиками. Для многих команд делают допустимым несколько форматов.

В Ассемблерах процессоров фирмы Intel, по большей части, операнды-источники записываются левее операндов-приемников.
В Ассемблерах других фирм это может быть наоборот. В качестве операнда можно использовать метку, в этом случае метка будет обозначать адрес, с которого располагается в памяти соответствующий операнд.

Хотя каждый процессор имеет свой Ассемблер (соответствующий его системе команд), многие мнемонические обозначения в разных Ассемблерах одинаковы для одинаковых операций.
Этот факт сильно облегчает изучение следующего Ассемблера (и процессора), после того, как хотя бы один уже изучен.

Слайд 6

Слайд 7

Набор команд микропроцессора

Набор команд микропроцессора

Слайд 8

Слайд 9

Например

Например

Слайд 10

Слайд 11

Слайд 12

Количество команд для разных типов ЭВМ колеблется от малых десятков до

Количество команд для разных типов ЭВМ колеблется от малых десятков до

сотен. В таком множестве разобраться достаточно трудно, поэтому для рассмотрения разобьем все команды на группы (проклассифицируем).
В разных книгах эта классификация тоже сделана по-разному. Выделяют от 3 до более 10 групп.
Слайд 13

Слайд 14

Слайд 15

Постоянно происходит технический прогресс и особенно разработка компьютеров не стоит на

Постоянно происходит технический прогресс и особенно разработка компьютеров не стоит на

месте, совсем недавно лучшими были 8 битные процессоры, а последнее время речь идёт уже о 64 битных.
Битность процессора напрямую связана с битностью регистров и их аббревиатурой, поэтому:
AX, CX, SP, IP, ... - характеризуют 16 битные регистры EAX, ECX, ESP, EIP, ... - 32 битные (добавляется буква E от англ. Extended - "расширенный") RAX, RCX, RSP, RIP, ... - 64 битные (добавляется буква R)
Слайд 16

Регистр eax является 32-х разрядным. Если представить его значение в двоичной

Регистр eax является 32-х разрядным. Если представить его значение в двоичной

системе счисления как последовательность из 32-х нулей и единиц, то, если взять правые 16 бит подряд, это и будет младшая часть регистра eax, которая будет определять значение регистра ax. Левые 16 бит подряд - это старшая часть регистра eax. Аналогично, 16-ти разрядный регистр ax делится на регистр ah и al, которые соответственно являются старшей и младшей частями регистра ax. Также регистр ebx (ecx, edx тоже) например делится на старшую часть и младшую часть.
Слайд 17

Слайд 18

По назначению регистры различаются на: аккумулятор — используется для хранения промежуточных

По назначению регистры различаются на:
аккумулятор — используется для хранения промежуточных результатов

арифметических и логических операций и инструкций ввода-вывода;
флаговые — хранят признаки результатов арифметических и логических операций;
общего назначения — хранят операнды арифметических и логических выражений, индексы и адреса;
индексные — хранят индексы исходных и целевых элементов массива;
указательные — хранят указатели на специальные области памяти (указатель текущей операции, указатель базы, указатель стека);
сегментные — хранят адреса и селекторы сегментов памяти;
управляющие — хранят информацию, управляющую состоянием процессора, а также адреса системных таблиц.
Начиная с 80386 процессоры Intel предоставляют 16 основных регистров для пользовательских программ плюс еще 11 регистров для работы с мультимедийными приложениями (MMX(Multimedia Extension)) и числами с плавающей запятой (FPU/NPX (Float Point Unit / Numerical Processor Extension)). Все команды так или иначе изменяют значения регистров, и всегда быстрее и удобнее обращаться к регистру, чем к памяти.
Слайд 19

Регистры общего назначения. 32-битные регистры EAX (аккумулятор), EBX (база), ECX (счетчик),

Регистры общего назначения.
32-битные регистры EAX (аккумулятор), EBX (база), ECX (счетчик), EDX

(регистр данных) могут использоваться без ограничений для любых целей – временного хранения данных, аргументов или результатов различных операций.

регистр AX — умножение, деление, обмен с устройствами ввода/вывода (команды ввода и вывода);
регистр BX — базовый регистр в вычислениях адреса;
регистр CX — счетчик циклов;
регистр DX — определение адреса ввода/вывода.
Для регистров данных существует возможность раздельного использования обоих байтов (например, для регистра AX они имеют обозначения AL – младший байт и AH — старший байт).

Слайд 20

Примеры команд с регистрами Команды пересылки и загрузки данных: - MOV

Примеры команд с регистрами

Команды пересылки и загрузки данных:
- MOV R1,R2

– пересылка из регистра в регистр;
- LD AX B(D) – пересылка из ячейки памяти, адрес которой записан в регистровой паре ВE (DE), в аккумулятор;

Команды сложения :
- ADD R – сложение содержимого аккумулятора с содержимым регистра R (A) ← (A) + (R);
- ADI_B2 – сложение содержимого аккумулятора со вторым байтом команды (A) ← (A) + B2;
- ADC R – сложение содержимого аккумулятора с содержимым регистра R и признаком (С) (А)← (A) + (R) + (С);

Во многих процессорах выделяется специальный регистр, называемый аккумулятором (то есть накопителем). При этом, как правило, только этот регистр-аккумулятор может участвовать во всех операциях, только через него может производиться взаимодействие с устройствами ввода/вывода. Иногда в него же помещается результат любой выполненной команды (в этом случае говорят даже об "аккумуляторной" архитектуре процессора).

Слайд 21

Остальные четыре регистра – ESI (индекс источника), EDI (индекс приемника), EBP

Остальные четыре регистра – ESI (индекс источника), EDI (индекс приемника), EBP

(указатель базы), ESP (указатель стека) - имеют более конкретное назначение и применяются для хранения всевозможных временных переменных.
Регистры ESI и EDI необходимы в строковых операциях, EBP и ESP – при работе со стеком.
Слайд 22

В FLAGS каждый бит является флагом, то есть устанавливается в 1

В FLAGS каждый бит является флагом, то есть устанавливается в

1 при определенных условиях или установка его в 1 изменяет поведение процессора.
Все флаги, расположенные в старшем слове регистра, имеют отношение к управлению защищенным режимом, поэтому будем рассматривать только регистр FLAGS.