Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум по ассемблеру.pdf
Скачиваний:
68
Добавлен:
12.03.2016
Размер:
1.15 Mб
Скачать

КАК ПРОГРАММА ИСПОЛНЯЕТСЯ ЦПУ

Формат команды Конвейер команд

Instruction pointer (IP) Arithmetic and logic unit (ALU)

СТРУКТУРА ПРОГРАММЫ НА АССЕМБЛЕРЕ MASM32

КОММЕНТАРИИ

Комментарии в MASM32 начинаются с точки с запятой и идут продолжаются до конца строки

; Например, вот это комментарий

СЕГМЕНТЫ

Программа для MASM32 состоит из сегментов. Каждый сегмент определяет область памяти, предназначенную для хранения данных определённого вида. В основном, различают следующие роли сегментов памяти:

1)Сегменткода, в котором хранится код исполняемой программы.

2)Сегмент данных, в котором хранятся те переменные программы, которые объявлены статически.

3)Сегмент стека, в котором хранятся адреса возврата и параметры, при вызове подпрограмм, а также локальные переменные, которые должны быть уничтожены, после выхода из подпрограммы.

Общий шаблон объявления сегмента:

<ИМЯСЕГМЕНТА>SEGMENT[byte/word/dword/para/page]

;…тут будет что-то полезное

<ИМЯСЕГМЕНТА>ENDS

Роли же сегментов назначаются оператором assume (не является процессорной инструкцией), который ставит каждый сегмент в соответствие одному из сегментных регистров процессора:

assumecs: <ИМЯ СЕГМЕНТА>, ds: <ИМЯ СЕГМЕНТА>, es: <ИМЯ СЕГМЕНТА>, ss: <ИМЯ СЕГМЕНТА>

1)cs – Хранит адрес сегмента кода.

2)ds– Хранит адрес основного сегмента данных.

3)es– Хранит адрес вспомогательного сегмента данных.

4)ss– Хранит адрес сегмента стека.

ПЕРЕМЕННЫЕ

Переменные в MASM32 объявляются, как правило, в сегменте данных (хотя никто не может помешать Вам делать этого и в сегменте кода, но это извращение). При объявлении переменой, задаёт только размер экземпляра. При этом конкретный тип определяется используемой операцией. Например, одна и та же переменная размера byteможет использоваться, как в роли вектора из 8 булевых компонент (инструкции xor, or, and), так и в роли 8-битного целого числа (add, sub).

Общий шаблон объявления переменных:

<ИМЯ ПЕРЕМЕННОЙ><ТИП ДАННЫХ><ИНИЦИАЛИЗАЦИЯ>

Типы данныхв MASM32 бывают следующие:

Размер данных

Синоним

Размер, байт

Типы данных (наиболее часто используемые с данным размером)

db

byte

1

boolean, int8, символASCIIилиANSI.