首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

还是MBR的有关问题

2012-04-09 
还是MBR的问题写了个简单的MBR小程序,将原MBR写入到了0/0/3扇区,程序写到了0/0/1扇区,以下是源程序,这个MB

还是MBR的问题
写了个简单的MBR小程序,将原MBR写入到了0/0/3扇区,程序写到了0/0/1扇区,以下是源程序,这个MBR仅实现将自身转移到0600处后读取执行原MBR,并且可以正常启动XP,但,当我在程序中间加入了mov eax,1和CPUID语句后,系统便无法正常启动了。
请问CPUID对系统的启动有什么影响?我该怎么做才能既使用CPUID,又能正常启动呢?

Assembly code
CLIXOR AX,AXMOV SS,AXMOV SP,7C00hMOV SI,SPPUSH AXPOP ESPUSH AXPOP DSSTICLDMOV DI,0600hMOV CX,0100hREPNZMOVSWJMP 0000:061Dh;mov eax,1;cpuidmov ax,0  mov es,ax ;es:bx指向接收的内存区mov bx,7c00hmov ax,0201h ;ah=2表示读 al=1表示读取1个扇区mov cx,0003h ;ch=磁道号 cl=扇区号 dh=磁头号mov dl,80h   ;dl=80h表示硬盘int 13hjmp 0000:7c00htimes 510-($-$$) db 0dw 0xaa55


[解决办法]
是不是dh的值没有设定,而cpuid这个命令改变了dx呢

热点排行