Допомога у написанні освітніх робіт...
Допоможемо швидко та з гарантією якості!

Аналитический огляд книжки Програмування мовою ассемблера для мікропроцесорів 8080 і 8085

РефератДопомога в написанніДізнатися вартістьмоєї роботи

DCR і INR застосовуються до 8-разрядным регістрам діють попри всі прапори, крім прапора перенесення. Команди DCX і INX застосовуються до 16- різним парам регістрів і взагалі діють на прапори. Можна також використовувати 16-разрядные пари регістрів як звичайні лічильники, але єдиний засіб перевірки пари на 0 є використання команди логічне АБО до двох регістрам разом із акумулятором. 16. Ні… Читати ще >

Аналитический огляд книжки Програмування мовою ассемблера для мікропроцесорів 8080 і 8085 (реферат, курсова, диплом, контрольна)

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

Попри те що що випущено значну кількість літератури, присвяченій з розробки й застосуванню мікропроцесорів і мікрокомп'ютерів, а також опис програмних засобів, запропонована книга представляє певний інтерес комплексним підходом й методичною цілісністю. На огляд представлена книга американських авторів Левенталя Л. і Сэйвилла У. «Програмування мовою асемблер для мікропроцесорів 8080 і 8085 ». Книжку перекладено з англійської, вийшла друком 1987 р. у видавництві Радіо і зв’язок. Видання включає у собі 488 страниц.

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

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

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

ГЛАВА 1. СПІЛЬНІ МЕТОДИ ПРОГРАММИРОВАНИЯ.

Служить введенням у програмування для даного процесора; у ній наводяться основні відмінності цього процесора з інших мікропроцесорів і мини-ЭВМ. У цьому главі описуються загальні методи написання програм мовою ассемблера для мікропроцесора 8080 і 8085. Вона має способи виконання наступних операцій: завантаження і збереження регістрів; запам’ятовування даних у пам’яті; арифметичні і логічні операції; роботу з розрядами; перевірка розрядів; перевірка визначені значення; числові порівняння; організація циклів (повторюваних послідовностей операцій); обробка масивів; пошук в таблиці; роботу з символами; перетворення кодів; арифметичні операції підвищеної точності; множення і розподіл; обробка списків; обробка структур данных.

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

З цією, хто знайомий із програмуванням мовою ассемблера інших обчислювальних машинах, тут дається короткий огляд особливостей процесорів 8080 і 8085. 1. Арифметичні і логічні операції дозволяються тільки між акумулятором і байтом безпосередніх даних чи торгівлі між акумулятором і регістром загального призначення. Проте один регістр загального призначення до дійсності свідчить про адресу у пам’яті; це регістр М, який справді звертається до адресою у пам’яті, утримується в регістрах М і L. Отже, команда ADD M, наприклад, означає: додати до акумулятора вміст байта пам’яті, адресуемого через регістри H і L. 2. Акумулятор і регістри М і L є спеціальними регістрами. Вони є єдиними регістрами, які можна прямо завантажені чи записані на згадку про. Акумулятор єдиний регістром, що може бути инвертирован, зрушать, побічно завантажений з допомогою адреси у парі регістрів У чи D, побічно записаний у пам’ять за адресою, утримується у парі регістрів У чи D, чи використаний у командах IN і ОUT. Регістри М і L становлять єдину пару, яка можна використовувати побічно в арифметичних командах, під час запису на згадку про даних, заданих у команді, або за завантаженні і запис на згадку про інших регістрів, відмінних акумулятора. Регістри М і L є також єдиною парою, яка то, можливо передано в лічильник команд чи покажчик стека. Понад те, ці регістри використовують як акумулятор подвійний довжини при додаванні 16-разрядных чисел (команда DAD). Регістри D та О є у певному сенсі також спеціальними, оскільки однієї командою (XCHG) можна змінити їхній вміст зі змістом регістрів М і L. Отже, регістри в 8080 і 8085 дуже асимметричны, і програміст повинен акуратно вибирати, яких даних, і адрес якими регістрами користуватися. 3. Часто кого і фізичні регістрів використовуються кілька імен. Багатьом команд A, B, C, D, E, H і L є 8-разрядными регістрами. Для інших команд регістри У і З (Устарший по значению),.

D та О (Dстарший за значенням) чи М і L (Мстарший за значенням) є 16-разрядной парою регістрів. Терміни пара регістрів У, регістри У і З повагою та пара регістрів ЗС мають те й теж значення; аналогічні варіанти існують для регістрів D та О і H і L. Зауважимо, що пара регістрів і двоє одиночних регістру фізично один і той ж, і вони можуть служити одночасно щодо різноманітних цілей. Регістри М і L фактично майже завжди застосовують для непрямого адреси через наявність команд, мають доступом до регістру М, і такі спеціальних команд, как.

SPHL, PCHL, XTHL і XTHG. Завдяки з того що існує команда XCHG, на другому адреси беруть регістри D та О, а чи не У і З. Регістри У і З використовують зазвичай як окремі 8-разрядные регістри для тимчасового зберігання даних. 4. Вплив різних команд на прапори дуже непослідовно. До деяких із особливо незвичним діям ставляться такі: e) логічні команди очищають прапор перенесення; f) команди зсуву не діють інші прапори, крім прапора перенесення; g) команди завантаження, записи, пересилки, збільшують на 1 пари регістрів і зменшують на 1 пари регістрів взагалі впливають на прапори; h) 16-разрядное складання діють лише на прапор перенесення. 9. Відсутня непряма адресація через пам’ять і індексація. Відсутність непрямої адресації через пам’ять компенсується завантаженням непрямого адреси в регістри М і L. Насправді ж непряма адресація, в такий спосіб, є двухшаговым процесом. За бажання завантажити чи записати на згадку про акумулятор можна також ознайомитися завантажити непрямий адресу в регістри У і З чи D та О. Відсутність індексної адресації компенсується додаванням пари регістрів з допомогою команди DAD. У цю команду додає пару регістрів до М і L. Отже, індексація вимагає кількох кроків: j) завантажити індекс в пару регістрів, k) завантажити базовий адресу до іншої пару (одній з пар регістрів повинні прагнути бути М і L), в) використовуючи команду DAD, скласти пари і 2002 р) використовувати суму як непрямий адресу (з допомогою звернення до регістру М). Індексацію в 8080 і 8085 — довгий і незручний процесс.

12. Ні прапора переповнення і при отриманні доповнення до двох, отже треба визначати таке переповнювання програмним шляхом. З цього випливає, що важко працювати з числами зі знаком. 13. Багато звичайні команди відсутні, але може бути легко змодельовані з допомогою регістрових команд. Прикладами є очищення акумулятора (з допомогою SUB A чи XRA A), логічний зрушення акумулятора влево.

(з допомогою ADD A), очищення прапора перенесення (ANA A чи ORA A) і перевірка акумулятора (ANA A чи ORA A). Команда ANA A і ORA A очищають прапор перенесення і встановлюють інші прапори відповідно до вмістом акумулятора. Причому завантаження регістру не діє прапори. 14. Ні відносних переходів. Фактично, єдиною командою переходу, які потребують абсолютного адреси, є PCHL, через яку завантажується лічильник команд з регістрів М і L отже, виробляється непрямий перехід. 15. Є дві окремих набору команд збільшення і зменшення на 1. Команды.

DCR і INR застосовуються до 8-разрядным регістрам діють попри всі прапори, крім прапора перенесення. Команди DCX і INX застосовуються до 16- різним парам регістрів і взагалі діють на прапори. Можна також використовувати 16-разрядные пари регістрів як звичайні лічильники, але єдиний засіб перевірки пари на 0 є використання команди логічне АБО до двох регістрам разом із акумулятором. 16. Ні арифметичних чи логічних зрушень. Єдиними командами зсуву є команди циклічного зсуву із прапором перенесення чи ні нього. Інші зрушення може бути змодельовані з допомогою команд циклічного зсуву (RRC, RLC, RAR і RAL) і команд складання (ADD A, ADC.

A і DAD H). Прапор перенесення може бути встановлений з допомогою STC, а очищено з допомогою ANA A (чи ORA A). 17. Акумулятор єдиний регістром, що може бути зрушать, инвертирован чи використаний введення чи вывода.

Єдиними командами, які оперують безпосередньо з регістрами загального призначення, є команди MOV (пересилання вмісту на другий регістр або з іншого регістру), MVI (завантаження безпосереднього операнда), DCR (зменшує на 1) і INR (збільшення на.

1). Ці команди можуть оперувати і з регістром М, тобто. байтом з пам’яті, адресуемым через регістри М і L. 18. У стік або з стека можуть бути лише пари регістрів. Однією з цих пар є слово стану процесора (PSW), яке містить акумулятор (старший байт) і прапори (молодший байт). Команди CALL и.

RETURN передають адреси в стік або з нього. 19. У микропроцессоре 8080 відсутня якого читають прапор системи прерываний.

Це створює складнощі у тому випадку, коли вихідне стан системи переривань має бути відновлено після виконання секції команд, які мають виконуватися при закритих прерываниях. Аби вирішити цієї проблеми можна копію стану переривань зберігати в ОЗУ. З іншого боку, 8085 має якого читають прапор дозволу переривань. 20. У мікропроцесорах 8080 і 8085 прийнято такі загальні соглашения.

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

. Покажчик стека містить молодший адресу, справді зайнятий в стеці. Цю угоду також вважають у мікропроцесорах Z80 і 6809, але вочевидь протилежно прийнятому 6502 і 6800 (наступний доступний адресу). Відповідно до всім командам 8080 і 8085 дані в стік записуються з попереднім зменшенням на 1 (відніманням перед записом байта 1 з покажчика стека) і завантажуються з стека з наступним збільшенням на 1 (додаванням після завантаження байта 1 до покажчику стека).

. Прапор дозволу переривань (лише у 8085), рівний 1, дозволяє переривання, а 0 — забороняє їх. Така ж угода прийняв остаточно і в.

Z80, але це назад ухваленого 6502, 6800 і 6809.

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

ЗАВАНТАЖЕННЯ РЕГІСТРІВ ІЗ ПАМЯТИ.

У мікропроцесорах 8080 і 8085 передбачені чотири способу адресації, якими можна скористатися за мінімального завантаження регістрів з пам’яті: пряма (з пам’яті з адресою), безпосередня (з конкретною значенням), непряма (з адреси, вміщеного у парі регістрів) і стековая (з вершини стека).

ЗАПАМ’ЯТОВУВАННЯ РЕГІСТРІВ У ПАМЯТИ.

Для запам’ятовування регістрів у пам’яті існують три способу адресації: пряма (на згадку про з адресою), непряма (на згадку про з адресою, що у парі регістрів) і стековая (в вершину стека).

ЗАПАМ’ЯТОВУВАННЯ ДАНИХ У ОЗУ.

Початкові значення осередків ОЗУ задаються або через акумулятор, або безпосередньо чи опосередковано з допомогою регістрів М і L.

АРИФМЕТИЧНІ І ЛОГІЧНІ ОПЕРАЦИИ.

Більшість арифметичних і логічних операцій (складання, віднімання, логічне І, логічне АБО, ЯКИЙ ВИКЛЮЧАЄ АБО і порівняння) одним з операндов є акумулятор, а другим 8-разрядный регістр чи байт даних, поставлене у команді. Результат (коли він існує) міститься у акумулятор. Якщо використовується регістр М, то процесор отримує операнд з пам’яті за адресою, що міститься в регістрах М і L.

РОБОТА З РАЗРЯДАМИ.

Програміст може встановити, очистити, отримати зворотний код (доповнення до 1) чи перевірити розряди, використовуючи логічні операції з відповідними масками. Команди зсуву й одержання зворотного коду можуть оперувати тільки з акумулятором, але водночас до виконання небагатьох зрушень можна використовувати арифметичні і логічні команди. Можливі такі операції з окремими розрядами акумулятора: установити з допомогою операції логічне АБО з одиницями у позиціях; очистити з допомогою операції логічне І з нулями у позиціях; инвертировать (змінити на зворотне значення) з допомогою операції ЯКИЙ ВИКЛЮЧАЄ АБО з одиницями у позиціях; перевірити (попри всі нулі в перевірених розрядах) з допомогою операції логічне І з одиницями у позициях.

ПРИЙНЯТТЯ РЕШЕНИЙ.

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

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

ОРГАНИЗАЦИЯ ЦИКЛОВ.

Найпростіший засіб для досягнення циклу (тобто. повторення послідовності команд) в микропроцессоре 8080 чи 8085 полягає у наступному: 1. Завантажити в регістр загального призначення число, указывающее, скільки вже разів має бути виконане послідовність команд: 2. Виконати команди; 3. зменшити поставлене регістр на 1; 4. повернутися до кроку 2, якщо результат кроку 3 не дорівнює 0.

Показати весь текст
Заповнити форму поточною роботою