小弟我在dos下将MBR读到7c00处,怎么才能让他再自己启动起来
发布时间:2010-06-14 15:33:38 文章来源:www.iduyao.cn 采编人员:星星草
我在dos下将MBR读到7c00处,如何才能让他再自己启动起来?
我的机器启动到dos之后,我再把MBR读到0000:7c00处。
我想让机器回到刚启动的步骤,该怎么操作呢?
我试过了读过去之后,再jmp 0000:7c00也是不行的。
我估计也没这么简单,但是需要高手来指点一下呀。
------解决方案--------------------
JMP 0FFFFH:0 重启机器
------解决方案--------------------
记得bios int 19h去执行 0000:7c00的loader代码的
------解决方案--------------------
jmp 0000:7c00
是可以的。我写操作系统的时候都是这样做的。不过如果已经运行了DOS再这样做的话就不好使了。因为在dos启动的时候可能会修改BIOS里面的某些参数,比如可用内存的数量。这样就会在你模拟启动的时候出现问题,因为你的模拟启动没有进行硬件检测。还有就是DOS的问题了,鬼知道它在启动的时候都是干了些什么。你可以使用Bochs调试一下,看看到底运行到那一步出现的问题。
我以前就是这样做的,最后才找到问题的所在。
------解决方案--------------------
天哪你通过这种方法调试也太慢了。建议你使用Bochs,绝对好用
------解决方案--------------------
你要这样恢复:
1. 数据读入到一个空闲的内存区域;
2. cli
3. rep movsb从buffer到[0:0]的复制;
4. sti
5. ds=es=ss=0,jmp 0000:7c00
------解决方案--------------------
jmp 0000:7c00是可以的!!!
------解决方案--------------------
Jmp不行好像还可以:
push 7c00
push 0
ret
吧。
------解决方案--------------------
jmp和retf都可以,关键是要先恢复引导时的状态。
------解决方案--------------------
你这样已经加载了OS了,OS对低位内存都是有只读保护的…… 建议用个虚拟机 VMware Workstation
------解决方案--------------------
jmp指令用机器码直接写。
.... 复制mbr到000:7c00
dw 0eah
dw 0000,7c00h
------解决方案--------------------
还是建议楼主使用bochs跟踪单步调试,看看到底是什么原因。仅靠猜测是很难找到原因的。而且也很难找到真正的问题所在,就像买彩票一样难以成功。
------解决方案--------------------
建议楼主把MBR读到其它内存位置,然后jmp过去,试试结果会怎样。
------解决方案--------------------
int 13好像没有改吧,而且引导扇区的内容似乎也没变。bochs这个东东是个洋玩音儿,我也不会用。^_^
------解决方案--------------------
在debug下面用jmp 0000:7c00好像跳转不了,在cmd-> debug下面可以
jmp指令用机器码直接写。
.... 复制mbr到000:7c00
dw 0eah
dw 0000,7c00h
在debug下面是不行的,死机,如果把上面的代码弄到自己的程序中应该可以吧!
dos启动后用debug 的 d 7c00 7c10查看7c00处的代码是否还是引导记录中的内容。如果不是,就只有自己读主引导记录了。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
MSN通讯协议逆向
MSN 进行数据通讯中,据说用了TWN认证,通过SSL/TLS连接到login.passport.com和 loginnet.passportr.com 等服务器。
...
-
win7+64位cpu的exe反汇编问题,多次问人,无果
vs20008写的一个很简单的c++控制台程序
平台是:win7 64位操作系统
用od进行反汇编,...
-
可能很白痴的问题:想给ax赋一个负数怎么做?
比如想要赋一个-5给ax,是不是只有求出这个-5的补码,然后mov进这个补码这一种方法?
------...
-
居然显示不出负数来,悲剧
Assembly code
.386
.model flat,stdcall
include kernel32.inc
includelib kernel32.lib
include ms...
-
call far ptr '标号'的问题[在线等答案]
为什么ax会是1010?不是1006??求详细解答
难道call far ptr不是执行了push cs,push ip,jm...
-
CPU的程序计数器PC和指令指针寄存器IP是一个东西吗?
看上去好像功能完全一样,又觉得不应该是一回事,求教
------解决方案----------...
-
菜鸟问题,高人来帮忙
编程,统计data段中数值为8的字节的个数,用ax保存结果
我的代码
Assembly code
assume cs:code,ds:data
data se...
-
一个死循环问题
什么原因造成内循环才刚循环一次还没完,到了loop s1的时候cx突然变成F?
Assembly code
assume cs:codesg,ds:datas...
-
初学MUL乘法指令,写法求解释下
MUL r8/m8 ;无符号字节乘:AX←AL×r8/m8
MUL r16/m16 ;无符号字乘:DX.AX←AX×r16/...
-
汇编如何 取到8051的P0口的内容呢?
Assembly code
ORG 0000H
AJMP START
ORG 0030H
START: MOV P0,#00H
LOOP: ...