ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    80386 процесор
         

     

    Комп'ютерні науки
    Зміст
    1.Вступ
    2.Режіми процесора
    2.1.Реальний режим
    2.2.Защіщенний режим
    3.Тіпи даних
    4.Регістри
    4.1.Регістри загального призначення
    4.2.Регістр системних прапорів
    4.3.Регістри сегментів
    4.4.Регістри управління сегментованої пам'яттю
    4.5.Указатель команд
    4.6.Регістри управління
    4.7.Регістри налагодження
    4.8.Буфер асоціативної трансляції
    5.Сістема команд
    5.1.Формат команд
    5.2.Опісаніе позначення
    5.3.Спісок команд

    1. Введення
    МП 80386 вийшов на ринок з унікальною перевагою. Він є єдиним 32-розрядних МП, для якого придатне існуюче прикладне програмне забезпечення, написане для МП попередніх моделей від 8086/88 до 80286. Будь-які програми, написані для цих МП можуть виконуватися на 80386 без будь-яких виправлень і доповнень, як тільки із збільшенням швидкості їх виконання. Ця властивість МП називається сумісністю знизу вгору. Також, додатковими перевагами цього МП є багатозадачність, вбудоване управління пам'яттю, віртуальна пам'ять з поділом на сторінки, захист програм і велика адресний простір. Апаратна сумісність з попередніми моделями збережена за допомогою динамічної зміни розрядності магістралі.
    МП 80386 виконаний на основі технології CHMOS III фірми Intel, яка увібрала в себе швидкодію технології HMOS (МДП високої щільності) і мале споживання потужності технологією CMOS (КМДП). МП 80386 передбачає перемикання програм, що виконуються під керуванням різних операційних систем, таких як MS-DOS і UNIX. Ця властивість дозволяє розробникам програм включати стандартне прикладне програмне забезпечення для 16-розрядних МП безпосередньо в 32-розрядну систему. Процесор визначає адресний простір як один або кілька сегментів пам'яті будь-якого розміру в діапазоні від 1 байт до 4 Гбайт. Ці сегменти можуть бути індивідуально захищені рівнями привілеїв і таким чином вибірково розділятися різними завданнями.
    2. Режими процесора
    Для більш повного поняття системи команд МП 80386, спершу потрібно описати загальну схему його роботи і архітектуру.
    У даному рефераті не розкривається більш докладно значення деяких специфічних слів і понять, вважаючи, що читач попередньо ознайомився з МП 8086 і МП 80286 і має уявлення про їх роботі та архітектурі. Описуються тільки ті функції МП 80386, які відсутні або змінені в попередніх моделях МП.
    МП 80386 має два режими роботи: режим реальних адрес, що називається реальним режимом, і захищений режим.
    2.1. Реальний режим
    При подачі сигналу скидання або при включенні харчування встановлюється реальний режим, причому МП 80386 працює як дуже швидкий МП 8086, але, за бажанням програміста, з 32-розрядних розширенням. У реальному режимі МП 80386 має таку саму базову архітектуру, що і МП 8086, але забезпечує доступ до 32-розрядних регістрів. Механізм адресації, розміри пам'яті й обробка переривань МП 8086 повністю співпадають з аналогічними функціями МП 80386 в реальному режимі.
    Єдиним способом виходу з реального режиму є явне перемикання в захищений режим. У захищений режим МП 80386 входить при встановленні біта включення захисту (РЕ) в нульовому регістрі керування (CR0) за допомогою команди пересилання (MOV to CR0). Для сумісності з МП 80286 з метою встановлення біта РЕ може бути також використана команда завантаження слова стану машини LMSW. Процесор повторно входить до реального режиму в тому випадку, якщо програма командою пересилання скидає біт РЕ регістру CR0.
    2.2. Захищений режим
    Повні можливості МП 80386 розкриваються в захищеному режимі. Програми можуть виконувати перемикання між процесами з метою входу в завдання, призначені для режиму віртуального МП 8086. Кожна така задача проявляє себе в семантиці МП 8086 (тобто у відносинах між символами і приписувати їм значеннями незалежно від інтерпретує їх обладнання). Це дозволяє виконувати на МП 80386 програмне забезпечення для МП 8086 - прикладну програму або цілу операційну систему. У той же час завдання для віртуального МП 8086 ізольовані і захищені як один від одного, так і від головної операційної системи МП 80386.
    3. Типи даних
    МП 80386 підрозділяє пам'ять на 8-розрядні байти, 16-розрядні слова і 32-розрядні подвійні слова. Додатково МП 80386 підтримує також наступні додаткові типи даних.
    Неупакованих двійковій-десятковий тип - розпакувати байтове подання десяткового цифри від 0 до 9. Розпаковані десяткові числа зберігаються як беззнакові байтові значення по одній цифрі в кожному байті. Значення цифри визначається молодшим полубайтом. Старший полубайт повинен бути рівним нулю при розподілі і примноження, але може мати будь-яке значення при відніманні або складання.
    Упакований двійковій-десятковий тип - упаковане байтове подання двох десяткових цифр від 0 до 9. Кожна цифра зберігається у своєму полубайте. Цифра у старшому полубайте є більш значимою. Діапазон упакованого десяткового байти становить від 0 до 99.
    Бітове поле - безперервна послідовність бітів, в якій кожен біт розглядається як незалежна змінна. Бітове поле може починатися з будь-якого біта будь-якого байта і може бути довжиною до 32 біт.
    Бітова рядок - подібно бітовому полю, бітова рядок є безперервною послідовністю бітів. Бітова рядок може починатися з будь-якого біта будь-якого байта і мати довжину до (2Е32-1) біт.
    Близький покажчик - 32-розрядний логічний адресу, яку представляє собою відносний адреса всередині сегмента. Ближні покажчики використовуються як в суцільний, так і в сегментованої моделі пам'яті.
    Далекий покажчик - 48-розрядний логічний адреса з двох компонентів: 16-розрядного сегмента і 32-розрядного відносного адреси. Дальні покажчики використовуються програмістами тільки в тому випадку, коли конструктори системи вибирають сегментовану організацію пам'яті.
    Цілий тип - знакова двійкове значення, що міститься у 32-розрядному подвійному слові, 16-розрядному слові або 8-розрядному байті. Всі операції передбачають подання чисел в додатковому коді. Знаковий біт розташований в бите 7 в байті, в бите 15 в слові і в бите 31 в подвійному слові. Він дорівнює нулю для позитивних чисел і одиниці для негативних. Оскільки цей старший біт використовується як знаковий, то 8-розрядне (байт) ціле число може змінюватися в діапазоні від -128 до 127, 16-розрядне (слово) ціле число в діапазоні від -32768 до 32767, а 32-розрядне ( подвійне слово) ціле число в діапазоні від-2Е31 до 2 Е31-1. Нульове значення має позитивний знак.
    Звичайний тип - беззнакові двійкове значення, що міститься у 32-розрядному подвійному слові, 16-розрядному слові або 8-розрядному байті. Всі біти визначають величину числа.
    Рядок - безперервна послідовність байтів, слів або подвійних слів. Рядок може містити від 0 до 2Е32 -1 байтів або 4 Гбайт.
    4. Регістри
    Регістр є пристроєм тимчасового зберігання даних і використовується з метою полегшення арифметичних, логічних і пересильних операцій. Регістри МП 80386 є розширенням регістрів колишніх МП 8086, 80186, 80286. Усі 16-розрядні регістри МП попередніх поколінь містяться всередині 32-розрядної архітектури.
    Мікропроцесор 80386 включає шість безпосередньо доступних програмісту регістрів селектор сегментів, які містять покажчики сегментів. Значення цих селектор можуть бути завантажені під час виконання програми і є специфічними для завдання. Це означає, що регістри сегментів перезавантажуються автоматично при перемиканні МП 80386 на інше завдання. За регістрами селектор сегментів стоять реальні регістри кеш-пам'яті сегментів, які містять опису сегментів, згаданих селектором. Це зроблено на апаратному рівні для того, щоб уникнути додаткової вибірки з пам'яті у випадку, коли потрібно опис сегмента.
    4.1. Регістри загального призначення
    Вісім регістрів загального призначення мають довжину в 32 біт і містять адреси або дані. Вони підтримують операнди-дані довжиною 1, 8, 16, 32 і 64 біт; бітові поля від 1 до 32 біт: операнди-адреси довжиною 16 і 32 біт. Ці регістри називаються EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP.
    Доступ до молодших 16 біт цих регістрів виконується незалежно. Це робиться в більшості асемблером при використанні 16-розрядних імен регістрів: AX, BX, CX, DX, SI, DI, BP, SP.
    4.2. Регістр системних прапорів
    Регістр EFLAGS керує вводом-висновком, маскіруемимі переривань, налагодженням, перемиканням завдань і включенням виконання в режимі віртуального МП 8086 в захищеній багатозадачному середовищі - все це на додаток до прапорів стану, які відображають результат виконання команди. Молодші 16 біт його представляють собою 16-розрядний регістр прапорів і стану МП 80286, званий FLAGS, який найбільш корисний при виконанні програм для МП 8086 і 80286.
    4.2. Регістри сегментів
    Шість 16-розрядних регістрів містять значення селектор сегментів, які вказують на поточні адресуються сегменти пам'яті. Нижче перераховані ці регістри.
    Регістр сегмента програми (CS) - вказує на сегмент, який містить поточну послідовність виконуваних команд. Процесор вибирає всі команди з цього сегменту, використовуючи вміст лічильника команд як відносний адресу. Вміст CS змінюється в результаті виконання внутрісегментних команд керування потоком, переривань і виключень. Він не може бути завантажений явним способом.
    Регістр сегмента стека (SS). Виклики підпрограм, записи параметрів і активізація процедур зазвичай вимагають області пам'яті, Резервованої під стек. Всі операції зі стеком використовують регістр SS при зверненні до стеку. На відміну від регістра CS регістр SS може бути завантажений явно за допомогою команди програми.
    Решта чотири регістри є регістрами сегментів даних (DS, ES, FS, GS), кожен з яких адресується поточної виконуваною програмою. Доступ до чотирьох роздільним областям даних має на меті підвищити ефективність програм, що дозволяє їм звертатися до різних типів структур даних. Вміст цих регістрів може бути замінено під керуванням програми.
    При використанні регістрів сегментів МП 80386 з кожним обраним сегментом пов'язує базовий адресу. При адресації одиниці даних усередині сегмента до базового адресою сегменту додається 32-розрядний відносний адресу. Якщо сегмент обраний завантаженням селектора сегмента в регістр сегменту, то командам маніпуляції даними потрібен тільки цей відносний адресу.
    4.3. Регістри управління сегментованої пам'яттю
    Регістр таблиці глобальних дескрипторів (GDTR). Містить 32-розрядний лінійний адреса і 16-розрядну кордон таблиці глобальних дескрипторів.
    Регістр таблиці локальних дескрипторів (LDTR). Містить 16-розрядний селектор для таблиці локальних дескрипторів. Так як ця таблиця є специфічним для завдання сегментом, то вона визначається значенням селектора, що зберігається в регістрах системного сегмента. Регістр дескриптора сегмента, пов'язаний з цією таблицею, програмно недоступний.
    Регістр таблиці дескрипторів переривань (IDTR). Вказує на таблицю точок входу в програми обробки переривань. Регістр містить 32-розрядний лінійний базовий адресу та 16-розрядну кордон таблиці дескрипторів переривань (IDT).
    Регістр завдання (TR). Вказує на інформацію, необхідну процесору для визначення поточного завдання. Регістр TR містить 16-розрядний селектор дескриптора сегменту стану задачі. Оскільки цей сегмент специфічний для завдання, то він визначається значеннями селектор, що зберігаються в регістрах системного сегмента. Зауважимо, що з кожним регістром системних сегментів пов'язаний програмно недоступний регістр дескриптора сегмента.
    4.5. Покажчик команд
    Розширений покажчик команд (EIP) є 32-розрядних регістром. Він містить відносний адреса наступної команди, що підлягає виконанню. Відносний адреса відраховується від початку сегмента поточної програми. Покажчик команд безпосередньо не доступний програмісту, але він управляється явно командами управління потоком, переривань і винятками.
    Молодші 16 біт регістра EIP називаються IP і можуть бути використані процесором незалежно. Ця властивість корисно при виконанні команд МП 8086 та 80286, які мають тільки регістр IP.
    4.6. Регістри управління
    МП 80386 має три 32-розрядних регістра керування (CR0, CR2 і CR3, а CR1 зарезервований фірмою Intel), в яких зберігаються стану машини або глобальні стану. Глобальне стан - це такий стан, до якого може отримати доступ будь-який з логічних блоків системи або яка керує цими блоками. Разом з регістрами системних адрес ці регістри зберігають інформацію про стан машини, яка впливає на всі завдання в системі. Для доступу до регістрів управління визначені команди їх завантаження і збереження вмісту.
    Системним програмістам регістри управління доступні тільки через варіанти команди MOV, які дозволяють їх завантажувати або зберігати в регістрах загального призначення.
    4.7. Регістри налагодження
    Шість доступних програмісту регістрів налагодження (DR0-DR3, DR6 і DR7) розширюють можливості налагодження в МП 80386, вони встановлюють точки зупину за даними і дозволяють встановлювати точки зупину за командами без модифікації сегментів програм. Регістри DR0-DR3 призначені для чотирьох лінійних точок зупину. Регістри DR4 і DR5 зарезервовані фірмою Intel для майбутніх розробок. Регістр DR6 показує поточний стан точок зупину, а регістр DR7 використовується для встановлення точок зупину.
    4.8. Буфер асоціативної трансляції
    Буфер асоціативної трансляції (TLB) - це кеш-пам'яті, що використовується для трансляції лінійних адрес у фізичні.
    Механізм перевірки TLB є унікальним для МП 80386 і може бути не реалізований у тому ж вигляді у майбутніх процесорах. Програми, які використовують цей механізм в його нинішньому вигляді, можуть виявитися несумісними з майбутніми процесорами.
    5. Система команд
    5.1. Формат команд
    Команди МП 80386 складаються з окремих елементів і можуть мати різні формати. З усіх описаних нижче елементів тільки один (код операції, Коп) обов'язково присутній у будь-якій команді. Інші елементи можуть бути відсутніми, що визначається характером операції, а також місцем розташування і типом операндів.
    Команди складаються з наступних елементів: необов'язкових префіксів; одного чи двох байтів кодів операції; можливо - описувача адреси, який включає байт Mod R/M і байт масштабу, індексу і бази; зміщення - якщо потрібно, поле безпосередніх даних - якщо потрібно.
    Префікси - один або декілька байтів, що передують команді і модифікуючих операцію цієї команди. Є 4 типу префіксів.
    1. Повторення - використовується з командами обробки рядків; змушує команду впливати на кожен елемент рядка.
    2. Розмір операнда - перемикає розрядність операндів, встановлюючи їх 32-розрядними або 16-розрядними.
    3. Розмір адреса - перемикає розрядність адреси, визначаючи освіта 32-розрядних або 16-розрядних адрес.
    4. Заміна сегмента - у явній формі вказує, який сегментний регістр повинна використовувати команда. Префікс скасовує чинний за замовчуванням вибір сегментного регістра, звичайно здійснюваний МП 80386 при виконанні цієї команди.
    Код операції (Коп) - описує операцію, що виконується командою. Деяким командам притаманні кілька кодів операцій, кожен з яких описує певний варіант операції.
    Описувач регістра - в команді можуть бути описані один або два регістри в якості операндів. Описувач регістра може бути присутнім як в байті коду операції, так і в байті описувача режиму адресації.
    Описувач режиму адресації. Цей елемент, якщо він присутній, описує, чи є операнд вмістом регістру або комірки пам'яті. Якщо операнд знаходиться в пам'яті, описувач режиму вказує, чи треба використовувати зсув, індексний регістр, регістр бази та масштабування.
    Байти MOD R/M і SIB. Більшість команд, що посилаються на операнд, що знаходиться в пам'яті, містять після байти основного коду операції ще байт форми адресації. Цей байт описує використовувану форму адреси. Певні значення коду поля MOD R/M вказують на наявність другого адресного байта SIB.
    Байти MOD R/M і SIB містять наступну інформацію:
    - Тип індексації або номер регістра, використовуваного в команді;
    - Використовуваний регістр або додаткову інформацію про вибір команди;
    - Інформацію про базу, індексі і масштабі;
    Зсув. Якщо описувач режиму адресації вказує, що при обчисленні адреси операнда буде використано зміщення, до складу ко?? а команди включається поле зміщення. Зсув являє собою 8 -, 16 - або 32-розрядне ціле число зі знаком. 8-розрядна форма використовується в тих випадках, коли значення зміщення невелика.
    Безпосередній операнд (дане). Якщо цей елемент присутній, він представляє значення операнда команди. Безпосередні операнди можуть бути 8 -, 16 - або 32-розрядними. У випадках коли 8-розрядний безпосередній операнд використовується в команді разом з 16 - або 32-розрядних операндом, процесор автоматично збільшує розмір 8-розрядного операнда шляхом розширення його знакового розряду.
    5.2. Опис позначення
    + rb, + rw, + rd Код регістра (від 0 до 7), який складається з вказаним зліва від знака плюс шестнадцетірічним числом (байтом) з лбразованіем байти коду операції. Регістрів присвоєні такі коди:
    rb rw rd
    AL = 0 AX = 0 EAX = 0
    CL = 1 CX = 1 ECX = 1
    DL = 2 DX = 2 EDX = 2
    BL = 3 BX = 3 EBX = 3
    AH = 4 SP = 4 ESP = 4
    CH = 5 BP = 5 EBP = 5
    DH = 6 SI = 6 ESI = 6
    BH = 7 DI = 7 EDI = 7
    / цифра Цифра, що стоїть праворуч від косою риси, має, взагалі кажучи, значення від 0 до 7. Вона показує, що в байті MOD R/M вказується тільки один операнд r/m (регістр/память). Сама цифра міститься в полі reg і утворює розширення коду операції.
    / r Позначення показує, що байт MOD R/M містить два операнда (reg і r/m).
    cb, cw, cd, cp Величина розміром 1 байт (cb), 2 байти (cw), 4 байти (cd) або 6 байт (cp) слід за кодом операції і визначає відносний адресу, а також, можливо нове значення програмного сегмента.
    ib, iw, id Безпосередній операнд розміром 1 байт (id), 2 байти (iw) або 4 байти (id) слід за байтами коду операції, MOD R/M або SIB. Код операції вказує, чи є операнд знаковою величиною.
    imm8 Безпосередній операнд розміром 1 байт. Величина imm8 є знаковою величиною між -128 та 127 включно. У командах, де розмір другу операнда становить слово або подвійне слово, величина imm8 розширюється до слова чи подвійного слова. Старші байти розширеної величини заповнюються старшим бітом безпосереднього операнда.
    imm16 Безпосередній операнд розміром 1 слово. Використовується в командах з атрибутом розміру операнда 16 розрядів. Може мати значення від -32768 до 32767 включно.
    imm32 Безпосередній операнд розміром 1 подвійне слово. Використовується в командах з атрибутом розміру операнда 32 розряду. Може мати значення від -2147483648 до 2147483647 включно.
    m8 Байт пам'яті. Адресується через регістри DS: SI або ES: DI.
    m16 Слово пам'яті.
    m32 Подвійне слово пам'яті.
    moffs8, moffs16, moffs32 Відносний адресу. Проста змінна типу BYTE, WORD або DWORD, що використовується деякими варіантами команди MOV. Фактична адреса записується у вигляді простого зміщення щодо бази сегменту. Число при абревіатурі "moffs" вказує розрядність зміщення визначається атрибутів розміру адреса в команді. Байт MOD R/M в команді не використовується.
    ptr16: 16, ptr16: 32 Покажчик FAR (далекий). Зазвичай він знаходиться в іншому програмному сегменті по відношенню до команди. Позначення 16:16 говорить про те, що покажчик складається з двох частин. Величина ліворуч від двокрапки - це зміщення в сегменті приймачі. Величина праворуч від двокрапки - це 16-розрядний селектор або величина, призначена для регістра програмного сегмента. Якщо атрибут розміру операнда команди дорівнює 16, використовуйте 16:16. Для 32-розрядного атрибуту використовуйте 16:32.
    r8 Один з байтових регістрів: AL, CL, DL, BL, AH, CH, DH, BH.
    r16 Один з однослівні регістрів: AX, CX, DX, BX, SP, BP, SI, DI.
    r32 Один з двухсловних регістрів: EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI.
    rel8 Зсув для переходу в діапазоні від 128 байтів перед кінцем команди до 127 байтів після кінця команди.
    rel16, rel32 Зсув для переходу в тому ж програмному сегменті, що і ассембліруемая команда, rel16 відноситься до команд з атрибутом розміру операнда 16 розрядів. rel32 відноситься до команд з атрибутом розміру операнда 32 розряду.
    r/m8, r/m16, r/m32 Відповідно одно-, дво-і четирехбайтовий операнд. Являє собою вміст або пам'яті, або регістра.
    rrr Коли позначення rrr з'являється у колонці еквіваленту двійкового коду операції, воно вказує конкретний адресуються регістр.
    000 = AX/EAX 100 = SP/ESP
    001 = CX/ECX 101 = BP/EBP
    010 = DX/EDX 110 = SI/ESI
    011 = BX/EBX 111 = DI/EDI
    Sreg Регістр сегмента. Кодування сегментних регістрів в полі reg: ES = 0, CS = 1, DS = 3, FS = 4, GS = 5.
    5.3. Список команд
    AAA ASCII-корекція після складання.
    Команда AAA перетворить вміст регістру AL в неупаковані десяткове число і скидає його старші чотири розряду. Вона повинна завжди йти за складанням двох неупакованих десяткових операндів в AL. Якщо виникає перенесення, встановлюється прапор CF і відбувається інкремент в регістрі AH.
    AAD ASCII-корекція регістра AX перед поділом.
    Команда AAD перетворить число в регістрах AH і AL, готуючи ділення двох неупакованих десяткових операндів так, щоб отримане в результаті ділення приватне було б правильним неупакованих десятковим числом. У регістрі AH повинна перебуває старша цифра, в AL - молодша. Команда AAD коригує число і поміщає результат в AL. Регістр AH містить 0.
    AAM ASCII-корекція в регістрі AX після множення. Команда AAM коригує результат множення двох неупа-
    кованих десяткових чисел. Ця команда повинна завжди йти за множенням двох десяткових цифр з метою освіти правильного десяткового результату. Старша цифра міститься в регістр AH, молодша - в AL.
    AAS ASCII-корекція регістра AL після вирахування.
    Команда AAS перетворить вміст регістру AL в неупакованих десяткову цифру і заповнює нулями старші чотири розряду. Ця команда повинна завжди йти за вирахуванням одного неупакованого десяткового операнда з іншого в AL. Прапор CF встановлюється, а при наявності позики виконується декремент в регістрі AH.
    ADC Додавання з переносом цілих чисел.
    Команда ADC підсумовує операнди, додає 1, якщо встановлено прапор CF, і поміщає результат за адресою призначення. Якщо прапор CF скинутий, команда ADC виконує ту ж операцію, що і ADD. Комбінація команди ADD і кількох команд ADC дозволяє складати числа, що містять більше 32 розрядів.
    ADD Додавання цілих чисел.
    В результаті виконання команди операнд-приймач замінюється сумою обох операндів (джерела і приймача). За наявності переповнення встановлюється прапор CF.
    AND Логічне І.
    Команда AND використовується для скидання бітів, зазначених користувачем, наприклад біта парності у вхідному потоці кодів ASCII від терміналу. Будучи використана спільно з командою порівняння, команда AND дозволяє переконатися, що вказані біти встановлені.
    ARPL Корекція в селекторі рівня привілеїв ініціатора запиту.
    Команда ARPL використовується системними програмами для забезпечення правильності передачі підпрограмі селектор в якості параметрів. Селектори не повинні вимагати більше привілеїв, ніж дозволено ініціатору запиту.
    У команді ARPL використовуються два операнда. перший представляє собою 16-розрядний регістр або слово пам'яті, що містить значення селектора. Як другий операнда зазвичай виступає регістр, що містить значення селектора програмного сегмента CS ініціатора запиту.
    BOUND Перевірка індексу масиву на вихід за кордону. Команда BOUND перевіряє, чи лежить знакова величина, на-
    ходить в заданому регістрі, всередині заданих меж. Якщо значення цієї величини менше нижньої межі або більше верхньої, виникає переривання 5. Кожне із значень верхньої та нижньої меж може бути словом або подвійним словом.
    BSF пряме сканування бітів.
    Ця команда сканує слово або подвійне слово у пошуках біта, який дорівнює 1, і заносить в регістр номер першого встановленого бита. Сканується рядок може знаходитися як в реєстрі, так і в пам'яті. Якщо все слово дорівнює 0, тобто в ньому немає одиничних бітів, встановлюється прапор ZF. Якщо одиничний біт знайдений, прапор ZF скидається.
    BSR Зворотне сканування бітів.
    Ця команда діє так само як і BSF, але починає сканування з старшого біту. Це нова команда, специфічна для МП 80386.
    BT Перевірка біта.
    Команда BT служить для визначення того, встановлено чи ні певний біт в бітовий масиві. Значення перевіряється біта копіюється в прапор CF. Це нова команда, специфічна для МП 80386.
    BTC Перевірка та інверсія бита.
    Команда BTC перевіряє вказаний біт, копіює його в CF і інвертує знайдений біт. Це нова команда, специфічна для МП 80386.
    BTR Перевірка та скидання бита.
    Команда BTR перевіряє вказаний біт, копіює його в CF і скидає знайдений біт. Це нова команда, специфічна для МП 80386.
    BTS Перевірка і установка бита.
    Команда BTS перевіряє вказаний біт, копіює його в CF і встановлює в знайденому бите значення 1. Це нова команда, специфічна для МП 80386.
    CALL Виклик процедури.
    Команда CALL передає управління з однієї точки програмного сегмента в іншу. Ці точки можуть розташовуватися в одному і тому ж програмному сегменті (ближній перехід) або належати до різних сегментах (дальній перехід). Перед власне передачею управління команда CALL зберігає в стеку адреса наступної за CALL команди і поточний зміст регістра EIP.
    Команди CALL можуть бути відносними, прямими та непрямими. У непрямої команді абсолютний адреса переходу вказується одним із двох способів: (1) МП витягує адреса приймача з комірки пам'яті, визначеної в команді; (2) програма переходить в точку адресу якої зазначено в одному з регістрів загального призначення.
    CBW Перетворення байти в слово.
    Ця команда розширює значення біта знака в старшу частину більш довгого регістра так, щоб арифметичні операції над вмістом цього регістра давали правильні результати.
    CWD Перетворення слова в подвійне слово.
    Дія команди аналогічно команді CBW.
    CLC Скидання прапора переносу.
    Команда скидає прапор CF.
    CLD Скидання прапора напрямку.
    Команда скидає прапор DF. Якщо прапор DF скинутий, автоматична індексація буде виконуватися з інкремент. Автоматична індексація використовується командами обробки рядків.
    CLI Скидання прапора переривань.
    Якщо поточний рівень привілеїв принаймні настільки ж високий, як рівень привілеїв введення-виведення, команда скидає прапор переривань.
    CLTS Скидання прапора перемикання завдання в керуючому регістрі 0.
    Команда скидає прапор TS в CR0. У МП 80386 прапор TS встановлюється кожного разу при перемиканні завдання. Команда використовується в системному програмуванні. Вона являє собою привілейовану команду, що виконується тільки на нульовому рівні привілеїв.
    CMC інвертірованіе прапора переносу.
    Команда інвертує прапор переносу CF.
    CMP Порівняння.
    Команда виконує віднімання операнда-джерела з операнда-приймача. У відповідності з результатом віднімання команда встановлює стан прапорів, але не змінює самі операнди.
    CMPS Порівняння рядкових операндів.
    Асемблер завжди транслює команду CMPS як одну з CMPSB, CMPSW, CMPSD. Ці команди призначені тільки для операцій над рядками. Вони порівнюють по одному елементу кожного рядка, причому елементами можуть бути байт, слово або подвійне слово. Елементи рядків адресуються через регістри ESI і EDI. Після кожної рядковий операції ESI та/або EDI автоматично отримують позитивне або негативне приріст і вказують на наступні елементи рядків. Якщо DF = 0, в індексних регістрах здійснюється інкремент, якщо DF = 1 - декремент. В залежності від результату віднімання строкового елементу за адресою ES: EDI з строкового елементу за адресою DS: ESI встановлюються прапори результату. Якщо команда модифікована за допомогою префіксів, МП виконує порівняння поточного елемента рядки з вмістом регістра EAX або його частини (AL або AX).
    CMPSB Порівняння строкових байтів.
    CMPSW Порівняння строкових слів.
    CMPSD Порівняння строкових подвійних слів.
    CDQ Перетворення подвійного слова в четверні.
    CWDE Перетворення слова в подвійне слово з розширенням.
    DAA Десяткова корекція в регістрі AL після складання. Команда коригує результат складання двох правильних
    упакованих десяткових операндів в регістрі AL. Ця команда повинна завжди йти за складанням двох пар упакованих десяткових чисел, щоб отримати в результаті пару правильних упакованих десяткових цифр.
    DAS Десяткова корекція в регістрі AL після вирахування. Команда DAS аналогічна команді DAA за винятком, що
    корекція виконується шляхом вирахування 6 з полубайтов регістра AL замість додатка 6.
    DEC декремент на 1.
    Команда віднімає 1 з операнда приймача. Стан прапора CF не змінюється.
    DIV Ділення цілих чисел без знака.
    Команда виконує розподіл числа без знака в акумуляторі на операнд-джерело. Розмір ділемо в бітах в два рази більше розміру дільника. Якщо дільник дорівнює 0, або якщо приватне не вміщується у призначений регістр, порушується переривання 0.
    ENTER Створення кадру стека для параметрів процедури Команда створює кадр стека, який можна використовувати
    для реалізації правил мов високого рівня з блокової структурою. Команда LEAVE наприкінці процедури виконує зворотні дії.
    Команда має два параметри. Перший визначає число байтів динамічної пам'яті, що виділяються в стеку для викликаної програми. Другий параметр відповідає лексичним рівнем вкладеності програми (від 0 до 31). Цей рівень визначає, скільки наборів покажчиків кадру стека копіюються центральним процесором в новий кадр стека з поточного кадру.
    ESC Розширення процесора
    Арифметичний співпроцесор надає розширення
    системи команд МП 80386. Співпроцесор підтримує високоточні
    обчислення як цілими, так і з плаваючою точкою і, крім того, містить набір корисних констант, що прискорюють обчислення. Співпроцесор працює паралельно з центральним процесором, забезпечуючи таким чином високу продуктивність.
    Команди співпроцесора включаються в загальний потік команд, що складають програму для МП 80386. Система виконує команди співпроцесора в тому порядку, в якому вони з'являються в потоці.
    HLT Зупинка
    Команда припиняє виконання будь-яких команд і переводить МП у стан зупину. Немаскіруемие переривання, операція запуску і дозволені переривання відновлюють роботу процесора. Команда HLT зазвичай є останньою командою в послідовності команд зупинки системи, наприклад для збереження стану процесу після виявлення збою живлення.
    IDIV Знакова поділ
    Команда виконує знакова поділ. Ділимо, приватному та до решти неявно призначаються певні регістри, в той час як місцезнаходження дільника вказується явно. За формою дільника визначається, які регістри повинні використовуватися. Якщо дільник дорівнює нулю або приватне дуже велике для регістра-приймача, порушується переривання 0.
    IMUL Знакова цілочисельне множення
    Команда виконує операцію знакового цілочисельного множення. Команда має три варіанти.
    1. Однооперандная форма. Операнд може бути байтом, словом або подвійним словом в пам'яті або регістрі загального призначення. Команда використовує вміст регістрів EAX і EDX в якості операндів.
    2. Двухоперандная форма. Один з операндів-джерел може знаходитися в будь-якому регістрі загального призначення, в той час як інший може бути в регістрі загального призначення або в пам'яті. Твір розміщується на місці операнда в регістрі загального призначення.
    3. Трехоперандная форма. Два операнда являють собою джерела і один приймач. Один з операндів-джерел є безпосереднім значенням, записаним в команді. Другий може знаходитися в пам'яті або в будь-якому регістрі загального призначення. Твір може бути записано в будь-який регістр загального призначення. Безпосередній операнд вважається знаковим. Якщо він є байтом, процесор перед виконанням множення автоматично розширює його знак до розміру другий операнда.
    IN Введення з порту
    Команда вводить байт або слово з порту і записує його в реєстрі (AL, AH, EAX). Порт вказується друга операндом. Для доступу до порту його номер слід помістити в регістр DX та використовувати команду IN з позначенням DX в якості другого параметра.
    INC інкремент на 1.
    Команда додає 1 до операнд-приймача, але на відміну від ADD не впливає на прапор CF.
    INT Виклик процедури обробки переривання
    Команда передає управління від однієї комірки програмного сегмента на іншу. Ці комірки можуть належати одному програмного сегменту або різним програмним сегментами. Команда збуджує програмне переривання, що дозволяє користувачеві передть управління зі своєї програми програмі обробки переривань.
    Команда INTn активізує програму обробки переривання, що відповідає номеру, зазначеному в команді. Команда може визначати переривання будь-якого типу. Зауважте, що преріванія
    0 .. 31 зарезервовані фірмою Intel. Повернення управління з програми обробки переривання здійснюється командою IRET.
    INTO Переривання по переповнення
    Команда при встановленому прапорі OF збуджує переривання 4, яке спеціально зарезервовано для цієї мети. Прапор OF встановлюється поруч арифметичних, логічних і рядкових команд.
    IRET Повернення з переривання
    Команда повертає керування перерваної процедурою. На відміну від команди RET IRET витягує з стека значення прапорів і поміщає їх в регістр прапорів. Прапори записуються в стек в процесі реалізації переривання.
    IRETD Повернення з переривання в 32-розрядному режимі
    JMP Перехід
    Команда передає управління з однієї точки сегменту в іншу. Точка переходу може бути в тому ж сегменті (ближній перехід) або в іншому сегменті (дальній перехід). Команда безумовно передає управління в точку переходу і є, таким чином, односпрямованої.
    Команди умовних переходів:
    JA/JNBE Вище, не нижче і не дорівнює
    JAE/JNB Вище або дорівнює, не нижче
    JB/JNAE Нижче, не вище і не одно
    JBE/JNA Нижче або дорівнює, не вище
    JC Перенесення
    JE/JZ Так само, нуль
    JNC Відсутність перенесення
    JNE/JNZ Чи не однаково, не нуль
    JNP/JPO Відсутність парності, непарність
    JP/JPE Парність
    JG/JNLE Більше, не менше й не одно
    JGE/JNL Більше або дорівнює, не менше
    JL/JNGE Менше, не більше і не дорівнює
    JLE/JNG Менше або дорівнює, не більше
    JNO Відсутність переповнення
    JNS Відсутність знака
    (позитивно, включаючи нуль)
    JO Переповнення
    JS Знак (негативно)
    LAHF Завантаження прапорів в регістр AH
    Хоча для зміни прапорів CF і DF передбачені спеціальні команди, інші прапори, що використовуються у прикладних програмах, не можна змінювати безпосередньо. Ця команда дає можливість програмної зміни інших бітів прапорів за допомогою команд побітового операцій після пересилання прапорів в стек або в регістр AH.
    Команда копіює біти SF, ZF, AF, PF, CF відповідно в розряди 7,6,4,2,0 регістра AH.
    LAR Завантаження байти прав доступу
    Команда читає дескриптор сегменту і заносить біти Дробність (23), вільний (20), присутності (15), DPL (14), типу (9-11) і доступу (8) в 32-розрядний регістр, біт Дробність і вільний біт НЕ пересилаються.
    LEA Завантаження виконавчого адреси
    Команда пересилає за адресою приймача відносний адреса операнда-джерела. Операнд-джерело має перебувати в пам'яті. Операнд-приймач повинен бути регістром загального призначення. Команда особливо корисна для ініціалізації регістрів перед виконанням дій над початковими даними або команди XLAT.
    LEAVE Вихід з процедури високого рівня
    Команда виконує дії протилежні дії команди ENTER.
    LGDT Завантаження регістра таблиці глобальних дескрипторів
    LIDT Завантаження регістра таблиці
    Команда оповіщає аппратние кошти про точку переходу в разі переривань.
    LGS Завантаження повного покажчика
    LSS Завантаження покажчика з використанням регістра SS
    LDS Завантаження покажчика з використанням регістра DS
    LES Завантаження покажчика з використанням регістру ES
    LFS Завантаження покажчика з використаний
         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status