INTEL 8088  имеет четыре сегментных  регистра: CS,DS,SS и  ES - для  кодового, данных-, стекового  и дополнительного сегментов  соответственно.  Это их  обычное использование,  но применение этих  регистров может и меняться в соответствии с потребностями программы.  8088 использует регистр  сегмента программы  для идентификации  того сегмента,  который  содержит  выполняемую  в  данный  момент  программу. В сочетании с  указателем команд регистр CS используется  для указания текущей команды.  Каждая выполняемая команда находится  в ячейке, на которую указывает пара регистров CS:IP.

Комбинация сегментного  регистра с  регистром смещения для  указания физического  адреса записывается в  виде сегмент:смещение,  например, CS:IP. Значение сегмента стоит перед двоеточием, смещение  - после. Такая  нотация  используется и  для  регистров, и  для  абсолютных  адресов.  Вы можете  писать  такие адреса как CS:100,  DS:BX, 570:100, или 630:DI.

Регистр сегмента данных (DS)  процессор использует для обычного  доступа к  данным.  Схемы  адресации  для  операндов,  которые мы  рассматривали в  предыдущем пункте, дают 16-битовое смещение, и  в  большинстве случаев для формирования исполнительного адреса процессор комбинирует это смещение с регистром DS.

Регистр сегмента стека  указывает на  системный стек.  Команды  PUSH, POP, CALL и RET управляют данными в стеке в позиции по адресу  SS:SP. Регистр  SP  - указатель  стека  - служит для определения  смещения в стеке.  Кроме  того, сегмент стека  подразумевается по  умолчанию при адресации  с  использованием  регистра BP.  Это дает  доступ к  данным  в стеке  с  использованием в качестве указателя  регистра BP. В  следующей главе  есть пункт о стековых операциях,  который демонстрирует, каким  образом адресация  через BP упрощает  связь с данными в стеке.

Наконец, регистр дополнительного сегмента используется 8088 для  доступа к данным, когда требуется  более одного сегмента.  Обычной  операцией такого рода является  копирование данных из одной области  памяти в другую. Между областями, находящимися не внутри одного и  того же блока памяти размером 64К, невозможно произвести обмен данными, используя единственный сегментный  регистр. Имея в распоряжении дополнительный  сегментный регистр, программа,  как показано на  Фиг. 3.7, может указать одновременно исходный и целевой сегменты.  Регистр DS  указывает  область исходных  данных,  а регистр ES -

                  і                і

                  ГДДДДДДДДДДДДДДДДДДДДґ ДДДДД DS

     Копировать   і     Сегмент -      і

      отсюда      ДДДДДДДДґ             і

            і    і     источник         і

            і    ГДДДДДДДДДДДДДДДДДДДДґ

            і    і                і

            і    і                і

            і    ГДДДДДДДДДДДДДДДДДДДДґ ДДДДД ES

            і    і      Сегмент         і

            і    і                і

       сюда ДДДДДДДДґ    назначения      і

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

        Фиг.3.7 Копирование из сегмента в сегмент

сегмент назначения.  Для  передачи данных  существуют специальные  строковые команды,  которые автоматически используют регистры DS и  ES для указания исходного и целевого регистров.