8086汇编语言简单问题

2024-11-27 08:43:57
推荐回答(5个)
回答1:

当然是

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;

回答2:

SP表示偏移地址。

pop cs:[bx] 等同于

mov ax, ss:[sp]
add sp,2
mov cs:[bx],ax

回答3:

mov cs:[bx],sp 送到cs:[bx]的是sp寄存器的内容

寄存器加[] 就把寄存器的内容当做地址用了

不过SP不能做指针

应该是这样

mov bp,sp
mov ax,ss:[bp]
add sp,2
mov cs:[bx],ax

回答4:

SP 是栈顶指针, pop cs:[bx]就是把cs:[bx]里面的一个word压到栈里面,并且指针往下移一个word,也就是两个字节。

回答5:

8086堆栈 数据方式:先进后出或者后进先出,pop cs:[bx] 1、将SS:SP指向的内存单元的数据送入AX,然后地址加2,最后再把AX里面的内容送入CS中,
注意出栈的顺序:先推数据,然后地址加2
它为向下生长型的。
mov ax, ss:[sp]
add sp,2
mov cs:[bx],ax