当然是
mov cs:[bx],[sp]
add sp,2
但是只是形式上等同,mov cs:[bx],[sp]不能被编译,只有BX,BP,SI,DI,立即数及他们的组合可以出现在[]中,BX,BP不能同时出现,SI,DI也不能同时出现。
sp可以被认为指针
int *sp;
int a;
...
mov a,[sp]相当a=*sp;
int *sp;
int *a;
...
mov a,sp相当a=sp;
SP表示偏移地址。
pop cs:[bx] 等同于
mov ax, ss:[sp]
add sp,2
mov cs:[bx],ax
mov cs:[bx],sp 送到cs:[bx]的是sp寄存器的内容
寄存器加[] 就把寄存器的内容当做地址用了
不过SP不能做指针
应该是这样
mov bp,sp
mov ax,ss:[bp]
add sp,2
mov cs:[bx],ax
SP 是栈顶指针, pop cs:[bx]就是把cs:[bx]里面的一个word压到栈里面,并且指针往下移一个word,也就是两个字节。
8086堆栈 数据方式:先进后出或者后进先出,pop cs:[bx] 1、将SS:SP指向的内存单元的数据送入AX,然后地址加2,最后再把AX里面的内容送入CS中,
注意出栈的顺序:先推数据,然后地址加2
它为向下生长型的。
mov ax, ss:[sp]
add sp,2
mov cs:[bx],ax