⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 put3boot.asm

📁 操作系统实验教程核心技术与编程实例书中地例子代码
💻 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 + -