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.