ДОМ
|
Информационные технологии |
Низкоуровневое программирование |
3. АРИФМЕТИЧНІ ТА ЛОГІЧНІ ОСНОВИ ПРОГРАМУВАННЯ 4. МОДЕЛЬ МІКРОПРОЦЕСОРНОЇ СИСТЕМИ. ПРЕДСТАВЛЕННЯ ДАНИХ І СИСТЕМА КОМАНД 5. ОПЕРАТОРИ ДЛЯ ЗАПИСУВАННЯ АЛГОРИТМІВ ЛІНІЙНИХ ПРОЦЕСІВ 6. ОФОРМЛЕННЯ АЛГОРИТМІВ З ГАЛУЖЕННЯМ 7. ОФОРМЛЕННЯ АЛГОРИТМІВ ЦИКЛІЧНОГО ТИПУ 8. ПРОГРАМУВАННЯ НА МОВІ НИЗЬКОГО РІВНЯ return_links(); ?> |
ПРОГРАМУВАННЯ НА МОВІ НИЗЬКОГО РІВНЯ
Етапи створення програми на асемблеріЗгадаємо основні положення. Двійкове представлення команд МП називають машинною мовою. При вивченні операторів мови Асемблера наводилися приклади невеличких програм, виконання яких досліджувалося у середовищі програми Debug. Тому таке питання як розподілення комірок пам'яті для збереження кодів команд та чисел виконувалося вручну. При розробці реальних програм на мові Асемблера цей процес автоматизовано. Етапи створення програми на мові Асемблера:
Звичайно ці етапи циклічно повторюються, так як при виявлені помилок на всіх етапах доводиться повертатися до першого етапу і вносити зміни у текст програми для виправлення помилок. Підготовка тексту програми Асемблування програми Компоновка програми У випадках, коли текст програми знаходиться у декількох файлах і спільно використовуються змінні, описані у цих файлах, обов'язково потрібно включити етап компоновки. Процес об'єднання об'єктних модулів в один файл здійснюється спеціальною програмою-компоновником (наприклад програма Tlink). Результатом компоновки є виконавчі файли, що мають розширення *.com, *.exe. Налагодження програми Схема асемблування, компоновки і виконання програми
Директиви (псевдооператори)Нагадаємо, що рядки програми на асемблері поділяються на:
Кожна програма займає в оперативній пам'яті певну область і ділиться на три сегменти:
Директиви є командами для керування програмою асемблування. Директива задає потрібну інформацію для транслятора. При використанні змінної необхідно визначити місце у програмі, де вона буде знаходитися (у якому сегменті), її ім'я і тип цієї змінної. Можна цій змінній присвоїти початкове значення. Звичайно для збереження змінних використовується сегмент даних (початкова адреса сегменту даних у регістрі DS). Але бувають такі ситуації, коли змінні доцільно зберігати у сегменті кодів (початкова адреса у сегменті СS). Кількість сегментів, їх розташування у пам'яті, їх перекриття і т.п. визначається моделлю пам'яті. При програмуванні для МП сімейства 180х86 використовують такі моделі:
Наприклад, модель пам'яті Tiny складається із одного сегмента. Усі сегменти починаються із однієї і тієї ж адреси. Регістри CS, DS, SS мають одне значення. У моделі пам'яті Smoll дані і сегменти стеку об'єднані в одну групу. Приклад директиви, що визначає модель Tiny: .model Tiny Директивою .data розпочинається ділянка програми, у якій записуються змінні, значення яких відомі. Ця директива визначає сегмент даних в ОП. Директива db визначає однобайтові константи. Формат директиви: <мітка> db <список констант> ; коментар Приклад 1:
Приклад 2:
Директиви, що визначають константи:
Директивою .code розпочинається ділянка програми, у якій записуються оператори програми (символічне позначення команд МП). Директива end вказує на фізичний кінець вихідного модуля. Загальний (спрощений) вигляд програми (вихідного модуля) на мові Асемблера
Зразок програми на АсемблеріЗавдання. x=3•(a-b)+c
1. Розподілення пам'яті:
2. Текст програми на Асемблері: x=3•(a-b)+c
|
Copyright © Eugene, 2007 |
![]() |