|
|
|
|
Передача по значению
Чаще всего передача параметров в языке Ассемблер выполняется путем передачи значения. При этом способе передачи в вызывающую программу передаются
действительные данные (их значения). Целевая программа получает число, хранящееся в регистре, либо помещенное в стек.
Хранение данных в общей памяти может представлять собой несколько специальных случаев. В первом случае данные передаются по адресу, поскольку
вызывающая и вызываемая программы осуществляют обращение к данным посредством значений общих адресов. В другом случае данные в общей области могут
быть либо значениями, либо адресами, и проблема упрощается, базируясь на решении о природе данных в общем блоке. Если данные являются значениями, то
они передаются по значению. Если данные являются адресом, то они передаются по адресу.
Если параметры, содержащие непосредственные данные, передаются в стек, то пользователи микропроцессоров 8086 и 8088 не должны испытывать страх перед
некоторыми дополнительными усилиями, связанными с передачей значений в стек. Пользователи усовершенствованного микропроцессора 80x86 могут использовать
инструкцию
(переслать в стек непосредственные данные), однако пользователи других микропроцессоров должны передавать данные в стек через непосредственный регистр.
Для этого может быть использован макрос @PushIm, рассмотренный в главе 1, однако, для этого приложения его сложность не указывается. Если используется
вызывающая программа, приведенная в листинге 2-1, то для передачи непосредственных данных в стек доступен регистр BP (указатель базы). Почти во всех
соглашениях по архитектуре микропроцессоров 8086 для этих целей предназначен регистр AX. Любые непосредственные данные, которые необходимо переслать в
стек, передаются с помощью следующих двух строк программы:
mov ax,<immediate_data>
push ax
|
|
|