改正非法内存 mov ip spbp,sp

mov bp,sp以后就默认BP为SS的偏移地址吗?_百度知道微机原理 第4章作业答案_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
微机原理 第4章作业答案
上传于||文档简介
&&陈​慈​发​版
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩6页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢习题及参考解答_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
习题及参考解答
上传于||文档简介
&&北​邮​版​《​微​机​原​理​与​接​口​技​术​》​课​后​题​答​案
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩3页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢2021人阅读
各个寄存器的作用:/question/.html?push=ql
/awpatp/archive//1772725.html
已知(SS)=2000H,(BP)=0016H,堆栈中有8个字节数据,问栈顶的物理地址是什么?
BP为基地址。SP为堆栈的偏移地址
SS是堆栈段地址
物理地址表示形式为SS:SP
所以如果不存放数据时物理地址为:SS:SP=h
当初放了8字节数据后(堆栈单元放的是16位数据)所以地址加4即SS:SP=ah
要先知道堆栈的大小才能计算。SS指向的是堆栈段的起始地址,而不是堆栈的地址,用它加上堆栈的容量就得出栈底的位置,然后再减去堆栈中数据的个数,就得出SP的位置了。
BP主要在编写子程序时才用。因为子程序中经常使用局部变量,而局部变量的空间是在堆栈上申请的,这时就先让BP=SP,然后每定义一个局部变量,就把它压入堆栈。等子程序结束时,只要简单地一句mov sp, bp就可以从堆栈找到原先的返回地址,同时也归还了局部变量所占的空间。然后用ret指令,顺利返回。 BSS段:BSS段()通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。数据段:数据段()通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。代码段:代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。堆(heap):堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)栈(stack):栈又称堆栈, 是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的先进先出特点,所以栈特别方便用来保存/恢复调用现场。从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:315800次
积分:4367
积分:4367
排名:第4948名
原创:112篇
转载:63篇
评论:36条
(1)(2)(1)(2)(2)(1)(1)(5)(1)(5)(14)(3)(17)(2)(6)(2)(46)(31)(17)(15)(1)mov bp,是把sp的值给bp吗?
小苏wan774
是的,类似于:bp=
为您推荐:
其他类似问题
扫描下载二维码

我要回帖

更多关于 mov bp al 的文章

 

随机推荐