Форум программистов, компьютерный форум, киберфорум
Наши страницы

Assembler, MASM, TASM

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
boot.ini
0 / 0 / 0
Регистрация: 07.02.2011
Сообщений: 23
#1

XMS что это? - Assembler

29.11.2011, 09:01. Просмотров 2046. Ответов 7
Метки нет (Все метки)

"Дополнительная память (англ. Extended memory, XMS) — память за пределами
первого мегабайта адресного
пространства IBM PC- совместимого компьютера с процессором Intel 80286 или более поздним. На компьютерах,
совместимых с архитектурой x86, дополнительная память может использоваться только
с процессорами не ниже Intel
80286. Это обусловлено их
способностью адресовать
более одного мегабайта
памяти."

Объяснить более доходчивым языком что такое xms память, желательно провести аналогию с чем-нибудь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2011, 09:01
Я подобрал для вас темы с готовыми решениями и ответами на вопрос XMS что это? (Assembler):

Что это в исходнике? - Assembler
есть код IDI_ICON EQU 1001 что он значит? это в описании находиться

Что значит это текст? - Assembler
ASSUME CS:KOM_,SS:STEK_,DS:DAN_ STEK_ SEGMENT STACK DW 10000 DUP (?) DNOST_ DW ? STEK_ ENDS ; main() KOM_ SEGMENT ...

Скажите, что это за транслятор? - Assembler
.model small include io.asm .data a1 dw 0000000010110101b b1 dw 0000000000110111b c1 dw ? .code start: mov ax,@data ;...

Ошибка или что это ? - Assembler
Я начинающий вот код программы CSEG segment org 100h _start: mov ah, 9 mov dx, offset String int 21

Подпрограмма обработки прерываний: что это и как использовать - Assembler
Всем привет.Я начинающий в ассемблере....Возник вопрос насчёт обработки прерываний:Что это вообще такое и как его использовать? А...

Что изменяется, записывается в стек и где это в стеке после команды? - Assembler
1 0000 stseg segment para stack 2 0000 10*(????) old_adress dw 16 dup(?) 3 0020 ...

7
Fedor666
Основоположник на всё
42 / 42 / 4
Регистрация: 22.02.2010
Сообщений: 311
29.11.2011, 10:00 #2
Тяжелое детство, 16-битные игрушки...
Старые процы для адресации к памяти использовали сегменты и смещения в них. Поскольку регистры были 16-разрядные, в них влазили числа только до 655535 (или 0FFFFh). Адрес вычислялся так: сегментный регистр умножался на 16, путем сдвига влево на 4 двоичных разряда, затем складывался со смещением (то же 16 разрядов). Итого, получался адрес типа 0XXXXXh, который, ясно дело, не мог превышать 1048575 (1 мег). Потом в процах появилась адресная линия А20 и стало возможным обращаться к дополнительной памяти. Появился драйвер XMS, который предоставлял обычным программам к ней доступ через окошки в верхней памяти. Уф.
2
boot.ini
0 / 0 / 0
Регистрация: 07.02.2011
Сообщений: 23
29.11.2011, 10:31  [ТС] #3
Ставлю +1 за интересную информацию.Но мне все равно не ясно что это.
0
Mikl___
Автор FAQ
10860 / 5786 / 507
Регистрация: 11.11.2010
Сообщений: 10,797
29.11.2011, 11:39 #4
boot.ini, пробую еще раз, для понятности используй калькулятор из стандартных программ.
1)в DOS полный адрес получается из двух частей = значение в сегментном регистре * 16 + смещение
2)максимальное значение сегментного регистра =FFFF
3)максимальное значение смещения =FFFF
4) смотрим какому максимальному адресу это соответствует?
FFFFh*10h+FFFFh=FFFF0h+FFFFh=10FFEFh=10FFEF в шестнадцатеричной = 1114095 в десятичной = 100001111111111101111 в двоичной, а вот и нет 8086 имели 20 адресных линий (от нулевой до 19-ой) поэтому самая старшая единица здесь не учитывается поэтому FFFFh*10h+FFFFh=FFFF0h+FFFFh=0FFEFh а самый старший адрес будет равен 11111111111111111111 в двоичной, FFFFF в шестнадцатеричной, 1048575 в десятеричной. В intel 286 появляется 20-ая адресная линия и теперь максимальный адрес стал равен 1FFFFF hex= 2097151 dec = 111111111111111111111 bin память от 2097151 до 1048575 и называется XMS
1
Fedor666
Основоположник на всё
42 / 42 / 4
Регистрация: 22.02.2010
Сообщений: 311
29.11.2011, 11:50 #5
Что бы обратиться к ячейке оперативной памяти, нужно указать ее номер. Это число. Оно ДОЛЖНО поместиться в регистр процессора, а он был 16-разрядный, т.е. маленький. Тута идет двоичная математика: 0,1,10,11,100,101,110,111,1000,1001,1010,1011... Как видишь, длина числа растет очень быстро, а в 16 разрядный регистр может поместится максимальное 16-разрядное число 1111111111111111 (двоичное) = 65535 (десятичное). 65535*16+65535 и есть тот предел, который можно засунуть в регистры СЕГМЕНТ:СМЕЩЕНИЕ, т.е. мегабайт. В этом-то и была вся трабла. Как заставить процессор обратится к ячейки памяти № 30000000, если он не понимает таких больших чисел? Когда 1 мега стало явно маловато, процы доработали, что бы они понимали числа по-больше и могли адресоваться к бОльшим объемам оперативной памяти. Так и повелось: первые 640Kb - стандартная память (доступная программам без всяких выкрутасов), от 640Kb до 1Mb - верхняя память и остальная - дополнительная, к которой можно обращаться через специальный драйвер XMS. Причем, это все одна плата. Вопрос лишь в способе адресации.
Я то же не понял зачем все это? Сейчас даже сами эти понятия устарели.
1
Mikl___
Автор FAQ
10860 / 5786 / 507
Регистрация: 11.11.2010
Сообщений: 10,797
29.11.2011, 11:53 #6
Цитирую кусками с Лурка
исходя из особенностей ранних микропроцессоров Intel (а именно — 20 адресных линий на выходе, больше мегабайта напрямую они адресовать не могли физически http://www.cyberforum.ru/cgi-bin/latex.cgi?2^{20}=1048576
после выхода 80286, который мог в защищённом режиме адресовать до 16Мб памяти (ибо имел уже 24 ноги на адрес) http://www.cyberforum.ru/cgi-bin/latex.cgi?2^{24}=16777216
Ограничение, тем не менее, осталось, так как воспользоваться расширенным адресным пространством можно было только в защищённом режиме, с которым DOS принципиально не дружила. Беда была в том, что благодаря некоторой багофиче 286-й процессор раз переключившись в защищённый режим намертво в нём залипал, и вернуться в реальный мог только через перезагрузку, а интерфейс DOS-а, реализованный не через вызовы подпрограмм, а через программные прерывания (это позволяло сэкономить немаловажные в те годы несколько тактов), нормально работал только в режиме реальном.
Отсюда и величайшее множество программных и аппаратных костылей, вроде плат расширения памяти, работающих через 64К окошечко в основном адресном пространстве (тот самый EMS) и первых попыток написать (тормозной и глючный) менеджер расширенной памяти, работающий в защищённом режиме, — что работало очень плохо из-за вышеописанной багофичи, ибо перезагружать процессор надо было долго и печально через контроллер клавиатуры. из-за этой особенности пошли следующие костыли со всякими EMS, HMA, XMS типами памяти и VCPI и DPMI интерфейсами.
1
boot.ini
0 / 0 / 0
Регистрация: 07.02.2011
Сообщений: 23
29.11.2011, 12:00  [ТС] #7
Огромное спасибо за такую информацию.
0
Mikl___
Автор FAQ
10860 / 5786 / 507
Регистрация: 11.11.2010
Сообщений: 10,797
29.11.2011, 12:04 #8
boot.ini, а главное доступную через GOOGL, Яндекс и т.п.
0
29.11.2011, 12:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2011, 12:04
Привет! Вот еще темы с ответами:

Тип данных "%" в IDA Pro - что это - Assembler
Начал изучать ассемблер (работаю с ARM процессорами) Однажды понадобилось выдрать пару функций из ядра ОС одной платформы (исходников...

Дано текущее время (H M S), где H - это часы, M - это минуты, а S - секунды. Напи- сать программу, определяющую время спустя 1 секунду - Assembler
Дано текущее время (H M S), где H - это часы, M - это минуты, а S - секунды. Напи- сать программу, определяющую время спустя 1 секунду.

Что это за знак >> прочитал что это сдвиг вправо? что он делает - C++
int d=6, c=5,f; f = d >> c; cout<< f; вывод 0

XMS Driver not installed. - BIOS
XMS Driver not installed или неудачная прошивка BIOS'a. Шил из под доса с помощю AWD862.exe (для phoenix) но видимо взял не ту прошивку и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru