- •2. Регистры процессора 8086, особенности регистровой модели.
- •3. Форматы и типы команд 80х86, режимы адресации операндов
- •4. Описание адреса операнда в команде ассемблера
- •7.Директивы описания данных в языке ассемблера
- •9. Сегментная модель памяти, описание сегментов.
- •10. Описание и обработка массивов на ассемблере.
- •11. Вычисления с фиксированной и плавающей точкой.
- •12.Форматы и типы данных арифметического сопроцессора.
- •13.Особые ситуации в численных расчетах.
- •14.Арифметический сопроцессор: архитектура сопроцессора; команды сопроцессора
- •Регистр состояний
- •15.Поток выполнения. Команды управления программой, переходы, ветвления, подпрограммы.
- •16.Команды управления программой. Реализация основных управляющих структур.
- •17.Понятие о подпрограмме; вызов подпрограммы; стек; адрес возврата; рекурсивная подпрограмма.
- •18.Способы передачи параметров в подпрограммы; передача параметров по ссылке и по значению.
- •19.Соглашение о связях Pascal.
- •20.Понятие о прерывании; обработка прерываний, функции контроллера прерываний.
- •21.Система прерываний микропроцессора 8086; Обмен по прерываниям.
- •22.Исключительные ситуации и прерывания. Программные прерывания.
- •23. История появления и развития эвм, поколения эвм.
- •Второй период (1955 г.–начало 60-х). Компьютеры на основе транзисторов. Пакетные операционные системы
- •Третий период (начало 60-х – 1980 г.). Компьютеры на основе интегральных микросхем. Первые многозадачные ос
- •Четвертый период (с 1980 г. По настоящее время). Персональные компьютеры.
- •24. Принципы фон-Неймана, понятие об архитектуре эвм.
- •25. Состав фон-неймановской эвм. Устройство управления, алу, память, порты внешних устройств; регистры процессора.
- •26. Представление информации в памяти эвм. Дополнительный код. Признаки переполнения и переноса. Двоично-десятичные числа.
- •27.Команды цп; выполнение команд; цикл процессора; классификация команд.
- •28. Понятие о системном интерфейсе эвм; способы обмена данными между процессором и другими устройствами. Контроллер периферийного устройства.
- •29.Программно-управляемый обмен. Понятие о прямом доступе к памяти.
- •30. Понятия «интерфейс», «магистраль», «протокол». Состав интерфейсов; структура шин адреса, данных, команд, управления
- •36. Кэш память и массовая оперативная память; способы организации кэш памяти.
- •48. Конфликты по управлению; способы минимизации потерь в результате конфликтов по управлению, прогнозирование ветвлений.
- •49. Суперскалярные процессоры и процессоры с длинным командным словом.
- •52. Классификация параллельных проектов. Системы класса simd; матричная и векторная обработка данных.
- •53. Системы класса mimd; Классификация. Модели связи и архитектуры памяти; способы реализации и основные особенности.
- •56. Проблемы когерентности кэш памяти в многопроцессорных системах. Протокол mesi. Системы с массовым параллелизмом.
- •64 Битные процессора amd. K8, архитектура и основные особенности.
- •64. Процессоры UltraSparc как характерные представители класса risc процессоров.
- •65.Многоядерные процессоры компаний Intel
- •66. Многоядерные процессоры компаний amd
3. Форматы и типы команд 80х86, режимы адресации операндов
Команда содержит
0-5 байт 1 байт 0;1 байт 0;1 байт 0;1;2;4 байта 0;1;2;4 байта
Префикс |
Код операции |
Режим адресации(16бит) |
Режим адресации(32бит) |
Смещение |
константа |
Префикс усилитель, приставки к команде, которые уточняют ее смысл
Виды:
префикс замены операнда (позволяет применить 32-х битные операнды в 16 битных режимах и наоборот)
замена адреса (16-битная переадресация в 32-х битном режиме и наоборот)
замена сегмента (позволяет выбрать сегмент)
префикс повтора (заставляет повторяться след. За ним команду)
префикс захвата шины (в многопроцессорных системах позволяет производить операции ввода/вывода, владея шиной)
Код операции. Структура:
Код | ||
Код |
W | |
Код |
W |
D |
С одним операндом (w-вид операнда)
Двуоперандная команда (w,d-вид операнда)
Режим адресации:
С одним операндом mod – номер режима
7 6 5 3 2 0
Mod |
Код |
r/m |
С двумя операндами reg- регистр
7 6 5 3 2 0
Mod |
Reg |
r/m |
С двумя операндами одни операнд всегда находиться в регистре. Поле mod указывает где находиться операнд, в регистре или памяти. Если mod=00, то операнд находится в в регистре, если mod = 01,10,11 тогда адрес вычисляется как сумма одного или нескольких регистров или дополнительного смещения. В 32-битном режиме следует еще 1 байт адрес = смещение + база + индекс.
4. Описание адреса операнда в команде ассемблера
Большинство команд процессора вызываются с аргументами, которые в ассемблере принято называть операндами. Например: команда сложения содержимого
регистра с числом требует задания двух операндов — содержимого регистра и числа. Далее рассмотрены все существующие способы задания адреса хранения операндов - способы адресации.
Регистровая адресация Операнды могут располагаться в любых регистрах общего назначения и сегментных регистрах. mov ax.bx
Непосредственная адресация Некоторые команды (все арифметические, кроме деления) позволяют указывать один из операндов непосредственно в тексте программы. Например: команда mov ax,2
Прямая адресация Если у операнда, располагающегося в памяти, известен адрес, то его можно использовать. Если операнд - слово, находящееся в сегменте, на который указывает ES, со смещением от начала сегмента 0001, то команда mov ax.es:0001 поместит это слово в регистр АХ.
Косвенная адресация По аналогии с регистровыми и непосредственными операндами адрес операнда в памяти также можно не указывать, а хранить в любом регистре. Например, следующая команда помещает в регистр АХ слово из ячейки памяти, селектор сегмента которой находится в DS, а смещение - в ВХ: mov ax,[bx]
Как и в случае с прямой адресацией, DS используется по умолчанию, но не
всегда: если смещение берут из регистров ESP, EBP или ВР, то в качестве сегмен-
тного регистра применяется SS. В реальном режиме можно свободно работать со
всеми 32-битными регистрами, надо только следить, чтобы их содержимое не пре-
вышало границ 16-битного слова.
Адресация по базе со сдвигом Теперь скомбинируем два предыдущих метода адресации. Следующая команда mov ax,[bx+2]
помещает в регистр АХ слово, которое есть в сегменте, указанном в DS, со смещением на два больше, чем число из ВХ. Так как слово занимает ровно 2 байта, эта команда поместила в АХ слово, непосредственно следующее за тем, которое было
в предыдущем примере. Другие допустимые формы записи этого способа адресации:
mov ax,[bp]+2 mov ax,2[bp]
Косвенная адресация с масштабированием Этот метод адресации полностью идентичен предыдущему, однако с его помощью можно прочитать элемент массива слов, двойных слов или учетверенных слов, просто поместив номер элемента в регистр:
mov ax, [esi*2]+2
Множитель, который равен 1, 2,4 или 8, соответствует размеру элемента массива — байту, слову, двойному или учетверенному слову.
Адресация по базе с индексированием В этом методе адресации смещение операнда в памяти вычисляется как сумма
чисел, содержащихся в двух регистрах, и смещения, если оно указано. Все перечис-
ленные ниже команды представляют собой разные формы записи одного и того же
действия:
mov ax,[bx+si+2] mov ax,[bx][si]+2 mov ax,[bx+2][si] mov ax,[bx+2][si]
mov ax,[bx][si+2] mov ax,2[bx][si]
В регистр АХ помещается слово из ячейки памяти со смещением, равным сум-
ме чисел, содержащихся в ВХ, SI, и числа 2.
Адресация по базе с индексированием и масштабированием Это самая полная схема адресации, в которую входят все случаи, рассмотрен-
ные ранее как частные. Полный адрес операнда можно записать как выражение,
представленное
CS: EAX EAX
SS: …. ….. 1
DS: EDX + EDX * 2 + смещение ES: EBP/ESP EBP 4 FS: EDI/ESI EDI/ESI 8 GS:
5.Структура программы на ассемблере: Косвенные ссылки, ссылки назад, вперед. Точка входа в программу Программа на ассемблере представляет собой совокупность блоков памяти, называемых сегментами памяти. Программа может состоять из одного или нескольких таких блоков-сегментов. Каждый сегмент содержит совокупность предложений языка, каждое из которых занимает отдельную строку кода программы. Для реализации управляющих конструкций (циклы, выбор, переключатель) служат команды управления программой, которые можно разделить на 3 группы: 1. Безусловная передача управления (безусловные переходы) 2. Условные переходы (ветвления) 3. вызовы подпрограмм Безусловный переход. JMP <адрес> Команда безусловного перехода модифицирует программный счетчик, помещает в него новый адрес, с которым нужно продолжить выполнение программы. Никаких дополнительных проверок не производится. В качестве адреса – метка, на которую нужно передать управление. В этом случае переход называется прямым. В качестве адреса можно указать имя переменной, которая содержит адрес (тогда переход косвенный). По способу описания адреса существует 3 вида безусловных переходов: 1) короткий переход; 2) ближний переход; 3) дальний переход Условный переход. Выполняется проверка, имеется или нет какое-то условие. Проверяемое условие чаще всего задается в виде флага или комбинаций флагов во флаговом регистре. Точка входа в программу. .Code Start: … End Start
строка ассемблера
Общий формат оператора ассемблера имеет следующий вид:
[Метка:]Код_операции[Операнд1[,Операнд2]][;Комментарий],
где элементы, указанные в квадратных скобках, могут отсутствовать.
Пробелы вводятся произвольно, но минимум один пробел должен быть после кода операции.
Метка - это идентификатор, присваиваемый первому байту того оператора, в котором она появляется.
Код_операции - это мнемоническое обозначение соответствующих команд процессора. Операнды оператора ассемблера описываются выражениями. Выражения конструируются на основе операций над числовыми и текстовыми константами, метками и идентификаторами переменных с использованием знаков операций и некоторых зарезервированных слов. Ниже приведены все определенные в ассемблере операции. Порядок старшинства операций от высшей к низшей:
LENGTH, SIZE, WIDTH, MASK, (), [], <>
.
:
PTR, OFFSET, SEG, TYPE, THIS
HIGH, LOW
+ (unary), - (unary)
*, /, MOD, SHL, SHR
+, -
EQ, NE, LT, LE, GT, GE
NOT
AND
OR, XOR
SHORT, .TYPE
Старшинство операций определяет порядок, по которому будет вычисляться выражение. Более старшие операции будут производиться раньше операций, имеющих меньшее старшинство. Операции, стоящие в одной строке, имеют равный приоритет. Операции равного старшинства вычисляются слева направо. Операции, стоящие в скобках, выполняются первыми.