Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Система команд процессора i32. Способы адресации.Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Всего 8 адресаций оперативной памяти: 1. Регистровая. Операнды могут располагаться в любых регистрах общего назначения и сегментных регистрах. mov eax,ebx – содержимое регистра ebx пересылается в eax. 2. Непосредственная. Команды (все арифметические команды, кроме деления) позволяют указывать один из операндов в тексте программы, например mov eax,2 помещает в регистр EAX число 2. 3. Прямая. Если операнд - слово, то команда mov eax,es:0001 поместит это слово в регистр EAX. если в сегментном регистре ES, была описана переменная word_var размером в слово, можно записать ту же команду как mov eax,es:word_var. В таком случае ассемблер сам заменит слово «word_var» на соответствующий адрес. 4.Косвенная. Mov eax,[ebx] – содержимое регистра ebx берется как адрес источника. 5.По базе со сдвигом. mov eax,[ebx+2] - помещает в регистр EAX слово, находящееся в сегменте, указанном в DS, со смещением на 2 большим, чем число, находящееся в EBX. 6.Косвенная с масштабированием. C его помощью можно прочитать элемент массива слов, 2-ых слов или 4-ых слов, поместив номер элемента в регистр: mov ax,[esi*2]+2. Нельзя использовать SI, DI, BP или SP, которые можно было использовать в предыдущих вариантах. 7.По базе с индексированием. mov eax,[ebx+esi+2] - В регистр EAX помещается слово из ячейки памяти со смещением, равным сумме чисел, содержащихся в EBX и ESI, и числа 2. 8. По базе с индексированием и масштабированием Mov eax,[eax+4*eax+2] – Смещение может быть байтом или двойным словом. Если ESP или EBP используются в роли базового регистра, селектор сегмента операнда берется по умолчанию из регистра SS, во всех остальных случаях — из DS. Система команд процессора i32. Машинная обработка. Байт способа адресации. Каждая команда состоит из нескольких полей (до 6). 1.Префикс. – может содержать от 0 до 4 однобайтных префиксов. Это необязательная часть инструкции, позволяет изменить некоторые особенности ее выполнения. 2.Код операции. – действие команды, которое должен выполнить процессор (содержит или 1 или 2 байта). 3. Mod R/M. – байт способа адресации, показывает способы адресации.
mod – режим адресации R/O – указывает регистр или является продолжением кода команды. R/M – указывает регистр или режим адресации.
Mod 00 – используется адресация без смещения; 01 – с 8-ми битными смещениями; 10 – с 8-ми битными или с 16-, либо с 32-битными смещениями; 11. R/M имеет различия между 16- и 32-битной адресацией.
4. Поле SIB. – занимает 1 байт, используется для 32-битной адресации.
S – коэф. масштабирования; I – индексный регистр; B – регистр баз. 5.Смещение. – число, которое масштабируется и добавляется в регистр памяти. Может содержать 0,1,2,4 байта. 6.Непосредственный операнд. (0,1,2,4 байта). Разветвляющий вычислительный процесс. Разветвляющийся вычислительный процесс реализуется по одному из нескольких заранее предусмотренных направлений в зависимости от выполнения некоторого условия (логического выражения). Ветвящийся процесс, включающий в себя две ветви, называется простым, более двух ветвей — сложным. Сложный ветвящийся процесс можно представить с помощью простых ветвящихся процессов. Разветвляющийся вычислительный процесс, содержащий две ветви, схематично может быть изображен с помощью структуры выбора (структура разветвления), которая содержит три элемента: логическое условие, ветвь ДА и ветвь НЕТ. В любом конкретном случае процесс реализуется только по одной ветви, а выполнение остальных исключается. Разветвляющийся вычислительный процесс реализуется благодаря наличию команд условного перехода. JCC – условный переход. Это набор команд, каждая из которых выполняет переход, если удовлетворяется соответствующее условие. Команды условного перехода: JA – если выше, JNBE – если не ниже или равно, JAE – если выше или равно, JB – если ниже, JC – если перенос, JBE – если ниже или равно, JE – если равно, JZ – если 0, JG – если больше JGE – если больше или равно, JL – если меньше, JNG – если не больше, JNE – если не равно, JNZ – если не 0, JNO – если нет переполнения, JO – если есть переполнение, JPO – если нечетное, JP – если есть четность, JS – если есть знак, JNS - если нет знака. Циклический вычислительный процесс Циклические программы строятся при реализации циклических вычислительных процессов. Они занимают меньший объем памяти. Затраченное машинное время будет большим, чем в аналогичной программе без цикла, так как возникает необходимость в дополнительной группе команд. Писать циклические программы наиболее удобно, начиная с рабочей части. Затем пишется проверка окончания цикла. Построение циклической программы заканчивается введением в программу команд, обеспечивающих передачу управления начальной команде и дальнейшим вычислениям. Достоинство: циклические программы занимают меньше ячеек памяти. Цикл — разновидность управляющей конструкции в высокоуровневых языках программирования, предназначенная для организации многократного исполнения набора инструкций. Виды циклов Безусловные циклы - циклы, выход из которых не предусмотрен логикой программы. Специальных синтаксических средств для создания бесконечных циклов, ввиду их нетипичности, языки программирования не предусматривают, поэтому такие циклы создаются с помощью конструкций, предназначенных для создания обычных (или условных) циклов. Для обеспечения бесконечного повторения проверка условия в таком цикле либо отсутствует, либо заменяется константным значением. Цикл с предусловием -цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу. В большинстве процедурных языков программирования реализуется оператором while. На языке Си: while(<условие>) { <тело цикла> } Цикл с постусловием — цикл, в котором условие проверяется после выполнения тела цикла. Отсюда следует, что тело всегда выполняется хотя бы один раз. На языке Си: do { <тело цикла> } while(<условие>)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-26; просмотров: 632; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.85.233 (0.01 с.) |