Лаборатория 1 - lr1 - LR1-5

Министерство на образованието и науката на България

Санкт Петербургски държавен електротехнически университет "ЛЕТИ"

Лаборатория №1

"Изследване на конструкциите на товарни модули"

Проверено от: Gubkin A.F.

Изследване на разликите в структурите на изходните текстове на модули от типа .COM и .EXE, файлови структури на зареждащи модули и начини за зареждането им в основната памет.

Функции и структури от данни

Отпечатване на низ на екрана

Определяне на версията на операционната система, версията на нейната модификация, серийни и OEM номера

Определение за тип IBM PC

Преобразуване от кватернер в шестнадесетичен

Преобразуване от двоичен в шестнадесетичен

Превод на думи (2 байта) шестнадесетична бройна система

Преобразуване от двоичен в десетичен

Последователни действия, извършвани от помощната програма

Открива и показва версията на операционната система

Номерът на модификацията на операционната система се определя и показва на екрана

Открива и показва OEM номера на операционната система

Серийният номер на потребителя на операционната система се определя и показва на екрана

Определя се типът на IBM PC и съответният ред се показва на екрана според кода на този тип

система

В тази лаборатория проучих разликите в структурата на източника на модулите за зареждане .COM и .EXE, файловите структури на тези модули и как се зареждат в основната памет.

Отговори на лабораторен тест №1

Разлики в изходния кодCOMиEXEпрограми

Колко сегмента трябва да съдържа еднаCOM програма?

Точно един сегмент

Поне един сегмент (един сегмент или повече)

Кои директиви трябва да има в текстаCOM програми?

Всички командни формати могат ли да се използват вCOM програма?

защото в COM програма всички сегментни регистри се определят по време на стартиране на програмата, а не по време на компилация (сглобяване), тогава е невъзможно да се използват например такива конструкции:

Отговор на бележка 1.

Не можете да използвате команди като mov, seg

Например mov axe, seg CODE

Тъй като com програма е ограничена до 64 Kb, не можете да използвате команда, която е по-голяма от 64 Kb (включително данни). Също така не можете да използвате команди, които работят с 64-битови регистри.

Сега това не може да бъде, но теоретично е възможна команда с огромна дължина, която би отнела 64 Kb или повече (което в 16-та форма би изглеждало така: ABCD ... XYZABC ..., където броят на знаците = 64 * 1024 = 65536).

Разлики във файловия форматCOMиEXEпрограми

В "лош" EXE, данните и кодът се съдържат в един и същ сегмент.

Каква е структурата на „добър“EXE? Как се различава от лош файлEXE?

В "добър" EXE, данните, стекът и кодът са разделени на сегменти.

система

Където име_на_сегмент е името на сегмента,

1, 2, 3, 4 - имената на сегментите, в които са зададени съответните регистри. Би било възможно да се направи без командата JMP, като се напише кодът в началото и едва след това данните.