Визначення двобайтових змінних - директива 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 |
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 - багатозадачна ОС.