Quesito PUSH e POP

di il
1 risposte

Quesito PUSH e POP

Ciao ragazzi ! Sapreste dirmi come scrivere due sequenza di istruzioni che potrebbero sostituire una PUSH e una POP, cioè che svolgono le stesso funzioni, usando come stack pointer un registro ad esempio BX ?

1 Risposte

  • Re: Quesito PUSH e POP

    Guarda che le istruzioni push e pop servono per la gestione dello stack e un registro non ha le dimensioni dello stack!
    comunque se ti accontenti di uno stack della grandezza di un registro per simulare le 2 istruzioni puoi usare:
    mov bx, qui puoi mettere quello che vuoi costante o altro registro ; simulazione push
    mov altro registro o locazione di memoria,bx ;simulazione pop
    oppure se vuoi puoi usare la seguente codifica per simulare uno stack di più grosse dimensioni
    finto stack db 30 dup ?
    mov bx,offset finto stack
    xor si,si
    simulazione pop
    mov ax,si
    xlat o xlatw a secondo se voi usare una word o un byte
    dec si ; se stai lavorando in byte
    sub si,2 ; se stai lavorando in word
    del dato preso ne fai quello che vuoi il dato sta in al se è un byte in ax se è una word
    simulazione push
    mov byte ptr (o word ptr a seconda del tipo di dato che vuoi usare] finto stack[si],registro
    inc si ; se tratti byte
    add si,2 ;se tratti word
    eccoti fatta una grossolana implementazione di uno stack a memoria utente.
Devi accedere o registrarti per scrivere nel forum
1 risposte