Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗФ / ВМСиС сборник лабораторных работ.docx
Скачиваний:
51
Добавлен:
06.11.2017
Размер:
457.26 Кб
Скачать

Сегментные регистры.

В программной модели микропроцессора имеются 6 сегментных регистров: CS, DS, SS, ES, GS, FS. Их существование обусловлено спецификой организации использования оперативной памяти микропроцессорами Intel. В этих регистрах содержатся адреса памяти, с которых начинаются соответствующие сегменты. Микропроцессор поддерживает следующие типы сегментов:

  1. Сегмент кода. Содержит команды программы. Для доступа к этому сегменту служит регистр CS (Code Segment register) - сегментный регистр кода;

  2. Сегмент данных. Содержит обрабатываемые программой данные. Для доступа к этому сегменту служит регистр DS (Data Segment register) - сегментный регистр данных;

  3. Сегмент стека. Этот сегмент представляет собой область памяти, называемую стеком. Для доступа к этому сегменту служит регистр SS (Stack Segment resister) - сегментный регистр стека, содержащий адрес сегмента стека;

  4. Дополнительный сегмент данных. Адреса дополнительных сегментов данных должны содержатся в регистрах ES,GS,FS.

Регистры состояния и управления.

  1. Регистр флагов EFLAGS/FLAGS;

  2. Регистр указателя команды EIP/IP.

Используя эта регистры можно получать информацию о результатах выполнения команд и влиять на состояние самого микропроцессора. EFLAGS/FLAGS (Flag register) - регистр флагов (рис.2.). Отдельные биты данного регистра имеют определенное функциональное назначение и называются флагами.

EIP/IP (Instruction Pointer register) - указатель команд. Содержит смещение следующей подлежащей выполнению команды относительно содержимого сегментного регистра CS.

Формат команд.

Программирование на уровне машинных команд - это тот минимальный уровень, на котором еще возможно программирование ЭВМ. Система команд должна быть достаточной для того, чтобы реализовать требуемые действия, выдавая блокам машины. Каждая машинная команда состоит из двух частей: операционной части, определяющей «что делать?» и операндной части, определяющей объекты обработки, то есть то, «над чем делать». Важной особенностью машинных команд является то, что они не могут манипулировать одновременно двумя операндами, находящимися в оперативной памяти. По этой причине возможны только следующие сочетания операндов в команде:

  1. регистр - регистр;

  2. регистр - память;

  3. память - регистр;

  4. непосредственный операнд - регистр;

  5. непосредственный операнд - память;

Исключения:

  • команды работы с цепочками, которые могут перемещать данные из памяти в память;

  • команды работы со стеком, которые могут переносить данные из памяти в стек, также находящийся в памяти;

  • команды типа умножения, которые, кроме операнда, указанного в команде, используют еще и второй, неявный операнд.

Создание программы на ассемблере.

  1. Ввод исходного текста программы,

Для этого используется текстовый редактор «Блокнот», встроенный в операционную систему WINDOWS 95/98, или любой другой, не вставляющий в текст программы посторонних символов (символов редактирования).

Расширение созданного файла должно быть изменено с .TXT на .ASM. Это возможно с помощью функции «Переименовать файл».

  1. Создание объектного модуля (трансляция программы).

На этом этапе формируется объектный модуль, который включает в себя представление исходной программы в машинных кодах. Для получения объектного модуля исходный файл необходимо подвергнуть трансляции при помощи программы tasm.exe из пакета TASM. Формат командной строки для запуска tasm.exe следующий:

TASM.EXE [/опции] имя исходного файла.

В квадратные скобки помешены параметры, которые могут отсутствовать.

Пример:

C:\TASM\Work\TASM.EXE /zi

C:\TASM\Work\имя_исходного_файла.аsm

  1. Создание загрузочного модуля (компоновка программы).

Формат командной строки для запуска компоновщика следующий:

TLINK.EXE [/опции] имя объектного файла

Пример: C:\TASM\Work\TLINK.EXE /v C:\TASM\Work\имя_исходного_файла.obj

В результате проведенных выше действий получаем исполняемый модуль с расширением .EXE.

Соседние файлы в папке ЗФ