请问汇编语言中,当进行压栈操作时,ss会随着sp的改变而改变吗

如题所述

1、汇编语言中,进行压栈操作,ss段寄存器(ss段选择子)的值不会随sp(ESP/RSP)的改变而改变。
2、在实模式或虚拟8086模式,压栈操作是压入两个字节数据,SP==SP-2.
3、在32位保护模式,压栈操作是压入四个字节数据,ESP==ESP-4
4、例如同样是PUSH ES指令,在实模式或虚拟8086模式,SP==SP-2.,而在32位保护模式,ESP==ESP-4
5、在64位模式,在默认操作数大小是64位时,PUSH FS 指令,RSP==RSP-8。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-26
不会
ss是段位移
sp是堆栈偏移位移
第2个回答  2012-06-26
SS不变,push时,sp-2,pop时,sp+2

请问汇编语言中,当进行压栈操作时,ss会随着sp的改变而改变吗
1、汇编语言中,进行压栈操作,ss段寄存器(ss段选择子)的值不会随sp(ESP\/RSP)的改变而改变。2、在实模式或虚拟8086模式,压栈操作是压入两个字节数据,SP==SP-2.3、在32位保护模式,压栈操作是压入四个字节数据,ESP==ESP-4 4、例如同样是PUSH ES指令,在实模式或虚拟8086模式,SP==SP-...

汇编语言基础问题,第13题,求解(SS):(SP)是什么意思,还有就是怎么...
在push操作时sp寄存器是递减的(减2),从2000h递减2即为1ffeH,刚压栈操作,则栈指针指向刚压入的数据即0020H。所以D是正确的。

汇编栈为空时 ss:sp 为什么要使sp指向最低成子单元-2 在压入数据 sp+...
《汇编语言》第二版,书里的原话:任意时刻,SS:SP指向栈顶元素,当栈为空的时候,栈中没有元素,也就不存在栈定元素,所以SS:SP只能指向栈的最底部单元下面的单元,该单元的偏移地址为栈最底部的字单元的偏移地址+2。不知道你看懂了没 很好理解的 ...

汇编语言中的PUSH的用法
PUSH的操作过程是: (SP)<--(SP)-2,((sp))<--OPRD 即先修改堆栈指针SP(压入时为自动减2),然后,将指定 的操作数送入新的栈顶位置。此处的((SP))<--OPRD,也可以理解为:[(SS)*16+(SP)]<--OPRD 或 [SS:SP]<--OPRD 示例: PUSH DX PUSH BP PUSH CS PUSH DATA1 PUSH ALFA...

汇编语言中的PUSH的用法
PUSH的操作过程是:(SP)<--(SP)-2,((sp))<--OPRD 即先修改堆栈指针SP(压入时为自动减2),然后,将指定 的操作数送入新的栈顶位置。此处的((SP))<--OPRD,也可以理解为:[(SS)*16+(SP)]<--OPRD 或 [SS:SP]<--OPRD 示例:PUSH DX PUSH BP PUSH CS PUSH DATA1 PUSH ALFA[BX...

关于栈和sp寄存器的一点疑问
所以ss和ebp如果按照这个栈的话都应该指向0x1FFFF,而初始状态如果是空栈的话,栈顶指针esp应该等于栈底指针ebp,所以空栈时esp=ebp=ss=0x1FFFF(当然三十二位系统里面ss只是一个指向段表的指示器,不是直接指向那个地址)。当有字压栈的时候sub esp 2,esp应该指向0x1FFFD ...

关于汇编call指令的一个问题
第一个问题。10h,记得后面有h。意思是16进制。10h=16。堆栈是自下而上的。所以把IP压入后是10H-2=0Eh 。第二个问题。call的意思是把当前CS:IP压入SS:SP指向的栈中。然后跳到DS:[adress]所存放的地址处。王爽书里面的压栈的确是反着来的。他有详细的讲是如何压的,你可以认真翻翻,这不...

汇编语言中,PUSH和POP对CS:IP有什么影响?
PUSH和POP指令一般用在调用子程序之前用来保护现场,以便返回时返回到正确的代码处。在中断时,系统也默认的会将一些寄存器的值压入堆栈。PUSH指令,将IP压栈,用于保存断点,SP先减2指向栈顶,再将IP(16位地址,即一个字)低八位存进低地址((SP)=IP低八位)),高八位存进高地址(SP+1)=IP...

汇编(关于PUSH的SP问题)
PUSH入栈操作,遵守FILO原则(first in last out),而且必须是字操作,MOV AX,N1 PUSH AX 这是第一次进行压栈,SP=SP-2,存储器是8位的,而AX是16位的,高八位即AH存在高地址,而低八位AL存在低地址,SS=3000H,SP-2=00FEH 物理地址=SS*10H+SP=300FEH MOV AX,N2 PUSH AX 同理SP=SP-...

急!汇编语言中,为什么往堆栈中压入一个16位数(即一个字)时,栈顶指针是...
入栈是减二 出栈是加二 你自己可以在debug里面试试

相似回答