Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
прогр.docx
Скачиваний:
23
Добавлен:
21.12.2018
Размер:
2.58 Mб
Скачать

Функция MessageBox

(ОкноСообщения)

Функция MessageBox создает, отображает на экране и оперирует окном сообщений. Окно сообщений содержит определяемое программой сообщение и заголовок, плюс любую комбинацию предопределенных пиктограмм и командных кнопок.

Синтаксис

int MessageBox

(

HWND hWnd, // дескриптор окна владельца

LPCTSTR lpText, // адрес текста в окне сообщений

LPCTSTR lpCaption, // адрес заголовка в окне сообщений

UINT uType // стиль окна сообщений

);

".

14. Команди push, pop. Приклади використання. Загальна структура програми на асемблері. Структура програми „Hello World!” на асемблері

Стек это область в памяти, на которую указывает регистр стека ESP(SP). Есть две команды, для размещения значения в стеке и извлечения его из стека: PUSH и POP. Команда PUSH размещает значение в стеке, т.е. помещает значение в ячейку памяти, на которую указывает регистр ESP, после этого значение регистра ESP уменьшается на 4. Команда POP извлекает значение из стека, т.е. извлекает значение из ячейки памяти, на которую указывает регистр ESP, после этого увеличивается значение регистра ESP на 4. Значение, помещенное в стек последним, извлекается первым.

Пример:

(1) mov ecx, 100

(2) mov eax, 200

(3) push ecx

(4) push eax

(5) xor ecx, eax

(6) add ecx, 400

(7) mov edx, ecx

(8) pop ebx

(9) pop ecx

Анализ:

1: поместить 100 в ecx

2: поместить 200 в eax

3: разместить значение из ecx (=100) в стеке (размещается первым)

4: разместить значение из eax (=200) в стеке (размещается последним)

5/6/7: выполнение операций над ecx, значение в ecx изменяется

8: извлечение значения из стека в ebx: ebx=200.

9: извлечение значения из стека в ecx: ecx=100.

masm

model small

.stack 100h

.data

message db "Hello World!!!",'$'

.code

begin:

xor ax,ax ; Обнуление регистра Ах

mov ax,@data ;Установка в ds адреса сегмента

mov ds,ax ;данных

mov ah,09h ;Функция Dos вывода сообщения

mov dx,offset message ;запись смещения message в dx

int 21h ;Функция Dos вывода сообщения на экран

mov ax,4c00h ;Функция DOS- выход из программы

int 21h ;Вызов DOS. Останов программы.

14. Основні регістри процесора Intel (Pentium III). Регістр прапорів, призначення регістру

Регистры общего назначения - EAX, EBX, ECX, EDX (AX, BX, CX, DX, AL, BL, CL, DL, AH, BH, CH, DH).

Регистры сегментов - это CS, DS, ES, FS, GS, SS. Эти регистры 16-ти битные, и содержат в себе первую половину адреса "сегмент:оффсет".

Регистры оффсета - EIP, ESP, EBP, ESI, EDI (IP, SP, BP, SI, DI).

EIP - указатель команд, и содержит указатель на линию кода, которая будет исполняться следующей. Полный адрес на следующую исполняемую линию кода будет CS:IP (CS:EIP).

Регистр ESP указывает на адрес вершины стека. Регистр ЕВР содержит адрес, начиная с которого в стек вносится или забирается информация (или "глубина" стека).

Регистр флагов FLAGS содержит отдельные биты: флаги управления и признаки результата. Флаги управления меняют режим работы процессора.

Рис. 3.2. Содержимое регистра eflags

15. Директиви для резервування пам’яті в асемблері. Секції .data, .data?, .const. Приклади використання.

Секции .data, .data? и .const нужны для определения данных программы. Место под данные резервируется с помощью директив db, dw, dd, dq, dt.

db - 1 байт

dw - 2 байта - 1 слово

dd - 4 байта - 2 слова

dq - 8 байт - 4 слова

dt - 10 байт

Все данные из секции .data включаются в исполнимый файл. В секции .data? данные нельзя инициализировать. Все данные в этой секции не включаются в исполнимый файл. Секция .const предназначена только для чтения. При попытке изменить эти данные ошибок не возникает.

16. . Рядки в асемблері. Кодировка ASCII та Unicode. Задавання рядків в асемблері. Директива DUP. Регістри цілочисельного ММХ-розширення, призначення.

В ассемблере можно задавать только ANSI строки, Unicode строки сложнее задавать и для их обработки существует целый ряд API функций.