| 自己编程实现多引导 |
 |
作者: 来源: 日期:2007-5-17 11:18:00 点击次数: |
|
INT 13H JMP EXIT OPERERROR: MOV AH,09H MOV DX,OFFSET D4 INT 21H EXIT: MOV AH,4Ch INT 21h CODE ENDS END START 模块一被写入到硬盘的第一个扇区中,在系统引导之前获得执行权,从而实现多引导。因为这是个扇区程序,有别于一般的程序文件,其格式类似于COM文件,在此我是采用DEBUG程序,从EXE文件中提取的方法来实现的,源程序如下: ;多引导程序(SYSGUIDE.DAT),需要从以下源程序(模块一)产生的程序文件中提取 CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ;这一段是将整个硬盘锁从0000:7c00移至0000:0600,以免被后来读入的代码覆盖 START: db 256 dup (00h) PUSHDS PUSHES MOVCX,0100h MOVDI,0600h MOVAX,0000h MOVDS,AX MOVES,AX MOVSI,7C00h REPNZ MOVSW mov ax,0686h JMPax ;长跳转至移动后的代码,也就是从screen处开始执行 words db 'Please choose the partition for guide.' db 10 dup (20h) db '(1)partition 1;(2)partition 2;(3)partition 3;(4)partition 4;',00h screen: MOVAX,0600h MOVBH,0F0h MOVCX,0000h MOVDX,184Fh INT10h ;初始化屏幕(前景为黑色,背景为灰白,字符闪烁) MOVDL,1Ah MOVSI,0619h ;从0619H处显示字符(因为程序将被读入了0000:0600处, ;实际显示的也就是现在的words处开始的字符串) 上一篇:比较详细的MBR的分析 下一篇:没有了 |
|
|
 |
| 北京总部: 4006-505-808 |
| 上 海 部: 021-58358765 |
| 深 圳 部: 0755-83692929 |
| 浙 江 部: 13666673722 |
| 广 州 部: 020-83821091 |
| 重 庆 部: 023-86870422 |
| 昆 明 部: 15987117834 |
| 哈尔滨部: 13946167430 |
| 其它地区: 4006-505-808 | | | |
|
 |
|