鱼C论坛

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

小甲鱼汇编视频第18集问题3.10有疑问。

[复制链接]
发表于 2013-4-21 10:03:08 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 S_J_ 于 2013-4-22 22:26 编辑

各位前辈您们好:         我在看小甲鱼的汇编语言视频,如题的疑问。
问题如下:
       在10000H处,写入字型数据2266H。  要求:不能使用”MOV内存单元,寄存器“这类指令。
代码如下:
      mov ax, 1000
      mov ss, ax
      mov sp, 2
      mov ax, 2266
      push ax
疑问如下:
    我用win7 32位系统编辑环境,cmd\debug,用 t 命令跟踪到mov ax,2266 下一步就崩溃。试了好几次都是这样,不知道是怎么回事??? 我把SP改为0,之后能运行,push之后SP为FFFE,但是SP不是不应该为0吗??SP为2为什么就不行呢?
附图:
     

崩溃截图

崩溃截图

PS:由于新注册没有多少鱼币,所以不知道怎么给大家奖励,请谅解。(如有建议请提出,谢谢。)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-4-21 10:05:18 | 显示全部楼层
对了,我的机子是64位,所以我安装了虚拟机并安装了win7 32。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-21 13:32:06 | 显示全部楼层
mov sp, 2
mov ax, 2266 ;输入t命令时,push ax指令要会被执行
push ax

当sp=2时,在执行push ax的时候,需进行两部操作,一、sp自减2  二、将ss:sp指向的内存单元的内容替换为ax中的内容。而此时ss:sp是指向ss:0000h单元的。我们知道,一个程序段的前256个字节(00-0ffh)的内容是psp(程序段前缀,存放程序的一些信息),有些系统的这段内容是能够随意修改的,可以通过一些指令来进行访问。但此时ss:0000h所指向的内存单元恰恰是psp的内容。所以系统会有那个提示。当sp=0时自然就不会有了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-4-21 20:47:52 | 显示全部楼层

就是说,我的机子的系统ss:0000h所指向的内存单元PSP不能被修改,对吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-21 23:36:47 | 显示全部楼层
S_J_ 发表于 2013-4-21 20:47
就是说,我的机子的系统ss:0000h所指向的内存单元PSP不能被修改,对吗?

嗯,是的   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-22 02:04:30 | 显示全部楼层
真是难得给力的帖子啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-22 13:39:53 | 显示全部楼层
1971827035 发表于 2013-4-21 13:32
mov sp, 2
mov ax, 2266 ;输入t命令时,push ax指令要会被执行
push ax

SP自减2之后,sp = 0,但是写入内存时是  sp:0 到 sp:1 根本就没有写入到 psp中
我按照这个重新测试了一次,但是没报错
—, —  应该是他调试时内存有其他软件占用导致的。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-22 19:24:12 | 显示全部楼层
重设下cs:ip不就得了,找段空白的内存
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-22 20:09:39 | 显示全部楼层
无回帖,不论坛,这才是人道。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-4-22 21:36:27 | 显示全部楼层
本帖最后由 S_J_ 于 2013-4-22 21:58 编辑
q1120455417 发表于 2013-4-22 13:39
SP自减2之后,sp = 0,但是写入内存时是  sp:0 到 sp:1 根本就没有写入到 psp中
我按照这个重新测试了一 ...

额,我用都是虚拟机,在虚拟机里操作的,没开什么程序。就是直接运行\debug,让后就写入代码。难道是机器原因?我看书上说有些程序因为机器不同运行结果也不同,有些是在这一台机子上可以运行在另一台就不能运行。我没试过哎。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-4-22 22:25:52 | 显示全部楼层
谢谢1971827035,q1120455417,、_归属 三位了。
问题解决了,应该就是那个地址被占用或不能修改,我换其他地方都可以存放数据就它不行。谢谢各位了。。:P
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-23 12:30:51 | 显示全部楼层
q1120455417 发表于 2013-4-22 13:39
SP自减2之后,sp = 0,但是写入内存时是  sp:0 到 sp:1 根本就没有写入到 psp中
我按照这个重新测试了一 ...

psp指的是哪段内存知道吗?我没有说写入到了psp。汇编程序的执行跟机器本身就有关系,不要说的那么绝对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-10-7 20:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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