DOS6.0源程序中的硬盘引导记录源程序FDBOOT.ASM

;/*
; * Microsoft Confidential
; * Copyright (C) Microsoft Corporation 1983 - 1991
; * All Rights Reserved.
; */
; BOOT - IBM hard disk boot record 6/8/82
;
;
; This is the standard boot record that will be shipped on all hard disks. It contains:
;
; 1. Code to load (and give control to) the boot record for 1 of 4 possible
; operating systems.
;
; 2. A partition table at the end of the boot record, followed by the required signature.
;
;
_data segment public
assume cs:_data,ds:_data
  org 600h

cli ;no interrupts for now
xor ax,ax
mov ss,ax
mov sp,7c00h ;new stack at 0:7c00
mov si,sp ;where this boot record starts - 0:7c00
push ax
pop es ;seg regs the same
push ax
pop ds
sti ;interrupts ok now
cld
mov di,0600h ;where to relocate this boot record to
mov cx,100h
repnz movsw ;relocate to 0:0600
; jmp entry2
db 0eah
dw $+4,0
entry2:
mov si,offset tab ;partition table
mov bl,4 ;number of table entries
next:
cmp byte ptr[si],80h ;is this a bootable entry?
je boot ;yes
cmp byte ptr[si],0 ;no, is boot indicator zero?
jne bad ;no, it must be x"00" or x"80" to be valid
add si,16 ;yes, go to next entry
dec bl
jnz next
int 18h ;no bootable entries - go to rom basic
boot:
mov dx,[si] ;head and drive to boot from
mov cx,[si+2] ;cyl, sector to boot from
mov bp,si ;save table entry address to pass to partition boot record
next1:
add si,16 ;next table entry
dec bl ;# entries left
jz tabok ;all entries look ok
cmp byte ptr[si],0 ;all remaining entries should begin with zero
je next1 ;this one is ok
bad:
mov si,offset m1 ;oops - found a non-zero entry - the table is bad
msg:
lodsb ;get a message character
cmp al,0
je hold
push si
mov bx,7
mov ah,14
int 10h ;and display it
pop si
jmp msg ;do the entire message
;
hold: jmp hold ;spin here - nothing more to do
tabok:
mov di,5 ;retry count
rdboot:
mov bx,7c00h ;where to read system boot record
mov ax,0201h ;read 1 sector
push di
int 13h ;get the boot record
pop di
jnc goboot ;successful - now give it control
xor ax,ax ;had an error, so
int 13h ;recalibrate
dec di ;reduce retry count
jnz rdboot ;if retry count above zero, go retry
mov si,offset m2 ;all retries done - permanent error - point to message,
jmp msg ;go display message and loop
goboot:
mov si,offset m3 ;prepare for invalid boot record
mov di,07dfeh
cmp word ptr [di],0aa55h ;does the boot record have the
; required signature?
jne msg ;no, display invalid system boot record message
mov si,bp ;yes, pass partition table entry address
db 0eah
dw 7c00h,0

include fdisk5.cl1

org 7beh
tab: ;partition table
dw 0,0 ;partition 1 begin
dw 0,0 ;partition 1 end
dw 0,0 ;partition 1 relative sector (low, high parts)
dw 0,0 ;partition 1 # of sectors (low, high parts)
dw 0,0 ;partition 2 begin
dw 0,0 ;partition 2 end
dw 0,0 ;partition 2 relative sector
dw 0,0 ;partition 2 # of sectors
dw 0,0 ;partition 3 begin
dw 0,0 ;partition 3 end
dw 0,0 ;partition 3 relative sector
dw 0,0 ;partition 3 # of sectors
dw 0,0 ;partition 4 begin
dw 0,0 ;partition 4 end
dw 0,0 ;partition 4 relative sector
dw 0,0 ;partition 4 # of sectors
signa db 55h,0aah ;signature

_data ends
end

时间: 2024-10-24 00:23:21

DOS6.0源程序中的硬盘引导记录源程序FDBOOT.ASM的相关文章

成员函数-数据的输入一定要在源程序中吗

问题描述 数据的输入一定要在源程序中吗 数据的输入一定要在源程序中吗, 我定义了一个类,其中有一个关于数据输入的成员函数(就是我是在调用这个成员函数进行数据的输入的),但编译的时候没有错,如果运行进行数据输入的时候就发生中断了,这是怎么回事呢? 解决方案 说明程序丢出了异常,检查下数据类型是否兼容.指针等问题. 解决方案二: 输入的数据,你处理的时候有问题,自己调试一下.

C#中对象持久性的源程序怎么写

问题描述 C#中对象持久性的源程序怎么写,怎么才能实现对象的持久性??谢谢啊 解决方案 解决方案二:对象持久化就是讲数据存到数据库.或者文件里,你按这个随便找个存到数据库的就可以了解决方案三:我就一只菜鸟啊!现在在写实验报告,就是不会写啊,希望能给一个程序解决方案四:先看下序列滑.反序列化,然后将字符串保存到文件即可.解决方案五:引用2楼CHENYUNHE的回复: 我就一只菜鸟啊!现在在写实验报告,就是不会写啊,希望能给一个程序 这不是理由.好好学习吧.解决方案六:使用序列化可以吧对象转换字节数

Oracle 10g(10.1.0.2)中的OPTIMIZER

oracle Oracle 10g(10.1.0.2)中的OPTIMIZER_INDEX_COST_ADJ Tom Kyte的新书Effective Oracle by Design的第6章 Getting the Most Out of the Cost-Based Optimizer中介绍了参数OPTIMIZER_INDEX_COST_ADJ,并认为可以理解为Oracle执行多块(MultiBlock)I/O(比如全表扫描)的代价与执行单块(Single-block)I/O代价的相对比例.T

ASP.NET2.0应用中定制安全凭证之理论篇

asp.net|安全 阅读提要 在缺省状况下,你只能使用Visual Studio 2005的一个本机实例来管理与ASP.NET 2.0一同发行的SQL Server数据库中的安全凭证.本文将向你展示怎样用一个Web服务来包装ASP.NET 2.0提供者并通过使用一个Windows表单应用程序来管理凭证存储从而扩展这种管理能力. 如今,无论是互联网还是企业内部局域网程序一般都要求使用定制的方式来存储和管理用户帐户和角色.为此,ASP.NET 2.0提供了一个现成的提供者模型和一个SQL Seve

原来Eclipse3.0.1中的jboss32x.server文件不匹配JBoss3.2.6!郁闷~

server 从今天下午开始就一直在Eclipse中配置JBoss,由于原来用的是JBoss3.0.0,现在想用JBoss3.2.6. 于是就重新配置.但是配置好了以后,却发现会报告jar文件路径出错,一共有两个:一个是jboss-3.2.6\lib\jboss-boot.jar找不到,一个是jboss-3.2.6 erver\default\lib\javax-servlet.jar找不到. 用UE32打开eclipse\plugins\com.objectlearn.jdt.j2ee_3.0

ASP.NET 2.0 Beta2 中特殊文件夹名称的改变

asp.net 微软的Web平台开发组最近发布了一个新消息,据称在Visual Studio 2005 Beta2中,ASP.NET2.0中的一些特殊文件夹的名称将有所改变.这些改变主要是为了避免和应用程序命名的不协调,以及在进行XCopy部署时保护相关系统资料. ASP.NET 2.0 (Beta2)中最新的特殊文件夹的名称改变如下: /Bin 改变为 /Application_Assemblies * /Code 改变为 /Application_Code /Resources 改变为 /A

ASP.NET 2.0 AJAX中Webservice调用方法示例

ajax|asp.net|web|示例 ASP.NET 2.0 AJAX中能够在客户端js中很方便地调用服务器Webservice,以下为一些调用的示例.笔者安装的ASP.NET 2.0 AJAX 版本为AJAX November CTP. 三个示例分别为:1 带参数的WS方法2 不带参数的WS方法3 参数类型为DataTable的WS方法 一.WebMethod注意要点:1 WebMethod类需要添加命名空间 Microsoft.Web.Script.Services,此空间需要引用Micr

SCO OpenServer 5.0.5中DNS和DHCP的配置

SCO OpenServer 5.0.5不仅具操作方便的图形界面,相对于5.0.4版而言还增加了DHCP的功能.现在的5.0.5版已具有Web服务.FTP服务.E-mail服务.DNS.虚拟域名.DHCP等多项功能,以其为基础构筑一个Intranet平台已是非常方便的事情,下面就介绍其DNS和DHCP的配置. 一. DNS的配置文件 SCO OpenServer 5.0.5中DNS的配置有几种情况,比较常用的是配置成主名字服务器. 配置主名字服务器需要一整套文件,包括/etc/named.boo

ASP.NET 2.0应用中定制安全凭证之理论篇

阅读提要 在缺省状况下,你只能使用Visual Studio 2005的一个本机实例来 管理与ASP.NET 2.0一同发行的SQL Server数据库中的安全凭证.本文将向你展 示怎样用一个Web服务来包装ASP.NET 2.0提供者并通过使用一个Windows表单应 用程序来管理凭证存储从而扩展这种管理能力. 如今,无论是互联网还是企业内部局域网程序一般都要求使用定制的方式来 存储和管理用户帐户和角色.为此,ASP.NET 2.0提供了一个现成的提供者模型 和一个SQL Sever数据库.不