СИСТЕМНОЕ
ПРОГРАММИРОВАНИЕ
Первые 640
Кбайт адресного пространства называются основной или стандартной CMAпамятью
и по принципу работы являются памятью с произвольным доступом, допускающей как
считывание, так и запись данных (ОЗУ или в англоязычной транскрипции RAM –
Random Access Memory). Это та область, которую могли адресовать первые
версии DOS.
Оставшаяся часть памяти
объёмом 384 Кбайт (область верхней памяти – UMA) использовалась
видеоадаптером и ПЗУ BIOS.
Начальный килобайт памяти
занят векторами прерываний (256 векторов по 4 байта).
Далее, над таблицей
векторов, располагается область данных BIOS, которая занимает объём в 256 байт.
В этой области хранятся разнообразные данные, используемые BIOS в процессе
управления периферийным оборудованием.
Начиная
с сегментного адреса 0050h, располагается область данных DOS. К некоторым
данным этой области (данные не являются документированными) можно обращаться
только через посредство программных прерываний.
Выше резидентной части
командного процессора обычно загружаются необходимые резидентные программы
(русификаторы, антивирусные программы).
Оставшаяся часть CMA-памяти
для загрузки прикладных DOS-программ, как правило, не превышает ~ 500 Кбайт.
!Всё,
что выше первого мегабайта, получило название расширенной или XMS-памяти
(см.
табл.). Доступ к
расширенной памяти осуществляется в защищённом режиме и она не доступна для
DOS.
ТИПЫ ОПЕРАНДОВ
СИСТЕМНОЕ
ПРОГРАММИРОВАНИЕ
ДИРЕКТИВЫ
! Преимуществом
директивы .DATA? является то, что при ее использовании уменьшается размер
исполняемого файла и, кроме того, обеспечивается лучшая совместимость с другими
языками.
! Сегмент, определенный директивой .CONST,
имеет атрибут “только для чтения”.
.STACK (.stack) [размер] — определяет
начало сегмента стека с указанным размером памяти, который должен быть выделен
под область стека. Если параметр не указан, размер стека предполагается равным
1 Кбайт.
.MODEL (.model) модель_памяти
[,соглашение_о_вызовах] [,тип_ОС] [,параметр_стека] — определяет модель памяти,
используемую программой. Директива должна находиться перед любой из директив
объявления сегментов. Она связывает определенным образом различные сегменты
программы, определяемые ее параметрами tiny,
small, compact, medium, large, huge или flat. Параметр
модель_памяти является обязательным.
!модель памяти должна соответствовать режиму
работы (типу) процессора. Это имеет значение для плоской модели памяти, которую
можно применять только в режимах .386, .486, .586, .686. Модель памяти
определяет, какой тип адресации данных и команд поддерживает программа (near
или far).
СИСТЕМНОЕ
ПРОГРАММИРОВАНИЕ ДИРЕКТИВЫ.МОДЕЛИ ПАМЯТИ.
Модель small поддерживает один сегмент кода
и один сегмент данных. Данные и код при использовании этой модели адресуются
как near (ближние). Модель large поддерживает несколько
сегментов кода и несколько сегментов данных. По умолчанию все ссылки на код и
данные считаются дальними (far).
Модель
medium поддерживает несколько
сегментов программного кода и один сегмент данных, при этом все ссылки в
сегментах программного кода
по умолчанию считаются дальними (far),
а ссылки в сегменте данных
— ближними (near).
Модель compact поддерживает несколько
сегментов данных, в которых используется дальняя адресация данных (far), и один сегмент кода с ближней адресацией (near). Модель huge практически эквивалентна модели
памяти large.
Модель tiny работает только в 16-разрядных приложениях
MS-DOS. В этой модели все данные и код располагаются в одном физическом
сегменте. Размер программного файла в этом случае не превышает 64 Кбайт.
Модель flat предполагает несегментированную
конфигурацию программы и используется только в 32-разрядных операционных
системах. Эта модель подобна модели tiny в том смысле, что данные и код
размещены в одном сегменте, только
32-разрядном. Перед директивой .model flat следует
разместить одну из директив: .386, .486, .586 или .686. Желательно указывать
тот тип процессора, который используется в машине, хотя на машинах с Intel
Pentium можно указывать директивы .386 и .486.
!Программа,
использующая модель flat, выполняется в одном физическом сегменте, хотя
логических сегментов может быть несколько
Лабораторная работа №2. Пересылка строк. Копирование строк.
Лабораторная работа №3. Использование условий.
Лабораторная работа №4. Использование циклов.
Лабораторная работа №4. Использование циклов.
Лабораторная работа №4. Использование циклов.
Лабораторная работа №4. Использование циклов.
Лабораторная работа №4. Использование циклов.
Лабораторная работа №4. Использование циклов.
Лабораторная работа №4. Использование циклов.
Лабораторная работа №4. Использование циклов.
ИСПОЛЬЗОВАНИЕ БИБЛИОТЕК. KERNEL32.LIB
ИСПОЛЬЗОВАНИЕ JAVA В ДОСТУПЕ К РЕГИСТРАМ
WINDOWS
Исправление отображения русских шрифтов в ERWin
К
сожалению ERWin не полностью поддерживает русский язык. Особенно это неудобно,
когда необходимо заполнить словари ролей, имен стрелок и т.д. В некоторых
случаях достаточно сделать это: В командной строке набираем regedit, попадаем в
реестр. Далее по пути:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\C
odePage ищем в колонке Имя 1252 и меняем его значение с
«c_1252.nls» на
«c_1251.nls»
Если это не помогло,
выполняем следующие шаги.
1. Создаем текстовый файл
с именем rusfonts.txt и сохраняем с
ИСПОЛЬЗОВАНИЕ JAVA В ДОСТУПЕ К РЕГИСТРАМ
WINDOWS
Исправление отображения русских шрифтов в ERWin
2.
Создаем
текстовый файл с именем rusfonts2.txt и сохраняем с разрешением .reg (файл
реестра)
Содержимое файла – в
приложении
3.
Создаем
текстовый файл с именем rusfonts3.txt и сохраняем с разрешением .reg (файл
реестра)
Содержимое файла – в
приложении
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.