汇编语言中SP寄存器是什么?
2个回答
展开全部
汇编语言中SP是堆栈寄存器。堆栈——是一段按照后进先出(LIFO)原则组织起来的连续存储区域。用于程序保存或恢复数据,或用于子程序调用及中断响应时保护与恢复现场。SP是堆栈指针寄存器,存放着当前堆栈栈顶地址。
一般情况下,对SP有影响的指令,对SP的操作都是隐式的,就是说SP并不出现在指令操作数当中。
例如:
PUSH
AX;累加器AX的内容压栈保存,(SP)=(SP)-2
POP
BX;堆栈内保存的累加器AX的内容弹出到BX寄存器中,(SP)=(SP)+2
使用PUSH、POP指令使用堆栈,要注意进出栈的匹配,否则将引起不可预期的后果。
一般情况下,对SP有影响的指令,对SP的操作都是隐式的,就是说SP并不出现在指令操作数当中。
例如:
PUSH
AX;累加器AX的内容压栈保存,(SP)=(SP)-2
POP
BX;堆栈内保存的累加器AX的内容弹出到BX寄存器中,(SP)=(SP)+2
使用PUSH、POP指令使用堆栈,要注意进出栈的匹配,否则将引起不可预期的后果。
展开全部
指针寄存器
32位cpu有2个32位通用寄存器ebp和esp。其低16位对应先前cpu中的sbp和sp,对低16位数据的存取,不影响高16位的数据。
寄存器ebp、esp、bp和sp称为指针寄存器(pointer
register),主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。
指针寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。
它们主要用于访问堆栈内的存储单元,并且规定:
bp为基指针(base
pointer)寄存器,用它可直接存取堆栈中的数据;
sp为堆栈指针(stack
pointer)寄存器,用它只可访问栈顶。
32位cpu有2个32位通用寄存器ebp和esp。其低16位对应先前cpu中的sbp和sp,对低16位数据的存取,不影响高16位的数据。
寄存器ebp、esp、bp和sp称为指针寄存器(pointer
register),主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。
指针寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。
它们主要用于访问堆栈内的存储单元,并且规定:
bp为基指针(base
pointer)寄存器,用它可直接存取堆栈中的数据;
sp为堆栈指针(stack
pointer)寄存器,用它只可访问栈顶。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询