📄 put3boot.asm
字号:
CODE SEGMENT PARA USE16
ASSUME CS:CODE
START:
CLI
MOV AX,SEG CODE
MOV SS,AX
MOV DS,AX
MOV ES,AX
STI
MOV AX,OFFSET STACK0
ADD AX,511
MOV SP,AX
MOV AX,0600H ;clear screen
MOV BH,07H
MOV CX,0
MOV DX,184FH
INT 10H
MOV AX,1301H ;display head
MOV DX,0217H
MOV BX,12H
MOV BP,OFFSET HEAD
MOV SI,BP
MOV CL,[SI]
XOR CH,CH
INC BP
INT 10H
MOV AX,1301H ;display SELECT
MOV DX,0400H
MOV BX,07H
MOV BP,OFFSET SEL_PART
MOV SI,BP
MOV CL,[SI]
XOR CH,CH
INC BP
INT 10H
KEY: MOV AH,10H
INT 16H
CMP AL,33H
JE READ_PRI
CMP AL,34H ;up
JE READ_PRI
JNE KEY
READ_PRI:
PUSH AX
;;;;;;;;;;;;;;;;;;;;; read COSboot from C:\TC\G\BOOT.COS
MOV DX,OFFSET FNAME
MOV AL,0H ;FOR read
MOV AH,3DH ;OPEN FILE
INT 21H
MOV BX,AX ;BX=FILE HANDLE
MOV DX,OFFSET COSBOOT
MOV CX,512
MOV AH,3FH ;read FILE
INT 21H
JZ GO_ON
MOV AX,1301H ;display error reading file
MOV DX,0600H
MOV BX,12H
MOV BP,OFFSET ERROR10
MOV SI,BP
MOV CL,[SI]
XOR CH,CH
INC BP
INT 10H
MOV AH,3EH ;CLOSE FILE
INT 21H
JMP G_RETURN
GO_ON:
MOV AH,3EH ;CLOSE FILE
INT 21H
;;;;;;;;;;;;;;;;;;;;; read priboot use INT13H 02
MOV AX,SEG CODE
MOV DS,AX
MOV ES,AX
MOV BX,OFFSET PRIBOOT
MOV AH,2
MOV AL,1
MOV CH,0 ;cylinder
MOV CL,1 ;sector
MOV DH,0 ;head
MOV DL,80H ;driver: hard disk 1
INT 13H ;=bios 13h
MOV SI,OFFSET PRIBOOT
POP AX
CMP AL,33H
JE P3
; 4 partition
ADD SI,1EEH
p3: ADD SI,1DEH ; 3 partition
MOV DX,[SI]
MOV CX,[SI+2]
MOV DL,80H
;;;;;;;;;;;;;;;;;;;;; write COSBoot use INT13H 02
MOV BX,OFFSET COSBOOT
MOV AH,3
MOV AL,1
INT 13H ;=bios 13h
G_RETURN:
MOV AX,4C00H
INT 21H
HEAD DB 34,'Recover partition BOOT sector Program'
SEL_PART DB 37,'Please select the partition(3 OR 4) :'
FNAME DB "C:\TC\G\BOOT.COS",0
STACK0 DB 512 DUP(?)
PRIBOOT DB 512 DUP(0)
COSBOOT DB 512 DUP(0)
ERROR10 DB 18,'ERROR reading file'
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -