鱼C论坛

 找回密码
 立即注册
查看: 3993|回复: 11

被汇编语言的监测点6.1难住了,求高人赐教,感激不尽。

[复制链接]
发表于 2015-12-2 18:51:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求解答啊。。
11.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-2 19:59:19 | 显示全部楼层
push [bx]
  pop cs:[bx]  
  
意思是
先把偏移DS段bx大小位置的16位数压入栈。
然后把栈顶的16位数出栈到 偏移cs段的bx大小位置上去。

也就是借栈来从DS段传一个数到CS段的某个位置上。



这也是我百度的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-2 19:59:58 | 显示全部楼层
我最想问的一点是,上面那个36是怎么算出来的呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-3 13:06:51 | 显示全部楼层
16进制24H,就是十进制36

点评

你确定16进制有H?这个H只是一个转换的  发表于 2015-12-5 16:24
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-3 16:31:47 | 显示全部楼层
1042746391 发表于 2015-12-2 19:59
我最想问的一点是,上面那个36是怎么算出来的呢

dw 0123H,0456H,0789H,0bacH,0defH,0fedH,0cbaH,0987H
dw 0,0,0,0,0,0,0,0,0,0
这里定义了18个字的数据内存空间 18个字*2就是36个字节,所以这36个字节的内存编号应该是0-35,而栈刚开始默认是空的要指向栈底的下一个字节的内存地址,所以就是36了,希望我的解释能让您理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-3 16:34:25 | 显示全部楼层
push是压栈,可以把寄存器的值或者某个内存地址的数据压到栈空间里面,当用[idata]运算符时CPU会默认从DS寄存器中取数据内存地址的段地址,所以DS可以忽略不写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2015-12-4 13:48:39 | 显示全部楼层
爱你没错 发表于 2015-12-3 16:34
push是压栈,可以把寄存器的值或者某个内存地址的数据压到栈空间里面,当用运算符时CPU会默认从DS寄存器中取 ...

真的很感谢,之前不在,大神回复了我都忘记来感谢了,不好意思。谢谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-5 14:43:17 | 显示全部楼层
1042746391 发表于 2015-12-2 19:59
push
  pop cs:  
  

请问第二个或pop ss:[bx]这句话什么情况 这不是栈顶的位置 吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-6 07:52:38 From FishC Mobile | 显示全部楼层
本帖最后由 yundi 于 2015-12-6 10:42 编辑

这题我也没看明白,先写下自己的分析,再来试验:

push [bx] 此时dx=0,就是把0:0~0:15数据入栈。栈段ss=cs,空栈时sp指在10个0后一地址。

pop cs:[bx] 一开始cs:[0]指向dw 0123h位置,bx改变时,依次指向后面的数据0456h,0789h...

两句联起来是,依次获取0:0~0:15的数据,入栈一个,弹出一个,将第一排的dw数据依次改变.栈中始终不超过一个数据.

试验过程:
1.d 0:0 10h 先看一下内存中0:0~0:15的数据
2.r 看一下寄存器当前
3.d cs:0 2Fh 根据2看一下程序内存数据,
4.t 执行到push pop时再看1,3两步.
结果:和自己分析相近,但有2个问题:1,push后,没看到栈中的数据,2,程序运行期间0:0~0:15的值为什么会变?谁改了它?


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-6 16:11:25 | 显示全部楼层
过来可看看  呵呵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-3 16:19:44 | 显示全部楼层
本帖最后由 ufo9876 于 2016-1-3 16:35 编辑

assume cs:code
    code segment
        dw 0123h,,,,,,,,,,,,,,0987h(这里的单位是dw所以定义了16个字节
        dw 0,0,0,0,0,0,0,0,0,0(这里单位一样但定义了10个0也就是20个字节
  bx的值是从上面的dw后第一位开始计算的,两个dw在CPU来看是连续的,所以加起来是36个字节(16进制的24个字节),sp的指针被定义在最后一个零的位置了,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-27 00:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表