Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ASM_03_formaty_dannyh_INT_LAB_02_Metodichka_ukr...doc
Скачиваний:
1
Добавлен:
20.11.2019
Размер:
203.78 Кб
Скачать

Визначення двобайтових змінних - директива word |т

WORD (слово) - 2 байта.

Приклад|зразок| 1.

Word1 WORD 65535 ; Найбільше беззнакове значення

word2 SWORD - 32768 ; Найменше знакове значення

word3 WORD ? ; Неініціалізоване беззнакове значення

Приклад|зразок| 2. Визначити масив слів, що починається із|із| змінною myList (множинна|численна| ініціалізація)

.data

myList WORD 1,2,3,4,5

Зміщення

Значення

0000:

1

0002:

2

0004:

3

0008:

4

Приклад|зразок| 3. виділити пам'ять під масив з|із| 5 неініціалізованих слів.

array WORD 5 DUP(?)

Визначення змінних, розміром 4 байта - |типа| DWORD

DWORD ( подвійне слово) – 4 байта( 32-розряда).

Приклад|зразок| 1.

Val1 DWORD 12345678h ;Беззнакове

val3 DWORD 20 DUP(?) ;Неініціалізований масив беззнакових чисел

Приклад|зразок| 2. Визначити масив подвійних слів, що починається із|із| змінною myList (множинна|численна| ініціалізація)

Зміщення

Значення

0000:

1

0004:

2

0008:

3

000C:

4

.data

myList DWORD 1,2,3,4,5

Визначення змінних, розміром 8 байт - |типа| QWORD

QWORD (збільшене учетверо слово) - виділення пам'яті для зберігання 64-розрядних цілих значень.

Наприклад:

quadl QWORD 1234567812345678b

Визначення змінних, розміром 10 байт -|типа| TBYTE

Директива TBYTE (10 байтів) - виділення пам’яті для зберігання 80-розрядних цілих значень.

Цей тип даних в використується для зберігання десяткових упакованих|пакувати| цілих чисел (двійково-кодованих цілих чисел). Для роботи з|із| цими числами використовується спеціальний набір команд математи-ческого співпроцесора.

Приклад|зразок|:

vail TBYTE 1000000000123456789Ah

Література. Кип Р. Ирвин. «Язык Ассемблера для процессоров INTEL».

Стр. 116-125, 136-142.

Засоби розробки програм

Ми розглядаємо програмування в 32-розрядній ОС Windows.

Окрім|крім| інструкцій і|та| директив, програма на асемблері містить|утримує| виклики процедур, які працюють під управлінням ОС, яка запускає їх, забезпечує взаємодію із|із| зовнішнім середовищем|середою| (виведення символів на екран, читання і|та| запис на жорсткі диски і|та| т. д.), а потім|і тоді| допомагає правильно завершитися. Ці процедури називають інтерфейсом прикладних программ API (Application Programming Interface) - Windows API.

Кожній процедурі Windows API передаються параметри. Наприклад, якщо процедура, виводить якесь повідомлення на екран, то їй необхідно|треба| знати, де знаходиться|перебуває| це повідомлення, скільки в ньому символів і|та| т. д.

У кожній програмі на асемблері є процедура ExitProcess, яка викликається|спричиняє| завжди. Параметр процедури - код завершення, який отримує|одержує| ОС після закінчення роботи програми. 0 - нормальне завершення .

Процедури ОС викликаються|спричиняють| директивою invoke,

invoke ExitProcess, 0

Програма.

TITLE Процедура SubDigit Модуль proc_02_add.asm

.386 ; директива - описує тип|типа| процесора

; Intel 80386 і|та| пізніші моделі

;

.model flat, stdcall ; директива - описує середовище|середу| розробки

; програми (ОС сімейства Windows)

;

ExitProcess PROTO : DWORD ; прототип функції ExitProcess -

;описує параметри процедури

;----------------------------------------------------------------------

. data ;директива визначення сегменту даних

a dword 5

b dword - 5

;-----------------------------------------------------------------------

.code ; директива визначення сегменту коду

start proc ; початок|начало| програми з|із| ім'ям start

mov eax, a

add eax, b

INVOKE ExitProcess, 0 ; директива виклика функції ExitProcess

start endp ;кінець програми з|із| ім'ям start

end start ; кінець модуля, в якому процедура start

; є головною|чільною|

Після виконання останньої інструкції програми (add eax, b) ОС коректно завершує програму, щоб звільнити місце іншим програмам, адже Windows - багатозадачна ОС.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]