![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Структура программы
Программа на языке ассемблера представляет собой последовательность операторов, описывающих выполняемые операции. Оператором (строкой) исходной программы может быть или команда, или псевдооператор (директива) ассемблера. Команды выполняются в процессе решения задачи на компьютере, а директивы – в процессе ассемблирования (трансляции) программы. Следовательно, в отличие от команд директивы сообщают ассемблеру (транслятору), что ему делать с командами и данными, которые вводятся в программе. Ниже в таблице 2 перечисляются наиболее часто используемые директивы ассемблера [5]. Таблица 2 Синтаксис и функции псевдооператоров (директив)
Продолжение таблицы 2
Обязательные требования к структуре ASM -программы следующие [6]: - программа может использовать четыре сегмента памяти, начальные адреса которых должны быть загружены в регистры микропроцессора CS, DS, ES, SS, а сами сегменты в явном виде определены в программе в виде операторных скобок - имя_сегмента segment -........ - имя_сегмента ends, например, DSEG SEGMENT PARA PUBLIC ‘DATA’ SOURCE DB 10, 20, 30, 40 DEST DB 4 DUP(?) DSEG ENDS; - в программе должно быть указание, какие сегментные регистры закрепляются за используемыми именами регистров, например: ASSUME CS: CSEG, DS: DSEG, SS: STACK. При исполнении программы адреса сегментных регистров CS, SS, ESв соответствии с вышеприведенными указаниями загружаются автоматически; - сегмент данных DS в EXE-программе не может быть загружен автоматически, поскольку он используется программой-загрузчиком LINK для формирования начального адреса служебной области памяти – префикса программного сегмента (PSP), непосредственно предшествующего любой исполняемой программе. PSP – это группа служебных слов в оперативной памяти, формируемая для каждой загружаемой программы пользователя и занимающая обычно 256 байт (100Н байт), именно адрес этой области записывается в регистр DS. Поэтому в самом начале исполняемой программы этот сегмент инициируется принудительно: сначала в стек записывается адрес возврата к служебной области в виде 2-ух слов – содержимого регистра DS и нулевого смещения; затем в регистр DS записывается адрес сегмента данных исполняемой программы, например, как показано ниже: PUSH DS; поместить в стек адрес PSP SUB AX, AX; обнулить регистр АХ PUSH AX; поместить в стек смещение адреса возврата=0 MOV AX, DSEG; инициировать адрес сегмента данных MOV DS, AX; загрузить адрес в регистр DS; - в исходной программе обязательно должна быть определена метка для первой команды, с которой начнется выполнение программы. Это может быть собственно метка или имя процедуры, как показано в приведенной ниже программе. Имя этой метки обязательно должно быть указано в конце программы в качестве операнда директивы END, например,
|