Практические задачи команд микропроцессора
Характеристика центрального процессора как устройства компьютера, выполняющего операции по обработке данных и управляющего периферийными устройствами компьютера. Анализ системных команд, регистров микропроцессора. Описание команд условного перехода.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 02.12.2017 |
Размер файла | 78,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«ТЮМЕНСКИЙ ИНДУСТРИАЛЬНЫЙ УНИВЕРСИТЕТ»
ТОБОЛЬСКИЙ ИНДУСТРИАЛЬНЫЙ ИНСТИТУТ (ФИЛИАЛ)
КАФЕДРА ЕСТЕСТВЕННОНАУЧНЫХ И
ГУМАНИТАРНЫХ ДИСЦИПЛИН
КОНТРОЛЬНАЯ РАБОТА
по дисциплине "Вычислительные машины, системы и сети"
Вариант № 46
Выполнил: Студент группы АТПбз-15
Токарев А.О.
Проверил: к.п.н., доцент кафедры ЕНГД
Н.И. Герчес
Тобольск, 2017
Содержание
Система команд ЦП
Системные регистры
Практические задачи команд микропроцессора ЦП. Команды передачи управления. Команды организации циклов
Список используемой литературы
Система команд ЦП
Центральный процессор - это центральное устройство компьютера, которое выполняет операции по обработке данных и управляет периферийными устройствами компьютера. У компьютеров четвёртого поколения и старше функции центрального процессора выполняет микропроцессор на основе СБИС, содержащей несколько миллионов элементов, конструктивно созданный на полупроводниковом кристалле путём применения сложной микроэлектронной технологии.
Изучение составов команд различных ЭВМ позволяет, прежде всего, предположить, что каждая из них обладает своими особенностями. В действительности же многообразие в значительной мере определяется различными способами обозначений и представлений. В соответствии с единым принципом действия и возможностью электронной реализации существует элементарный состав команд, присущих почти каждому отдельному процессору.
Кроме того, значительные различия могут иметь внешнее проявление в виде дополнительных команд, выражающих специфические особенности процессора, и тем самым делают возможным его специальное конкретные применения.
Собственно говоря, точное знание состава команд нужно только узкому кругу разработчиков программ. Сточки зрения эффективности программирования в дальнейшем будем ориентироваться, на использование при программировании языков высокого уровня. К этому следует заметить: программа на ЭВМ должна состоять из команд, имеющихся в составе команд процессора.
Следовательно, каждая программа, записанная на языке высокого уровня, должна выводиться на процессорный уровень одним или несколькими этапами ее перевода. Поэтому для понимания принципа действия и оценки производительности ЭВМ нужно располагать основными сведениями относительно составов команд. Только тогда станет понятно, почему для ЭВМ с быстродействием 100000 операций в секунду нужно в конечном счете значительное время вычислений при «решении кажущихся простыми задач.
Система команд процессора
В общем случае система команд процессора включает в себя следующие четыре основные группы команд:
1) Команды пересылки данных
Команды пересылки данных занимают очень важное место в системе команд любого процессора. Они выполняют следующие важнейшие функции:
- загрузка (запись) содержимого во внутренние регистры процессора;
- сохранение в памяти содержимого внутренних регистров процессора;
- копирование содержимого из одной области памяти в другую;
- запись в устройства ввода/вывода и чтение из устройств ввода/вывода.
2) Арифметические команды
Арифметические команды выполняют операции сложения, вычитания, умножения, деления, увеличения на единицу, уменьшения на единицу и т.д. Этим командам требуется одно или два значения на входе. Формируют команды одно значение на выходе.
3) Логические команды (Битовые)
Логические команды выполняют следующие основные операции:
- логическое И, логическое ИЛИ, сложение по модулю 2 (Исключающее ИЛИ);
- логические, арифметические и циклические сдвиги;
- проверка битов и операндов;
- установка и очистка битов (флагов) регистра состояния процессора ( PSW).
4) Команды переходов - Команды переходов предназначены для организации всевозможных циклов, ветвлений, вызовов подпрограмм и т.д., то есть они нарушают последовательный ход выполнения программы. Эти команды записывают в регистр-счетчик команд новое значение и тем самым вызывают переход процессора не к следующей по порядку команде, а к любой другой команде в памяти программ. Некоторые команды переходов предусматривают в дальнейшем возврат назад, в точку, из которой был сделан переход, другие не предусматривают этого. Если возврат предусмотрен, то текущие параметры процессора сохраняются в стеке.
Прерывание - сигнал, сообщающий процессору о наступлении какого-либо события. При этом выполнение текущей последовательности команд приостанавливается, и управление передаётся обработчику прерывания, который реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код.
В зависимости от источника возникновения сигнала прерывания делятся на:
- внешние (аппаратные) - события, которые исходят от внешних источников (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры, движение мыши. Факт возникновения в системе такого прерывания трактуется как запрос на прерывание (англ. Interrupt request, IRQ);
- внутренние - события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение, обращение к недопустимым адресам или недопустимый код операции;
- программные (частный случай внутреннего прерывания) - инициируются исполнением специальной инструкции в коде программы. Программные прерывания как правило используются для обращения к функциям встроенного программного обеспечения (firmware), драйверов и операционной системы.
Системные регистры
К системным регистрам относятся те внутренние регистры процессора, которые предназначены для использования системными программистами. Эти регистры помогают реализовать мощные системные возможности процессоров семейства Х86 при работе в защищенном (P) режиме. Отсюда ясно, что процессоры младших моделей - 8086/8088 и 80186 системных регистров не имеют. Их включение начинается с модели 80286, когда впервые был введен защищенный режим работы, хотя регистров отладки и тестирования не было и в нем. С дальнейшим развитием процессоров семейства Х86, их состав и число используемых в них битов только возрастало. В общем случае системные регистры микропроцессоров семейства Х86 можно разделить на три группы
1) регистры управления памятью (регистры P - режима). Эти регистры присутствуют во всех процессорах, начиная с 80286 и кончая последними моделями Intel Core i7.
2) регистры общего управления, которые также присутствуют во всех моделях семейства Х86;
3) регистры отладки, которые введены начиная с модели 80386;
Регистры управления памятью: Регистры управления памятью определяют местонахождение структур данных, управляющих сегментацией памяти. Функции этих регистров остались практически неизменными во всех моделях, начиная с 80286 до последних моделей Intel Core 2. По структуре, правда, регистры управления памятью модели 80286 несколько отличаются от регистров всех остальных моделей, поскольку в дескрипторах МП 80286 размещен 24 разрядный базовый адрес сегмента, а в дескрипторах других моделей - 32 разрядный. К регистрам управления памятью относятся следующие регистры.
1) GDTR (Global Descriptor Table Register) -регистр глобальной дескрипторной таблицы.
2) IDTR (Interrupt Descriptor Table Register) -регистр дескрипторной таблицы прерываний.
3) LDTR (Local Descriptor Table Register) - регистр локальной дескрипторной таблицы.
TR (Task Register) -регистр задачи.
Регистр GDTR служит для хранения базового (начального) адреса сегмента глобальной дескрипторной таблицы в адресном пространстве оперативной памяти и ее размера. Этот сегмент включает в себя дескрипторы всех сегментов кода, данных, а также системных сегментов, за исключением дескрипторов шлюзов, используемых при прерываниях.
Регистр IDTR служит для хранения базового адреса и размера дескрипторной таблицы прерываний, в которой содержаться все дескрипторы шлюзов, связанных с системой прерываний процессора.
Регистр LDTR служит для хранения селектора, который адресует дескриптор LDT, в котором, в свою очередь, определяется местонахождение в адресном пространстве и размер локальной дескрипторной таблицы, содержащей дескрипторы сегментов, используемые при выполнении одной какой либо задачи.
В регистре TR хранится селектор, который адресует дескриптор сегмента состояния (TSS) текущей задачи (процесса), в котором находится его адрес и размер.
Загружаются регистры управления памятью соответственно командами: LGDT, LIDT, LLDT, LTR
При этом, сами дескрипторы как сегмента локальной дескрипторной таблицы (LDT), так и сегмента состояния задачи (TSS), располагаются в глобальной дескрипторной таблице.
Регистры общего управления включают в себя: 1) В процессоре 80286, только один 16 разрядный регистр, который называется регистром слова состояния машины MSW (Machine Status Word). Он включает в себя 7 управляющих битов: бит 0 - PE (Protect Enable), бит 1 - MP (Mathematic Present), бит 2 - EM (Emulation), бит 3 - TS (Task Switched), бит 4 - ET (Extension Type), бит 5 - NE (Numeric Error) и бит 15 - WP (Write Protect). В дальнейших моделях МП этого семейства, MSW вместе с перечисленными битами входит как младшие два байта в регистр общего управления CR0 (т.е. регистр MSW входит как составная часть регистра CR0, реализуя принцип преемственности моделей семейства);
2) В процессорах 80386 и 80486 уже присутствуют четыре управляющих регистра общего управления: CR0, CR1, CR2, CR3. При этом в регистре CR0 для управления используются дополнительно: бит 18 - AM (Alignment Mask), бит 29 - NW (Not Write-through), бит 30 - CD (Cache Disable) и бит 31 - PG (Paging). Кроме того, в регистре CR3 как управляющие используются биты 3 - PWT (Page Write - Through) и 4 - PCD (Page Cache Disable);
3) В процессорах Pentium добавлен еще один управляющий регистр общего управления - CR4 и в нем задействованы еще 6 управляющих битов. Бит 0 - VME (Virtual 8086 Mode Extension), бит 1 - PVI (Protected-Mode Virtual Interrupt), бит 2 - TSD (Time Stamp Disable), бит 3 - DE (Debugging Extensions), бит 4 - PSE (Page Size Extensions) и бит 6 - MCE (Machine-Check Enable).
Регистр CR1 - зарезервирован. В регистре CR2 фиксируется линейный адрес страничного нарушения, например, в случае отсутствии в оперативной памяти страницы, к которой произведено обращение. А в старших двух байтах регистра CR3 хранится физический адрес каталога страниц.
PE (Protect Enable -разрешение защиты).Установка бита PE в состояние 1 переводит работу процессора из реального R - режима в защищенный P - режим. При запуске процессора, или после сброса, всегда устанавливается реальный режим его работы, в котором эмулируется работа процессора 8086. Поэтому для перехода в защищенный режим, в котором доступна 32 разрядная система команд, процедура инициализации BIOS устанавливает в единичное состояние бита PE в регистре CR0.
MP (Mathematic Present - присутствие математического сопроцессора). В процессорах 80286 и 80386 устанавливается в состояние 1 при использовании дополнительного математического сопроцессора. В процессорах старших моделей математический сопроцессор расположен внутри микросхемы на одном кристалле с центральным процессором. Поэтому в них бит MP устанавливается в состояние 1 автоматически. Этот бит используется для управления командой ожидания WAIT, которая применяется для согласования действий центрального процессора с математическим сопроцессором при выполнении операций с вещественными числами.
EM (Emulation -эмуляция).Этот управляющий бит, установленный в состояние 1, позволяет центральному процессору дополнительно выполнять операции с действительными числами, используя специальные процедуры. При этом CPU осуществляет как бы эмуляцию математического сопроцессора.
TS (Task Switched -задача переключена).Процессор устанавливает этот флаг в состояние 1 при каждом переключении задач и анализирует его при поступлении команд математического сопроцессора. Это позволяет задержать сохранение или восстановление контекста математического сопроцессора до фактического использования численных данных.
ET (Extension Type -тип расширения).Этот бит указывает тип используемого сопроцессора. ET = 1 определяет использование 32 разрядного протокола МП 80387. При ET = 0 используется 16 разрядный протокол МП 80287. Следовательно, при ET = 0, процессор 80386 может быть использован совместно с математическим сопроцессором 80287. В процессорах последующих моделей этот бит не имеет значения, поскольку математические сопроцессоры в них встроены внутри кристалла.
PG (Paging - страничное преобразование). Этот бит разрешает (1) или запрещает использование страничного преобразования адреса.
NE (Numeric Error -численная ошибка). Установка этого бита в состояние 1 включает механизм сообщений об ошибках математического сопроцессора.
WP (Write Protect -защита от записи). Установка этого бита в 1 позволяет защитить страницы, расположенные на уровне привилегий пользователя, от изменения их программами операционной системы, работающих на более привилегированных уровнях. При WP = 0, операционная система может осуществить запись в страницы пользовательского уровня, хотя и защищенные от записи.
AM (Alignment Mask -маска выравнивания). Этот бит разрешает (1) или запрещает (0) контроль выравнивания. Контроль выравнивания производится, когда AM=1, флаг AC=1 и текущий уровень привилегий CPL=3 (режим пользователя). При AM=0 достигается совместимость с процессором 80386 (не имеющим флага AC), поскольку при AM=0 бит AC замаскирован.
NW (Not Write-through -несквозная запись).Этот бит, предназначен для управления встроенной кэш-памятью. Если этот бит, сброшен, то сквозная запись и циклы недостоверности разрешены. Если бит, установлен, то сквозная запись и циклы недостоверности запрещены.
CD (Cache Disable -запрещение кэш-памяти). Если CD = 0, работа внутренней кэш-памяти разрешена, иначе - запрещена.
PWT (Page Write-Through -сквозная запись в страницу).Этот бит используется для управления кэш-памятью. При PWT=1, для текущей страницы обновление реализуется методом сквозной записи, при PWT=0 - методом обратной записи.
PCD (Page Cache Disable -запрещение кэширования страницы). Этот бит используется для управления кэш-памятью. Посредством этого бита можно управлять кэшированием, как отдельных страниц, так и таблиц страниц. Установка бита PCD в 1 запрещает загрузку страницы в кэш-память.
VME (Virtual-8086 Mode Extensions -расширение режима виртуального 8086).Установка в 1 этого бита включает поддержку флагов виртуальных прерываний VIF и VIP в режиме V86.
PVI (Protected-Mode Virtual Interrupt -виртуальные прерывания защищенного режима). Установка в 1 этого бита включает поддержку виртуальных прерываний в защищенном режиме. Это позволяет выполнять программы, предназначенные для уровня привилегий 0, на уровне привилегий 3.
TSD (Time Stamp Disable -разрешение маркера времени).Установка бита TSD в 1 разрешает использовать привилегированную команду RDTSC (Read from time stamp counter).
DE (Debugging Extensions -расширение отладки). Установка бита DE в 1
разрешает точки останова по вводу/выводу.
PSE (Page Size Extensions -расширение размера страниц). Установка бита PSE в 1 разрешает использование страниц размером 4 Мбайт.
MCE (Machine-Check Enable -расширение контроля машины). MCE=1 разрешает расширенный контроль.
Регистры отладки
Регистры отладки включают в себя 8 регистров, которые ввели в процессоры семейства Х86, начиная с модели 80386. Регистры отладки предназначены для реализации новых средств отладки, которые раньше применялись в больших компьютерах.
Практические задачи команд микропроцессора ЦП. Команды передачи управления. Команды условных переходов
Команды передачи управления
Передача управления на указанную команду может осуществляться в том случае, когда выполняется какое-нибудь условие. Выполнение условия зависит от того, установлены или нет определяющие это условие биты регистры флагов FL. Такие команды передачи управления называются командами условного перехода. Например, после команды - jne lab1 управление на метку lab1 передается в том и только том случае, когда флаг ZF равен 0. Если же ZF=1, то выполняется команда, следующая за командой перехода. Мнемоническое обозначение jne происходит от слов “jump not equal”, “переход, если не равно”. Имеется ввиду, что перед командой перехода выполнялась команда сравнения двух операндов, и переход надо осуществлять, если эти два операнда не равны.
Таким образом, обычно флаги устанавливаются с помощью команды сравнения
- cmp операнд1, операнд2
действие которой аналогично действию команды
- sub операнд1, операнд2
вычитания, за исключением того, что команда cmp не записывает результат вычитания на место первого операнда. Например, команды
- cmp ax,bx
- jne lab1
осуществляют передачу управления на метку lab1 в случае, если значения регистров ax и bx не равны.
В следующем ниже примере мы применяем вместо команды
- mov dx,OFFSET mes
Команду
- lea dx,mes
записи адреса строки с именем mes в регистр dx. Эти команды действуют аналогично.
Пример. Информация о типе компьютера содержится во втором байте, от конца ROM BIOS в виде ключевого байта
Компьютер |
Ключ |
|
PC |
FF |
|
XT |
FE |
|
PCjr |
FD |
|
AT |
FC |
Напишем программу, читающую байт с адресом FFFFE (из ROM BIOS) и выводящую соответствующее сообщение, например: “Это AT”. Регистр ES устанавливается на последний сегмент ROM BIOS с помощью команд:
- mov ax,0f00h
- mov es,ax
ибо запись непосредственного операнда 0f00h в ES недопустима. Затем, с помощью команды
- mov al,es:[0fffeh]
ключевой байт записывается в al. Сравниваем содержимое с ff, fe, fd, ds и выводим соответствующее сообщение. Если ключ не совпал ни с одним из этих значений, то выводим сообщение об ошибке. Для вывода сообщений используется функция 9 прерывания 21h.
- <1> title comp.exe
- <2> code SEGMENT
- <3> assume cs:code, ds:data
- <4> mov ax,data ;инициализация
- <5> mov ds,ax ;регистр ds
- <6> mov ax,0f000h ;регистр es
- <7> mov es,ax ;устанавливается на последний
- <8> ;сегмент ROM BIOS
- <9> mov al,es:[0fffeh] ;запись ключа в al
- <10> cmp al,0ffh ;это PC?
- <11> jne lab1 ;если нет
- <12> lea dx,mpc ;если да
- <13> jmp lab5
- <14> lab1: cmp al,0feh ;это XT?
- <15> jne lab2 ;если нет
- <16> lea dx,mxt ;если да
- <17> jmp lab5
- <18> lab2: cmp al,0fdh ;это PCjr?
- <19> jne lab3 ;если нет
- <20> lea dx,mpcjr ;если да
- <21> jmp lab5
- <22> lab3: cmp al,0fch ;это AT?
- <23> jne lab4 ;если нет
- <24> lea dx,mat ;если да
- <25> jmp lab5
- <26> lab4: lea dx,mer ;ошибка
- <27> lab5: mov ah,9 ;вывод
- <28> int 21h ;сообщения
- <29> mov ax,4c00h
- <30> int 21h
- <31> code ends
- <32> data segment
- <33> mpc db `Это PC',13,10,'$'
- <34> mxt db `Это XT',13,10,'$'
- <35> mpcjr db `Это PCjr',13,10,'$'
- <36> mat db `Это AT',13,10,'$'
- <37> mer db `Неизвестный компьютер',13,10,'$'
- <38> data ends
- <39> end
В действительности микропроцессор имеет 18 команд условного перехода. Переходы могут осуществляться в зависимости от состояния флагов ZF, SF, CF, 0F, PF (но не AF). Для того, чтобы делать переходы на основании выполнения отношений равно, меньше, не меньше, больше, не больше и других, применяется команда CMP. В следующей ниже таблице в левом столбце записаны мнемоники команд перехода. В среднем столбце - условия, которые были определены с помощью команды CMP или другой команды, предшествующей команде перехода. В последнем столбце - значения флагов, при которых команда перехода передаст управление на смещение, указанное операндом.
Команда |
Отношение между операндами команды CMP или свойства результата операции |
Значения флагов |
|
ja/jnbe |
Выше |
CF=0 и ZF=0 |
|
jae/jnb |
Выше или равно/ не ниже/ не перенос |
CF=0 |
|
jb/jnae/jc |
Ниже/перенос |
CF=1 |
|
jbe/jna |
Ниже или равно/не выше |
CF=1 или ZF=1 |
|
jcxz/jecxz |
CX=0/ECX=0 |
||
je/jz |
Равно/нуль |
ZF=1 |
|
jg/jnle |
Больше |
ZF=0 и SF=0F |
|
jge/jnl |
Больше или равно/не меньше |
SF=0F |
|
jl/jnge |
Меньше |
SF№0F |
|
jle/jng |
Меньше или равно/не больше |
ZF=1 или SF№0F |
|
jne/jnz |
Не равно/не нуль |
ZF=0 |
|
jno |
Не переполнение |
0F=0 |
|
jnp/jpo |
Не паритет/паритет нечетный |
PF=0 |
|
jns |
Не знак |
SF=0 |
|
jp/jpe |
Паритет/паритет четный |
PF=1 |
|
jo |
Переполнение |
OF=1 |
|
js |
Знак |
SF=1 |
компьютер процессор регистр
Команды условных переходов
В группе команд передачи управления различают четыре типа команд: безусловные переходы, условные переходы, циклы и прерывания.
Команды безусловных переходов. Включают три мнемокода: JMP (безусловный переход), CALL (вызов подпрограммы) и RET (возврат из подпрограммы).
Команда JMP позволяет осуществить переход в любую точку программы, расположенную как в текущем программном сегменте, так и в другом сегменте. При переходе в пределах текущего программного сегмента используются первые три формата команды JMP.
Первый формат обеспечивает переход в произвольную точку программы внутри текущего программного сегмента, для чего к содержимому IP добавляется в дополнительном коде 16-разрядное смещение, старший разряд которого является знаковым. Второй, укороченный формат позволяет перейти к точке программы, отстоящей не более чем на -128-f-127 адресов от команды JMP. Наконец, третий формат осуществляет загрузку указателя команд 16-разрядным числом, которое размещено по исполнительному адресу ЕА, определяемому постбайтом. Этот переход называется косвенным, так как используется косвенная адресация.
Для реализации безусловного перехода к точке программы, расположенной вне текущего программного сегмента, когда требуется перезагрузка сегментного регистра CS, используются четвертый и пятый форматы команды JMP.
Четвертый формат определяет прямой межсегментный переход, при котором во втором и третьем байтах формата указан относительный адрес точки перехода, а в четвертом и пятом байтах- новое значение CS. Пятый формат с помощью постбайта позволяет определить исполнительный адрес ЕА, по которому находится относительный адрес точки перехода (в байтах памяти с адресами ЕА, ЕА+1), и новое значение CS (в байтах памяти ЕА+2, ЕА+3).
Команда CALL позволяет вызвать подпрограмму, расположенную как в текущем программном сегменте, так и в другой области памяти. Она имеет такие же форматы, что и команда JMP, за исключением укороченного. В отличие от команды JMP аналогичного формата по команде CALL перед изменением значений IP или IP и CS происходит автоматическая запись в стек текущих значений этих регистров, что обеспечивает запоминание точки возврата из подпрограммы.
Для возврата из подпрограммы используется команда RET, под действием которой происходит передача управления по адресу возврата, занесенному в стек при выполнении предыдущей команды CALL. При возврате из подпрограмм, расположенных в текущем программном сегменте, применяются первые два формата команды RET, причем второй формат отличается от первого тем, что к содержимому указателя стека добавляется константа, записанная во 2-м и 3-м байтах команды. Это позволяет одновременно с возвратом из подпрограммы сбрасывать параметры, записанные в стек при выполнении этой подпрограммы и не используемые в дальнейшем.
Для межсегментного возврата применяются третий и четвертый форматы RET, которые обеспечивают восстановление содержимого как указателя команд, так и программного сегмента.
Команды условных переходов
Осуществляют передачу управления в зависимости от результатов предыдущих операций. Различают три разновидности условных переходов, которые используются для установления соотношений чисел со знаком, чисел без знака и произвольных чисел. В первых двух разновидностях для одних и тех же соотношений между числами выбираются различные мнемокоды команд, поскольку одним и тем же соотношениям чисел со знаком и чисел без знака соответствуют различные значения флагов.
В мнемокодах команд условных переходов при сравнении чисел со знаком для обозначения условия «больше» используется буква G (Greater - больше), а для обозначения - «меньше» буква L (Less - меньше). Для аналогичных условий при сравнении чисел без знака используются соответственно буквы A (Above- над) и В (Below - под). Условие равенства обозначается буквой Е (Equal - равно), а невыполнение некоторого условия - буквой N (Not - не). Следует отметить, что допускается исползование двух различных мнемокодов для каждой команды; например, мнемокоды JL и JNGF - эквивалентны, поскольку условия «меньше» и «не больше или равно» - идентичны.
Полный список мнемокодов команд, проверяемых условий, а также соответствующие булевские комбинации флагов и их значения приведен в табл. 1.4.
Таблица 1.4
Мнемокод команды |
Условие |
Значение флагов |
|
|
Для чисел со знаком |
|
|
JL/JNGE |
Меньше/не больше или равно |
SF + OF = l |
|
JNL/JGE |
Не меньше/больше или равно |
SF + OF = 0 |
|
JG/JNLE |
Больше/не меньше или равно |
(SF + OF) V ZF = 0 |
|
JNG/JLE |
Не больше/меньше или равно Для чисел без знака |
(SF + OF) V ZF = l |
|
JB/JNAE |
Меньше/не больше или равно |
CF = 1 |
|
JNB/JAE |
Не меньше/больше или равно |
CF = 0 |
|
JA/JNBE |
Больше |
CF V ZF = 0 |
|
JNA/JBE |
Не больше Для прочих данных |
CF V ZF = 1 |
|
JE/JZ |
Равно/по нулю |
ZF = 1 |
|
JNE/JNZ |
Не равно/по нулю |
ZF = 0 |
|
JS |
По минусу |
SF = 1 |
|
JNS |
По плюсу |
SF = 0 |
|
JO |
По переполнению |
OF = l |
|
JNO |
По отсутствию переполнения |
OF = 0 |
|
JP/JPE |
По четному паритету |
PF = 1 |
|
JNP/JPO |
По нечетному паритету |
PF = 0 |
Все команды условных переходов имеют одинаковый двухбайтовый формат, в первом байте которого задается код операции (КОП), а во втором - 8-разрядное смещение, которое рассматривается как число со знаком и, следовательно, позволяет осуществлять изменение адреса в диапазоне от -128 до +127. При необходимости более отдаленного («дальнего») перехода по выполнению условия используется дополнительно команда безусловного перехода.
Время выполнения каждой из команд условных переходов указано для двух случаев: 1) условие выполнено и управление действительно передается в соответствии со смещением, 2) условие не выполнено, так что управление передается следующей команде.
Команды организации циклов
Введены в ЦП для удобства выполнения вычислительных циклов. К ним относятся следующие мнемокоды: LOOP (цикл, пока (СХ) не равно 0), LOOPNZ/LOOPNE (цикл, пока не нуль/не равно), LOOPZ/LOOPE (цикл, пока нуль/равно) и JCXZ (переход по нулю в СХ). Каждая из этих команд имеет двухбайтовый формат, во втором байте которого указывается 8-разрядное смещение, используемое для организации перехода. Это смещение рассматривается как число со знаком и перед вычислением адреса перехода оно расширяется со знаком до 16 разрядов.
Используя команды циклов совместно с командами манипуляции элементами строк, можно составлять достаточно сложные программы преобразования строк. Рассмотрим пример составления программы для перевода строки данных, записанных в шестнадцатеричной системе счисления, в некоторый код, для которого перекодировочная таблица находится в памяти с начального адреса, указанного в ВХ, как это требуется для использования команды табличного преобразования кодов XLAT. Пусть далее исходная строка содержит 80 элементов и находится в памяти с относительного начального адреса 100, а строка-результат должна быть размещена с относительного адреса 200. Программа, выполняющая перекодировку исходной строки в строку-результат, при значении флага направления DF=0 будет иметь вид:
MOV SI ,100
MOV DI ,200
MOV СХ , 80
TRANSLATE: LODS
XLAT
STOS
LOOP TRANSLATE
Здесь использована команда табличного преобразования кодов XLAT, описанная в 1.2.
Команды прерывания
Включают три мнемокода: INT (прерывание), INTO (прерывание при переполнении) и IRET (возврат из прерывания).
Команда прерывания INT при v = 1 имеет двухбайтовый формат, второй байт которого содержит 8-разрядное число, определяющее тип (type) или уровень прерывания. По команде INT type процессор переходит к выполнению программы обслуживания прерывания указанного уровня, причем автоматически выполняются действия, необходимые для обеспечения возврата в точку прерывания. Эти действия состоят в следующем: содержимое регистра флагов F записывается в стек (PUSHF), сбрасываются флаги IF и TF, текущие значения регистра CS и указателя команд IP записываются в стек.
Для определения начального адреса программы обслуживания в соответствии со значением type используется таблица уровней прерывания. Для каждого из 256 уровней прерываний в этой таблице отведено по четыре байта: первые два байта определяют значение указателя команд IP, вторые - значение сегментного регистра CS. Эта четверка байтов определяет начальные адреса программ обслуживания (пары значений CS, IP), которые должны быть предварительно записаны в ячейки памяти по абсолютным адресам 0-3FFH. Адрес таблицы, соответствующий указанному в команде INT type уровню прерывания, определяется в ЦП следующим образом. После запоминания в стеке текущих значений CS и ГР осуществляются загрузки: CS = type x 4 + 2 и IP = type x 4. Новые значения CS и IP, взятые соответственно из ячеек с адресами type x 4 + 2 и type x 4, определяют начальный адрес требуемой программы обслуживания.
Рассмотренная выше команда прерывания INT при значении поля v = 0 имеет однобайтовый формат, т. е. не требует специального указания уровня прерывания. Эта команда автоматически воспринимается процессором как прерывание третьего уровня (type=3) и обычно используется в программах в качестве контрольной точки.
Команда прерывания при переполнении INTO вызывает переход на обслуживание прерывания четвертого уровня (type = 4) в случае, когда значение флага переполнения OF = 1. Команда INTO обычно используется после арифметических команд над числами со знаком. Обычно несколько первых уровней прерываний (до 32) резервируются под обработку ряда специфических ситуаций, таких, например, как попытка деления на нуль, переполнение и тому подобных.
Особенность обработки прерываний зарезервированных уровней состоит в том, что процессор переходит к их обслуживанию независимо от значения флага IF разрешения прерываний.
Однобайтовая команда IRET ставится в конце каждой программы обслуживания прерывания и обеспечивает возврат из прерывания. По этой команде процессор извлекает из стека значение указателя команд IP и программного сегмента CS, а также восстанавливает прежнее содержимое регистра флагов F (как и по команде POPF). При необходимости содержимое остальных регистров ЦП, соответствующее прерываемой программе, может быть запомнено в стеке при переходе на программу обслуживания и затем восстановлено при возврате из нее с помощью команд обращения к стеку.
Размещено на Allbest.ru
Подобные документы
Внутренняя архитектура микропроцессора Intel 486. Формат данных и команд. Регистры общего назначения. Программная модель устройства FPU, регистр флагов. Разработка структуры и микропрограммы микропроцессора, управляющего автомата с жесткой логикой.
курсовая работа [1,6 M], добавлен 27.05.2013Изучение элементов структуры микропроцессора i80386 и алгоритмов выполнения множества команд. Разработка проекта структуры АЛУ и структуры микро-ЭВМ на базе гипотетического процессора. Описание и создание программы эмуляции по выполнению заданных команд.
курсовая работа [484,4 K], добавлен 07.09.2012Характеристика регистров памяти как устройств временного хранения данных. Различия между прерываниями и исключениями команд, их обработка. Вычисление производительности ЭВМ. Программа с использованием отложенного запуска команд. Виды компьютерных сетей.
контрольная работа [24,9 K], добавлен 09.11.2010Изучение архитектуры персонального компьютера на примере микропроцессора фирмы Intel. Регистры общего назначения. Оперативная память; форматы данных и команд. Команд пересылки с различными способами адресации операндов. Структура программы на Ассемблере.
курс лекций [506,4 K], добавлен 03.05.2014Типы команд, синтаксис ассемблера и код операции, по которому транслируется команда. Команды вычисления и непосредственной пересылки данных между регистрами. Поле для определения операции вычисления. Управление последовательностью выполнения программы.
реферат [29,1 K], добавлен 13.11.2009Функциональная схема микропроцессора Intel 8086 (i8086). Формирование физического адреса памяти, выборка команд из памяти и запись их в очередь команд. Система команд процессора. Суть защищенного режима, переход из защищенного режима в реальный режим.
практическая работа [93,3 K], добавлен 24.03.2013Разработка структурной схемы процессора; синтез микропрограммного и управляющего автомата с жесткой логикой. Функциональная организация процессора: программные модели, форматы данных и команд. Организация оперативной памяти. Проектирование блока операций.
учебное пособие [1,1 M], добавлен 09.04.2013Общая характеристика программной модели процессора Intel x86. Анализ особенностей регистров общего назначения. Назначение команд безусловной передачи управления, рассмотрение функций. Знакомство с проблемами программирования на языке Ассемблера.
курсовая работа [1,6 M], добавлен 04.02.2014Синтез структуры простого магистрального процессора с одним АЛУ, выполняющего 8 заданных команд. Разработка формата и кодировки команд, структурной схемы процессора, функциональные схемы всех его блоков в целом с указанием шин и управляющих сигналов.
реферат [123,9 K], добавлен 18.05.2009Разработка модели процессора, выполняющего набор машинных команд. Структурная схема процессора (операционного и управляющего автоматов), анализ принципа работы. Содержательный алгоритм микропрограммы, синтез управляющего автомата на основе жесткой логики.
курсовая работа [871,9 K], добавлен 16.09.2010