Организация на паметта

2.1 Организация на паметта

Микропроцесорът поддържа няколко модела на използване на RAM в хардуера:

сегментиран модел. В този модел паметта за програмата е разделена на съседни области на паметта (сегменти), а самата програма има достъп само до данните, които са в тези сегменти.

модел на страницата. Счита се за набор от блокове с фиксиран размер от 4 KB.

Характеристиките на използването и внедряването на тези модели зависят от режима на работа на микропроцесора:

защитен режим. Позволява ви да увеличите максимално изпълнението на всички архитектурни идеи, вградени в модела на микропроцесорите на Intel, като се започне с i80286.

виртуален режим 8086. В този режим става възможно едновременното стартиране на няколко програми, предназначени за 18086.

Ако във файла CONFIG.SYS са включени директиви DEVICE=. инсталирани драйвери (ADM.SYS, SMARTDRV.SYS, EMM386.EXE, ANSI.SYS и т.н.), те се зареждат след системата. Под драйверите е резидентната част на командния процесор COMMAND.COM, която заема около 3 KB.

Изброените по-горе компоненти на операционната система обикновено заемат 60-90 KB. Цялата оставаща памет до границата от 640 KB (транзитна зона) е свободна за зареждане на всяка система или приложни програми.

Стандартна памет (640 KB)

Разширена памет (EMS)

Област за данни на BIOS

DOS област с данни

Command.com (резидентна част)

Свободна памет за зареждане на приложни и системни програми

EGA графичен буфер

EGA текстов буфер

ROM - разширения на BIOS

До 15 MB (286)

До 4 GB (386/486)

Модел на сегментирана памет.

Максималният размер на сегмента е 64 KB;

RAM

Базов регистър bx или bp

Индексен регистър Si или di

Преместете 4 бита наляво

2.2 Разработване на проста асемблираща програма

За системни програми с критично значение за размера, при писането на които се взема предвид всеки байт, е по-правилно да се използва не език от високо ниво, а асемблер. Използвайки асемблерния език, можем да вземем предвид най-фините системни и архитектурни нюанси. Нека анализираме следната задача: необходимо е да визуализирате съдържанието на определен регистър или да въведете стойност в него.

Първо трябва да помислите за алгоритъма. Въвеждането на информация от клавиатурата и показването й на екрана се извършват в символна форма. Тази информация е кодирана според ASCII таблицата. Ако работите с числа, трябва да конвертирате информацията за знаци във формат, поддържан от машинни инструкции. След такава трансформация трябва да извършите необходимите изчисления и да преобразувате резултата обратно в символна форма. След това информацията трябва да се покаже на монитора.

1. За шестнадесетични цифри 0.9 ASCII кодът се различава от съответното двоично представяне с 00110000 (ZON). Следователно има два начина за конвертиране на ASCII кода:

извършете двоично изваждане: (ASCII код)h - 30h

нулира старшата тетрада на байт с ASCII шестнадесетичен цифров знак.

2. Алгоритъмът за преобразуване трябва да прави разлика между главни и малки букви на шестнадесетични цифри и да коригира стойността на ASCII кода с 37h или 67h.

Програмите, работещи под MS-DOS, могат да бъдат един от двата типа, които съответстват на файловите разширения на програмата .COM и .EXE. основната разлика между тезипрограми е, че програмите от типа .COM се състоят от един сегмент, в който са разположени програмните кодове, данни и стек, а в програми от тип .EXE са предвидени отделни сегменти за действителната програма, данни и стек. По този начин размерът на .COM програма не може да надвишава 64 Kbytes, докато размерът на .EXE програма е практически неограничен, тъй като може да включва произволен брой сегменти от програми и данни.

Структура и изображение на паметта на програмата .EXE.

заглавие програма тип .EXE

текстов сегмент "Код"

приемете CS : текст, DS : данни

стек сегмент стек "стек"

Структура и образ на паметта на програмата .COM.

заглавие .COM тип програма

текстов сегмент "Код"

приемете CS : текст, DS : текст

Описание на програмата от тип .EXE.Нека разгледаме структурата на програмата. Изявлението TITLE ви позволява да добавите пред програмата текстово заглавие, което ще се показва на всички страници от списъка с излъчвания. Програмата се състои от три сегмента: сегмент с инструкции или програмен сегмент с произволен текст на име, сегмент от данни с данни за име и сегмент от стек със стек от имена. Всеки сегмент се отваря с оператор SEGMENT и се затваря с оператор ENDS. И двата израза трябва да бъдат предшествани от името на сегмента. Редът на сегментите в повечето случаи няма значение.

Напишете програма от тип .EXE, която показва реда „Това е програма от тип .EXE“.

Напишете .COM програма, която показва низа "Това е .COM програма."

Напишете програма, която изчиства екрана и отпечатва реда „Здравейте момчета!“ в центъра на екрана.

Промяна на конфигурацията на курсора.

Спрямо текущата позиция на курсора, преместете три реда и пет колони, за да покажете реда „Asправиш ли?"

Напишете програма, която отпечатва знака "&" на екрана. пет пъти в центъра на екрана.

Показване на символен низ с атрибути. Например червени знаци на син фон.

Задайте цвета на рамката на синьо и нарисувайте графична точка в центъра на екрана.

Създайте две страници с различни публикации. Покажете тези страници една по една.