Последние публикации
стили и дизайн Что выгоднее: покупать горячую воду или ..
17-03-2014
секрет успеха Профессия: риэлтор
25-12-2013
разное Мегаталантливый Мэрилин Мэнсон
25-12-2013
рыбалка и охота баллистический маятник
12-07-2013
Название
Автор
Рубрика

Анекдот
червячок сынок спрашивает у своей мамы:
-мама, а где наш папа?
мама отвечает:
-с мужиками на рыбалку ушел...


компьютерные технологии
Язык Макроассемблера IBM PC
В пособии рассматривается язык макроассеблера для персональных ЭВМ типа IBM PC (язык MASM, версия 4.0) .

адресов (неявного базирования адресов) . В ПК вводится понятие "сегмент памяти". Так называется любой участок памяти размером до 64Кб и с начальным адресом, кратным 16. Абсолютный (20-битовый) адрес A любой ячейки памяти можно представить как сумму 20-битового начального адреса (базы) B сегмента, которому принадлежит ячейка, и 16-битового смещения D - адреса этой ячейки, отсчитанного от начала сегмента: A=B+D. (Неоднозначность выбора сегмента не играет существенной роли, главное - чтобы сумма B и D давала нужный адрес.) Адрес B заносится в некоторый регистр S, а в команде, где должен быть указан адрес A, вместо него записывается пара из регистра S и смещения D (в MASM такая пара, называемая адресной парой или указателем, записывается как S: D) . Процессор же устроен так, что при выполнении команды он прежде всего по паре S: D вычисляет абсолютный адрес A как сумму содержимого регистра S и смещения D и только затем обращается к памяти по этому адресу A. Вот так, заменяя в командах абсолютные адреса на адресные пары, и удается адресовать всю память 16-битовыми адресами (смещениями) .


В качестве регистра S разрешается использовать не любой регистр, а только один из 4 регистров, называемых сегментными: CS, DS, SS и ES. В связи с этим одновременно можно работать с 4 сегментами памяти: начало одного из них загружается в регистр CS и все ссылки на ячейки этого сегмента указываются в виде пар CS: D, начало другого заносится в DS и все ссылки на его ячейки задаются в виде пар DS: D и т.д. Если одновременно надо работать с большим числом сегментов, тогда нужно своевременно спасать содержимое сегментных регистров и записывать в них начальные адреса пятого, шестого и т.д. сегментов.


Отметим, что используемые сегменты могут быть расположены в памяти произвольным образом: они могут не пересекаться, а могут пересекаться и даже совпадать. Какие сегменты памяти использовать, в каких сегментных регистрах хранить их начальные адреса - все это личное дело автора машинной программы.


Как и все регистры ПК, сегментные регистры имеют размер слова. Поэтому возникает вопрос: как удается разместить в них 20-битовые начальные адреса сегментов памяти? Ответ такой. Поскольку все эти адреса кратны 16 (см. выше) , то в них младшие 4 бита (последняя 16-ричная цифра) всегда нулевые, а потому эти биты можно не хранить явно, а лишь



Дата публикации: 15-06-2007
Прочитано: 7646 раз
Страниц: 28
-10-
[<][ 1 | ... | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 ][>]

Дополнительно на данную тему
Компьютерные сети и телекоммуникации
Корпоративная сеть
Корпоративные ЛВС
Компьютерные сети
Turbo Vision
   
Рейтинг@Mail.ru
ENQ.ru © 2005-2012
Генерация страницы: 0.033 сек. и
11 запросов к базе данных за 0.005 сек.
Designed by ZmEi