Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Теоретическая часть. Несмотря на то, что современные языки программирования высокого уровня обеспечивают не только удобное



Несмотря на то, что современные языки программирования высокого уровня обеспечивают не только удобное, но и эффективное системное программирование, в тех случаях, когда особенно важно получить оптимальный объектный код, необходимо использовать Ассемблер.

Исходный модуль программы на Ассемблере представляет собой последовательность строк, имеющих следующий формат:

[метка] команда [операнд(ы)] [комментарий]

После метки ставится двоеточие, команда и операнд разделяются по крайней мере одним пробелом; если операндов несколько, то они разделяются запятыми; перед комментарием ставится точка с запятой. В квадратные скобки заключены необязательные компоненты.

Ассемблер имеет ряд операторов, которые позволяют управлять процессом ассемблирования и формирования листинга. Эти операторы называются псевдокомандами или директивами. Они действуют только в процессе ассемблирования программы и не генерируют машинных кодов.

Любые ассемблерные программы содержат по крайней мере один сегмент-сегмент кода. В некоторых программах используются сегмент для стековой памяти и сегмент данных для определения данных. Сегмент описывается директивой SEGMENT следующим образом:

имя SEGMENT [параметры]

имя ENDS

Сегмент кода содержит одну или несколько процедур, определяемых директивой PROC:

имя сегмента SEGMENT имя процедуры PROC

RET имя процедуры ENDP имя сегмента ENDS

Пример простой исходной программы на Ассемблере представлен ниже:

TITLE PROG1 ПРИМЕР РЕГИСТРОВЫХ ОПЕРАЦИЙ;

STACKSG SEGMENT PARA STACK 'Stack'

DB 12 DUP(?) STACKSG ENDS

CODESG SEGMENT PARA 'Code' BEGIN PROC FAR ASSUME SS:STACKSG,CS:CODESG,DS:NOTHING

PUSH DS; cохранение DS в стеке. (1)

SUB AX,AX; формирование нуля в АХ. (2)

PUSH AX; cохранение АХ в стеке. (3)

MOV AX,0123H; передача константы в регистр. (4)

ADD AX,0025H; сложение регистра с константой. (5)
MOV BX,AX; передача из регистра в регистр. (6)

ADD BX,AX; сложение содержимого регистров. (7)
MOV CX,BX; передача из регистра в регистр. (8)

SUB CX,AX; вычитание содержимого регистров (9)
SUB AX,AX; формирование нуля в АХ. (10)

NOP; нет о перации (задержка). (11)

RET; возврат из процедуры. (12)

BEGIN ENDP;КОНЕЦ ПРОЦЕДУРЫ.

CODESG ENDS;КОНЕЦ СЕГМЕНТА.

END BEGIN;КОНЕЦ ПРОГРАММЫ.

В приведенном примере директива ASSUME сообщает Ассемблеру соответствие между сегментными регистрами и именами сегментов.

Исходный текст программы на Ассемблере создается с использованием любого доступного текстового редактора и сохраняется на магнитном диске под именем *.ASM или *. TXT. Компилятор Турбо Ассемблер является программой в виде загрузочного файла TASM.EXE, работающей в режиме командной строки. Он вызывается командой

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

TASM/ZI PROG1 PROG1 PROG1

приводит к созданию из исходного файла PROG1.ASM объектного модуля PROG1.OBJ и файла листинга PROG1.LST. Параметр /ZI приводит к внесению в файл листинга полных сведений о номерах строк и именах исходного модуля.

С целью создания исполнительной программы необходимо произвести компоновку объектных модулей с библиотечными модулями. Компоновщик является программой с именем TLINK.EXE. Он может быть вызван командой

TLINK имя объектного модуля

После компоновки создается загрузочный файл PROG1.EXE, а также файл карты сборки PROG1.МАР.

Компоновка в режиме TLINK /t приводит к созданию исполняемого *.СОМ файла, а компоновка в режиме TLINK /v включает в файл исполняемой программы информацию, необходимую для ее инициализации и отладки.





Дата публикования: 2014-11-18; Прочитано: 263 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...