为什么通常int 13h后都要加int 3h?
int 3h的作用的什么,干什么用的?
另外,我用debug读出了MBR,可是总也写不回去,写的时候就是把ax=0201改成了ax=0301,别的基本没变,却总不成功.
我忽略了哪里了?
我是在dos的实模式下干的.并且先执行了lock命令.
int 3h是断点中断, 运行到这个指令时, 如果是在debug等调试软件下, 则会将控制返回到调试软件. MBR回写不成功? 具体出现什么错误提示? 一般最常见的可能是在cmos设置中的高级设置里的病毒防护打开了, 在写MBR时会在屏幕的中央出现一个警告框, 要求确认. 通过int13h写磁盘的话, 是不需要先执行lock命令的.
同意zara(Kyrie eleison),INT3只是一个断点,这样你用G命令就可以,如果不写INT3,用P命令一句一句执行也行,但是不能使用INT20。而且INT3只能用于DEBUG调试,用在程序里就没意义了。你是从哪里得到写错误信息的?错误是产生进位标志,这时你可以从AH的返回值中判断错误信息。贴上AH返回值给你参考
00h successful completion
01h invalid function in AH or invalid parameter
02h address mark not found
03h disk write-protected
04h sector not found/read error
05h reset failed (hard disk)
05h data did not verify correctly (TI Professional PC)
06h disk changed (floppy)
07h drive parameter activity failed (hard disk)
08h DMA overrun
09h data boundary error (attempted DMA across 64K boundary or >80h sectors)
0Ah bad sector detected (hard disk)
0Bh bad track detected (hard disk)
0Ch unsupported track or invalid media
0Dh invalid number of sectors on format (PS/2 hard disk)
0Eh control data address mark detected (hard disk)
0Fh DMA arbitration level out of range (hard disk)
10h uncorrectable CRC or ECC error on read
11h data ECC corrected (hard disk)
20h controller failure
31h no media in drive (IBM/MS INT 13 extensions)
32h incorrect drive type stored in CMOS (Compaq)
40h seek failed
80h timeout (not ready)
AAh drive not ready (hard disk)
B0h volume not locked in drive (INT 13 extensions)
B1h volume locked in drive (INT 13 extensions)
B2h volume not removable (INT 13 extensions)
B3h volume in use (INT 13 extensions)
B4h lock count exceeded (INT 13 extensions)
B5h valid eject request failed (INT 13 extensions)
BBh undefined error (hard disk)
CCh write fault (hard disk)
E0h status register error (hard disk)
FFh sense operation failed (hard disk)