Архитектура микропроцессоров и их программирование. Карягин А.П. - 11 стр.

UptoLike

Составители: 

11
тельно сегментного регистра DS, тогда как DI всегда адресуется к памяти от-
носительно сегментного регистра ES. Когда регистры SI и DI используются в
качестве указателей на ячейки памяти в других инструкциях (не строковых), то
они всегда адресуются к памяти относительно регистра DS. Например:
:
cld
mov dx,0
mov es,dx
mov di,2048
stosb
:
Строковая инструкция STOSB используется здесь и для сохранения
значения в регистре AL (по адресу памяти, на который указывает регистр DI),
и для добавления к содержимому регистра DI 1.
Регистр BP также может использоваться в качестве указателя на ячейку
памяти, но здесь есть некоторые отличия. Регистры BX, SI и DI обычно ссы-
лаются на память относительно сегментного регистра DS (или, в случае ис-
пользования в строковых инструкциях регистра DI, относительно сегментного
регистра ES), а регистр BP адресуется к памяти относительно регистра SS (сег-
ментный регистр стека).
Стек находится в сегменте, на который указывает регистр SS. Напри-
мер:
:
push bp
mov bp,sp
mov ax,[bp+4]
:
Здесь выполняется обращение к сегменту стека для загрузки в AX пер-
вого параметра, передаваемого при вызове Турбо Си подпрограммы на Ас-
семблере. Если говорить кратко, то регистр BP создан для обеспечения работы
с параметрами, локальными переменными другой адресации к памяти с ис-
пользованием стека.
Регистр SP называется также указателем стека. Это "наименее общий"
из регистров общего назначения, поскольку он практически всегда использует-
ся для специальной цели - обеспечения стека. Стек - это область памяти, в
которой можно сохранять значения и из которой они могут затем извлекаться
по дисциплине "последнийпришелпервый - ушел" (LIFO). То есть по-
следнее сохраненное в стеке значение будет первым значением, которое вы
получите при чтении из стека.
Регистр SP в каждый момент времени указывает на вершину стека. Дей-
ствие, состоящее в занесении значений в стек, называют также "заталкивани-
ем" (pushing) в стек. В самом деле, инструкция PUSH используется для зане-
сения значений в стек. Аналогично, действие, состоящее в извлечении (выбор-
ке) значений из стека, называют также "выталкиванием" (popping) из стека
(для этого используется инструкция POP).
тельно сегментного регистра DS, тогда как DI всегда адресуется к памяти от-
носительно сегментного регистра ES. Когда регистры SI и DI используются в
качестве указателей на ячейки памяти в других инструкциях (не строковых), то
они всегда адресуются к памяти относительно регистра DS. Например:
         :
         cld
         mov dx,0
         mov es,dx
         mov di,2048
         stosb
         :
       Строковая инструкция STOSB используется здесь и для сохранения
значения в регистре AL (по адресу памяти, на который указывает регистр DI),
и для добавления к содержимому регистра DI 1.
       Регистр BP также может использоваться в качестве указателя на ячейку
памяти, но здесь есть некоторые отличия. Регистры BX, SI и DI обычно ссы-
лаются на память относительно сегментного регистра DS (или, в случае ис-
пользования в строковых инструкциях регистра DI, относительно сегментного
регистра ES), а регистр BP адресуется к памяти относительно регистра SS (сег-
ментный регистр стека).
       Стек находится в сегменте, на который указывает регистр SS. Напри-
мер:
         :
         push bp
         mov bp,sp
         mov ax,[bp+4]
         :
       Здесь выполняется обращение к сегменту стека для загрузки в AX пер-
вого параметра, передаваемого при вызове Турбо Си подпрограммы на Ас-
семблере. Если говорить кратко, то регистр BP создан для обеспечения работы
с параметрами, локальными переменными другой адресации к памяти с ис-
пользованием стека.
       Регистр SP называется также указателем стека. Это "наименее общий"
из регистров общего назначения, поскольку он практически всегда использует-
ся для специальной цели - обеспечения стека. Стек - это область памяти, в
которой можно сохранять значения и из которой они могут затем извлекаться
по дисциплине "последний – пришел – первый - ушел" (LIFO). То есть по-
следнее сохраненное в стеке значение будет первым значением, которое вы
получите при чтении из стека.
       Регистр SP в каждый момент времени указывает на вершину стека. Дей-
ствие, состоящее в занесении значений в стек, называют также "заталкивани-
ем" (pushing) в стек. В самом деле, инструкция PUSH используется для зане-
сения значений в стек. Аналогично, действие, состоящее в извлечении (выбор-
ке) значений из стека, называют также "выталкиванием" (popping) из стека
(для этого используется инструкция POP).
                                                                           11