next up previous contents
Next: Guardar o endereço de Up: Linguagem Assembly do 8086 Previous: Escrever e invocar procedimentos

A stack do 8086

Na secção anterior vimos que a instrução CALL necessitava de um local para armazenar o endereço de retorno, para que no fim da execução do procedimento a instrução RET o pudesse ir buscar. Esse local é uma zona de memória de alguma forma especial designada por stack.

Além de servir para armazenar o endereço de retorno a stack tem também outras funções, nomeadamente:

O 8086 trata a stack como um segmento de memória que à semelhança dos outros tem no máximo 64kbytes. Existem dois registos específicos para trabalhar com a stack: o registo SS (Stack Segment) que à semelhança dos registos DS e CS deverá conter os 16 bits mais significativos do endereço de inicio da stack, e o SP (Stack Pointer) que contém o deslocamento em relação ao SS da última palavra escrita na stack. A posição ocupada pela última palavra escrita na stack, designa-se habitualmente por topo da stack e é para esta posição que aponta o registo SP.

O SP é automaticamente decrementado dois valores antes de alguma palavra ser escrita na stack, por isso este registo deve ser inicializado com o tamanho da stack e não com zero.



 
next up previous contents
Next: Guardar o endereço de Up: Linguagem Assembly do 8086 Previous: Escrever e invocar procedimentos
Maria Joao Nicolau
1/28/1999