说清汇编中的栈操作地址问题
2009-10-12 09:36:29 来源:WEB开发网文章其实很简单,在这里只是想给大家一个提醒。让大家回顾一下曾经的知识而已,大学的知识,现在你还记得么?
另外,善意提醒下博客园团队,虽然我理解商业重要性,但是我个人还是希望把培训学校的广告撤下博客园首页的广告行列中,我相信博客园是一个纯洁的技术博客,大家对博客园都非常信任,我们不希望让太多的初学者受到这个影响,个人意见而已。
我刚才做一个小软件的破解,一直被堆栈的操作弄得昏昏沉沉,在这里写一下也算是加深一下自己的印象,做个总结,也希望能够提醒到大家。
步入正题,说说汇编中的栈操作。
首先,我们先来了解一下汇编中,与栈有关的概念。
1. ss: 堆栈段 stack segment
2. sp: 栈指针 stack point
3. pop: 出栈
4. push: 压栈
相信各位对这些都很清楚不过了。这里,我从一道很简单的题把这个问题说清楚:
用push指令(pop指令)把 a 段中的前 8 个字型数据顺序存储到 b 段中。
让我们先写最简单的程序框架:
1assume cs:codeseg
2
3 a segment
4 dw 1,2,3,4,5,6,7,8,9,0aH,0bH,0cH,0dH,0eH,0fH
5 a ends
6
7 b segment
8 dw 0,0,0,0,0,0,0,0
9 b ends
10
11 codeseg segment
12 start:
13 ---------------------------------
14
15 ---------------------------------
16
17 codeseg ends
18
19end start
20
赞助商链接