- •3.Регистры мп i8086.
- •7.Адресация, непоср. Операнды.
- •8. Прямая адресация.
- •9. Побічна адресация.
- •10. Косвенная адресация со смещением.
- •11. Базово-індексна адресация.
- •13. Адресация символьних данних.
- •14.Адресация портов ввода/вывода
- •15. Работа со стеком.
- •16.Вызов процедур на ассемблере.
- •17.Прерывания работы проц. Вызов программных прерываний.
- •30. Прерывания bios и dos.
- •18 Мова Асемблера мікропроцесора 80х86. Фрмат запису програм Асм
- •19 Лексеми Асемблера(імена, константи, символьні дані)
- •21.Команды пересылания данных ( mov, xchg).
- •22Арифм. Команды(add, sub).
- •23.Арифм. Команды( mul, imul, div, idiv).
- •24.Безусловный переход.
- •25.Команды сравнения, реализация условного перехода.
- •26Команды управления циклами.
- •27Процедуры, передача параметров через регистры и стек.
- •28Символьные команды, преффиксы повторения.
- •29Макросы, макрокоманды, условное ассемблирование.
- •39 Особливості процесорів з архітектурою vliw
- •4. Режими роботи мікропроцесора і80386
- •Реальный режим
- •Защищенный режим
- •5. Режими роботи мікропроцесора х86-64
- •31Робота мiкропроцесора pentium у захищеному режимi
- •32Регiстри мiкропроцесора pentium у захищеному режимi
- •33Адресацiя мiкропроцесора pentium у захищеному режимi. Flat Model.
- •40 Классификация Флинна
- •41. Гарвардська та фон Нейманська архітектура. Классическая гарвардская архитектура
- •Отличие от архитектуры фон Неймана
- •Гибридные модификации с архитектурой фон Неймана
1. Понятие про архитектуру компьютера. Слово «компьютер» означает «вычислитель».Чтобы собрать воедино все понятия, существует специальный термин — архитектура ЭВМ. Все современные ЭВМ обладают некоторыми общими и индивидуальными свойствами архитектуры. Общие: принцип хранимой программы(Согласно ему, код программы и ее данные находятся в одном адресном пространстве в оперативной памяти.), принцип микропрограммирования, линейное пространство памяти, последовательное выполнение программ, безразличие к целевому назначению данных, суперскалярная архитектура(на стадии выполнения каждая машинная команда как бы разбивается на более элементарные операции). Основные внтр. и внешние устройства : микропроцессор – электронная схема, выполняющая все вычисления и обработку информации. Процессор состоит из нескольких важных деталей:сопроцессора – специального блока для операций с «плавающей точкой»,кеш-память первого уроня(сверхбыстрая),кеш-память второго уровня(чуть помедленнее, зато больше).Процессор имеет 14 регистров , использующихся для управления выполняющейся программой, для адрессации памяти и для выполнения арифметических операций.Оперативная память обеспечивает работу с программным обеспечением.Из неё процессор и сопроцессор берут программы и исходные данные для обработки.Для каждого внешнего устройства в компьютере имеется электронная схема (контроллер или адаптер).Одним из контроллеров, которые присутствуют во всех компьютерах, является контроллер портов ввода-вывода. Типы портов : параллельные(принтер), асинхронные последовательные порты(подкл.мышь), игровой порт, порт USB(USB2) –Одним из его достоинств является возможность подключения целой цепочки устройств. Все контроллеры и адаптеры взаимодействуют с процессором и оперативной памятью через системную магистраль передачи данных, называемой шиной. Шина – системная плата, обеспечивающая ввод-вывод информации. Для упрощения подключения устройств электронные схемы состоят из нескольких модулей – электронных плат. На основной плате компьютера – системной (материнской) – располагаются процессор, сопроцессор, оперативная память и шина. Схемы, управляющие внешними устройствами компьютера (контроллеры или адаптеры), находятся на отдельных платах вставляющихся в унифицированные разъёмы (слоты) на материнской плате. «Гнездо» для установки процессора: для каждого форм-фактора процессора существует свой тип материнской платы, как правило, несовместимый с другими процессорами. Видеоадаптер-(видеоконтроллер, видеокарта) предназначен для работы в графическом режиме. Жесткий диск-предназначен для постоянного хранения информации,. Внутренний динамик(PS Speaker)-устройство,предназначенное для вывода системных звуковых сообщений. Например, в начале загрузки компьютера происходит тестирование оборудования. BIOS(Basic Input Output System-– базовая система ввода-вывода – микросхема, установленная на материнской плате. Именно здесь хранятся основные настройки компьютера. С помощью BIOSможно изменить скорость работы процессора, параметры работы для других внутренних и некоторых внешних устройств компьютера.BIOS- это первый и самый важный из мостиков, связующий между собой аппаратную и программную часть компьютера. Звуковая карта-устройство,необходимое для редактирования и вывода звука, посредством звуковых колонок. Устройство для чтения компакт дисков(CD-ROM), Монитор(дисплей), Принтер, сканер, плоттер, диггитайзер,модем, источник бесперебойного питания.
2. Способы сохранения данных в памяти ПК. МП поддерживает все типы данных, используемые алгоритмическими языками высокого уровня: бит, битовое поле, строка, байт, Целое (слово),Длинное целое (двойное слово), Беззнаковое целое Беззнаковое длинное целое (двойное слово), Короткий указатель ,Указатель - 16-ти битовый сегмент и 16-ти или 32-х разрядное смещение, символ, Строка,Двоично-десятичный код - байтовое (неупакованное) представление десятичных цифр от 0 до 9,Упакованный двоично-десятичный код - байтовое представление двух десятичных цифр от 0 до 9.
Представление целых чисел: 1.Беззнаковые. В виде байта представляются целые от 0 до 255 (=28-1), в виде слова - целые от 0 до 65535 (=216-1), в виде двойного слова - целые от 0 до 4 294 967 295 (=232-1). Числа записываются в двоичной системе счисления, занимая все разряды ячейки. Числа размером в слово хранятся в памяти в "перевернутом" виде: младшие (правые) 8 битов числа размещаются в первом байте слова, а старшие 8 битов - во втором байте (в 16-ричной системе: две правые цифры - в первом байте, две левые цифры - во втором байте). "Перевернутое" представление используется и при хранении в памяти целых чисел размером в двойное слово: в первом его байте размещаются младшие 8 битов числа, во втором байте - предыдущие 8 битов и т.д. Такое необычное представление чисел объясняется тем, что в первых моделях ПК за раз можно было считать из памяти только один байт и что все арифметические операции над многозначными числами начинаются с действий над младшими цифрами, поэтому из памяти в первую очередь надо считывать младшие цифры, если сразу нельзя считать все цифры.
2.Знаковые.Эти числа также представляются в виде байта, слова и двойного слова. В виде байта записываются числа от -128 до 127, в виде слова - числа от -32768 до 32767, а в виде двойного слова - числа от -2147483648 до 2147483647. При этом числа записываются в дополнительном коде. Представление символов и строк: На символ отводится один байт памяти, в который записывается код символа - целое от 0 до 255. В ПК используется система кодировки ASCII Строка (последовательность символов) размещается в соседних байтах памяти (в неперевернутом виде): код первого символа строки записывается в первом байте, код второго символа - во втором байте и т.п. Адресом строки считается адрес ее первого байта. В ПК строкой считается также и последовательность слов (обычно это последовательность целых чисел). Элементы таких строк располагаются в последовательных ячейках памяти, но каждый элемент представлен в "перевернутом" виде. \\Представление адресов: Адрес - это порядковый номер ячейки памяти, т.е. неотрицательное целое число, поэтому в общем случае адреса представляются так же, как и беззнаковые числа. Однако в ПК есть ряд особенностей в представлении адресов. Дело в том, что в ПК термином "адрес" обозначают разные вещи. Час- то под адресом понимается 16-битовое смещение (offset) - адрес ячейки, отсчитанный от начала сегмента (области) памяти, которому принадлежит эта ячейка. В этом случае под адрес отводится слово памяти, причем адрес записывается в "перевернутом" виде (как и числа-слова вообще). В другом случае под "адресом" понимается 20-битовый абсолютный адрес некоторой ячейки памяти. В силу ряда причин в ПК такой адрес задается не как 20-битовое число, а как пара "сегмент: смещение",где"сегмент"(segment)-это первые 16 битов начального адреса сегмента памяти, которому принадлежит ячейка, а "смещение" - 16-битовый адрес этой ячейки, отсчитанный от начала данного сегмента памяти (величина 16*сегмент+ смещение дает абсолютный адрес ячейки). Такая пара записывается в виде двойного слова, причем (как и для чисел) в "перевернутом" виде: в первом слове размещается смещение, а во втором - сегмент, причем каждое из этих слов в свою очередь представлено в "перевернутом" виде. \\В ПК имеются команды + и - целых чисел размером в слово и байт. Специальных команд для сложения и вычитания двойных слов нет, эти операции реализуются через команды сложения и вычитания слов. Сложение и вычитание беззнаковаых чисел производится по модулю 28 для байтов и 216 для слов. Это означает, что если в результате сложения появилась единица переноса, не вмещающаяся в разрядную сетку, то она отбрасывается.
3.Регистры мп i8086.
Регистр-это ОП, расположенная в самом МП, работа с ней осущ. мах быстро и сущ. команды, которые можно выполнять только с данными, которые помещены в регистре. Процессоры i8086 имеют 14 регистров, используемых для yправления выполняющейся программой, для адресации памяти и для обеспечения арифметических вычислений. Каждый регистр имеет длину в одно слово (16 бит) и адресуется по имени. Биты регистра принято нумеровать слева направо.
Сегментные регистры CS, DS, SS и ES. Каждый сегментный регистр обеспечивает адресацию 64К памяти, которая наз. текущим сегментом. Cегмент выравнен на границу параграфа и его адрес в сегментном pегистре предполагает наличие справа четырех нулевых битов.
Регистр CS. Регистр сегмента кода содержит начальный адрес сегмента кода. Этот адрес плюс величина смещения в командном указателе (IP) определяет адрес команды, которая должна быть выбрана для выполнения. Для обычных программ нет необходимости делать ссылки на регистр CS. Регистр DS. Регистр сегмента данных содержит начальный адрес сегмента данных Этот адрес плюс величина смещения, определенная в команде указывают на конкретную ячейку в сегменте данных.
Регистр SS. Регистр сегмента стека содержит начальный адрес в сегменте стека.
Регистр ES. Некоторые операции над строками используют дополнительный сегментный регистр для управления адресацией памяти. В данном контексте регистр ES связан с индексным регистром DI. Если необходимо использовать регистр ES, ассемблерная программа должна его инициализировать. В защищённом режиме добавляются два дополнительных регистра сегмента данных: FS и GS. Они остаются 16-разрядными, но значения их меняется.
Регистры общего назначения: AX, BX, CX и DX. При программировании на ассемблере регистры общего назначения являются "рабочими лошадками". Особенность этих регистров состоит в том, что возможна адресация их как одного целого слова или как oднобайтовой части. Левый байт является старшей частью (high), a правый - младшей частью (low). Например, двухбайтовый регистр CX состоит из двух однобайтовых: CH и CL, и ссылки на регистр возможны по любому из этих трех имен.
Регистр AX. Регистр AX является основным сумматором и применяется для всех операций ввода-вывода, некоторых операций над строками и некоторых арифметических операций. Некоторые команды генерируют более эффективный код ,если они имеют ссылки на регистр AX.
Регистр BX является базовым регистром. Это единственный регистр общего назначения, который может использоваться в качестве "индекса" для расширенной адресации. Другое общее применение его – вычисления.
Регистр CX является счетчиком. Он необходим для управления числом повторений циклов и для операций сдвига влево или вправо. Регистр CX используется также для вычислений. Регистр DX является регистром данных. Он применяется для некоторых операций ввода/вывода и тех операций умножения и деления над большими числами, которые используют регистровую пару DX и AX. Любые регистры общего назначения могут использоваться для сложения и вычитания как 8-ми, так и 16-ти битовых значений. В защищённом режиме: EAX, EBX, ECX, EDX (32-битные - отдельно со старшими 2-мя б. работать нельзя).
Регистровые указатели: SР и BP
обеспечивают системе доступ к данным в сегменте стека. Реже они используются для операций сложения и вычитания.
Регистр SP. Указатель стека обеспечивает использование стека в памяти, позволяет временно хранить адреса и иногда данные. Этот регистр связан с регистром SS для адресации стека. Регистр BP. Указатель базы облегчает доступ к параметрам: данным и адресам переданным через стек.
Индексные регистры: SI и DI.
Оба индексных регистра возможны для расширенной адресации и для использования в операциях сложения и вычитания.
Регистр SI является индексом источника и применяется для некоторых операций над строками. В данном контексте регистр SI связан с регистром DS.
Регистр DI является индексом назначения и применяется также для строковых операций. В данном контексте регистр DI связан с регистром ES. В защищённом режиме ESI, EDI, ESP, EBP (можно работать и со старшими двумя байтами и со всеми регистрами сразу).
Регистр командного указателя: IP (EIP) содержит смещение на команду, которая должна быть выполнена.Обычно этот регистр в программе не используется, но он может изменять свое значение при использовании отладчика DOS DEBUG для тестирования программы.
Флаговый регистр. 9 из 16 битов флагового регистра являются активными и определяют текущее состояние машины и результатов выполнения. Многие арифметические команды и команды сравнения изменяют состояние флагов. Назначение флаговых битов: Флаг Назначение
O (Переполнение)-указывает на переполнение старшего бита при арифметических командах.
D (Направление)-обозначает левое или правое направление пересылки или сравнения строковых данных (данных в памяти, превышающих длину одного слова).
I(Прерывание)-указывает на возможность внешних прерываний. Т(Пошаговый режим) -обеспечивает возможность работы процессора в пошаговом режиме. S (Знак)-содержит результирующий знак после арифметических операций (0 - плюс,1-минус). Z (Ноль)-показывает результат арифметических операций и операций сравнения (0–ненулевой, 1–нулевой результат
A (Внешний перенос)-содержит перенос из 3-го бита для 8-бит-ных данных, используется для специальных арифметических операций. Р (Контроль четности )-показывает четность младших 8-битовых данных (1-четное и 0-нечетное число). C (Перенос) -содержит перенос из старшего бита, после арифметических операций, а также последний бит при сдвигах или циклических сдвигах. При программировании на ассемблере наиболее часто используются флаги O, S, Z, и C для арифметических операций и операций сравнения, а флаг D для обозначения направления в операциях над строками.
6.Адресація. Регiстровi операнди. Имеется два альтернативных метода определения типа операнда. В первом из них тип операнда может задаваться кодом операции в команде. Это наиболее употребительный способ задания типа операнда. Второй метод предполагает указание типа операнда с помощью тега, который хранится вместе с данными и интерпретируется аппаратурой во время выполнения операций над данными. Этот метод использовался, например, в машинах фирмы Burroughs, но в настоящее время он практически не применяется и все современные процессоры пользуются первым методом. Для эффективного применения команд микропроцессора следует рассмотреть возможные способы адресации. Под адресацией данных в языке ассемблера понимают способы обращения к используемым в командах операндам. Различают следующие основные способы описания операндов (и соответствующие способы адресации):
операнды-регистры;
непосредственные операнды;
операнды в памяти;
адресацию строковых данных;
- адресацию портов ввода-вывода.
Регистровые операнды
-------------------------------------------------------Вероятно регистровые операнды являются наиболее часто используемыми в инструкциях операндами. Регистры могут использоваться в качестве источника (исходный операнд) или приемника (целевой операнд) и при некоторых обстоятельствах могут даже содержать адрес, на который нужно выполнить переход. С регистрами можно делать много того, чего нельзя делать с константами, метками или переменными в памяти. С другой стороны, имеются некоторые инструкции, в которых можно использовать только регистровые операнды.
Приведем некоторые примеры регистровых операндов:
mov al,ax
push dl
xchg al,dl
ror dx,cl
in al,dx
inc sl
Регистровые операнды могут использоваться вместе с другими операндами:
mov al,1
add [BaseCount],cx
cmp si,[bx]
Использование регистровых операндов не требует обширных пояснений. Чтобы использовать регистр в качестве операнда, вы задаете имя этого регистра и использующую регистр инструкцию. Если имеется два операнда и регистровым операндом является самый правый операнд, то он будет исходным регистром (источником), а если самым левым операндом - то это целевой регистр (приемник). Если в инструкции требуется два источника, то может присутствовать еще один исходный регистр. Например, во фрагменте программы:
mov cx,1
mov dx,2
sub dx,cx
регистр CX устанавливается в значение 1, DX - в значение 2, а затем из регистра DX вычитается CX и результат (1) снова записыва-
ется в регистр DX. В инструкции SUB CX является правым операндом, поэтому это исходный регистр (источник). DX - самый левый операнд, поэтому он одновременно является вторым источником и приемником. Кстати, действие данной инструкции SUB (вычитание) выражается словами, как "вычесть CX из DX".