Структура програми на мові Асемблера

Принцип побудови програм мовою Асемблера, тобто мовою компілюючого типу, яка не може бути безпосередньо виконана або інтерпретована, і повинна бути попередньо відкомпільована з низького рівня у виконуваний код за допомогою пакету Turbo Assembler.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 08.03.2011
Размер файла 26,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Міністерство освіти і науки України

Чернівецький факультет Національного технічного університету "Харківський політехнічний інститут"

Курсова Робота

«Структура програми на мові Асемблера»

2010

Мова Асемблера є мовою компілюючого типу, тобто програма, написана мовою асемблера, не може бути безпосередньо виконана або інтерпретована, і повинна бути попередньо відкомпільована (правильніше казати “асембльована”, оскільки під компіляцією програми звичайно розуміють її переклад з мови високого рівня в машинний код, а мова асемблера є мовою низького рівня і перекладається в машинний код практично 1:1 у виконуваний код. Програма, яка виконує таке перетворення, називається асемблером, або, що не зовсім правильно, компілятором (транслятором) Асемблера. Одним із найкращих у цьому класі програмним забезпеченням є пакет TASM 3.1. фірми Borland Int., який був випущений у 1991 р. Його перевагами є дуже велика швидкість асемблювання вихідного тексту, розширення порівняно з аналогами інших фірм синтаксис мови, добре розвинута система допомоги. Це і обумовило вибір саме його для вивчення в цьому курсі.

Традиційно на ринку асемблера для мікропроцесорів фірми Intel є два пакети:

“Макроасемблер” MASM фірми Microsoft;

Turbo Assembler TASM фірми Borland.

Пакет MASM отримав свою назву тому, що дозволяє програмісту задавати макровизначення (макроси) - іменовані групи команд, які можна вставляти в програму в будь-якому місці, вказавши тільки ім'я групи в місці вставки. пакет TASM має два режими роботи. Один із них, який називається MASM. Другий режим, який називається IDEAL, має більш зручний синтаксис написання програм, більш ефективне використання пам'яті при трансляції програми та інші нововведення, які наближають компілятор асемблера до компілятора мов високого рівня Транслятор TASM, працюючи в режимі MASM, підтримує майже всі можливості транслятора MASM. Таким чином, маючи пакет асемблера фірми Borland TASM 3.0 і вище, можна вивчити основи і TASM, i MASM.

Далі, оскільки великі програмні проекти майже ніколи не складаються з одного файлу з вихідним текстом, і до того ж часто пишуться різними людьми і різними мовами, мова Асемблера повинна мати засоби для зв'язку асемблерних програм між собою та з програмами на інших мовах. Якраз таким засобом є лінкер (його ще називають компоновщиком, або - не зовсім правильно - завантажувачем). Принцип роботи лінкера полягає втому, що він об'єднує декілька об'єктних файлів, одержаних на виході будь-якого компілятора або асемблера, а також бібліотечний файл, одержані на виході бібліотекаря, в один виконуваний файл із двійковим машинним кодом. У процесі такого об'єднання він проводить настройку адрес у виконуваному коді і дозволяє встановити зовнішні посилання між об'єктними і бібліотечними модулями програми. Звичайно, для того, щоб це було можливо, компілятор або асемблер повинні генерувати не безпосередньо виконуваний код, а деякий проміжний об'єктний код, в якому б мітилася вся необхідна лінкеру інформація про настройку адрес і зв'язки між об'єктними модулями (зовнішні посилання). Таким чином, насправді компіляція або асемблювання вихідного тексту програми у більшості сучасних комерційних компіляторів відбувається у дві стадії: спочатку сам компілятор або асемблер генерують проміжний об'єктний код, а потім лінкер перетворює його у виконуваний, в той же час проводячи збірку декількох об'єктних модулів у один виконуваний і настройку адрес у ньому. Саме так і працює Turbo Asstmbler. Звичайно, якщо програма складається лише з одного вихідного файлу і не використовує ніяких бібліотек, то 2 стадії були б не потрібні - можна було б відразу створювати виконуваний файл без генерування проміжного об'єктного і його збірки, але це ускладнювало б сам компілятор або асемблер (необхідно було б окремо аналізувати, є програма одномодульною чи багатомодульною, або ж взагалі відмовитися від підтримки багатомодульності і принципу роздільної компіляції і асемблювання, як у деяких застарілих пакетах). Тому задля простоти, розроблювачі компіляторів або асемблерів домовилися незалежно від кількості модулів програми, завжди проводити компіляцію та асемблювання у 2 стадії: власне компіляція або асемблювання, а потім лінкування. Крім того, вони також домовилися використовувати єдиний стандартний формат об'єктних файлів, так званий OBJ-формат, запропонований фірмою Microsoft Corp. Саме завдяки цьому стандарту і з'явилася можливість об'єднувати програми на різних мовах, від різних компіляторів, асемблерів, що підтримують цей стандарт. Пакет Turbo Assembler також підтримує OBJ-стандарт. Лінкер, що входить у нього, називається Turbo Link (TLINK), і відрізняється від аналогів високою швидкістю лінкування та розширеними можливостями (ще один аргумент на користь пакета TASM).

До складу пакету TASM входить ще декілька утиліт (бібліотекар, генератор перехресних посилань і т. ін.). Але вони не є настільки необхідними, як TASМ i TLINК, у всякому випадку для програміста-початківця на мові Асемблера. Для таких випадків цілком достатньо мати TASM i TLINK. Решта утиліт пакету будуть розглянуті окремо в міру виникнення в них необхідності. З цієї ж причини в цьому розділі не будемо детально розглядати повний синтаксис командного рядка утиліт TASV i TLINK, а лише їх найважливіші та найчастіше вживані параметри і ключі.

Загальна схема розробки програми на мові Асемблера така:

prog _ I. asm - початковий асемблерний текст програми;

prog _ I. obj. - машинний об'єктний код програми;

prog _ I. Ist. - лістин асемлюювання програми;

prog _ I. crf. - лістінг перехресних посилань;

prog _ I. exe - завантажувальний модуль.

Командний рядок TASM у спрощеному варіанті виглядає так:

TASM <file> ,

де <file> - ім'я файла з програмою на мові Асемблера. Розширення можна не писати, розуміючи .asm.

Цілком аналогічно виглядає спрощений командний рядок TLINK.

TLINK <file> ,

де <file> - ім'я об'єктного файлу. Розширення можна не писати, розуміючи .obj.

Оскільки послідовний запуск TASM i TLINK дуже часто зустрічається при програмуванні на мові асемблера, до комплекту поставки TASM входить декілька різних BAT-файлів. які спрощують цю справу до однієї команди. Для наших цілей підходить один із них, а саме ASM.BAT. Саме його ми і будемо всюди використовувати. Крім того, зручно занести у файл NC.EXT або VC.EXT рядки, що запускають для ASM-файлів послідовно TASM i TLINK, а для OBJ-файлів - TLINK. Тоді весь процес асемблювання і лінкування програми можна запустити натисненням всього однієї клавіші <ENTER>. З тією ж метою зручності слід у файлі AUTOEXEC.BAT занести каталог TASM до списку каталогів, доступних по PATH.

Програмісти-початківці, як правило, вчаться на прикладах (це набагато ефективніше, ніж просто читання документації та книжок із наступними намаганнями написати хоча б що-небудь працююче). Для полегшення навчання фірма Borland поставляє разом із TASM більше 20 прикладів вихідних текстів. Найперший і найпростіший з них називається HELLO.ASM, і, як видно з його назви, нічого корисного не робить, крім того, що виводить на екран текст “Hello, World”. Але він дуже зручний для того, щоб розібратися у тому, як працюють TASM і TLINK , і зрозуміти шаблон структури програми на мові асемблера. Прочитайте, розберіть його і спробуйте одержати файл HELLO.EXE, який можна запускати і відладжувати. При запуску він повинен вивести на екран повідомлення “Hello, World” і завершитися. асемблер компілюючий turbo

Допустимі символи при написанні тексту програми на Асемблері:

1. Всі латинські букви A-Z, a-z.

2. Цифри від 0 до 9.

3. Розділювачі : , . [] () < > + / % ! “ ? \ = # ^

Треба пам'ятати, що мікропроцесор апаратно підтримує такі основні типи даних:

байт (8 біт);

слово (16 біт);

подвійне слово (32 біти);

учетверенне слово (64 біти);

цілий тип зі знаком (8,16 або 32 біти);

цілий тип без знаку (8,16 або 32 біти);

указник на пам'ять ближнього (32 біти) та дальнього типу (48 біт);

ланцюжок - набір байтів слів або подвійних довжиною до 4 Гбайт;

бітове поле (до 32 байт);

неупакований двійково-десятковий тип - байтове представлення десяткової цифри від 0 до 9;

упакований двійково-десятковий тип - упаковане представлення двох десяткових цифр від 0 до 9 в одному байт.

Ідентифікатор в Асемблері може містити букви латинського алфавіту, цифри і деякі спеціальні знаки - _ , ? , $, @. Він не може починатися цифрою і містити більше ніж 255 символів, хоча транслятор сприймає лише перші 32, а інші ігнорує. Використовується для позначень кодів операцій, імен змінних та назв міток.

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

Ідентифікатори, які створює директива MODEL

Ім'я ідентифікатора

Значення змінної

@ code

Фізична адреса сегмента коду

@ data

Фізична адреса сегмента даних типу near

@ fardata

Фізична адреса сегмента даних типу far

@ stack

Фізична адреса сегмента стеку

Обов'язковим параметром директиви MODEL є модель пам'яті. Цей параметр визначає модель сегментації пам'яті для програмного модуля.

Моделі пам'яті

Модель

Тип коду

Тип даних

Призначення моделі

TINY

near

near

Код і дані об'єднані в одну групу з іменем DGROUP (com-програма)

SMALL

near

near

Код займає один сегмент, дані об'єднані в одну групу DGROUP (більшість програм на асемблері)

MEDIUM

far

near

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

COMPACT

near

far

Код в одному сегменті, посилання на дані - типу far, дані в декількох.

LARGE

far

far

Код у кількох сегментах, по одному на кожний програмний модуль, дані - у кількох.

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

Спрощені директиви опису сегментів

Формат директиви

Призначення

.CODE

Початок або продовження сегмента коду

.DATA

Початок або продовження сегмента коду ініціалізованих даних. Також використовується для визначення даних типу near

.CONST

Початок або продовження сегмента постійних даних (констант) модуля

.DATA?

Початок або продовження сегмента неініціалізованих даних. Також використовується для визначення даних типу near

.STACK (розмір)

Початок або продовження сегмента стеку модуля. Параметр (розмір) задає розмір стеку

.FARDATA (ім'я)

Початок або продовження сегмента ініціалізованих даних типу far

.FARDATA (ім'я)

Початок або продовження сегмента неініціалізованих даних типу far.

У загальному випадку початковий файл на Асемблері може містити конструкції таких типів:

команди асемблера - мнемонічні позначення машинних команд;

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

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

Приведемо свого роду шаблон для написання програм на мові Асемблера:

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

dosseg; директива опису розташування сегментів

.model small; директива опису моделі пам'яті

.stack 100; початок сегменту стеку

.data ; початок сегменту ініціалізованих даних

.data? ; початок сегменту неініціалізованих даних

.code ; початок сегменту коду

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

.exit 0 директива закінчення програми управління передається операційній системі число в директиві присвоюється змінній ERRORLEVEL операційної системи

End директива закінчення тексту програми на мові Асемблера

Одержавши першу працюючу програму на мові Асемблера, можна поговорити і про відладку асемблерних програм. Відладка асемблерних програм досить сильно відрізняється від відладки програм, написаних мовами високого рівня, найперше тому, що асемблер не має нічого схожого на інтегроване середовище із вбудованим відладчиком подібно до Borland Pascal або Borland C++. Для відладки асемблерних програм доводиться використовувати спеціальні пакети відладчиків, що надаються окремо. Серед відладчиків виділяють символьні відладчики, які можуть відладжувати асемблерну програму прямо у вихідному тексті, і несимвольні, що дозволяють відладжувати лише її виконуваний код. Природно, що символьні відладчики потужніші і зручніші, ніж несимвольні. Серед них найбільш потужним є Turbo Debugger (TD); до того ж він володіє дуже зручним інтерфейсом користувача. Саме тому він був вибраний для вивчення. Крім того, він є “рідним” відладчиком для TASM, оскільки він розроблений тією ж фірмою, і тільки з компіляторами і асемблером Borland він справді працює як символьний відладчик (для решти - як будь-який інший відладчик). У свою чергу, і TASM, й інші компілятори Borland розраховані на те, що їх програми будуть відладжуватися в середовищі TD.

У пакеті TD 6 утиліт, але програмісту-початківцю в більшості випадків потрібен лише файл TD.EXE - власне відладчик.

Спрощено синтаксис командного рядка TD виглядає так:

TD <file>

де <file> - ім'я виконуваного файлу.

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

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

режим безумовного виконання (F9)

виконання по кроках (F7-процедура або переривання обробляються по кроках; F8-процедура або переривання обробляються як одна команда);

виконання до поточного положення курсора (F4);

виконання з установкою точок переривань (F2-вибір рядка переривання, F9-запуск на виконання).

Відзначимо, що, крім вікна Module, при покроковому виконані корисно використовувати вікно CPU, яке можна викликати через глобальне меню командою View/CPU. Воно відображає стан мікропроцесора і складається з 5 підвікон:

вікно з початковою програмою в дизасембльованому (машинному) вигляді;

Registers-вікно регістрів мікропроцесора (16 або 32-бітних);

вікно ознак мікропроцесора;

вікно стеку Stack;

вікно з дампом пам'яті Dump, які відображає вміст області пам'яті за адресою з лівої частини вікна.

Зручніше працювати з початковим текстом у вікні Modul, ніж з його лизасембльованим варіантом у вікні CPU. Їх можливості можна сумістити вибором пункту глобального меню View з наступним вибором у ньому потрібних імен підвікон CPU.

Програмісту-початківцю в більшості випадків вистачає навіть тих команд, які згадано в рядку-підказці, і дуже рідко виникає необхідність користуватися меню, і тим більше, командним вікном. Тому не будемо зупинятися на робота з TD - вона настільки проста, що її цілком можливо освоїти самостійно. разом з тим, відладчик - досить потужний засіб. В основному використовуються такі команди: дамп (D), введення (Е), ім'я (N), вихід (Q), трасування (Т), запис (W), регістри (R).

Слід бути обережним при використанні TD, особливо для команди Е (Enter): введення даних в хибні адреси пам'яті або введення некоректних даних можуть призвести до непередбачуваних наслідків; на екрані у цьому випадку можуть з'являтися “дивні” символи, клавіатура заблокується, або навіть DOS припинить роботу програми і завантажиться з диска. Будь-які серйозні ушкодження навряд чи відбудуться, але можливі деякі несподіванки, а також втрата даних, які вводилися при роботі з відладчиком.

Якщо дані, які вводяться в сегмент даних або в сегмент коду, виявилися некоректними, слід знову, використавши команду Е, виправити їх.

Правила запису програм на мові Асемблер

Кожна команда представляє собою рядок такої конструкції:

rn

rn

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

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

B - двійкова,

Q - восьмерічная,

D або нічого - десяткова,

H - шістнадцятковому.

КОМЕНТАРІ - будь-які символи.

Поняття про Асемблері

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

Таким чином, вхідна інформація для Асемблері представляється у вигляді текстового файлу, а вихідна інформація генерується у вигляді так званого файлу ОБ'ЄКТОВОГО кодів (об'єктного файлу). Крім цього, Асемблер виконує перевірку коректного написання команд. Іноді його називають компілятором (трансляторів) з мови Асемблер.

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

Програма на мові Асемблер складається з логічних сегментів - блоків з елементів одного типу (команди, дані). Для МК51 ці логічні сегменти безпосередньо відповідають фізичним областям пам'яті (РПП, ВПП, РПД, ВПД, бітів область).

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

Для сегментного побудови програми та визначення символічних імен адрес і значень даних використовують Директиви Асемблер. Директиви Асемблері НЕ є виконуючим командами, а являють собою інструкції для компілятора з розміщення команд і даних в пам'яті МК або МПС.

СТРУКТУРА ПРОГРАМИ: програма на мові Асемблер містить такі блоки:

Декларативний частина - опис символічних імен даних і адрес, які використовують у програмі, а також директиви виділення пам'яті для змінних і зазначення значень констант (за допомогою директиви Асемблері);

- блок Ініціалізація - настроювання портів і блоків периферійних функцій на необхідні режими роботи, ініціалізація стека (за допомогою команд);

- блок РЕАЛИЗАЦИИ алгоритмів і функцій управління (за допомогою команд).

Директиви визначення символічних імен

Директива EQU - будь-якого імені ставиться у відповідність операндів.

Формат директиви: <ім'я> EQU <вираз>

Наприклад: z1 equ 10

rn

z2 equ z1 + 4

rn

z3 equ z1 + z2 + 5

rn

Імена, визначені директивою EQU, можна використовувати як адресу коду, адреса даних (внутрішніх або зовнішніх) або значення даних. Наприклад:

rn

MOV A, # z1; Загрузка числа 10 в акумулятор

rn

MOV A, z1; Пересилання в акумулятор з комірки з адресою 0AH

rn

Оператори, допустимі для використання в виразах в директивах Асемблер, описані далі.

rn

Директива DATA - задає ім'я для адреси даних в РПД.

Формат директиви: <ім'я> DATA <адресний вираз>

Директива XDATA - задає ім'я для адреси зовнішніх даних (ВПД).

Формат директиви: <ім'я> XDATA <адресний вираз>

Директива BIT - задає ім'я для адреси біта з області внутрішнього ОЗП з бітової адресацією.

Формат директиви: <ім'я> BIT <адреса біти>

Наприклад: control DATA 2AH

rn

f1 bit control.3 Адреса у вигляді бітового селектору

rn

f2 bit f1 + 4; Адресні вираз

rn

f3 bit 60H; Абсолютний адреса

rn

Приклади зручного використання символічних імен:

rn

counter DATA 20H flag BIT P1.7

rn

. . . on BIT 30H

rn

MOV counter, 10. . .

rn

m1: <дії в циклі> SETB on

rn

. . . wait: JNB flag, wait

rn

DJNZ counter, m1 CLR on

rn

Лічильник адрес (не плутати з лічильником команд (PC))

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

Метка команди - це, по суті, символічне ім'я адреси комірки пам'яті, починаючи з якою дана команда розміщена в пам'яті.

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

Директиви управління сегментами програми

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

rn

CSEG - початок сегменту кодів (пам'ять програм);

rn

DSEG - початок сегменту даних в ОЗП РПД;

rn

XSEG - початок сегменту зовнішніх даних (ВПД).

rn

Управління значенням лічильника адрес

rn

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

Існує директива ORG, яка дозволяє програмісту встановлювати потрібні значення лічильника адреси для поточного активного сегменту і таким чином розміщувати коди в пам'яті за потрібне адресами.

Формат директиви: ORG <адресний вираз>

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

rn

[ім'я:] DB <значення> [ім'я:] DW <значення>

rn

Директива резервування (виділення) пам'яті DS для змінної в сегменті зовнішніх або внутрішніх даних (ВПД або ОЗУ РПД): < /p> rn

[ім'я:] DS <кількість байтів>

rn

END - директива визначення кінця програмного модуля.

Оператори періоду трансляції

Для зручності запису команд і директив в мові Асемблер допускається задавати числові значення та адреси пам'яті у вигляді виразів, які обчислюються. Значення такого виразу буде визначено компілятором ще під час трансляції, а в код команди буде підставлятися тільки результат цих дій. Допустимими операціями є: +, -, *, /, (), AND, OR, XOR, NOT, LOW - виділення молодшого байта, HIGH - виділення старшого байтів з двухбайтового вирази.

Наприклад:

1) X equ 10; число X = 10

rn

Y equ X + 2; число Y = 12

rn

Z equ (X + Y) * 4; число Z = 88

rn

2) DSEG

rn

org 70H

rn

V1: ds 4

Виділення пам'яті для четирехбайтовой змінної

rn

. . .

rn

MOV A, V1 +1; Читання в ACC іншого байтів змінної V1

rn

3) X equ 3704; Оголошення двухбайтового числа

rn

. . .

rn

MOV R0, # LOW (X); Запис молодшого байта X в регістр R0

rn

MOV R1, # HIGH (X); Запис старшого байтів X в регістр R1

rn

У даних матеріалах представлені тільки ті директиви Асемблер, які будуть використовуватися в програмах для лабораторних робіт.

Повний перелік команд МК51 з необхідними коментарями та зазначенням особливостей використання представлений в посібнику в посібнику, а також у спеціальному буклеті, що надається студентам на лабораторних роботах.

В даний час значний сегмент ринку Однокристальний мікроконтролерів займає продукція фірми Atmel. Характерна особливість фірми - широке використання високоякісної Flash - технології, яка в останнє десятиріччя витісняє традиційні EPROM.

Основні характеристики новітніх мікроконтролерів сімейства 8051 фірми Atmel:

Основні характеристики новітніх мікроконтролерів сімейства 8051 фірми Atmel:

- використання базового ядра 80С51;

- гранично низькі ціни на мікроконтролери (одиниці доларів);

- мікроконтролери з каналом SPI (serial programming interface), що забезпечують можливість внутрісхемного програмування Flash-пам'яті; ця функція дуже зручна у виробництві, особливо дрібносерійним, коли фізична програмування контролерів виконується після їх монтажу;

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

- можливість роботи на низьких тактова частота (аж до 0 Гц!), що буває важливо в системах реального часу.

СПИСОК ЛІТЕРАТУРИ

1. А.А.Кочетков. Turbo Assembler при разработке программ. - Киев: “Диалектика”, 1995. - 288 с.

2. Л.Скенлон. Персональные ЭВМ IBM PC и ХТ. Программирование на языке Ассемблера. - Москва: “Радио и связь”, 1989. - 336 с.

3. Д.Абель. Язык Ассемблера для IBM PC. - Москва, 1993. - 447 с.

Размещено на Allbest.ru


Подобные документы

  • Розробка системних програм мовою асемблера або мовою високого рівня з вставками цією мовою. Формати числових даних, виконання арифметичних операцій. Арифметичні команди над двійковими цілими, двійково-десятковими не упакованими та упакованими числами.

    методичка [232,4 K], добавлен 11.01.2010

  • Реалізація програми на мові асемблера для процесора i8086. Регістрова структура процесора. Використання сегментних регістрів для апаратної підтримки найпростішої моделі сегментованої пам'яті. Формування арифметичних прапорців. Система команд процесора.

    контрольная работа [240,5 K], добавлен 27.02.2013

  • Мова Асемблера, її можливості та команди. Розробка алгоритму програми, його реалізація в програмі на мові Асемблера. Введення елементів матриці та обчислення cуми елементів, у яких молодший біт дорівнює нулю. Методи створення програми роботи з матрицями.

    контрольная работа [50,3 K], добавлен 12.08.2012

  • Огляд низькорівневих команд. Застосування мнемонічних позначень та макровизначень (макросів). Різниця між мовою асемблера та мовою машинних кодів. Асемблери для DOS, Microsoft Windows та GNU/Linux. Принцип роботи контролера клавіатури і його інтерфейс.

    курсовая работа [30,0 K], добавлен 19.11.2010

  • Робота з цілими значеннями за допомогою арифметичних команд. Механізм роботи команд передачі керування мови Assembler. Типи даних "FPU" та система регістрів. Програма та її структура на мові Assembler, робота з директивами. Текстовий режим відеоадаптера.

    лабораторная работа [1,7 M], добавлен 31.05.2014

  • Програма, що контролює програми, які запускаються на комп’ютері на мові ASM-86. Алгоритм програми: перевірка параметрів, які задані в командному рядку, та функції обробника переривання 21h. Компілювання Turbo Assembler, зв’язування за допомогою TLINK.

    курсовая работа [21,7 K], добавлен 08.08.2009

  • Розробка меню програми: головне меню; таблиця акселератора. Панель інструментів та рядок стану. Створення діалогових вікон. Реалізація математичної функції мовою Assembler. Створення та підключення бібліотеки dll. Роботи з файлами: відкриття, збереження.

    курсовая работа [1,3 M], добавлен 26.12.2009

  • Розробка граф-схем алгоритмів строкової функції з метою наглядного представлення поставленої задачі і розбиття її на менші частини для створення коду програми. Написання функцій arithm proc, string proc, strCat proc на машинно-орієнтованій мові Асемблера.

    курсовая работа [389,3 K], добавлен 24.09.2010

  • Створення двух файлів В1 і В2 з шести двоцифрових цифр з введенням в довільному порядку цифр з клавіатури із записуванням парних цифр в файл В3, а непарних - у файл В4. Процес розробки програми за допомогою мови "Асемблер". Блок-схема алгоритму задачі.

    курсовая работа [37,6 K], добавлен 26.11.2011

  • Використання математичного сопроцесора або його емулятора при програмуванні на мові асемблера з використанням дробових чисел. Створення програми на мові ASM-86, яка реалізує функції [x], {x}, |X|. Алгоритм перетворення цілого числа в дійсне та навпаки.

    курсовая работа [12,4 K], добавлен 08.08.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.