Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Общая структура программы на языке Ассемблер. Сегмент кода. Сегмент данных.

Читайте также:
  1. A. підприємство - це відокремлена економічна структура, яка займається виробництвом та реалізацією певних товарів та послуг з метою отримання доходу; Верно
  2. CASE-средства. Общая характеристика и классификация
  3. Cтруктура Pascal-программы.
  4. Cудебник 1497 г. Общая характеристика
  5. Cудебник 1550 г. Общая характеристика, система и источники
  6. I. Дистрибутивный анализ. Дистрибутивная структура языка на фонемном уровне.
  7. I. Общая дерматовенерология
  8. I. Общая характеристика жанровой системы связей с общественностью.
  9. I. Понятие, структура и функции религии. Социологические теории религии.
  10. I. Пражский структурализм.

Программа, написанная на ассемблере MASM, может состоять из нескольких частей, называемых модулями, в каждом из которых могут быть определены один или несколько сегментов данных, стека и кода. Любая законченная программа на ассемблере должна включать один главный, или основной (main), модуль, с которого начинается ее выполнение. Основной модуль может содержать программные сегменты, сегменты данных и стека, объявленные при помощи упрощенных директив. Кроме того, перед объявлением сегментов нужно указать модель памяти при помощи директивы.MODEL.

model small; эта директива указывается до объявления сегментов

.stack 100h;размер стека 256 байт

.data;начало сегмента данных

;данные

.code;здесь начинается сегмент программ

main:

;команды ассемблера

end main

При помощи следующих команд в сегментный регистр DS помещается адрес сегмента данных, указанного директивой.data:

mov AX, @data

mov DS, AX

“Классический” шаблон 32-разрядного приложения содержит область данных (определяемую директивой.data), область стека (директива.stack) и область программного кода (директива.code). Может случиться так, что 32-разрядному приложению на ассемблере потребуется несколько отдельных сегментов данных и/или кода. В этом случае разработчик может создать их с помощью директивы SEGMENT.

имя ENDS

.DATA (.data) определяет сегмент данных, в котором располагаются неинициализированные данные. При наличии предыдущего сегмента новый сегмент завершает его. Неинициализированные данные могут объявляться в Директива SEGMENT определяет логический сегмент и может быть описана следующим образом:

имя SEGMENT список атрибутов

...

сегменте.DATA при помощи оператора?. Преимуществом директивы.DATA является то, что при ее использовании уменьшается размер исполняемого файла и, кроме того, обеспечивается лучшая совместимость с другими языками. Этой директиве должна предшествовать директива.MODEL.

.data

val1 DW 11

string1 DB "Text string"

byte1 DB?

.STACK (.stack) [размер] — определяет начало сегмента стека с указанным размером памяти, который должен быть выделен под область стека. Если параметр не указан, размер стека предполагается равным 1 Кбайт. При наличии предыдущего сегмента новый сегмент завершает его. Этой директиве должна предшествовать директива.MODEL.

.CODE (.code) [имя] — определяет сегмент программного кода и заканчивает предыдущий сегмент, если таковой имеется. Необязательный параметр имя замещает имя _TEXT, заданное по умолчанию. Если имя не определено, ассемблер создает сегмент с именем _TEXT для моделей памяти tiny, small, compact и flat или сегмент с именем имя_модуля_TEXT для моделей памяти medium, large и huge. Этой директиве должна предшествовать директива.MODEL, указывающая модель памяти, используемую программой.

 




Дата добавления: 2015-02-16; просмотров: 115 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав