Реферат: Затверджено на засіданні Вченої ради академії Протокол № від Дніпропетровськ нметау 2011



МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНА МЕТАЛУРГІЙНА АКАДЕМІЯ УКРАЇНИ





Робоча програма,
методичні вказівки та індивідуальні завдання
до вивчення дисципліни
”Апаратне забезпечення та методи комп’ютерних технологій”

для студентів напряму
6.030502 – економічна кібернетика


Дніпропетровськ НМетАУ 2011


МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНА МЕТАЛУРГІЙНА АКАДЕМІЯ УКРАЇНИ


^ РОБОЧА ПРОГРАМА,

методичні вказівки та індивідуальні завдання
до вивчення дисципліни
"Апаратне забезпечення та методи комп’ютерних технологій"

для студентів напряму
6.030502- економічна кібернетика


Затверджено

на засіданні Вченої ради

академії

Протокол № від


Дніпропетровськ НМетАУ 2011


УДК 004.451.64

Робоча програма, методичні вказівки та індивідуальні завдання до вивчення дисципліни «Апаратне забезпечення та методи комп’ютерних технологій» для студентів напряму 6.030502 - економічна кібернетика / Укл. С.Я. Єгорова. - Дніпропетровськ: НМетАУ, 2011. – 42 с.


Представлені мета й завдання вивчення дисципліни
"Апаратне забезпечення та методи комп’ютерних технологій", короткий зміст дисципліни, література, що рекомендується для вивчення, методичні вказівки та індивідуальні завдання до виконання контрольної роботи.

Призначені для студентів напряму 6.030502 – економічна кібернетика заочної форми навчання.


Укладач С.Я. Єгорова, ст. викладач


Відповідальний за випуск Л. М. Савчук, канд. екон. наук, проф.


Рецензент Є. О. Каракаш, канд. техн. наук, доц. (НМетАУ)


Підписано до друку . .11. Формат 60х84 1/16. Папір друк. Друк плоский.

Облік.-вид.арк. . Умов.друк.арк. . Тираж пр. Замовлення №


Національна металургійна академія України

49600, Дніпропетровськ-5, пр. Гагаріна, 4





Редакційно-видавничий відділ НМетАУ



ВСТУП


Одним з основних напрямів науково-технічного розвитку суспільства в даний час є розвиток інформаційних технологій (ІТ).

Сучасний етап розвитку ІТ пов'язаний із широким використанням комп'ютерної техніки і засобів зв'язку і створенням на їхній основі розподілених систем обробки даних.

Ефективне використання сучасних комп'ютерів неможливе без глибокого знання їхніх архітектурних особливостей.

Працювати комп'ютер змушує так звана машинна мова, про існування якої користувач може навіть і не підозрювати.

Спілкуватися з комп'ютером користувачеві допомагають операційні системи, офісні пакети, системи програмування й т. ін. Використання сучасних технологій програмування дозволяє створювати програми, не написавши ні рядка машинного коду. Але в мозок комп'ютера команди все ж таки надходять машинною мовою.

Машинна мова повністю відбиває всі архітектурні тонкощі конкретного типу комп'ютерів. Наслідком цього є те, що вона індивідуальна для кожного сімейства комп’ютерів. Для того щоб використати ефективно всі можливості комп'ютера, застосовують символічний аналог машинної мови - мову Асемблера.

Працювати на комп'ютері можна, звичайно, й без знання мови Асемблера. Але елементом підготовки програміста-професіонала обов'язково є вивчення Асемблера. Тому що, вивчаючи Асемблер, обов'язково попутно ознайомлюються з архітектурою комп'ютера. А це, у свою чергу, дозволяє надалі створювати більш ефективні програми на інших мовах і поєднувати їх, при необхідності, із програмами на Асемблері.

Асемблер дозволяє створювати ефективні програми, тобто такі, що займають менше пам’яті та працюють швидше.

Навіть найзапекліші противники цієї мови мусять признати, що програми на Асемблері – найшвидші, найкоротші і можуть реалізувати те, що не під силу програмам, створеним на будь-якій іншій мові програмування.

Модулі, написані на Асемблері, часто використовуються в програмах, що написані мовами високого рівня (Pascal, С/C++, Delphi). Найчастіше такий прийом застосовується для ефективної реалізації “вузьких місць” в алгоритмах, які засобами мови високого рівня реалізуються або дуже громіздко, або зовсім не піддаються реалізації.

Метою методичних вказівок до виконання контрольної роботи є надання допомоги у вивченні основ мови Асемблера, а також засобів підготовки та налагодження асемблерних програм.

У методичних вказівках наведені теоретичні відомості відповідно темі роботи, контрольні запитання для перевірки засвоєння матеріалу, а також завдання для реалізації мовою Асемблера.

Слід зазначити, що успішне виконання контрольних робіт тісно пов’язане з необхідністю розуміння особливостей функціонування окремих пристроїв комп’ютера, специфічних способів адресування даних, потребою в деталізації всіх операцій по реалізації алгоритмів тощо.
^ РОБОЧА ПРОГРАМА ДИСЦИПЛІНИ " АПАРАТНЕ ЗАБЕЗПЕЧЕННЯ ТА МЕТОДИ КОМП’ЮТЕРНИХ ТЕХНОЛОГІЙ "

Мета вивчення дисципліни


Метою вивчення дисципліни є придбання теоретичних знань про архітектурні особливості сучасних комп’ютерів і набуття практичних навичок використання мови Асемблера для програмування.

^ Основні завдання вивчення дисципліни:

Поглиблене вивчення структури і функціональних особливостей основних блоків і пристроїв сучасного ПК, придбання навичок самостійної роботи зі спеціальною технічною літературою; придбання навичок моделювання основних операцій ПК, закріплення знань і умінь в області програмування мовою Асемблера.

^ У результаті вивчення дисципліни студент повинен:

знати:

поняття про архітектуру комп’ютера та архітектурні особливості комп’ютерів на базі сучасних мікропроцесорів;

програмну модель мікропроцесора;

організацію оперативної пам’яті комп’ютера;

формати і типи даних, що підтримуються мікропроцесором, формати машинних команд;

систему команд мікропроцесора;

синтаксис Асемблера.

уміти:

виконувати переклади чисел з однієї системи числення в іншу;

представляти прості типи даних у машинних форматах і формах;

проектувати та відлагоджувати програми мовою Асемблера.


^ Розподіл годин за навчальним планом





с е м е с т р и





















^ Усього годин за навчальним планом

36
















у тому числі аудиторні заняття:

8
















з них:

- лекції;


4
















- лабораторні заняття.

4
















^ Самостійна робота

28
















у тому числі:

- опрацювання лекційного матеріалу;

4
















- самостійне вивчення розділів програми;

4
















- виконання контрольної роботи.

20
















^ Підсумковий контроль (іспит, залік)

залік

















^ Зміст дисципліни


Лекції


№№

тем

Назва розділу/теми та її зміст

Тривалість (годин)

1

Загальні принципи побудови комп’ютерних систем (КС).

Поняття про архітектуру комп’ютера. Мікропроцесор: призначення та його програмна модель. Організація пам’яті. Формат команд. Обробка переривань.

2

2

Основи програмування мовою Асемблера.

Інформаційні основи комп’ютерної техніки. Опис даних у програмах мовою Асемблера. Структура Асемблерної програми. Основні команди Асемблера та їх використання у програмах.


2


Лабораторні роботи


1

Інформаційні основи комп’ютерної техніки

2

2

Основи програмування мовою Асемблера

2
^ МЕТОДИЧНІ ВКАЗІВКИ ДО ВИКОНАННЯ КОНТРОЛЬНОЇ РОБОТИ

Метою контрольної роботи є поглиблення знань з дисципліни "Апаратне забезпечення та методи комп’ютерних технологій» і закріплення навичок практичного використання засобів розробки й реалізації програм мовою Асемблера.

Основні завдання контрольної роботи:

поглиблене вивчення структури й функціональних особливостей основних блоків і пристроїв сучасного ПК;

придбання навичок самостійної роботи зі спеціальною технічною літературою;

закріплення знань і вмінь в області програмування мовою Асемблера.
^ Загальні вимоги до виконання контрольної роботи

Контрольна робота виконується протягом семестру після установчих занять. Робота представляється в деканат заочного факультету для реєстрації. Після реєстрації в деканаті робота передається на кафедру ЕІ для перевірки. Робота, що виконана з помилками й відхиленнями від вимог методичних вказівок, повертається студентові для доробки. Захист контрольної роботи здійснюється під час екзаменаційної сесії.

Робота виконується на аркушах формату А4 з використанням комп'ютера (студент зобов'язаний надати електронний варіант роботи).

Структура контрольної роботи наступна:

завдання №1. "Принципи організації і функціонування комп’ютерних систем" - це теоретична частина контрольної роботи, виконується відповідно до теми, запропонованої викладачем. Перелік тем наведено у додатку А. Номер завдання обирається за двома останніми цифрами залікової книжки студента;

завдання №2. "Програмування мовою Асемблера" – практична частина контрольної роботи, виконується відповідно до індивідуального завдання. Перелік завдань наведено у додатку Б. Номер завдання обирається за двома останніми цифрами залікової книжки студента.



^ Методика виконання завдання №1

Завдання №1 виконується на основі вивчення літературних джерел на запропоновану тему.

Відповідно темі описуються структурні й функціональні особливості того або іншого пристрою або окремого блоку сучасного комп'ютера.

При цьому варто відобразити:

призначення, роль і місце розглянутого пристрою в загальній структурі ЕОМ;

основні принципи роботи;

основні етапи розвитку;

склад і взаємодію основних вузлів і блоків;

основні характеристики роботи;

специфіку функціональної організації на сучасному етапі розвитку засобів мікропроцесорної обчислювальної техніки;

основні напрямки розвитку й удосконалення.



^ Методика виконання завдання №2

Мета завдання – закріплення навичок складання та налагодження програм мовою Асемблера.
2.3.1 Теоретичні відомості для виконання завдання
Асемблер є символічним аналогом машинної мови. Із цієї причини програма, написана на Асемблері, повинна відображати всі особливості архітектури мікропроцесора: організацію пам'яті, способи адресації операндів, правила використання регістрів і т. ін. Через необхідність обліку подібних особливостей Асемблер унікальний для кожного типу мікропроцесорів.

Програма на Асемблері являє собою сукупність блоків пам'яті, які називаються сегментами пам'яті. Програма може складатися з одного або декількох таких блоків-сегментів. Кожний сегмент містить сукупність речень мови, кожне з яких займає окремий рядок коду програми.

Речення Асемблера бувають чотирьох типів:

команди або інструкції - представляють собою символічні аналоги машинних команд. У процесі трансляції інструкції Асемблера перетворюються у відповідні команди системи команд мікропроцесора;

макрокоманди - оформлені певним чином речення тексту програми, що заміщаються під час трансляції іншими реченнями;

директиви - вказівки транслятору Асемблера на виконання деяких дій. У директив немає аналогів у машинному представленні;

рядки коментарів - містять будь-які символи, у тому числі й літери російського або українського алфавіту. Коментарі ігноруються транслятором.

Загалом, речення вихідного коду програми мовою Асемблера мають наступний формат:

[мітка] інструкція/директива/макрокоманда [операнди] [;коментар]

Для зручності запису програм у мові Асемблера всім компонентам присвоюються імена - ідентифікатори.

Ідентифікатори – це послідовності припустимих символів, що використовуються для позначення таких об'єктів програми, як коди операцій, імена змінних і назви міток. Правило запису ідентифікаторів полягає в наступному:

ідентифікатор може складатися з одного або декількох символів (можна використовувати всі латинські букви: A-Z, a-z, цифри від 0 до 9 і деякі спеціальні знаки, а саме: _, ?, $, @);

ідентифікатор не може починатися з цифри, а символи $ і ? мають спеціальне призначення, тому їх не слід використовувати в ідентифікаторах;

довжина ідентифікатора може бути до 255 символів (транслятор сприймає лише перші 32 символи, а подальші ігнорує).

Відзначимо, що наведений набір символів і інші характеристики ідентифікаторів можуть змінюватися залежно від транслятора, який використовується.

Машинним командам, директивам транслятора й деяким іншим компонентам (наприклад, регістрам) уже присвоєні імена (у випадку машинних команд вони часто називаються мнемокодами або мнемонічними позначеннями), тобто вони (ці імена) є визначеними (зарезервованими) і не можуть використовуватися довільно, в інших випадках ідентифікатори привласнюються програмістом, відповідно до вищенаведених правил.


При програмуванні мовою Асемблера використовуються дані наступних типів:

безпосередні - дані, що представляють собою числові чи символьні значення, які є частиною команди і формуються програмістом у процесі написання програми для конкретної команди Асемблера;

простого типу - дані, що дозволяють виконати елементарні операції по розміщенню й ініціалізації числової і символьної інформації. При обробці цих директив Асемблер зберігає у своїй таблиці символів інформацію про місце розташування даних (значення сегментної складової адреси і зсуву) і типи даних;

складного типу - дані, що введені в мову Асемблера з метою полегшення розробки програм. Складні типи даних будуються на основі базових типів. TASM підтримує наступні складні типи даних: масиви, структури, об'єднання, записи.

Поняття простого типу даних носить двоїстий характер: фізична інтерпретація і логічна інтерпретація.

З погляду фізичної інтерпретації (розмірність), мікропроцесор апаратно підтримує наступні основні формати даних (рисунок 2. 1):

байт - вісім послідовно розташованих бітів, пронумерованих від 0 до 7, при цьому біт 0 є молодшим значущим бітом, а біт 7 – старшим значущим бітом;

слово — послідовність із двох байт, що мають послідовні адреси. Розмір слова — 16 біт; біти в слові нумеруються від 0 до 15. Байт, що містить нульовий біт, називається молодшим байтом, а байт, що містить 15-й біт, - старшим байтом. Мікропроцесори Intel мають важливу особливість — молодший байт завжди зберігається за меншою адресою. Адресою слова вважається адреса його молодшого байта. Адреса старшого байта може бути використаною для доступу до старшої половини слова.

двійчасте слово — послідовність з чотирьох байт (32 біта), розташованих за послідовними адресами. Нумерація біт здійснюється від 0 до 31. Слово, що містить нульовий біт, називається молодшим словом, а слово, що містить 31-й біт, - старшим словом. Молодше слово зберігається за меншою адресою. Адресою двійчастого слова вважається адреса його молодшого слова. Адреса старшого слова може бути використаною для доступу до старшої половини двійчастого слова.

тетраслово - послідовність з восьми байт (64 біта), розташованих за послідовними адресами. Нумерація біт здійснюється від 0 до 63. Двійчасте слово, що містить нульовий біт, називається молодшим двійчастим словом, а двійчасте слово, що містить 63-й біт, — старшим двійчастим словом. Молодше двійчасте слово зберігається за меншою адресою. Адресою тетраслова вважається адреса його молодшого двійчастого слова.



Рисунок 2.1 - Основні формати даних мікропроцесора


Крім трактування типів даних з погляду їхньої розрядності, мікропроцесор на рівні команд підтримує логічну інтерпретацію цих типів (рисунок 2.2):

цілий тип зі знаком - двійкове число зі знаком, розміром 8, 16 чи 32 біта. Знак у цьому числі міститься в 7, 15 чи 31-ому бітах відповідно. Нуль у цих бітах відповідає позитивному числу, а одиниця - від’ємному. Від’ємні числа представляються в додатковому коді. Числові діапазони для цього типу даних наступні:

байт — від –128 до +127;

слово — від –32 768 до +32 767;

двійчасте слово— від –231 до +231–1.

цілий тип без знака — двійкове число без знака, розміром 8, 16 чи 32 біта. Числовий діапазон для цього типу наступний:

байт — від 0 до 255;

слово — від 0 до 65 535;

двійчасте слово — від 0 до 231–1.

ланцюжок — деякий безупинний набір байтів, слів або двійчастих слів.

бітове поле - безупинна послідовність біт, у якій кожен біт є незалежним і може розглядатися як окрема змінна. Бітове поле може починатися з будь-якого біта будь-якого байта.

незапакований двійково-десятковий тип - байтове представлення десяткової цифри від 0 до 9. Незапаковані десяткові числа зберігаються як байтові значення без знака по одній цифрі в кожнім байті. Значення цифри визначається молодшим нібелом (напівбайтом).

запакований двійково - десятковий тип - запаковане представлення двох десяткових цифр від 0 до 9 в одному байті. Кожна цифра зберігається у своєму нібелі. Цифра в старшому нібелі (біти 4–7) є старшою.





Рисунок 2.2 - Основні логічні типи даних мікропроцесора


Для опису простих типів даних у програмі використовуються спеціальні директиви резервування й ініціалізації даних, що, по суті, є вказівками транслятору на виділення визначеного обсягу пам'яті. Якщо проводити аналогію з мовами високого рівня, то директиви резервування й ініціалізації даних є визначенням змінних.

Машинного еквівалента цим директивам немає; просто транслятор, обробляючи кожну таку директиву, виділяє необхідну кількість байтів пам'яті і при необхідності ініціалізує цю область деяким значенням.

TASM підтримує наступні директиви резервування й ініціалізації даних:

db — резервування пам'яті для даних розміром 1 байт;

dw — резервування пам'яті для даних розміром 2 байти;

dd — резервування пам'яті для даних розміром 4 байти;

df — резервування пам'яті для даних розміром 6 байт;

dp — резервування пам'яті для даних розміром 6 байт;

dq — резервування пам'яті для даних розміром 8 байт;

dt — резервування пам'яті для даних розміром 10 байт.

Дуже важливо усвідомити собі порядок розміщення даних у пам'яті. Він прямо зв'язаний з логікою роботи мікропроцесора з даними.

Мікропроцесори Intel вимагають зберігання даних у пам'яті за принципом: молодший байт за молодшою адресою.

Кожній змінній, що оголошена за допомогою директив опису простих типів даних, Асемблер привласнює три атрибути:

1.Сегмент (seg) — адреса початку сегмента, що містить змінну;

2.Зсув (offset)  визначає зсув у байтах від початку сегмента зі змінною;

3.Тип (type) — визначає кількість байтів пам'яті, виділеної змінній відповідно до директиви її оголошення .

При завданні значення змінної варто вказувати систему числення, використовуючи відповідний специфікатор наприкінці числа, а саме:

b- двійкове число;

h- шістнадцятирічне число;

d- десяткове число;

q (o)- восьмирічне число.

Десяткові числа зазвичай записуються без специфікатора.

Якщо шістнадцятирікове число починається із символу (А-F), то на початку числа обов'язково повинний бути записаний хоча б один незначущий нуль: 0CFh- число; CFh- ідентифікатор.

Приклади опису числових даних:

x db 8 ; число X довжиною 1 байт зі значенням 8

y dw 32000 ; число Y довжиною 2 байти зі значенням 32000

rab dw ? ; виділяється 2 байти для змінної rab

zont dw 100h ;число в 16-вій системі

kol dw -100b ;число в 2-вій системі

У мові Асемблера немає окремої директиви, що описує масиви, тому їх описують як звичайні змінні.

Приклад:

a db 5,7,13,-6,8 ; у масиві а 5 чисел

rez dw 20 dup(?) ; для масиву виділено 20 слів

Також описуються і матриці. Бажано, щоб одному рядку в програмі відповідав один рядок матриці.

Приклад:

matr db 4,18,-6,3 ; перший рядок матриці

db -4,-7,8,6 ; другий рядок матриці

db 13,16,19,1 ; третій рядок матриці

matrv db 6*8dup(?) ; резервування пам'яті для матриці


Рядки (послідовності символів) при описі беруть в одинарні чи подвійні лапки: "А+B" чи 'A+B'.

Приклад опису рядка:

soobsh db 'Количество искомых чисел =', '$'


Команди Асемблера можуть зовсім не мати операндів, мати один або два операнда. Більшість команд вимагають двох операндів, один із яких є витоком даних (операнд – джерело), а другий - операндом призначення (операнд – приймач). Важливо те, що один операнд може розташовуватися в регістрі або пам'яті, а другий операнд обов'язково повинен знаходитися в регістрі або безпосередньо в команді. Безпосередній операнд може бути тільки операндом - джерелом.

У двохоперандній машинній команді можливі наступні сполучення операндів:

- регістр - регістр;

- регістр - пам'ять;

- пам'ять - регістр;

- регістр - безпосередній операнд;

- пам’ять – безпосередній операнд.

Для даного правила є виключення, які стосуються:

команд роботи з ланцюжками, які можуть переміщувати дані з пам'яті у пам’ять;

команд роботи зі стеком, які можуть переносити дані з пам'яті в стек, що також перебуває в пам'яті;

команд типу множення (ділення), які, крім операнда, зазначеного в команді, використовують ще й другий, неявний операнд.

З перерахованих сполучень операндів найбільш часто вживаються команди типу регістр – регістр, регістр - пам'ять і пам'ять - регістр.

Адреса операнда формується як сума двох складових: зсунутого на 4 біти вмісту сегментного регістра й 16-бітної ефективної адреси, що у загальному випадку обчислюється як сума трьох компонентів: бази, зсуву й індексу.


При програмуванні лінійних обчислювальних процесів в програмах мовою Асемблера найчастіше використовуються наступні групи команд:

команди пересилання;

команди арифметичних операцій;

команди роботи зі стеком;

команди перетворення форматів.

Команди пересилання дозволяють скопіювати вміст джерела в приймач. У якості джерела можна використовувати регістр, пам'ять або безпосередній операнд; у якості приймача - регістр або пам'ять.

Команди пересилання загального призначення не можуть пересилати:

1) дані з пам'яті у пам’ять;

2) із сегментного регістра в сегментний регістр;

3) безпосередній операнд у сегментний регістр.

При пересиланні типи даних, що пересилаються, повинні збігатися. Якщо типи операндів неможливо визначити безпосередньо, то вони повинні бути задані явно за допомогою оператора вказівки типу, що має формат:

тип ptr вираз

За допомогою цього оператора можна здійснювати перевизначення типу операнда:

w dw 1024; зарезервувати слово для змінної w



dec byte ptr w+1 ; зменшити старший байт слова w на одиницю.

Команди пересилання загального призначення представлені
в таблиці 2.1.

У цій таблиці й в інших таблицях, наведених далі, прийняті наступні позначення:

s - операнд - джерело (регістр або пам'ять);

d - операнд - приймач (регістр або пам'ять);

(d) – значення операнду –джерела (у регістрі або пам’яті);

(s) – значення операнду – приймача (у регістрі або пам’яті);

→ - занести значення (у регістр або пам’ять)

r - регістр; m - пам'ять; і - константа;

8 – формат байт;16 – формат слово;32 – формат двійчасте слово;

сс- умова пересилання у команді умовного переходу.


Таблиця 2.1 - Команди пересилання даних загального призначення


Назва команди

Мнемо
ніка операції (МОП)

Формат команди

Схема виконання команди

прапори

OF

SF

ZF

AF

PF

CF

Загальні команди пересилання

Переслати

mov

mov d, s

(s) → d













Обміняти

xchg

xchg d, s

(s) ↔ d













Обміняти байти усередині регістра (поч. з i486+)

bswap

bswap r32

молодший байт молодшого слова ↔ старшим байтом старшого слова














Мікропроцесор може виконувати цілочисельні операції й операції із плаваючою крапкою. Для цього в його архітектурі є два окремих блоки:

пристрій для виконання цілочисельних операцій;

пристрій для виконання операцій із плаваючою крапкою.

Кожен із цих пристроїв має свою систему команд. Для більшості завдань, що використовують мову Асемблера, досить цілочисельної арифметики. На рисунку 2.3 наведена класифікація команд цілочисельної арифметики.

Команди двійкової арифметики представлені в таблиці 2.2. Ці команди застосовуються для виконання операцій над цілими двійковими числами (знаковими й беззнаковими). Діапазон двійкового числа визначається форматом і станом старшого біта (знаковий або значущий).




Рисунок 2.3 - Команди цілочисельних операцій


Таблиця 2.2 – Команди арифметичних операцій


Найменування команди

МОП

Формат команди
^ Схема виконання команди
прапори

OF

SF

ZF

AF

PF

CF

Команди додавання цілих двійкових чисел

Скласти

add

add d, s

(d) + (s) → d

+

+

+

+

+

+

Скласти з переносом

adc

adc d, s

(d) + (s) + (CF) → d

+

+

+

+

+

+

Приростити

inc

inc d

(d) + 1 → d

+

+



+

+

+

Команди вирахування двійкових цілих чисел

Відняти

sub

sub d, s

(d) – (s) → d

+

+

+

+

+

+

Відняти з позичанням

sbb

sbb d, s

(d) – (s) – (CF) → d

+

+

+

+

+

+

Зменшити на одиницю

dec

dec d

(d) – 1 → d

+

+



+

+

+

Змінити знак

neg

neg d

[(d)]доп → d

+

+

+

+

+

+

Порівняти

cmp

cmp d, s

(d) – (s) → установлюються прапори

+

+

+

+

+

+



Продовження табл. 2.2

Команди множення беззнакових чисел

Помножити без знака

mul

mul s8

(al)*(s)8, r, s→ AX

+









+

mul s16

(AX)*(s)16 →
DX, AX
DX - старші розряди;
AX –молодші розряди

+









+

mul s32

(EAX)*(s)32 → EDX, EAX
EDX-старші розряди
EAX–молодші розряди

+









+

Команди множення знакових чисел

Помножити зі знаком

imul

imul s8

(al)*(s)8 → AX

+









+

imul s16

(ax)*(s)16 → DX,AX

+









+

imul s32

(eax)*(s)32 → EDX, EAX

+









+

imul r, s

(r)16, 32*(s)8, 16 → r16, 32

+









+

imul r, s, i

(s)8, 16*i → r 16, 32

+









+

Команди ділення цілих двійкових чисел

Ділити без знака

div

div s8

(AX) : (s)8
→ ah – залишок,
→ al – частка













div s16

(DX,AX) : (s)16
→ DX – залишок,
→ AX – частка













div s32

(EDX,EAX) : (s)32
→ EDX – залишок, → EAX – частка













Ділити зі знаком

idiv

idiv s8

(ax) : (s)8
→ ah – залишок,
→ al – частка













idiv s16

(DX,AX) : (s)16
→ DX – залишок,
→ AX – частка













idiv s32

(EDX,EAX) : (s)32
→ EDX – залишок, → EAX – частка














Команди для роботи зі стеком забезпечують можливість організації тимчасового зберігання деяких даних у спеціальній області пам'яті, що називається стеком (таблиця 2.3).

При роботі зі стеком необхідно враховувати наступне:

запис і читання даних у стек здійснюються відповідно до принципу LІFO – last in, first out ("останнім прийшов, першим пішов");

у міру запису стек росте убік молодших адрес;

вміст регістра SP указує на вершину стека, тобто на слово або двійчасте слово, у якому зберігається останній елемент стека;

якщо стек порожній, то в регістрі SP зберігається адреса останнього байта сегмента пам'яті, що виділений під стек;

для доступу до елементів усередині стека використовується регістр BP;

принцип правильного керування стеком полягає в тім, що кожній команді запису (проштовхування) у стек повинна в програмі відповідати команда витягу (виштовхування) зі стека.


Таблиця 2.3 - Основні команди для роботи зі стеком


Найменування команди

МОП

Формат команди
^ Схема виконання команди
прапори

OF

SF

ZF

AF

PF


CF

Помістити слово в стек

push

push s

(s) → stack













Витягти слово зі стека

pop

pop d

(stack) → d














Команди перетворення форматів (таблиця 2.4) використовуються найчастіше для підготовки операцій ділення й множення, а також у тих випадках, коли необхідно здійснити перетворення одного формату числа в інший без втрати первісного значення числа й знака цього числа.

Таблиця 2.4 - Команди перетворення форматів (розширення знака)


Найменування команди

МОП

Формат команди
^ Схема виконання команди
прапори

OF

SF

ZF

AF

PF

CF

Перетворити байт у слово

cbw

cbw

відтворити 7-й біт регістра al у всіх бітах регістра ah













Перетворити слово у двійчасте слово

cwd

cwd

відтворити 15-й біт регістра AX у всіх бітах регістра DX














Продовження табл. 2.4

Перетворити двійчасте слово у тетраслово слово

cdq

cdq

відтворити 31-й біт регістра EAX у всіх бітах регістра EDX













Перетворити слово в двійчасте слово

cwde

cwde

відтворити 15-й біт регістра AX в 16-ти старших бітах регістра EAX













Пересилання з поширенням знака

movsx

movsx d, s

(s)r, m 8-16→dr 16-32













Пересилання з нульовим розширенням

movzx

movzx d, s

(s)r, m 8-16→dr 16-32














При розробці практично будь-якої програми виникає необхідність зміни послідовного ходу її виконання, тобто в програмі є точки, у яких необхідно прийняти рішення щодо того, яка команда буде виконуватися наступною.

Це рішення може бути:

безумовним - у даній точці необхідно завжди передати керування не тій команді, що йде наступною, а інший, котра перебуває на деякій відстані від поточної команди;

умовним - рішення про те, яка команда буде виконуватися наступною, приймається на основі аналізу деяких умов або даних.

Тому до складу команд мікропроцесорів сімейства Intel включено групу команд, що забезпечують передачу керування з однієї точки програми в іншу - це так звані команди передачі керування або команди переходу.

Команди передачі керування змінюють вміст регістрів cs і eіp/іp, у результаті чого мікропроцесор вибирає для виконання не наступну одну за одною команду програми, а команду в деякій іншій ділянці програми.

За принципом дії команди передачі керування можна розділити на три групи:

команди безумовної передачі керування;

команди умовної передачі керування;

команди керування циклом.

Команда безумовного переходу має формат:

jmp адреса_переходу - безумовний перехід без збереження інформації про точку повернення.

Адреса_переходу являє собою, найчастіше , адресу у вигляді мітки тієї команди, на котру здійснюється перехід.

Ця адреса може перебувати в поточному сегменті коду або у деякому іншому сегменті. У першому випадку перехід називається близьким, у другому - міжсегментним, або далеким.

Команди умовного переходу

Мікропроцесор має 18 команд умовного переходу. Ці команди дозволяють перевірити:

відношення між операндами зі знаком ("більше - менше");

відношення між операндами без знака ("вище - нижче");

стан арифметичних прапорців zf, sf, cf, of, pf .

Всі команди умовного переходу мають однаковий формат:

jcc мітка_переходу

При цьому:

"j" - означає слово jump (стрибок);

абревіатура cc - визначає конкретну умову, що аналізується командою (таблиця 2.5);

мітка_переходу - мітка, що може перебувати тільки в межах поточного сегменту кода.

Міжсегментна передача керування в умовних переходах не допускається.

У ранніх моделях мікропроцесорів Intel (і8086, і80186, і80286) команди умовного переходу могли здійснювати тільки короткі переходи - на відстань від -128 до +127 байт від команди, що стоїть за командою умовного переходу. Починаючи з моделі мікропроцесора i80386, це обмеження зняте, але тільки в межах поточного сегмента коду.

Таблиця 2.5 - Значення абревіатур сс у назві команди умовного переходу


Мнемонічне позначення

Значення абревіатур

Тип операндів

Англійською мовою

Російською мовою

E e

equal

Рівно

Будь -які

N n

not

Ні

Будь -які

G g

greater

Більше

Числа зі знаком

L l

less

Менше

Числа зі знаком



Продовження табл. 2.5

A a

above

Вище, у розумінні "більше"

Числа без знака

B b

below

Нижче, у розумінні «менше»

Числа без знака


Для того, щоб прийняти рішення про передачу керування командою умовного переходу, попередньо повинна бути сформована умова, на підставі якої й буде прийматися відповідне рішення.

Джерелами такої умови можуть бути:

будь-яка команда, що змінює стан арифметичних прапорців;

команда порівняння cmp, що порівнює значення двох операндів;

стан регістра ecx/cx.


Взаємодія команди порівняння cmp і команд переходів.

Команда порівняння cmp порівнює два операнди й за результатами порівняння установлює прапорці.

Прапорці, що установлені командою cmp, аналізуються спеціальними командами умовного переходу, наведеними у таблиці 2.6.

Таблиця 2.6 - Перелік команд умовного переходу, що використовуються після
команди порівняння cmp

Типи операндів

Мнемокод команди умовного переходу

Критерій умовного переходу

Значення прапорів для здійснення переходу

Будь-які 

je 

операнд_1 = операнд_2

zf = 1 

Будь-які 

jne 

операнд_1 операнд_2

zf = 0 

Зі знаком 

jl/jnge 

операнд_1 < операнд_2

sf  of
^ 2.4 Приклад виконання завдання №2

2.4.1 Обчислити заданий цілочисельний вираз:

Y = (a/b – c + 287)/( d + a2 - 36),

якщо

a = 12; b = 3; c = 2; d = 5.

Обчислення виконувати у форматі слова.

1) У
еще рефераты
Еще работы по разное