Каким образом процессор при выполнении программы осуществляет выбор очередной команды

Обновлено: 07.07.2024

(HardWare)- Составляет основу компьютеров, образует аппаратуру? построенную в основном с использованием электронных и электромеханических элементов и устройств. Принцип действия компьютеров состроит в выполнении программ (SoftWare)- заранее заданных операций. Т.е HardWare- это “железо” внутренности компьютера, а SoftWare- это программное обеспечение, которое заставляет все внутренности компьютера выполнять различные операции.

Какие основные классы компьютеров Вам известны?

Существует два основных класса компьютеров:

• цифровые компьютеры, обрабатывающие данные в виде двоичных кодов;

• аналоговые компьютеры, обрабатывающие непрерывно меняющиеся физические

величины (электрическое напряжение, время и т.д.), которые являются аналогами

В чём состоит принцип действия компьютеров?

Компьютер (англ. computer — вычислитель) представляет собой программируемоеэлектронное устройство, способное обрабатывать данные и производить вычисления, атакже выполнять другие задачи манипулирования символами.

Из каких простейших элементов состоит программа?

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

Что такое система команд компьютера?

Команда — это описание элементарной операции, которую должен выполнитькомпьютер. В общем случае, команда содержит следующую информацию: • код выполняемой операции; • указания по определению операндов (или их адресов); • указания по размещению получаемого результата.В зависимости от количества операндов, команды бывают: • одноадресные; • двухадресные; • трехадресные; • переменноадресные.

Перечислите главные устройства компьютера.

• память (запоминающее устройство, ЗУ), состоящую из перенумерованных ячеек; • процессор, включающий в себя устройство управления (УУ) и арифметико- логическое устройство (АЛУ); • устройство ввода; • устройство вывода.

Опишите функции памяти и функции процессора.

Функции памяти: • приём информации из других устройств; • запоминание информации; • выдача информации по запросу в другие устройства машины. Функции процессора: • обработка данных по заданной программе путем выполнения арифметических и логических операций; • программное управление работой устройств компьютера.

Назовите две основные части процессора. Каково их назначение?

Первая часть процессора, которая выполняет команды, называется арифметико-логическим устройством (АЛУ), а вторая его часть, выполняющая функции управленияустройствами, называется устройством управления (УУ).

Что такое регистры? Назовите некоторые важные регистры и опишите их функции.

Существует несколько типов регистров, отличающихся видом выполняемыхопераций. Некоторые важные регистры имеют свои названия, например: • сумматор — регистр АЛУ, участвующий в выполнении каждой операции; • счетчик команд — регистр УУ, содержимое которого соответствует адресу очередной выполняемой команды; служит для автоматической выборки программы из последовательных ячеек памяти; • регистр команд — регистр УУ для хранения кода команды на период времени, необходимый для ее выполнения. Часть его разрядов используется для хранения кода операции, остальные — для хранения кодов адресов операндов.

Сформулируйте общие принципы построения компьютеров.

В чём заключается принцип программного управления? Как выполняются команды условных и безусловных переходов?

В чём суть принципа однородности памяти? Какие возможности он открывает?

В чём заключается принцип адресности?

2.14. Какие архитектуры называются "фон-неймановскими"?

В основу построения подавляющего большинства компьютеров положеныследующие общие принципы, сформулированные в 1945 г. американским ученымДжоном фон Нейманом.1. Принцип программного управления. Из него следует, что программа состоитиз набора команд, которые выполняются процессором автоматически друг за другомв определенной последовательности. Выборка программы из памяти осуществляется с помощью счетчика команд. Этотрегистр процессора последовательно увеличивает хранимый в нем адрес очереднойкоманды на длину команды.А так как команды программы расположены в памяти друг за другом, то тем самыморганизуется выборка цепочки команд из последовательно расположенных ячеек памяти.Если же нужно после выполнения команды перейти не к следующей, а к какой-тодругой, используются команды условного или безусловного переходов, которые заносятв счетчик команд номер ячейки памяти, содержащей следующую команду. Выборкакоманд из памяти прекращается после достижения и выполнения команды “стоп”.Таким образом, процессор исполняет программу автоматически, безвмешательства человека. 2. Принцип однородности памяти. Программы и данные хранятся в одной и той жепамяти. Поэтому компьютер не различает, что хранится в данной ячейке памяти — число,текст или команда. Над командами можно выполнять такие же действия, как и надданными. Это открывает целый ряд возможностей. Например, программа в процессесвоего выполнения также может подвергаться переработке, что позволяет задавать всамой программе правила получения некоторых ее частей (так в программе организуетсявыполнение циклов и подпрограмм). Более того, команды одной программы могутбыть получены как результаты исполнения другой программы. На этом принципеоснованы методы трансляции — перевода текста программы с языкапрограммирования высокого уровня на язык конкретной машины. 3. Принцип адресности. Структурно основная память состоит изперенумерованных ячеек; процессору в произвольный момент времени доступналюбая ячейка. Отсюда следует возможность давать имена областям памяти, так, чтобы кзапомненным в них значениям можно было впоследствии обращаться или менять их впроцессе выполнения программ с использованием присвоенных имен. Компьютеры, построенные на этих принципах, относятся к типу фон-неймановских.Но существуют компьютеры, принципиально отличающиеся от фон-неймановских. Дляних, например, может не выполняться принцип программного управления, т.е. онимогут работать без “счетчика команд”, указывающего текущую выполняемую командупрограммы. Для обращения к какой-либо переменной, хранящейся в памяти, этимкомпьютерам не обязательно давать ей имя. Такие компьютеры называются не-фон-неймановскими.

Что такое команда? Что описывает команда?

Команда — это описание элементарной операции, которую должен выполнитькомпьютер.В общем случае, команда содержит следующую информацию: • код выполняемой операции; • указания по определению операндов (или их адресов); • указания по размещению получаемого результата.В зависимости от количества операндов, команды бывают: • одноадресные; • двухадресные; • трехадресные; • переменноадресные.

Каким образом процессор при выполнении программы осуществляет выбор очередной команды?

Что понимается под структурой компьютера? Какой уровень детализации описания компьютера может она обеспечить?

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

Каковы отличительные особенности классической архитектуры?

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

Перечислите основные и производные единицы измерения количества памяти.

Тактовая частота, Гигагерцы.

Опишите работу стримера.

Стример (англ. tape streamer) — устройство для резервного копирования больших объёмов информации. В качестве носителя здесь применяются кассеты с магнитной лентой ёмкостью 1 — 2 Гбайта и больше.

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

Недостатком стримеров является их сравнительно низкая скорость записи, поиска и считывания информации.

В последнее время всё шире используются накопители на сменных дисках, которые позволяют не только увеличивать объём хранимой информации, но и переносить информацию между компьютерами. Объём сменных дисков — от сотен Мбайт до нескольких Гигабайт.

Что такое IP-адрес?

IP (Internet Protocol) — протокол межсетевого взаимодействия, отвечающий за адресацию и позволяющий пакету на пути к конечному пункту назначения проходить по нескольким сетям.

Какие основные услуги предоставляет пользователям система WWW?

World Wide Web (WWW, "Всемирная паутина") — гипертекстовая, а точнее,гипермедийная информационная система поиска ресурсов Интернет и доступа к ним.Гипертекст — информационная структура, позволяющая устанавливать смысловыесвязи между элементами текста на экране компьютера таким образом, чтобы можно былолегко осуществлять переходы от одного элемента к другому. На практике в гипертекстенекоторые слова выделяют путем подчёркивания или окрашивания в другой цвет.Выделение слова говорит о наличии связи этого слова с некоторым документом, вкотором тема, связанная с выделенным словом, рассматривается более подробно. Гипермедиа — это то, что получится, если в определении гипертекста заменитьслово "текст" на "любые виды информации": звук, графику, видео. Такие гипермедийныессылки возможны, поскольку наряду с текстовой информацией можно связывать и любую другую двоичную информацию, например, закодированный звук или графику, Так, если программа отображает карту мира и если пользователь выбирает на этой карте с помощью мыши какой-либо континент, программа может тут же дать о нём графическую, звуковую и текстовую информацию.

Какова роль аппаратуры (HardWare) и программного обеспечения (SoftWare) компьютера?

(HardWare)- Составляет основу компьютеров, образует аппаратуру? построенную в основном с использованием электронных и электромеханических элементов и устройств. Принцип действия компьютеров состроит в выполнении программ (SoftWare)- заранее заданных операций. Т.е HardWare- это “железо” внутренности компьютера, а SoftWare- это программное обеспечение, которое заставляет все внутренности компьютера выполнять различные операции.

Цикл команд в ЦП


Что CPU / ЦЕНТРАЛЬНЫЙ ПРОЦЕССОР выполняет инструкции программы, находящейся в памяти. Но знаете ли вы, что все они следуют одним и тем же общим правилам? Все они следуют одному и тому же командному циклу, который разделен на три отдельных этапа, называемых «выборка», «декодирование» и «выполнение», которые переводятся как выборка, декодирование и выполнение. Мы объясняем, как работают эти этапы и как они организованы.

Визуализация цикла обучения

Ciclo Instrucción Unidad Control

  • Получить или захватить: В котором инструкция захватывается из ОЗУ и копируется в процессор.
  • Декодирование или декодирование: В котором ранее захваченная инструкция декодируется и отправляется исполнительным блокам.
  • Выполнили: Если инструкция разрешена, а результат записан во внутренние регистры процессора или в адрес памяти RAM

Эти три этапа выполняются в каждом процессоре. Существует четвертый этап, который является обратной записью, когда исполнительные блоки записывают результат, но это обычно учитывается на этапе выполнения цикла команд.

Первый этап цикла обучения: выборка

Получить процесс

  1. Программный счетчик или Программный счетчик: Что указывает на следующую строку памяти, где находится следующая инструкция процессора. Его значение увеличивается на 1 каждый раз, когда завершается полный цикл команд или когда команда перехода изменяет значение программного счетчика.
  2. Регистр адреса памяти: MAR копирует содержимое ПК и отправляет его в ОЗУ через адресационные контакты ЦП, которые соединены с адресными контактами самого ОЗУ.
  3. Регистр данных памяти или регистр данных памяти : В случае, если ЦП должен выполнить чтение памяти, MDR копирует содержимое этого адреса памяти во внутренний регистр ЦП, который является временным регистром передачи, прежде чем его содержимое будет скопировано в регистр команд. MDR, в отличие от MAR, подключается к выводам данных RAM, а не к контактам адресации, и в случае инструкции записи содержимое того, что вы хотите записать в RAM, также записывается в MDR.
  4. Реестр инструкций: Заключительной частью этапа выборки является запись инструкции в регистр инструкций, из которого блок управления процессором копирует ее содержимое для второго этапа цикла инструкций.

Эти 4 подэтапа происходят во всех процессорах, независимо от их полезности, архитектуры и двоичной совместимости или того, что мы называем ISA.

устройство управления

Устройство управления

  • Они отвечают за координацию движения и порядок, в котором данные перемещаются внутри и вне процессора, а также за различные подблоки, которые за это отвечают.
  • В общем, считается, что блоки этапа захвата или Fetch являются частью оборудования, которое мы называем блоком управления, и это оборудование также называется Front-End процессора.
  • Он интерпретирует инструкции и отправляет их различным исполнительным устройствам, к которым он подключен.
  • Он передается различным ALU и исполнительным блокам процессора, которые действуют
  • Он отвечает за захват и декодирование инструкций, а также за запись результатов в регистры, кеши или в соответствующий адрес ОЗУ.

Код операции-режим-адрес

Блок управления декодирует инструкции, и он делает это, потому что каждая инструкция на самом деле является своего рода предложением, в котором сначала идет глагол, а затем прямой объект или объект, на котором выполняется действие. Субъект в конечном итоге исключается на этом внутреннем языке компьютеров, поскольку понимается, что это сам компьютер выполняет его, поэтому каждое число битов представляет собой предложение, в котором первые 1 и 0 соответствуют действию, а единицы Далее идут данные или расположение данных, которыми нужно управлять.

Второй этап: декодирование

Decodificación Instrucciones

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

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

Блок управления Ciclo Instrucción

Maqueta Tren Ciclo Instrucción

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

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

Третий этап: Выполнить

1 бит ALU

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

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

После того, как инструкция завершена, результат записывается в определенный адрес памяти, и выполняется следующий. Некоторые инструкции управляют не значениями памяти, а определенными регистрами. Таким образом, регистр программного счетчика модифицируется инструкциями перехода, если мы хотим читать или записывать данные, то управляются регистры MAR и MDR.

Приведите примеры языков программирования высокого и низкого уровня.

Язык низкого уровня: Assembler;

Языки высокого уровня: Basic, C, Java, Pascal.

Напишите пример какой-либо команды на одном из языков программирования и поясните составные элементы этой команды.

Присвоить переменной A значение 2. A – имя переменной, (:=) – оператор присваивания, 2 – целое число.

Что такое открытый программный код?

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

Что такое команда? Что описывает команда?

Команда — это описание операции, которую должен выполнить компьютер.

В общем случае, команда содержит:

- код выполняемой операции;

- указания по определению операндов (или их адресов);

- указания по размещению получаемого результата.

Каким образом процессор при выполнении программы осуществляет выбор очередной команды?

Процессор считывает последовательность команд, содержащихся в памяти, и исполняет их. Такая последовательность команд называется программой и представляет алгоритм полезной работы процессора. Очерёдность считывания команд изменяется в случае, если процессор считывает команду перехода — тогда адрес следующей команды может оказаться другим. Другим примером изменения процесса может служить случай получения команды останова или переключение в режим обработки аппаратного прерывания.

Последовательность выполнения команды процессором:

- Процессор выставляет число, хранящееся в регистре счётчика команд, на шину адреса, и отдаёт памяти команду чтения;

- выставленное число является для памяти адресом; память, получив адрес и команду чтения, выставляет содержимое, хранящееся по этому адресу, на шину данных, и сообщает о готовности;

- процессор получает число с шины данных, интерпретирует его как команду (машинную инструкцию) из своей системы команд и исполняет её;

- если последняя команда не является командой перехода, процессор увеличивает на единицу (в предположении, что длина каждой команды равна единице) число, хранящееся в счётчике команд; в результате там образуется адрес следующей команды;

- снова выполняется с первого пункта.

Что такое лицензия? Какие типы лицензий применяются в настоящее время?

Лицензии на программное обеспечение в целом делятся на две большие группы: несвободные (собственнические, они же проприетарные; и полусвободные) и лицензии свободного и открытого ПО. Их различия сильно влияют на права конечного пользователя в отношении использования программы.

Основной характеристикой проприетарных лицензий является то, что издатель ПО в лицензии даёт разрешение её получателю использовать одну или несколько копий программы, но при этом сам остаётся правообладателем всех этих копий. Одно из следствий такого подхода заключается в том, что практически все права на ПО остаются за издателем, а пользователю передаётся лишь очень ограниченный набор строго очерченных прав. Для проприетарных лицензий типично перечисление большого количества условий, запрещающих определённые варианты использования ПО, даже тех, которые без этого запрета были бы разрешены законом об авторском праве. Хорошим примером проприетарной лицензии может служить лицензия на Microsoft Windows, которая включает большой список запрещённых вариантов использования, таких как обратная разработка, одновременная работа с системой нескольких пользователей и распространение тестов её рабочих характеристик.

Наиболее значительным следствием применения проприетарной лицензии является то, что конечный пользователь обязан принять её, так как по закону владельцем ПО является не он, а издатель программы. В случае отказа принять лицензию пользователь вообще не может работать с программой.

Лицензии свободного и открытого ПО.

В отличие от проприетарных, свободные и открытые лицензии не оставляют права на конкретную копию программы её издателю, а передают самые важные из них (составляющие 4 свободы по определению Фонда СПО, или попадающие под другое определение свободного или открытого ПО) конечному пользователю, который и становится владельцем. В результате пользователь по умолчанию получает важные права, которые закон об авторском праве по умолчанию даёт только владельцу копии, однако все авторские права на ПО по-прежнему остаются у издателя. Примером свободной лицензии является GNU General Public License (GPL), которая даёт пользователю право самому распространять ПО под этой лицензией, участвовать в его обратной разработке или изменять другими способами. Тем не менее, перечисленные права обязывают пользователя ПО под GPL подчиняться определённым правилам, например, любые изменения программы, сделанные пользователем и распространённые дальше, должны сопровождаться исходным кодом этих изменений (см. копилефт).

Главной отличительной чертой свободных лицензий является то, что они совершенно не ограничивают личное пользование — пользователь волен принимать или не принимать их: работать с программой он может и без лицензии. Однако если ему требуется какое-либо из дополнительных прав, которые даёт лицензия (например, на распространение ПО, или предоставление доступа к нему по сети [пример — Affero General Public License]), он обязан принять лицензию и действовать в её рамках.

На каком языке представляются коды программ в процессоре? Объясните почему именно так.

Коды программ в процессоре представляются в машинном коде, так как процессор может работать только с числами.

2.1. Процессор.

Самый основной элемент компьютера, это, конечно, процессор. Давайте подробней его рассмотрим. Упрощённая структура процессора (рис. 4):


Рис. 4. Упрощённая структура процессора

Основные элементы процессора:

· Регистры – это специальные ячейки памяти, физически расположенные внутри процессора. В отличие от ОЗУ, где для обращения к данным требуется использовать шину адреса, к регистрам процессор может обращаться напрямую. Это существенно ускорят работу с данными.

· Арифметико-логическое устройство выполняет арифметические операции, такие как сложение, вычитание, а также логические операции.

· Блок управления определяет последовательность микрокоманд, выполняемых при обработке машинных кодов (команд).

· Тактовый генератор , или генератор тактовых импульсов, задаёт рабочую частоту процессора.

2.2. Режимы работы процессора.

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

1. Реальный (незащищенный) режим (real address mode) — режим, в котором работал процессор 8086. В современных процессорах этот режим поддерживается в основном для совместимости с древним программным обеспечением (DOS-программами).

2. Защищенный режим (protected mode) — режим, который впервые был реализован в 80286 процессоре. Все современные операционные системы (Windows, Linux и пр.) работают в защищенном режиме. Программы реального режима не могут функционировать в защищенном режиме.

3. Режим виртуального процессора 8086 (virtual-8086 mode, V86) — в этот режим можно перейти только из защищенного режима. Служит для обеспечения функционирования программ реального режима, причем дает возможность одновременной работы нескольких таких программ, что в реальном режиме невозможно. Режим V86 предоставляет аппаратные средства для формирования виртуальной машины, эмулирующей процессор8086. Виртуальная машина формируется программными средствами операционной системы. В Windows такая виртуальная машина называется VDM (Virtual DOS Machine — виртуальная машина DOS). VDM перехватывает и обрабатывает системные вызовы от работающих DOS-приложений.

4. Нереальный режим (unreal mode, он же big real mode) — аналогичен реальному режиму, только позволяет получать доступ ко всей физической памяти, что невозможно в реальном режиме.

5. Режим системного управления System Management Mode (SMM) используется в служебных и отладочных целях.

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

2.3. Регистры процессора (программная модель процессора).

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

· 8 регистров общего назначения, служащих для хранения данных и указателей;

· регистры сегментов — они хранят 6 селекторов сегментов;

· регистр управления и контроля EFLAGS, который позволяет управлять состоянием выполнения программы и состоянием (на уровне приложения) процессора;

· регистр-указатель EIP выполняемой следующей инструкции процессора;

· система команд (инструкций) процессора;

· режимы адресации данных в командах процессора.

Начнем с описания базовых регистров процессора Intel 80386.

Базовые регистры процессора Intel 80386 являются основой для разработки программ и позволяют решать основные задачи по обработке данных. Все они показаны на рис. 5.


Рис. 5. Базовые регистры процессора Intel 80386

Среди базового набора регистров выделим отдельные группы и рассмотрим их назначение.

2.4. Регистры общего назначения.

Остальные четыре регистра – ESI (индекс источника), EDI (индекс приемника), ЕВР (указатель базы), ESP (указатель стека) – имеют более конкретное назначение и применяются для хранения всевозможных временных переменных. Регистры ESI и EDI необходимы в строковых операциях, ЕВР и ESP – при работе со стеком. Так же как и в случае с регистрами ЕАХ - EDX, младшие половины этих четырех регистров называются SI, DI, BP и SP соответственно, и в процессорах до 80386 только они и присутствовали.

2.5. Сегментные регистры.

При использовании сегментированных моделей памяти для формирования любого адреса нужны два числа – адрес начала сегмента и смещение искомого байта относительно этого начала (в бессегментной модели памяти flat адреса начал всех сегментов равны). Операционные системы (кроме DOS) могут размещать сегменты, с которыми работает программа пользователя, в разных местах памяти и даже временно записывать их на диск, если памяти не хватает. Так как сегменты способны оказаться где угодно, программа обращается к ним, применяя вместо настоящего адреса начала сегмента 16-битное число, называемое селектором. В процессорах Intel предусмотрено шесть 16-битных регистров - CS, DS, ES, FS, GS, SS , где хранятся селекторы. (Регистры FS и GS отсутствовали в 8086, но появились уже в 80286.) Это означает, что в любой момент можно изменить параметры, записанные в этих регистрах.

В отличие от DS, ES, GS, FS, которые называются регистрами сегментов данных, CS и SS отвечают за сегменты двух особенных типов – сегмент кода и сегмент стека. Первый содержит программу, исполняющуюся в данный момент, следовательно, запись нового селектора в этот регистр приводит к тому, что далее будет исполнена не следующая по тексту программы команда, а команда из кода, находящегося в другом сегменте, с тем же смещением. Смещение очередной выполняемой команды всегда хранится в специальном регистре EIP (указатель инструкции, 16-битная форма IP), запись в который так же приведет к тому, что далее будет исполнена какая-нибудь другая команда. На самом деле все команды передачи управления – перехода, условного перехода, цикла, вызова подпрограммы и т.п. – и осуществляют эту самую запись в CS и EIP.

2.6. Регистр флагов.

Еще один важный регистр, использующийся при выполнении большинства команд, - регистр флагов. Как и раньше, его младшие 16 бит, представлявшие собой весь этот регистр до процессора 80386, называются FLAGS. В EFLAGS каждый бит является флагом, то есть устанавливается в 1 при определенных условиях или установка его в 1 изменяет поведение процессора. Все флаги, расположенные в старшем слове регистра, имеют отношение к управлению защищенным режимом, поэтому здесь рассмотрен только регистр FLAGS (см. рис. 6):


Рис. 6. Регистр флагов FLAGS.

CF – флаг переноса. Устанавливается в 1, если результат предыдущей операции не уместился в приемнике и произошел перенос из старшего бита или если требуется заем (при вычитании), в противном случае – в 0. Например, после сложения слова 0 FFFFh и 1, если регистр, в который надо поместить результат, – слово, в него будет записано 0000 h и флаг CF = 1.

PF – флаг четности. Устанавливается в 1, если младший байт результата предыдущей команды содержит четное число битов, равных 1, и в 0, если нечетное. Это не то же самое, что делимость на два. Число делится на два без остатка, если его самый младший бит равен нулю, и не делится, когда он равен 1.

AF – флаг полупереноса или вспомогательного переноса. Устанавливается в 1, если в результате предыдущей операции произошел перенос (или заем) из третьего бита в четвертый. Этот флаг используется автоматически командами двоично-десятичной коррекции.

ZF – флаг нуля. Устанавливается в 1, если результат предыдущей команды – ноль.

SF – флаг знака. Он всегда равен старшему биту результата.

TF – флаг ловушки. Он был предусмотрен для работы отладчиков, не использующих защищенный режим. Установка его в 1 приводит к тому, что после выполнения каждой программной команды управление временно передается отладчику.

IF – флаг прерываний. Сброс этого флага в 0 приводит к тому, что процессор перестает обрабатывать прерывания от внешних устройств. Обычно его сбрасывают на короткое время для выполнения критических участков кода.

DF – флаг направления. Он контролирует поведение команд обработки строк: когда он установлен в 1, строки обрабатываются в сторону уменьшения адресов, когда DF =0 – наоборот.

OF – флаг переполнения. Он устанавливается в 1, если результат предыдущей арифметической операции над числами со знаком выходит за допустимые для них пределы. Например, если при сложении двух положительных чисел получается число со старшим битом, равным единице, то есть отрицательное, и наоборот.

Флаги IOPL (уровень привилегий ввода-вывода) и NT (вложенная задача) применяются в защищенном режиме.

2.7. Цикл выполнения команды

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

Для того чтобы процессор знал, какую команду нужно выполнять в определённый момент, существует счётчик команд – специальный регистр, в котором хранится адрес команды, которая должна быть выполнена после выполнения текущей команды. То есть при запуске программы в этом регистре хранится адрес первой команды. В процессорах Intel в качестве счётчика команд (его ещё называют указатель команды) используется регистр EIP (или IP в 16-разрядных программах).

Счётчик команд работает со сверхоперативной памятью, которая находится внутри процессора. Эта память носит название очередь команд, куда помещается одна или несколько команд непосредственно перед их выполнением. То есть в счётчике команд хранится адрес команды в очереди команд, а не адрес оперативной памяти.

Цикл выполнения команды – это последовательность действий, которая совершается процессором при выполнении одной машинной команды. При выполнении каждой машинной команды процессор должен выполнить как минимум три действия: выборку, декодирование и выполнение. Если в команде используется операнд, расположенный в оперативной памяти, то процессору придётся выполнить ещё две операции: выборку операнда из памяти и запись результата в память. Ниже описаны эти пять операций.

  • Выборка команды . Блок управления извлекает команду из памяти (из очереди команд), копирует её во внутреннюю память процессора и увеличивает значение счётчика команд на длину этой команды (разные команды могут иметь разный размер).
  • Декодирование команды . Блок управления определяет тип выполняемой команды, пересылает указанные в ней операнды в АЛУ и генерирует электрические сигналы управления АЛУ, которые соответствуют типу выполняемой операции.
  • Выборка операндов . Если в команде используется операнд, расположенный в оперативной памяти, то блок управления начинает операцию по его выборке из памяти.
  • Выполнение команды . АЛУ выполняет указанную в команде операцию, сохраняет полученный результат в заданном месте и обновляет состояние флагов, по значению которых программа может судить о результате выполнения команды.
  • Запись результата в память . Если результат выполнения команды должен быть сохранён в памяти, блок управления начинает операцию сохранения данных в памяти.

Суммируем полученные знания и составим цикл выполнения команды:

  1. Выбрать из очереди команд команду, на которую указывает счётчик команд.
  2. Определить адрес следующей команды в очереди команд и записать адрес следующей команды в счётчик команд.
  3. Декодировать команду.
  4. Если в команде есть операнды, находящиеся в памяти, то выбрать операнды.
  5. Выполнить команду и установить флаги.
  6. Записать результат в память (по необходимости).
  7. Начать выполнение следующей команды с п.1.

Это упрощённый цикл выполнения команды. К тому же действия могут отличаться в зависимости от процессора. Однако это даёт общее представление о том, как процессор выполняет одну машинную команду, а значит и программу в целом.

Читайте также: