Организация на паметта
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правиш ли?"
Напишете програма, която отпечатва знака "&" на екрана. пет пъти в центъра на екрана.
Показване на символен низ с атрибути. Например червени знаци на син фон.
Задайте цвета на рамката на синьо и нарисувайте графична точка в центъра на екрана.
Създайте две страници с различни публикации. Покажете тези страници една по една.