Turbo Assembler 3.0. Руководство пользователя

         

Использование для адресации к стеку регистра BP


Первый и наиболее часто используемый метод доступа к пара- метрам, передаваемым из Турбо Паскаля в Турбо Ассемблер, заключа- ется в том, чтобы использовать для адресации к стеку регистр BP. Например:

CODE SEGMENT ASSUME CS:CODE MyProc PROC FAR ; procedure MyProc(i,j : integer); PUBLIC MyProc j EQU WORD PTR [bp+6] ; j находится над сохраненным BP ; и адресом возврата i EQU WORD PTR [bp+8] ; i располагается над j push bp ; нужно сохранить BP вызывающей ; программы mov bp,sp ; BP теперь указывает на вершину ; стека mov ax,i ; адресуемся к i через BP . . .

При вычислении смешений в стеке параметров, к которым мы об- ращаемся таким образом, нужно помнить, что 2 байта используются для сохраненного регистра BP.

Обратите внимание на использование в данном примере присваи- ваний. Они позволяют сделать программу более понятной. У них есть только один недостаток: поскольку для выполнения такого рода при- сваиваний можно использовать только директиву EQU (а не =), в данной исходном файле Турбо Ассемблера вы не сможете переопреде- лить идентификаторы i и j. Один из способов обойти это заключает- ся в том, чтобы использовать более описательные имена параметров, чтобы они не повторялись, либо можно ассемблировать каждую подп- рограмму Ассемблера отдельно.



Содержание раздела