На главную Назад
Добро пожаловать, уважаемый посетитель!

Каждый изсегментных регистров имеет свое,отмеченное выше назна-

чение. Внекоторых случаях, однако,более удобна связьс данными

внесегментаданных,например,снебольшойобластьюданных в

программе. В большинстве случаев программа работает с данными в той

области,накоторуюуказываетрегистрDS,но иногда программе

требуетсяссылка налокальную переменную,находящуюся вкодовом

сегментепрограммы.Чтобыосуществитьэтуссылку,приходится

изменять обычное использованиесегментов. Фиг.3.8 показывает такую

органзацию программы.

 

ГДДДДДДДДДДДДДДДДДДДЕДДДДДД CS

іПрограмма иі

іі

ілокальные данные і

іГДДДДДД CS:LOCAL_VALUE

ГДДДДДДДДДДДДДДДДДДДґ

іі

іі

іі

ЕДДДДДДДДДДДДДДДДДДДЕДДДДДД DS

і Основнаяі

іі

і область даныхі

іі

ГДДДДДДДДДДДДДДДДДДДґ

іі

 

Фиг. 3.8 Переназначение CS на локальные данные.

 

Вместоизменения значениярегистра DS,чтобы онуказывал на

программный сегмент, команда изменяетссылку на данные, показывая,

что переменная расположена в сегменте кодов (Code Segment).

 

INCCS:LOCAL_VARIABLE

 

Этоделается спомощью префикса"CS:". Вмашинном языке команда

переопределениясегмента выглядиткак однобайтовыйпрефикс перед

обычной командой машинного языыка. 8088 понимает этот префикс пере-

назначениясегмента иизменяет обычныйспособ вычисления адреса.

Вместо регистра DS процессориспользует для вычисления физического

адресаданныхрегистрCS.Одногопрефиксавкомандевсегда

достаточно, таккак 8088 может адресоватьсяв ней не болеечем к

одной ячейке памяти.

Для нормальногообращения к даннымкоманда может использовать

любой изчетырех сегментных регистров. РегистрDS используется по

умолчанию,то естькогда вкоманде неуказан другойсегментный

регистр,тоиспользуетсяDS.Помните,чтопри использовании в

адресных вычислениях регистра BPсегментом по умолчанию становится

стековый сегмент.Команда может определить илюбой из трех других

сегментныхрегистров, указавего вадресном выражении. Некоторые

команды, правда,не могут пользоватьсяпереназначением сегментов.

Это - командыобработкистрок. Строковаякомандаопределяет

использованиерегистровнеявнымобразом,иононеможет быть

изменено. В главе 4 мы обсудим строковые команды и их специфическое

пользование сегментами.


 

Mail.ru