Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Этапы создания программы на ассемблере

End main

Model small

Masm

Модели памяти

End main

Code ends

Main endp

 

Модель памяти определяет набор сегментов программы, размеры сегментов данных и кода, способ связывания сегментов и сегментных регистров. Транслятору необходимо указать модель памяти с помощью директивы Model:

MODEL <модель памяти> [, <язык>]

Типы моделей памяти:

TINY – для программ имеющих всего один сегмент (имеют расширение.com).

 

SMALL – по этой директиве создается программа с одним сегментом кода, а данные объединены в одну группу.

 

MEDIUM – несколько сегментов кода (по одному на каждый модуль в объединенной группе), а данные - в одной группе.

 

COMPACT – код в одном сегменте, данные – в одной группе. Обращение к данным по ссылке far.

 

LARGE – код в нескольких сегментах (по одному на каждый модуль).

 

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

 

.code [имя] – начало или продолжение сегмента кода.

 

.data – начало или продолжение инициализированных данных.

 

.const – начало или продолжение сегмента констант.

 

.data? – начало или продолжение сегмента неинициализированных данных.

 

.stack [размер] - начало или продолжение сегмента стека.

 

.fardata - начало или продолжение сегмента инициализированных данных типа far.

 

.fardata? - начало или продолжение сегмента неинициализированных данных типа far.

 

Идентификаторы, создаваемые директивой Model:

 

@data – физический адрес сегмента данных (ближний адрес).

 

@code - физический адрес сегмента кода, назначенный CS.

 

@fardata - физический адрес сегмента данных (дальний адрес).

 

@stack – сегментный адрес сегмента стека.

 

Любой из этих адресов загружается в соответствующий сегментный регистр (не напрямую, а через промежуточный регистр).

Пример программы, которая использует упрощенные директивы сегментации:

.stack 256h; начало и размер стека 256 байт

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

mes db “Введите данные, $”

.code; началосегмента кода

main:

mov ax, @data; в ax загружается адрес сегмента данных

mov ds, ax; ds загружен адресом сегмента данных

mov ah, 9h; вызывается функция 9

mov ax, offset mes; в dx загружается адрес строки

int 21h; вывод строки на экран

:

mov ax, 4c00h; вызываем функцию 4c00h

int 21h; возврат в ОС

 

 

 

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

2. Создание объектного модуля

3. Создание загрузочного модуля

4. Отладка программы

 

           
     
 


Текстовый prog. asm

редактор

       
 
 
   


Трансляция prog. obj

программы prog. lst

TASM.EXE prog. xrf

         
   
 
 

 


Компоновка prog. map

программы prog. exe

TLINK.EXE prog.lib

         
   
 
 

 


Отладка

программы

TD.EXE

 

1. На 1-ом этапе можно воспользоваться текстовым редактором из Turbo Pascal или редактором из оболочки Far Manager. Необходимо создать свою папку и скопировать в нее TASM.EXE, TLINK.EXE и TD.EXE

 

<== предыдущая лекция | следующая лекция ==>
Data ends | Prog.crf
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 310; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.