Рассмотрим это на конкретном примере. Итак, регион А находится в адресном пространстве непосредственно за областью в 640 Кб, то есть, говоря иными словами, адрес его должен превышать 655359 байт (учитывая, что отсчет адресов идет с 0, число 655359 как раз соответствует 640 Кб) в десятичной нотации или 9FFFF в шестнадцатеричной. С учетом вышесказанного, адрес региона с номером А в адресном пространстве будет выглядеть как А000. С точки зрения процессора, этот адрес будет выглядеть как А0000, т.е А000 ´ 16 (10 в шестнадцатеричной нотации). Это объясняется тем, что адрес, задаваемый в программе, может быть выражен 16-разрядным числом, т.е. содержать не более 4-х шестнадцатеричных цифр. Адресная шина процессора имеет 20 разрядов, поэтому перед вычислением адреса он переводится из 16-разрядной формы в 20-разрядную путем добавления справа еще одной шестнадцатеричной цифры, что эквивалентно умножению на 10 в шестнадцатеричной нотации или на 16 – в десятичной. Выполнив теперь перевод полученного адреса региона А – А0000 в десятичную форму получим число 655360, что доказывает, что регион с номером А находится как раз над границей памяти DOS в 640 Кб.
Выполнив аналогичные вычисления для региона с номером С, получим следующие результаты:
1. Добавим 3 шестнадцатеричных цифры справа к номеру региона, получим С000.
2. Для вычисления адреса по правилам процессора 8086 умножим этот адрес на 16: С000 ´ 16 = С0000.
3. Переведем его в десятичную форму: С0000 = 786432
4. Посчитаем сумму адресов, занимаемых предыдущими 12 регионами (0 - B): 12 * 65536 = 786431 (отсчет идет с 0!).
Таким образом, вновь доказана корректность вычислений и удобство принятого обозначения регионов. Каждый 64-килобайтный регион может быть дополнительно поделен на 16 областей размером в 4 Кб, которые также помечаются шестнадцатеричными числами. Например, область А разбивается на дополнительные области от 0 до F: A0, A1, ... , AF. В отношении вычисления адресов этих дополнительных областей действует то же правило, что и для регионов, с той разницей, что к номеру области добавляются 2 цифры, а не 3, как в случае региона. Например, адрес области A7 может быть вычислен следующим образом:
1. Добавляем 2 цифры к номеру области: A700.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.