首页
社区
课程
招聘
初学者《王爽汇编》栈段篇例题困惑,在线等
发表于: 2010-6-8 11:19 5072

初学者《王爽汇编》栈段篇例题困惑,在线等

2010-6-8 11:19
5072
王爽汇编69页栈段篇,段的综述:

比如我们将10000H~1001F安排为代码段,并在里面存储如下代码:
MOV AX,1000H
MOV SS,AX
MOV SP,0020H  ;初始化栈顶
MOV AX,CS      ;这条指令的作用是什么????是干什么用的??
MOV DS,AX         ;设置数据段段地址
MOV AX,[0]
ADD AX,[2]
MOV BX,[4]
ADD BX,[6]
PUSH AX
PUSH BX
POP AX
POP BX

设置 cs=1000h,ip=0,这段代码将得到执行,可以看到,在这段代码中,我们又将10000h~1001fh这段内存,即是代码段又是堆栈段和数据段。

不明白的地方:这段代码中的第四行MOV AX,CS 做什么用??(我知道他是把CS  传递给  AX)可是他是干什么用的?有什么功能?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 780
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
mov ax,cs
+   mov ds,ax
-----------------
     mov ds,cs

就是告诉cpu,ds和cs一样嘛
2010-6-8 11:23
0
雪    币: 178
活跃值: (125)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
哦哦,那么当执行到第六行时,1000段的[0][2][4][6]单元的内容又是什么?他安排了1000:0开始的内存单元为这13行代码,他又把这段内存定义为堆栈段和数据段,还用了这段代码段的【0】【2】【4】【6】单元来进行add运算,那不是出乱子了吗?从1000:0开始的前24字节(大概是24个字节吧)也就是这段代码段的前几个单元存放的是这13行代码,那还能用前面这几个单元来进行运算吗??
2010-6-8 11:54
0
雪    币: 2513
活跃值: (615)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
MS代码段不能直接用来mov,所以要通过AX作为中间变量过度一下
2010-6-8 12:31
0
雪    币: 780
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
[QUOTE=子琳;820814]哦哦,那么当执行到第六行时,1000段的[0][2][4][6]单元的内容又是什么?他安排了1000:0开始的内存单元为这13行代码,他又把这段内存定义为堆栈段和数据段,还用了这段代码段的【0】【2】【4】【6】单元来进行add运算,那不是出乱子了吗?从1000:0开始的前24字节(大概是24个字节...[/QUOTE]

1000段的[0][2][4][6]都是这段代码的机器码.
他这段代码只是为了说明:一段内存,既可作为代码段,也可作为数据段、栈段等,
关键是看cpu中寄存器的设置,即cs,ss,ds的值.
这段代码其实是没有实际意义的
2010-6-8 14:01
0
雪    币: 288
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我来完整地回答lz的问题,还希望能得到你的kx币。
首先第一问题:
MOV AX,CS  这个语句就是说把cs的值赋给ax,这个是和下一个语句( MOV DS,AX )一起用的,合起来就是:把cs值赋给ds。
LZ可能是觉得这样岂不麻烦,干嘛不直接用  mov ds,cs?原因就是因为cs和ds为段寄存器,不能直接相互赋值,必须通过其他的寄存器做中间人。
第二个问题:
lz怕  add 运算弄乱了代码段。在这里是不会发生这种事,因为你说的代码总共占24个字节,而这段代码中对内存进行改变的语句只有:PUSH AX,  PUSH BX。他们是把AX值写入栈,而栈低地址在1000:0020,PUSH AX语句改写 地址1000:001F和1000:0020,PUSH BX改写1000:001D和1000:001E,而这四个单元本来是没有上述任何代码的。因为代码只有24个字节,而改写的是第29-32字节。
2010-6-10 00:23
0
雪    币: 780
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼上说的比较详细了,楼主把kx付给人家吧
2010-6-10 09:31
0
雪    币: 81
活跃值: (40)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
8
6楼说的比较详细了,楼主把kx付给人家吧
2010-6-10 15:18
0
雪    币: 178
活跃值: (125)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
o !明白了。谢谢,改写的PUSH AX PUSH BX
2010-6-13 22:02
0
雪    币: 46
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
哇哇,好多人学习的时候都是看王大哥的书啊,偶也在看,可是自己人品有点问题,一直看的不咋滴
2010-6-22 13:10
0
雪    币: 135
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
一直以为王爽是女的。。。话说我高中同学有个女生,姓管,叫管爽。。
2010-6-22 23:29
0
游客
登录 | 注册 方可回帖
返回
//