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

  2. Из командной строки вызвать ассемблер tasm32.Exe (tasm.Exe);

  3. Из командной строки вызвать линковщик tlink32.Exe (tlink.Exe);

Связки ассемблер-линковщик:

MASM32 v9.0 (ml.exe, link.exe)

TASM32 v5.0 (tasm32.exe, tlink32.exe)

Также можно использовать ассемблер FASM. Он имеет свою оболочку и получение объектного модуля, а также выполнение происходит после нажатия клавиши F9.

Текстовые редакторы:

EmEditor Professional Version 4.13;

UltraEdit v*.*.*.* ;

Блокнот : (классика).

Также пригодится справочник по API функциям. Желательно из комплекта MS SDK.

Процессоры и их регистры

Процессор это кремниевая плата или «подложка» с логическими цепями, состоящими из транзисторов, скрытая в пластмассовом корпусе, снабженном контактными ножками (выводами, pin). Большинство ножек процессора подключено к шинам — шине адреса, шине данных и шине управления, которые связывают процессор с остальной частью компьютера.

Процессор имеет регистры. Регистры состоят из триггеров. Триггер может иметь 2 значения 0 или 1. Регистры бывают 8, 16, 32 (,64) разрядные, понятно, что если 8 разрядов, то в регистре 8 триггеров.

Процессоры x86

Процессоры x86 бывают 8086, 80186, 80286, 80386, 80486, 80586 и т.д. Процессоры 8086-80286 16-ти разрядные, дальше идут 32 разрядные.

Все процессоры архитектуры x86 являются потомками Intel 8086 и совместимы с его архитектурой. Это значит, что программы на ассемблере для 8086 будут работать и на всех современных процессорах x86.

Все внутренние регистры процессора Intel 8086 являются 16-битными:

1) Регистры общего назначения (РОН) AX, BX, CX и DX используются для хранения данных и выполнения различных арифметических и логических операций (AH, AL, BH, BL, CH, CL, DH, DL). Некоторые команды неявно используют определённый регистр, например, CX может выполнять роль счетчика цикла.

2) Индексные регистры предназначены для хранения индексов при работе с массивами. SI (Source Index) содержит индекс источника, а DI (Destination Index) — индекс приёмника, хотя их можно использовать и как регистры общего назначения.

3) Регистры-указатели BP и SP используются для работы со стеком. BP (Base Pointer) позволяет работать с переменными в стеке. Его также можно использовать в других целях. SP (Stack Pointer) указывает на вершину стека. Он используется командами, которые работают со стеком.

4) Сегментные регистры CS (Code Segment), DS (Data Segment), SS (Stack Segment) и ES (Enhanced Segment) предназначены для обеспечения сегментной адресации. Код находится в сегменте кода, данные — в сегменте данных, стек — в сегменте стека и есть еще дополнительный сегмент данных.

COM-программа всегда находится в одном сегменте, который является одновременно сегментом кода, данных и стека. При запуске COM-программы сегментные регистры будут содержать одинаковые значения.

5) Указатель команд IP (Instruction Pointer) содержит адрес команды (в сегменте кода). Процессор сам изменяет содержимое этого регистра. При выполнении обычных команд значение IP увеличивается на размер выполненной команды. Существуют также команды передачи управления, которые изменяют значение IP для осуществления переходов внутри программы.

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

Рассмотрим процессор 80386.

Регистры общего назначения - 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 указывает на адрес вершины стека. Регистр ЕВР содержит адрес, начиная с которого в стек вносится или забирается информация (или "глубина" стека).