Оператор Assume
После того как сегменты в программе определены, ассемблер должен
узнать, как будут установлены сегментные регистры во время
выполнения программы. В примере на Фиг. 3.9 всего три сегмента, но
болшая программа может иметь намного больше. Располагая всего
четырьмя сегментными регистрами, большая программа может адресо-
ваться одновременно только к части доступных сегмментов. Ассемблеру
необходимо сообщить, к каким именно сегментам происходит адресация
во время выполнения. Это делается с помощью оператора ASSUME
который описывает для ассемблера установки сегментных регистров.
Программист должен связать каждый сегментный регистр с тем
сегментом, на который тот в данный момент указывает.
Фиг. 3.9 иллюстрирует такие сегментные операции. В этом примере
имеется три сегмента: DATA, BUFFER и CODE. Имена для них выбраны
произвольно. Их выбирает программист, а для ассемблера они не имеют
значения. Например, вы можете назвать сегмент именем CODE, а
использовать его только для данных и наооборот. Лучше всего, конеч-
но, называть сегменты так, чтобы их имена имели какой-то смысл в
данной программе. В нашем примере сегменты DATA и BUFFER оба имеют
внутри ячейку данных. Вряд ли реальная программа будет задавать
сегмент лишь с одной ячейкой памяти, но сейчас это служит для
примера. Если программа обращается к данным во многих участках
адресуемого в 8088 пространства, то ей требуется много определений
сегментов. Например, программа управления устройствами доступа IBM
PC может обращаться к памяти в системной области данных,
устанавливать векторы прерываний в начале памяти и выполняться как
программа в любом другом месте. Каждая из этих областей является
сегментом и должна быть определена в программе.
Утверждение ASSUME на Фиг. 3.9 предписывает ассемблеру работать
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий