У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент



Реферат - Assembler
42



двійкових чисел тут не ми.За винятком птетради, які відповідають числам a – f 16-вої СЧ. Мікропроцесори цьої родини підтримують роботу з двома форматами двійково-десяткових чисел: унакованими і неунакованими двійково-десятковими числами.

Вони займають 1б – 2птетради.

0 | 0 | 0 | 0 | 0 | 0 | 0 | 0

0 0

отже при допомозі однобайтного двійково-десяткового числа можна записати десяткові числа 0 – 99.

1 | 0 | 0 | 1 | 1 | 0 | 0 | 1

9 9

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

Неунаковані двійково-десяткові числа.

Як і унаковані вони займають 1б, але в цьому байті записується тільки одна десяткова цифра, ця цифра записується в молодшій тетраді:

0 – 9

Отже діапазон представлення чисел 0 – 9. Значення старшоWптетради не суттєве:

х | х | х | Х | 1 | 0 | 0 | 1

9

Для зручності відладки в старшCптетраду записують 0:

0 0 0 0

Х | х | х | Х | 1 | 0 | 0 | 1

0 –9

Зворотне представлення просте: молодш0птетрада, якщо вона знаходиться у межах представлення чисел 0 – 9 визначає відповідне двійково-десяткове неунаковане число. При необхідності працювати з великою розрядністю таких чисел необхідно використовувати також кілька байт.

Лекція за 24.09.98.

Приклад структури програми на мові асемблера (ш0блон).

Приведемо основні директиви, які використовуються і програмі на мові асемблера. Тепер використовуються спрощені способи опису сегментів. Сегменти – це частини програми (сегменти даних). Текст програми можна набирати великими або малими буквами, програма асемблера самостійно переводить текст у верхній регістр. Обов’язково у тексті програми писати коментарі. Текст який стоїть за символом “;” є коментарем, він ігнорується при асемблюванні програми. Директива яка як правило йде з початку програми dosseg описує розташування сегментів. Директива mode small – директива опису моделі пам’яті, наприклад в цьому випадку говорять, що модель пам’яті типу small, тобто є один сегмент коду і один сегмент коду і один сегмент даних. Директива .stack 100 – директива, яка задає початок сегменту стеку. В стеці зберігаються тимчасові змінні і адреси повернення з підпрограми або переривань. Як правило будь-яка програма має сегмент стеку. В даному випадку такий запис директиви .stack 100 позначає, що стек має довжину 100байтів. Точну величину стеку визначає число викликів підпрограм та системних ф-цій, стек треба збільшувати. В кінцевому підсумку розмір стеку підбирають експериментально, коли програма вже написана і відлагоджена. Директива .data – директива початку сегменту ініціалізованих даних, після цього рядка поміщають змінні значення яких відоме (ініціалізовані змінні). Директива .data ? – директива початку сегменту неініціалізованих даних. Директива .code – початок сегменту коду. Сегмент коду – це частина коду яка містить команди МП, власне це й є сама програма. В деяких випадках в цей сегмент можна поміщати не тільки команди, а й дані. Наприклад у підпрограмах обробки переривань. Директива .startup – точка початку виконання програми. З наступного після даного рядка починається виконання програми після її завантаження в пам’ять, ця директива повинн0пбути обов’язково всередині сегмента коду, але не обов’язково н0пйого початку. Директива .exit 0. – це директива закінчення програми при виконанні цього рядка управління буде передане ОС. Таких директив в програмі може бути кілька, число після директиви може приймати кілька значень, це число після закінчення програми присвоюється змінній ОС з назвою ERRORLEVEL, ця змінна використовується в командних файлах. Є спеціальні команди для роботи з цією змінною. Використовуючи різні числа можна повідомляти ОС, яка причина закінчення програми. Директиви початку і закінчення програми є по суті макровизначеними, вони визначають необхідний код який автоматично додається на початок і кінець програми. Цей код можна подивитись у файлі лістингу після асемблювання. End – директива закінчення тексту програми на мові асемблера. Рядки які розміщені після директиви end можна писати коментар в довільній формі.

Команди мови асемблера.

Мінімальна одиниця тексту програми на мові асемблера – це рядок. Асемблер проглядає програму порядкові зверху в низ, кожний рядок закінчується символом переведення рядка Vпйого довжина в більшості випадків не може перевищувати 255 символів, однак зручно обмежувати довжину рядка широкою екрану (80 символів). При необхідності вводити в програмі довгі рядки їх можна об’єднувати, в кінець рядка при цьому потрібно включати символ \.

Рядок 1 \

Рядок 2 Рядок 1 Рядок 2.

В текст програми можна вставляти порожні рядки, які складаються тільки із розділювачів. В мові асемблера розділювачами служать символи пропуску та горизонтальна табуляція. При допомозі пустих рядків зручно розділяти логічні частини програми. Рядок може складатись тільки із коментарів, в такому випадку перший символ рядка обов’язково ;. В кожному рядку може розміщуватись або команда мікропроцесора, яка записана у мнемонічному (словом) вигляді, або директива, директиви інакше називають псевдооператорами. Команда мікропроцесора – це інструкція яку мікропроцесор буде виконувати в процесі виконання програми. Асемблер переводить рядки з мнемоніками (буквеними записами команд) у послідовності байт, які безпосередньо може виконувати процесор. Директиви служать для визначення даних, які використовуються в програмі і для управління процесом асемблювання. Рядок у програмі на


Сторінки: 1 2 3 4 5 6 7 8 9 10 11 12