Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
А С Е М Б Л Е Р.doc
Скачиваний:
7
Добавлен:
12.08.2019
Размер:
835.58 Кб
Скачать

Визначення даних

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

Числа в пам'яті записуються у форматі Little Endian – якщо число займає більше одного байта, то в пам'яті ці байти слідуватимуть за старшинством, починаючи з наймолодшим.

Наприклад, число 12345678h в пам'яті буде записаний як 78h, 56h, 34h, 12h.

При завданні рядкових констант, всі символи константи беруться в одинарні або подвійні лапки. В пам'яті символи зберігаються у вигляді числового коду, який визначається по спеціальній таблиці. В операційній системі MSDOS використовується кодування ASCII:

Шесnнадцатеричный код символу формується як строка*16 + стовпець. Наприклад, код символу «S» – 53h.

Загальний синтаксис директиви для визначення даних:

[<имя переменной>] <директива> <значение> [ <значение> ...]

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

Директива

К-ть байт

Діапазон для числа із знаком

Діапазон для числа без знака

DB (байт)

1

-128

127

0

255

DW (слово)

2

-32 768

32 767

0

65 535

DD (подвійне слово)

4

-2 147 483 648

2 147 483 647

0

4 294 967 295

DF, DP

6

–247

247 – 1

0

248

DQ

8

–263

263 – 1

0

264

DT

10

–279

279 – 1

0

280

Значення може бути будь-яким виразом, що містить числові або рядкові константи, а також може бути знайомий «?», це означатиме, що воно невідоме. Якщо в директиві DB підряд йдуть декілька символів, їх можна об'єднати в одні лапки. Так само, якщо підряд йдуть декілька однакових значень, їх можна замінити конструкцією <количество повторов> dup (<значение>)

Приклад визначення даних:

А DB ? ; значення А неістотно при ініціалізації

B DD 1, 2, 3, 4, 40h ; B – масив подвійних слів

З DB ‘X’ ; символ

D DW 12 + ‘XY’ ; вираз

str DB ‘ Строка’ ; еквівалентно str DB ‘ С’, ‘ т’, ‘ р’, ‘ о’, ‘ к’, ‘ а’

buf DD 5 dup (0) ; еквівалентно buf DD 0, 0, 0, 0, 0

Виклик функцій bios і операційної системи

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

Програма «спілкується» з операційною системою MSDOS і BIOS за допомогою інструкції виклику переривання:

INT <номер прерывания>

У ДОС номер програмного переривання – 21h. Багато переривань багатофункціональні, номер функції завжди в регістрі AH. Також дуже важливо запам'ятати, що переривання під час виклику можуть змінити вміст певних регістрів, тому потрібні дані предусмотрительнее буде зберегти в стеку.

Для виходу в операційну систему використовується переривання ДОС. Номер цієї функції – 4ch – повинен бути в AH, а в AL записується код виходу програми (звичайно – нуль, якщо програма виконалася успішно, інакше – код помилки).

MOV АХ, 4c00h ; Кладемо в AH 4ch, а в AL – нуль

INT 21h ; Викликаємо переривання ДОС

Після цих інструкцій програма передасть управління операційній системі, і всі подальші команди виконуватися не будуть.

Розглянемо ще дві корисні функції ДОС – прочитування символу з клавіатури і висновок символу на екран. Для читання, кладемо 1 (номер функції) в AH і викликаємо переривання 21h. Після цього в AL зберігатиметься код ліченого символу. Для висновку, в AH записуємо 2, а в DL – код символу, який потрібно вивести, і потім викликаємо переривання. Наприклад, щоб рахувати символ і тут же вивести його на екран:

MOV AH, 1 ; Код функції прочитування символу

INT 21h ; Викликаємо переривання ДОС

MOV DL, AL ; Кладемо в DL код ліченого символу

MOV AH, 2 ; Код функції висновку символу

INT 21h ; Викликаємо переривання ДОС