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

24743
знака
2
таблицы
4
изображения

Полтавський Військовий Інститут Зв’язку

Кафедра схемотехніки радіоелектронних систем

 

ОБЧИСЛЮВАЛЬНА ТЕХНІКА ТА МІКРОПРОЦЕСОРИ

 

Програмне забезпечення мікропроцесорних систем.

Програмування універсальних мікропроцесорів на мовах Асемблер.

Система команд МП IA-32.

Лекція обговорена і схвалена на засіданні

предметно-методичної комісії

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

Полтава – 2006


Навчальна література

 

1.         Юров В. Assembler -- СПб: Издательство „Питер”, 2001, с. 57-66.

2.         Мікропроцесорна техніка: Підручник/ Ю.І. Якименко та інш. – К.: ІВЦ Політехніка; Кондор, 2004. с. 49-53, 105-118.

 


ВСТУП

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

По-справжньому вирішити проблеми, зв'язані з апаратурою (або навіть, більш того, що залежать від апаратури як, наприклад, підвищення швидкодії програми), неможливо без знання асемблера.

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

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

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

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

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


1.Типи адресації операндів МП IA-32.

 

Існують такі способи адресації:

Пряма адресація. При такій адресації адреса операнда вказана безпосередньо в команді.

Непряма адресація. При такій адресації у форматі команди вказується номер (ім’я) регістра, у якому зберігається адреса комірки пам’яті, яка містить операнд.

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

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

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

Індексна адресація. Для утворення адреси операнда до значення адресного поля команди додається значення вмісту індексного регістра (SI або DI), яке називається індексом.

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

Базова адресація. Ефективна адреса операнда ЕА обчислюється складанням вмісту базових регістрів ВХ або ВР і зміщенням (8- або 16-розряднє число).

Базова-індексна адресація. Ефективна адреса операнда ЕА дорівнює сумі вмісту базових регістрів ВХ або ВР, індексних регістрів SI або DI та зміщення. Базова та індексна адресація застосовуються для звернення до елементів одновимірного масиву, Базова – індексна – до двовимірного масиву.

Дотепер ми вживали терміни "виконавча (або ефективна) адреса" і "внутрішньосегментний зсув" як синоніми, що є вірним лише для єдиного, найпростішого режиму адресації, що називається прямою адресацією. У дійсності ж система команд МП ІA‑32 передбачає 11 режимів адресації, у більшості з яких зсув є лише одним з компонентів, використовуваних для обчислення ефективної адреси. При цьому тільки в двох випадках операнди не зв'язані з пам'яттю. Це операнд - вміст регістра, що береться з будь-якого регістра процесора і безпосередній операнд, що утримується в самій команді. Інші дев'ять режимів так чи інакше звертаються до пам'яті.

При звертанні до пам'яті ефективна адреса ЕА обчислюється по формулі:

EA = Base +Index* Scale +Disp

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

- Зсув (Dіsplacement або Dіsp) - 8, 16 або 32-бітне число, включене у команду;

- База (Base) - вміст базового регістра. Звичайно використовується для вказівки на початок деякого масиву;

- Індекс (Іndex) - вміст індексного регістра. Звичайно використовується для вибору елемента масиву;

- Масштаб (Scale) - множник (1, 2, 4 або 8), зазначений у коді інструкції. Цей елемент використовується для вказівки розміру елемента масиву, доступний тільки при 32-бітній адресації.

Окремі доданки в цій формулі можуть бути відсутніми.

Обчислення ефективної адреси пояснюється схемою, представленої на рис. 1. Можливі режими адресації представлені в таблиці 1.

Процесори ІA-32 можуть працювати з 32-бітною або 16-бітною адресацією. 16-бітна адресація функціонує так само, як у МП І8086, при цьому як компоненти адреси використовуються молодші 16 біт відповідних регістрів. Як говорилося вище, у реальному режимі за замовчуванням використовується 16-бітна адресація, однак є можливість для поточної інструкції переключитися на 32-бітну. При 32-бітній адресації застосовуються розширені 32-розрядні регістри і додаткові режими з масштабуванням індексу. Однак значення ефективної адреси, що обчислюється, усе рівно не може вийти за 64-килобайтний бар'єр - при спробі використання ЕА, що виходить за межу сегмента генерується виключення #GP (General Protectіon Fault).

 

 

 

 

 

 

 

 


ЕА

Рис. 1. Обчислення ефективної адреси


Таблиця 1

Режим

Адреса

Пряма адресація

EA = Disp

Непряма регістрова адресація

EA = Base

Базова адресація

EA = Base +Disp

Індексна адресація

EA = Index +Disp

Масштабована індексна адресація

EA = Index* Scale +Disp (*)

Базово-індексна адресація

EA = Base +Index

Масштабована базово-індексна адресація

EA = Base +Index* Scale (*)

Базово-індексна адресація зі зсувом

EA = Base +Index +Disp (*)

Масштабована базово-індексная адресація зі зсувом

EA = Base +Index* Scale +Disp

 (*)- масштабування індексу можливо тільки при 32-бітній адресації.

 

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

Засоби контролю стежать і за переходом через границю сегмента під час звертання до "прикордонної" адресі. При спробі адресації до слова, що має зсув FFFF16 або до подвійного слову зі зсувом FFFD16 - FFFF16 (їх старші байти виходять за межу сегмента), або виконання інструкції, хоча б один байт якої не уміщається в даному сегменті, процесор також виробляє виключення #GP.

У захищеному режимі також можливе переключення 16-и і 32-бітної адресації.

Розходження між режимами адресації при використанні 16-и і 32-бітної адресації показані в таблиці 2.

Таблиця 2.

Компонент

16-бітна адресація

32-бітна адресація

Базовий регістр ВХ або ВР Будь-який 32-бітний регістр загального призначення.
Індексний регістр SI або DI Будь-який 32-бітний регістр загального призначення, крім ESP
Масштаб Немає (завжди 1) 1, 2, 4, 8
Зсув 0, 8, 16 біт 0, 8, 32 біт

Як видно з таблиці, при 32-бітній адресації функціональне призначення регістрів МП фіксовано менш жорстко.


Информация о работе «Програмування універсальних мікропроцесорів на мовах Асемблер»
Раздел: Информатика, программирование
Количество знаков с пробелами: 24743
Количество таблиц: 2
Количество изображений: 4

Похожие работы

Скачать
206879
0
16

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

Скачать
31435
5
8

... асемблера, яка дає можливість найбільш повно і раціонально використовувати апаратні і програмні ресурси мікро-ЕОМ. У даному курсовому проекті розроблено схему електричну принципову процесорного модуля з використанням мікропроцесора КР580ВМ80А 1. Загальний розділ 1.1. Призначення проектуємого пристрою У курсовому проекті прийняті наступні скорочення: БА - буфер адреси; БД - буфер ...

Скачать
40072
1
6

... і MS Excel загальні відомості про електронні таблиці, призначення і можливості, вікно електронної таблиці, вікна книг Термін «електронна таблиця» вживається для позначення простої у використанні комп'ютерної програми Excel, що призначена для обробки інформаційних даних за допомогою таких операцій, як: ■ проведення різних обчислень із використанням потужного апарату функцій і формул; &# ...

Скачать
148745
30
12

... обміну даними з ПЭВМ у процесі виконання програми користувача; 11.      Вкажіть типи буферних схем, використаних в УУМС-2. Їх призначення та особливості роботи. 12.      Дайте визначення адресного простору мікропроцесорної системи та розпишіть його розподіл в УУМС-2. Адресний простір УУМС складається з областей, состав яких показаний у табл.2. Варто звернути увагу, що внутрішні адресні області ...

0 комментариев


Наверх