Параметри за преминаване - Studiopedia
Програмистът има пълна свобода при избора как да предава входните параметри на подпрограмата и изходните параметри от подпрограмата, важно е само обработката на параметрите в подпрограмата да е в съответствие с настройката на параметрите в извикващата програма.
Най-често използваното предаване на параметри е чрез регистри или през стека.
Когато преминава през регистри, програмата въвежда входните параметри в някои регистри на процесора преди повикването и след връщане избира стойностите на резултата от регистрите.
За достъп до параметри, предадени на стека, следните команди обикновено се изпълняват в началото на подпрограмата:
натиснете BP mov BP, SP
Можете да използвате смесени начини за предаване на параметри. По-специално, за функционалните подпрограми е удобно да връщат резултата в регистър, дори ако входните параметри са получени в стека.
Помислете за пример. Нека подпрограма от тип near има два параметъра на думата, предадени в стека. В този случай, след извикване на подпрограмата, запазване и зареждане на BP регистъра (вижте по-горе), стекът ще изглежда така:
Ако опишем следната структура:
тогава параметрите могат да бъдат достъпни с помощта на командите:
mov AX, __Param1[BP]; заредете стойността на първия параметър в AX mov BX, __Param2[BP]; заредете стойността на втория параметър в BX
За да се улесни почистването на стека от предадените параметри, се използва вариант на командата ret с операнд - броят байтове, които трябва да бъдат премахнати от стека веднага след връщането. Това позволява на извикващата програма да не се тревожи за премахването на параметрите от стека. За нашия пример командата за връщане от подпрограма може да изглежда така:
Не намерихте това, което търсихте? Използвайте търсачката:
Деактивирайте adBlock! и актуализирайтестраница (F5)много необходима