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

汇编语言的堆栈段是什么意思

哪位高手给我指点下哈 通俗点讲一下,讲的深了我听不懂的 呵呵呵 是不是每个汇编程序都得用到堆栈段呀?还是只是某些汇编程序才需要堆栈段,而有的不需要?谢谢啦
追问:能否给举个例子哈 在什么样的场合下需要堆栈段?请指教
答案:程序:堆栈兄,哥们手忙不过来,一些东西存你那。过会儿用到,哥们再到你这来取。
堆栈:存是可以。但怎么存,怎么取,得有个章法,得听老子的。
程序:怎个章法?
堆栈:老子可没那空帮你们整来整去。 给老子东西,老子就放最上面;找老子要东西,就给你最上面的。整乱了,老子一概不负责。
(程序偷偷来句,去你妈的!)
其他:NO!很多程序都不必用到那个堆栈段!那个段一般是用来保护现场数据作用。 一般是局部变量需要用到堆栈
像
_MyProc   proc
  local  @nNum:byte
 .......
 ........
end     proc

还有函数的参数。
还有CALL时要记下各寄存器的值,还有当前CS,IP的值等,都要用堆栈存储。

如果你没有子程序,没有局部变量,也许不需要用吧。不过外面的SHELL也可能要用。 简单的说,从C语言角度来看,函数内定义的局部变量,函数调用时的参数都是在堆栈中的。堆栈的主要功能也就是实现函数调用和返回、局部变量。 这个问题要弄懂还是要把你的课本要看全面,课本是基础,看书的时候要从头到尾的看,你心中有个整体的概念,这样理解起来就快多了。 恩,个人意见发表一下,堆栈,对于汇编来说,有系统定义的堆栈,这个不用你操心,就是你在汇编中不定义,系统也定义,这个堆栈主要是怕你调用中断啊,调用了子程序啊,他要压站,压的是cs,ip这两个数据,但是你要是自己定义了,那么你可以使用自己的,可以通过堆栈给子程序传递参数啊,或者保存一些你自己需要的数据。至于需要不,这个看你的习惯,你要很习惯利用堆栈来坐数据的转换,你就定义,要是你不喜欢,那开普通的内存空间照样搞定。凡是系统都给你提供一些工具,看你喜欢什么,就使用什么 堆栈段和一般的内存单元段一样,只是用处不一样,一般用在子程序调用或中断时保护现场之类,配合堆栈指针SP一起用,先进后出,后进先出;其实就是内存单元段 

上一个:汇编语言中执行 MOV AH,02H INT 21H 后AL的值为什么会改变?急,在线等!
下一个:汇编语言 怎么将输入的1个小于256的数字放入ax寄存器

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