Курсовой проект [вариант 29]
.doc
2007.220200.СПО.КП.ПЗ «Задание №29» АСОИ-42_.29-Фамилия
-
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
РАЗЛИЧИЯ МЕЖДУ ПРОГРАММАМИ В 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. Блок-схема программы
-
ОПИСАНИЕ ФУНКЦИЙ ПРОГРАММЫ
Современные видеоконтроллеры поддерживают разнообразные текстовые и графические режимы. Текстовые режимы различаются по разрешению (число отображаемых символов по горизонтали и вертикали) и цветовой палитре (монохромный или 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 теряют свои управляющие функции и отображаются в виде соответствующих символов.
-
ЛИСТИНГ ПРОГРАММЫ
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 с.