Используя последовательность из n команд рор хх

Лучше всего это делать в вызывающей программе сразу после возврата управления из процедуры;

2) откорректировать регистр указателя стека sp на величину 2*n, например, командой

add sp,NN, где NN=2*n, и n – количество аргументов.

Лучше делать в вызывающей программе;

3) используя машинную команду ret n в качестве последней исполняемой команды в процедуре, где n – количество байт, на которое нужно увеличить содержимое регистра esp/sp после того, как со стека будут сняты составляющие адреса возврата. Этот способ аналогичен предыдущему, но выполняется автоматически микропроцессором.


Таким образом, если необходимо работать с процедурой типа near, то для доступа к arg_n достаточно сместиться от содержимого bp на 4, а для доступа к arg_{n-1} – на 6 байт и т. д.

Для far процедур, из за того, что при вызове процедуры дальнего типа в стек записывается полный адрес возврата, то есть содержимое регистров cs и ip для доступа к arg_n команда будет выглядеть так: mov ax,[bp+6], а для arg_{n-1}, соответственно mov ax,[bp+8] и т.д.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: