当前位置:编程学习 > 汇编语言 >>

请问ss,bp,sp具体怎么配合使用啊

已知(SS)=2000H,(BP)=0016H,堆栈中有8个字节数据,问栈顶的物理地址是什么? 此时(sp)=? 谢谢
答案:BP为基地址。SP为堆栈的偏移地址
SS是堆栈段地址
物理地址表示形式为SS:SP
所以如果不存放数据时物理地址为:SS:SP=2000h:0016h
当初放了8字节数据后(堆栈单元放的是16位数据)所以地址加4即SS:SP=2000h:001ah
其他:要先知道堆栈的大小才能计算。SS指向的是堆栈段的起始地址,而不是堆栈的地址,用它加上堆栈的容量就得出栈底的位置,然后再减去堆栈中数据的个数,就得出SP的位置了。
BP主要在编写子程序时才用。因为子程序中经常使用局部变量,而局部变量的空间是在堆栈上申请的,这时就先让BP=SP,然后每定义一个局部变量,就把它压入堆栈。等子程序结束时,只要简单地一句mov sp, bp就可以从堆栈找到原先的返回地址,同时也归还了局部变量所占的空间。然后用ret指令,顺利返回。 

上一个:汇编特征码
下一个:CLD MOV SI,2400H MOV DI,1200H REPE CMPSB AND CX,0FFH JZ AGIN DEC SI MOV BX,SI MOV AL,[SI]

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,