КАТЕГОРИИ: Архитектура-(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) |
Routine proc far
Org 100h Cseg segment Функцию записи в ОП адреса точки входа программы для последующего вызова. Собственно программу. Формат резидентной программы Резидентные программы End begin Codesg ends Main endp Mov ax,4C00h Mov fldc,ax Add ax, fldb Mov ax, flda Main proc Fldb dw 125 Flda dw 250 Jmp main Org 100h Особенности com-программы End main Addasm endp Ret Public addasm Addasm proc near Code Data ends Data segment word public Model small Masm End. Begin Var value1: word; value2:word; rez:word; value1:=2; value2:=3; rez:=addasm; writeln ('Результат:', rez); Программа на языке Assembler extrn value1:word extrn value2:word assume ds:data main: mov cx,ds:value1 mov dx,ds:value2 add cx,dx; суммирование mov ax,cx; ax загружается результатом
COM- программа – односегментная программа. · Отсутствует стек. · Отсутствует сегмент данных. · Данные располагаются в сегменте кода. Для обхода данных внутри кодового сегмента используется команда jmp. В начале программы должна присутствовать директива org 100h. Эта директива загружает регистр ip адресом 100h для обхода префикса программного сегмента (в момент загрузки программы в ОП регистр CS загружается адресом PSP).
Пример программы типа.COM codesg segment para 'code' assume cs:codesg, ds:codesg, ss:codesg begin: fldc dw?; неинициализированные данные int 21h
Создание объектного модуля:
tasm/zi <имя>,, Создание файла с расширением.com:
tlink /t <имя>,,
DOS – однозадачная ОС, позволяет загружать на выполнение только одну программу, которая занимает все свободное адресное пространство. Загрузка очередной программы приводит к стиранию ранее загруженной программы. Для сохранения программы в ОП необходимо оформить её по правилам написания резидентной программы. Тогда очередная загружаемая программа не будет стирать ранее загруженную.
Формат резидентной программы содержит три смысловые части: 3) Функцию, которая оставляет программу резидентной. Для выполнения второй функции программа должна вычислять свой адрес входа, размер самой программы. Резидентная программа может быть представлена в формате .exe -файла, или .com -файла. Исполняемая часть программы должна заканчиваться директивой IRET. Пример резидентной программы типа.com assume cs:cseg, ds:cseg, ss:cseg ; процедура begin: jmp short setup push ds; сохранение регистров …; здесь тело процедуры pop ds; восстановление регистров iret;возврат из процедуры finish equ $; определение размера программы routine endp; конец процедуры ; установка вектора прерывания setup: mov dx, offset routine; в dx загружается адрес процедуры ;в ds записан адрес сегмента mov al, 70h; выбранный номер прерывания mov ah, 25h; номер функции прерывания 21 int 21h ;оставляем программу резидентной mov dx, finish; размер программы int 27h; оставляем программу резидентной
Дата добавления: 2014-01-04; Просмотров: 324; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |