|
На самом деле, 8-битовые данные вообще
не могут быть помещены в стек. Конечно же, имеются пути обхода
этого ограничения, примером этого является макрос @PushOp из гла-
вы 1. |
системы управления базой данных |
|
|
Данные, относящиеся к большим структурам, иногда могут быть
переданы в стек словами, но если вызываемая программа не должна
получать свои параметры из стека, то передача адреса данных нам-
ного удобней.
- 2-17 -
Передача по адресу
При передаче по адресу вызываемая программа получает только
адрес данных. Доступ к данным осуществляется путем использования
этого адреса. |
avast pro |
|
{img3} |
перевод с английского на русский |
|
Имеется несколько непосредственных преимуществ дан-
ного способа. Первое состоит в том, что если данные не расположены
в различных сегментах, то все адреса могут содержаться в одном
16-битовом значении, являющимся соглашением по использованию ре-
гистра или стека. |
системы управления базой данных |
|
|
офисные программы, avast 4 server, программа резервного копирования, английский словарь, англо русский словарь, .
утилиты резервного копирования
|
Целевая
программа получает число, хранящееся в регистре, либо помещенное
в стек.
Хранение данных в общей памяти может представлять собой не-
сколько специальных случаев. В первом случае данные передаются по
адресу, поскольку вызывающая и вызываемая программы осуществляют
обращение к данным посредством значений общих адресов. В другом
случае данные в общей области могут быть либо значениями, либо
адресами, и проблема упрощается, базируясь на решении о природе
данных в общем блоке. Если данные являются значениями, то они пе-
редаются по значению. Если данные являются адресом, то они пере-
даются по адресу.
Если параметры, содержащие непосредственные данные, передают-
ся в стек, то пользователи микропроцессоров 8086 и 8088 не должны
испытывать страх перед некоторыми дополнительными усилиями, свя-
занными с передачей значений в стек. Пользователи усовершенство-
ванного микропроцессора 80x86 могут использовать инструкцию
PUSH
(переслать в стек непосредственные данные), однако пользователи
других микропроцессоров должны передавать данные в стек через не-
посредственный регистр. Для этого может быть использован макрос
@PushIm, рассмотренный в главе 1, однако, для этого приложения
его сложность не указывается. Если используется вызывающая прог-
рамма, приведенная в листинге 2-1, то для передачи непосредствен-
ных данных в стек доступен регистр BP (указатель базы). Почти во
всех соглашениях по архитектуре микропроцессоров 8086 для этих
целей предназначен регистр AX. Любые непосредственные данные, ко-
торые необходимо переслать в стек, передаются с помощью следующих
двух строк программы:
mov ax,
push ax
Способ передачи параметров по значению унаследовал ограниче-
ние передаваемого значения при использовании регистра и передаче
данных в стек до 16 бит.
|
|
|