DOS下重新加载MBR,为啥没能正常重启系统

cxdzxc 2010-05-27 01:49:11
代码如下,这段代码不是放到MBR里运行的,用NASM编译后在DOS里运行,用DEBUG查看,正常加载MBR到0:7C00H了
,程序也能正常跳转到0:7C00H处,但是无法用重新加载的MBR重启系统,为啥?

org 100h

start:
xor ax,ax
mov ds,ax
mov es,ax
mov ax,201h
mov cx,1
mov dx,80h ;DL=驱动器,00H~7FH:软盘;80H~0FFH:硬盘
mov bx,7c00h ;ES:BX=缓冲区的地址
int 13h

xor ax,ax
xor bx,bx
xor cx,cx
xor dx,dx

jmp word 0000h:7C00h
...全文
158 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2010-05-28
  • 打赏
  • 举报
回复
要重启动可以直接jmp到ffff:0。
cnzdgs 2010-05-28
  • 打赏
  • 举报
回复
DOS启动后会在内存低端驻留部分程序,并接管很多中断,所以不能这样直接加载引导程序。
1cctv 2010-05-27
  • 打赏
  • 举报
回复
应该加载分区的引导扇区,而不是MBR吧。
cxdzxc 2010-05-27
  • 打赏
  • 举报
回复
这个连接之前看过的,回答的人说是因为INT 13H被替换了,我在BOCHS里看了下,第一次加载MBR和DOS启动后的INT 13H的入口都是没有变化的
BAYNPU 2010-05-27
  • 打赏
  • 举报
回复

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧