Your SlideShare is downloading. ×
028
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

028

21
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
21
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Лекция №10
  • 2. В общем случае система команд процессора включаетв себя следующие четыре основные группы команд:команды пересылки данных;арифметические команды;логические команды;команды переходов.
  • 3.  Команды пересылки данных не требуютвыполнения никаких операций надоперандами. Операнды просто пересылаются(точнее, копируются) из источника (Source) вприемник (Destination). Источником и приемником могут бытьвнутренние регистры процессора, ячейкипамяти или устройства ввода/вывода. АЛУ вданном случае не используется.
  • 4.  Арифметические команды выполняютоперации сложения, вычитания, умножения,деления, увеличения на единицу(инкрементирования), уменьшения наединицу (декрементирования) и т.д. Этим командам требуется один или двавходных операнда. Формируют команды одинвыходной операнд.
  • 5.  Логические команды производят надоперандами логические операции, например,логическое И, логическое ИЛИ, исключающееИЛИ, очистку, инверсию, разнообразныесдвиги (вправо, влево, арифметическийсдвиг, циклический сдвиг). Этим командам, как и арифметическим,требуется один или два входных операнда, иформируют они один выходной операнд.
  • 6.  Команды переходов предназначены дляизменения обычного порядка последователь-ного выполнения команд. С их помощьюорганизуются переходы на подпрограммы ивозвраты из них, всевозможные циклы,ветвления программ, пропуски фрагментовпрограмм и т.д.  Команды переходов всегда меняют содержимоесчетчика команд. Переходы могут бытьусловными и безусловными. Именно этикоманды позволяют строить сложные алгоритмыобработки информации.
  • 7.  В соответствии с результатом каждойвыполненной команды устанавливаются илиочищаются биты регистра состоянияпроцессора (PSW). Но надо помнить, что невсе команды изменяют все имеющиесяв PSW флаги. Это определяетсяособенностями каждого конкретногопроцессора.
  • 8. Функции:загрузка (запись) содержимого вовнутренние регистры процессора;сохранение в памяти содержимоговнутренних регистров процессора;копирование содержимого из однойобласти памяти в другую;запись в устройства ввода/вывода ичтение из устройств ввода/вывода.
  • 9.  В некоторых процессорах все эти функции выполняются однойединственной командой MOV (для байтовых пересылок— MOVB) но с различными методами адресации операндов. Для загрузки регистров могут использоваться командызагрузки, причем для разных регистров — разные команды (ихобозначения обычно строятся с использованиемслова LOAD — загрузка). Часто выделяются специальные команды для сохранения встеке и для извлечения из стека (PUSH — сохранить встеке, POP — извлечь из стека). Эти команды выполняютпересылку с автоинкрементной и с автодекрементнойадресацией.Стек (англ. stack — стопка) — структура данных с методомдоступа к элементам LIFO (англ. Last In — First Out, «последнимпришел — первым вышел»).
  • 10.  Иногда в систему команд вводитсяспециальная команда MOVS для строчной(или цепочечной) пересылки данных(например, в процессоре 8086).Эта команда пересылает не одно слово или байт,а заданное количество слов или байтов(MOVSB), то есть инициирует не один циклобмена по магистрали, а несколько.При этом адрес памяти, с которым происходитвзаимодействие, увеличивается на 1 или на 2после каждого обращения или же уменьшаетсяна 1 или на 2 после каждого обращения.
  • 11. В некоторых процессорах специальновыделяются функции обмена сустройствами ввода/вывода.Команда IN используется для ввода(чтения) информации из устройстваввода/вывода, акоманда OUT используется для вывода(записи) в устройство ввода/вывода.Обмен информацией в этом случаепроизводится между регистром-аккумулятором и устройствомввода/вывода.
  • 12. Также к командам пересылки данныхотносятся команды обмена инфор-мацией (их обозначение строится наоснове слова Exchange). Может бытьпредусмотрен обмен информациеймежду внутренними регистрами, междудвумя половинами одного регистра(SWAP) или между регистром иячейкой памяти.
  • 13. Арифметические команды рассматриваюткоды операндов как числовые двоичные илидвоично-десятичные коды.Эти команды могут быть разделены на пятьосновных групп:1. команды операций с фиксированной запятой(сложение, вычитание, умножение, деление);2. команды операций с плавающей запятой(сложение, вычитание, умножение, деление);3. команды очистки;4. команды инкремента и декремента;5. команда сравнения.
  • 14. Команды операций с фиксированной запятой работаютс кодами в регистрах процессора или в памяти как собычными двоичными кодами.Команда сложения (ADD) вычисляет сумму двух кодов.Команда вычитания (SUB) вычисляет разность двухкодов.Команда умножения (MUL) вычисляет произведениедвух кодов (разрядность результата вдвое большеразрядности сомножителей).Команда деления (DIV) вычисляет частное от деленияодного кода на другой.Причем все эти команды могут работать как с числамисо знаком, так и с числами без знака.
  • 15.  Команды операций с плавающей запятой(точкой) используют формат представлениячисел с порядком и мантиссой (обычно этичисла занимают две последовательные ячейкипамяти). В современных мощных процессорах наборкоманд с плавающей запятой неограничивается только четырьмяарифметическими действиями, а содержит имножество других более сложных команд,например, вычисление тригонометрическихфункций, логарифмических функций, а такжесложных функций, необходимых при обработкезвука и изображения.
  • 16.  Команды очистки (CLR) предназначены для записинулевого кода в регистр или ячейку памяти. Эти командымогут быть заменены командами пересылки нулевогокода, но специальные команды очистки обычновыполняются быстрее, чем команды пересылки. Командыочистки иногда относят к группе логических команд, носуть их от этого не меняется. Команды инкремента (увеличения на единицу, INC) идекремента (уменьшения на единицу, DEC) также бываюточень удобны. Их можно в принципе заменить командамисуммирования с единицей или вычитания единицы, ноинкремент и декремент выполняются быстрее, чемсуммирование и вычитание. Эти команды требуют одноговходного операнда, который одновременно является ивыходным операндом.
  • 17. Команда сравнения (обозначается CMP)предназначена для сравнения двух входныхоперандов. По сути, она вычисляет разностьэтих двух операндов, но выходного операндане формирует, а всего лишь изменяет биты врегистре состояния процессора (PSW) порезультату этого вычитания.Следующая за командой сравнения команда(обычно это команда перехода) будетанализировать биты в регистре состоянияпроцессора и выполнять действия взависимости от их значений
  • 18. Логические команды выполняют над операндами логические(побитовые) операции, то есть они рассматривают кодыоперандов не как единое число, а как набор отдельныхбитов. Этим они отличаются от арифметических команд. Логические команды выполняют следующие основныеоперации:1. логическое И, логическое ИЛИ, сложение по модулю 2(Исключающее ИЛИ);2. логические, арифметические и циклические сдвиги;3. проверка битов и операндов;4. установка и очистка битов (флагов) регистра состоянияпроцессора (PSW).
  • 19. Команды логических операций позволяют побитно вычислятьосновные логические функции от двух входных операндов.Кроме того, операция И (AND) используется дляпринудительной очистки заданных битов (в качестве одногоиз операндов при этом используется код маски, в которомразряды, требующие очистки, установлены в нуль).Операция ИЛИ (OR) применяется для принудительнойустановки заданных битов (в качестве одного из операндовпри этом используется код маски, в котором разряды,требующие установки в единицу, равны единице).Операция "Исключающее ИЛИ" (XOR) используется дляинверсии заданных битов (в качестве одного из операндовпри этом применяется код маски, в котором биты,подлежащие инверсии, установлены в единицу).Команды требуют двух входных операндов и формируют одинвыходной операнд.
  • 20. Команды сдвигов позволяют побитносдвигать код операнда вправо (в сторонумладших разрядов) или влево (в сторонустарших разрядов).Тип сдвига (логический, арифметическийили циклический) определяет, каковобудет новое значение старшего бита (присдвиге вправо) или младшего бита (присдвиге влево), а также определяет, будетли где-то сохранено прежнее значениестаршего бита (при сдвиге влево) илимладшего бита (при сдвиге вправо).
  • 21. Циклические сдвиги позволяют сдвигать битыкода операнда по кругу (по часовой стрелкепри сдвиге вправо или против часовой стрелкипри сдвиге влево). При этом в кольцо сдвигаможет входить или не входить флаг переноса.В бит флага переноса (если он используется)записывается значение старшего бита прициклическом сдвиге влево и младшего битапри циклическом сдвиге вправо.Соответственно, значение бита флага переносабудет переписываться в младший разряд прициклическом сдвиге влево и в старший разрядпри циклическом сдвиге вправо.
  • 22. Команды проверки битов и операндовпредназначены для установки или очистки битоврегистра состояния процессора в зависимости отзначения выбранных битов или всего операнда вцелом. Выходного операнда команды неформируют.Команда проверки операнда (TST) проверяет веськод операнда в целом на равенство нулю и на знак(на значение старшего бита), она требует толькоодного входного операнда.Команда проверки бита (BIT) проверяет толькоотдельные биты, для выбора которых в качествевторого операнда используется код маски. В кодемаски проверяемым битам основного операндадолжны соответствовать единичные разряды.
  • 23. Команды установки и очистки битов регистрасостояния процессора (то есть флагов)позволяют установить или очистить любойфлаг, что бывает очень удобно.Каждому флагу обычно соответствуют двекоманды, одна из которых устанавливает его вединицу, а другая сбрасывает в нуль.Например, флагу переноса C (от Carry) будутсоответствовать команды CLC (очистка)и SEC или STC (установка).
  • 24. Команды переходов предназначены дляорганизации всевозможных циклов, ветвлений,вызовов подпрограмм и т.д., то есть они нарушаютпоследовательный ход выполнения программы.Эти команды записывают в регистр-счетчик командновое значение и тем самым вызывают переходпроцессора не к следующей по порядку команде, ак любой другой команде в памяти программ.Некоторые команды переходов предусматривают вдальнейшем возврат назад, в точку, из которойбыл сделан переход, другие не предусматриваютэтого. Если возврат предусмотрен, то текущиепараметры процессора сохраняются в стеке. Есливозврат не предусмотрен, то текущие параметрыпроцессора не сохраняются.
  • 25. Команды переходов без возврата делятся на две группы: команды безусловных переходов; команды условных переходов.В обозначениях этих команд используютсяслова Branch (ветвление) и Jump (прыжок).Команды безусловных переходов вызывают переход вновый адрес независимо ни от чего. Они могут вызыватьпереход на указанную величину смещения (вперед илиназад) или же на указанный адрес памяти. Величинасмещения или новое значение адреса указываются вкачестве входного операнда.Команды условных переходов вызывают переход не всегда,а только при выполнении заданных условий. В качестветаких условий обычно выступают значения флагов врегистре состояния процессора (PSW). То есть условиемперехода является результат предыдущей операции,меняющей значения флагов.
  • 26. Условий перехода может быть от 4 до 16.Несколько примеров команд условных переходов:переход, если равно нулю;переход, если не равно нулю;переход, если есть переполнение;переход, если нет переполнения;переход, если больше нуля;переход, если меньше или равно нулю.
  • 27. Если условие перехода выполняется, то производитсязагрузка в регистр-счетчик команд нового значения. Еслиже условие перехода не выполняется, счетчик командпросто наращивается, и процессор выбирает и выполняетследующую по порядку команду.Специально для проверки условий перехода применяетсякоманда сравнения (CMP), предшествующая командеусловного перехода (или даже нескольким командамусловных переходов).Но флаги могут устанавливаться и любой другой командой,например командой пересылки данных, любойарифметической или логической командой.Отметим, что сами команды переходов флаги не меняют,что как раз и позволяет ставить несколько командпереходов одну за другой.Совместное использование нескольких команд условных ибезусловных переходов позволяет процессору выполнятьразветвленные алгоритмы любой сложности.
  • 28. На рис. показано разветвление программы на две ветки споследующим соединением.
  • 29. а на рис. — разветвление на три ветки с последующимсоединением.
  • 30. Все команды переходов с возвратом предполагаютбезусловный переход (они не проверяют никакихфлагов). При этом они требуют одного входногооперанда, который может указывать какабсолютное значение нового адреса, так исмещение, складываемое с текущим значениемадреса. Текущее значение счетчика команд(текущий адрес) сохраняется перед выполнениемперехода в стеке.Для обратного возврата в точку вызова подпрог-раммы (точку перехода) используется специальнаякоманда возврата (RET или RTS). Эта командаизвлекает из стека значение адреса командыперехода и записывает его в регистр-счетчиккоманд.
  • 31.  Особое место среди команд перехода с возвратомзанимают команды прерываний (распространенноеназвание — INT). Эти команды в качествевходного операнда требуют номер прерывания(адрес вектора). Обслуживание таких переходовосуществляется точно так же, как и аппаратныхпрерываний. То есть для выполнения данногоперехода процессор обращается к таблицевекторов прерываний и получает из нее по номерупрерывания адрес памяти, в который емунеобходимо перейти. Адрес вызова прерывания исодержимое регистра состояния процессора (PSW)сохраняются в стеке. Сохранение PSW — важноеотличие команд прерывания от командпереходов с возвратом.