Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Курсовой проект [вариант 29]

.doc
Скачиваний:
24
Добавлен:
02.05.2014
Размер:
185.86 Кб
Скачать

11

2007.220200.СПО.КП.ПЗ «Задание №29» АСОИ-42_.29-Фамилия

  1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

РАЗЛИЧИЯ МЕЖДУ ПРОГРАММАМИ В EXE и COM-файлах

Несмотря на то, что EXE2BIN преобразует EXE-файл в COM-файл, существуют определенные различия между программой, выполняемой как EXE-файл и программой, выполняемой как COM-файл.

Размер программы. EXE-программа может иметь любой размер, в то время как COM-файл ограничен размером одного сегмента и не превышает 64К. COM-файл всегда меньше, чем соответствующий EXE-файл; одна из причин этого - отсутствие в COM-файле 512-байтового начального блока EXE-файла.

Сегмент стека. В EXE-программе определяется сегмент стека, в то время как COM-программа генерирует стек автоматически. Таким образом при создании ассемблерной программы, которая будет преобразована в COM-файл, стек должен быть опущен.

Сегмент данных. В EXE программе обычно определяется сегмент данных, а регистр DS инициализируется адресом этого сегмента. В COM-программе все данные должны быть определены в сегменте кода.

Инициализация. EXE-программа записывает нулевое слово в стек и инициализирует регистр DS. Так как COM-программа не имеет ни стека, ни сегмента данных, то эти шаги отсутствуют. Когда COM-программа начинает работать, все сегментные регистры содержат адрес префикса программного сегмента (PSP), - 256-байтового (шест. 100) блока, который резервируется операционной системой DOS непосредственно перед COM или EXE программой в памяти. Так как адресация начинается с шест. смещения 100 от начала PSP, то в программе после оператора SEGMENT кодируется директива ORG 100H.

Обработка. Для программ в EXE и COM форматах выполняется ассемблирование для получения OBJ-файла, и компоновка для получения EXE-файла. Если программа создается для выполнения как EXE-файл, то ее уже можно выполнить. Если же программа создается для выполнения как COM-файл, то компоновщиком будет выдано сообщение:

Warning: No STACK Segment

(Предупреждение: сегмент стека не определен)

Это сообщение можно игнорировать, так как определение стека в программе не предполагалось. Для преобразования EXE-файла в COM-файл используется программа EXE2BIN. Предположим, что EXE2BIN имеется на дисководе A, а скомпонованный файл по имени CALC.EXE - на дисководе B.

Введите

EXE2BIN B:CALC,B:CALC.COM

Так как первый операнд всегда предполагает EXE файл, то можно не кодировать тип EXE. Второй операнд может иметь другое имя (не CALC.COM). Если не указывать тип COM, то EXE2BIN примет по умолчанию тип BIN, который впоследствии можно переименовать в COM. После того как преобразование будет выполнено можно удалить OBJ- и EXE-файлы.

Если исходная программа написана для EXE-формата, то можно, используя редактор, заменить команды в исходном тексте для COM файла.

  1. БЛОК-СХЕМА ПРОГРАММЫ

Рис 1. Блок-схема программы

  1. ОПИСАНИЕ ФУНКЦИЙ ПРОГРАММЫ

Современные видеоконтроллеры поддерживают разнообразные текстовые и графические режимы. Текстовые режимы различаются по разрешению (число отображаемых символов по горизонтали и вертикали) и цветовой палитре (монохромный или 16-цветный режим). Для графических режимов основным признаком классификации является количество одновременно отображаемых цветов и, соответственно, количество бит видеопамяти, отводимое на каждую точку (пиксел) изображения. Различают следующие типы графических режимов:

–     монохромный (1-битное кодирование);

–     16-цветный EGA/VGA (4-битное кодирование);

–     256-цветный SVGA (8-битное кодирование);

–     HiColor (16-битное кодирование);

–     TrueColor (24-битное / 32-битное кодирование).

Графические режимы VGA (SVGA) сильно устарели, а текстовые продолжают успешно применяться (см. табл. 3.2 п. 8.2.3).

Всё, что изображено на мониторе – графика, текст – одновременно присутствует в памяти, встроенной в видеоадаптер. Для того чтобы изображение появилось на мониторе, оно должно быть записано в память видеоадаптера. В текстовом режиме для VGA-совместимых систем для видеопамяти отводится адресное пространство (исключая 7-й видеорежим с монохромным адаптером), начинающееся с логического адреса B800h:0000h и заканчивающееся адресом BF00h:0FFFh. Данная область разбивается на 8 секторов по числу видеостраниц (4 Кбайта на страницу). Таким образом, постраничное деление адресного пространства видеопамяти в текстовом режиме имеет следующий вид:

–     B800h:0000h – страница 0, смещение в диапазоне 0000h – 0FFFh

–     B900h:0000h – страница 1, смещение в диапазоне 0000h – 0FFFh

–      ...........

–      BF00h:0000h – страница 7, смещение в диапазоне 0000h – 0FFFh

На экране отображается видеобуфер, соответствующий активной странице. В текстовых режимах для изображения каждого символа отводится 2 байта: байт с ASCII-кодом символа и байт с его атрибутом. При этом по адресу B800h:0000h находится байт с кодом символа (левый верхний угол экрана), а в B800h:0001h – атрибут этого символа; B800h:0002h – код второго символа, а в B800h:0003h – атрибут второго символа и т.д. Вообще при формировании изображения непосредственно в видеобуфере, в обход программ DOS и BIOS, все управляющие коды ASCII теряют свои управляющие функции и отображаются в виде соответствующих символов.

  1. ЛИСТИНГ ПРОГРАММЫ

text segment 'code'

assume CS:text, DS:text

org 100h

begin:

; clear screen

mov AH, 09

lea DX, clr_msg

int 21h

lea DI, txt[57]

mov AX, word ptr _size

call PARSE_BYTE

mov AX, 0b800h

mov DS, AX

lea BP, txt

mov DI, 00

b1: mov AH, 07h

mov AL, byte ptr [BP]

cmp AL, 30h

jae b2

jmp g1

b2: cmp AL, 39h

jbe c1

jmp g1

c1: mov AH, 41h

g1: mov DS:[DI], AX

add DI, 02

inc BP

cmp DI, (txt_len*2)

jb b1

_END:

mov AH, 08h

int 21h

; выход из программы в DOS

mov AX, 4c00h

int 21h

PARSE_BYTE proc

mov CX,0010

СA:

cmp AX,0010

jb CB

xor DX,DX

div CX

or DL,30H mov [DI],DL

dec DI

jmp СA

CB:

or AL,30H

mov [DI],AL

ret

PARSE_BYTE endp

ЗАКЛЮЧЕНИЕ

В планах дальнейшего развития программы можно предположить возможность выделения цветовым полем также специальных сиволов.

Модифицировав программу, можно использовать её для подсветки синтаксиса, что увеличит эффективность восприятия текстовой информации пользователем.

СПИСОК ЛИТЕРАТУРЫ

1. Абель П. Язык Ассемблера для IBM PC и программирования / Пер.

с англ. Ю.В.Сальникова.- М.:  Высшая школа, 1992. 

2. Джордейн Р. Справочник программиста персональных компьютеров типа IBM PC, XT и AT: Пер. с англ./Предисл. Н.В.Гайского. - М.: Финансы и статистика, 1991.- 544 с.: ил.

3. Финогенов К.Г. Самоучитель по системным функциям MS-DOS. - Изд.2, перераб. и дополн. - М.: Радио и связь, Энтроп, 1995 2, 382 с., ил.

4. Фролов А.В., Фролов Г.В. MS-DOS для программиста - М.: ДИА- ЛОГ-МИФИ, 1995 2, 0 - 256 с. - (Библиотека системного программиста; т. 18)

5. Фролов А.В., Фролов Г.В. MS-DOS для программиста. Часть 2 - М.: ДИАЛОГ-МИФИ, 1995 2, 0 - 256 с. - (Библиотека системного программиста; т. 19)

6. Нортон П. Программно-аппаратная организация IBM PC: Пер. с англ. - М.: Радио и связь, 1991 2,  0-328 с.: ил.

7. Скэнлон Л. Персональные ЭВМ IBM PC и XT. Программирование на языке ассемблера: Пер. с англ. - М.: Радио и связь. 1989 2, 0 – 336 с.: ил.

8. Шнайдер А. Язык асссемблера для персонального компьютера фирмы IBM: Пер. с англ.- М.: Мир, 1988 2, 0 - 406 с., ил.

9. Стандарты в программной документации: Методические указания к курсовому и дипломному проектированию для студентов всех специиальностей. Уфа: УАИ, 1987 2, -  035 с.