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

     

     

     

     

     

         
     
    Аналітичний огляд книги Програмування на мові асемблера для мікропроцесорів 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, скласти дві пари і г) використовувати суму як непрямий адреса (за допомогою звернення до регістру М). Індексація в 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 до вказівником стека). < p>. Прапор дозволу переривань (тільки в 8085), що дорівнює 1, дозволяє переривання, а 0 - забороняє їх. Така ж угода прийнята і в

    Z80, але воно назад до прийнятого в 6502, 6800 і 6809.

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

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

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

    ЗАПАМ'ЯТОВУВАННЯ реєстрів в ПАМ'ЯТІ

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

    запам'ятовування даних У ОЗУ

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

    арифметичні та логічні операції

    Для більшості арифметичних і логічних операцій (додавання,віднімання, логічне І, логічне АБО, виключає Або і порівняння) однимз операндів є акумулятор, а другий 8-розрядний регістр або байтданих, заданий безпосередньо в команді. Результат (якщо він існує)поміщається в акумулятор. Якщо використовується регістр М, то процесоротримує операнд з пам'яті за адресою, що міститься в регістрах Н і L.

    РОБОТА З РОЗРЯДУ

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

    ПРИЙНЯТТЯ РІШЕНЬ

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

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

    ОРГАНІЗАЦІЯ циклів

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


         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

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