[原]bios 获取磁盘数据
磁盘的数据组织:
同心圆称为磁道track, 每个磁道分为多个sector, 通常512字节。
一个柱面cylinder是指多个盘面, 或者一个盘面的正反面, 同层的磁道.双面, 双密度, 磁盘,通常被组织成每面40磁道, 分为9个扇区, 每个扇区512
512*9*40 = 184320字节, 双面为368640字节, 360kb, 字节信息.
高密度磁盘为: 每面80磁道, 每道15扇区, 每扇区512字节: 共有1200字节, 1.1718MB, 磁盘数据存储技术采用不归零计技术, 磁道上磁通量决不为零,.
磁场幅度不表示信息, 只是磁场的极性描述. NRZ磁通量密度太大, 完全磁化了表面, 从而擦出了原数据.
现代采用MFM技术, 位宽为0.2us记录01, 每秒500 000位速度记录数据, 每个0.2微妙分为时钟脉冲, 数据脉冲, 如果时钟脉冲出现, 则为0.1us, 数据脉冲也是0.1us, 时钟, 数据不会同时出现. 时钟脉冲出现, 但没有数据脉冲出现则为0, 如果数据脉冲出现则为1, 其他为零.
3.5英寸软盘:
高密度, 双面, 每面80磁道, 每磁道18扇区, 每扇区512字节:
1440kb, 1.4mb
硬盘存储器:
硬盘采用浮动磁头.
硬盘有磁头碰撞问题.
软盘有两个磁头, 用于上下表面, 硬盘最多8个磁盘表面, 每个表面最多2个磁头. 通过磁头组合获得新的柱面, 磁头下16个磁道.
每个扇区512字节, 数据在8个扇区组成的簇中4k大小, 寻址.
一般采用rll驱动.
run length limited 表示0的游程是有限制的, 一行中0的个数.
当前0个数在2~7之间.
基本的i/o控制:
通过in, out来控制:
03f0~0357为软盘空间, 0320~032f为硬盘空间
ah 0x02 读取磁盘扇区到内存
同心圆称为磁道track, 每个磁道分为多个sector, 通常512字节。
一个柱面cylinder是指多个盘面, 或者一个盘面的正反面, 同层的磁道.双面, 双密度, 磁盘,通常被组织成每面40磁道, 分为9个扇区, 每个扇区512
512*9*40 = 184320字节, 双面为368640字节, 360kb, 字节信息.
高密度磁盘为: 每面80磁道, 每道15扇区, 每扇区512字节: 共有1200字节, 1.1718MB, 磁盘数据存储技术采用不归零计技术, 磁道上磁通量决不为零,.
磁场幅度不表示信息, 只是磁场的极性描述. NRZ磁通量密度太大, 完全磁化了表面, 从而擦出了原数据.
现代采用MFM技术, 位宽为0.2us记录01, 每秒500 000位速度记录数据, 每个0.2微妙分为时钟脉冲, 数据脉冲, 如果时钟脉冲出现, 则为0.1us, 数据脉冲也是0.1us, 时钟, 数据不会同时出现. 时钟脉冲出现, 但没有数据脉冲出现则为0, 如果数据脉冲出现则为1, 其他为零.
3.5英寸软盘:
高密度, 双面, 每面80磁道, 每磁道18扇区, 每扇区512字节:
1440kb, 1.4mb
硬盘存储器:
硬盘采用浮动磁头.
硬盘有磁头碰撞问题.
软盘有两个磁头, 用于上下表面, 硬盘最多8个磁盘表面, 每个表面最多2个磁头. 通过磁头组合获得新的柱面, 磁头下16个磁道.
每个扇区512字节, 数据在8个扇区组成的簇中4k大小, 寻址.
一般采用rll驱动.
run length limited 表示0的游程是有限制的, 一行中0的个数.
当前0个数在2~7之间.
基本的i/o控制:
通过in, out来控制:
03f0~0357为软盘空间, 0320~032f为硬盘空间
ah 0x02 读取磁盘扇区到内存
INT | AH | 功能 | 调用参数 | 返回参数 |
10 | 0 | 设置显示方式
| AL=00 40×25黑白方式 AL=01 40×25彩色方式 AL=02 80×25黑白方式 AL=03 80×25彩色方式 AL=04 320×200彩色图形方式 AL=05 320×200黑白图形方式 AL=06 320×200黑白图形方式 AL=07 80×25单色文本方式 AL=08 160×200 16色图形 (PCjr) AL=09 320×200 16色图形 (PCjr) AL=0A 640×200 16色图形 (PCjr) AL=0B 保留(EGA) AL=0C 保留(EGA) AL=0D 320×200 彩色图形 (EGA) AL=0E 640×200 彩色图形 (EGA) AL=0F 640×350 黑白图形 (EGA) AL=10 640×350 彩色图形 (EGA) AL=11 640×480 单色图形 (EGA) AL=12 640×480 16色图形 (EGA) AL=13 320×200 256色图形 (EGA) AL=40 80×30 彩色文本(CGE400) AL=41 80×50 彩色文本(CGE400) AL=42 640×400 彩色图形(CGE400) | |
10 | 1 | 置光标类型 | (CH)0-3=光标起始行 (CL)0-3=光标结束行 | |
10 | 2 | 置光标位置 | BH=页号 DH,DL=行,列 | |
10 | 3 | 读光标位置 | BH=页号 | CH=光标起始行 DH,DL=行,列 |
10 | 4 | 读光笔位置 | AH=0 光笔未触发 =1 光笔触发 CH=象素行 BX=象素列 DH=字符行 DL=字符列 | |
10 | 5 | 置显示页 | AL=页号 | |
10 | 6 | 屏幕初始化或上卷 | AL=上卷行数 AL=0 整个窗口空白 BH=卷入行属性 CH=左上角行号 CL=左上角列号 DH=右下角行号 DL=右下角列号 | |
10 | 7 | 屏幕初始化或下卷 | AL=下卷行数 AL=0 整个窗口空白 BH=卷入行属性 CH=左上角行号 CL=左上角列号 DH=右下角行号 DL=右下角列号 | |
10 | 8 | 读光标位置的字符和属性 | BH=显示页 | AH=属性 AL=字符 |
10 | 9 | 在光标位置显示字符及属性 | BH=显示页 AL=字符 BL=属性 CX=字符重复次数 | |
10 | A | 在光标位置显示字符 | BH=显示页 AL=字符 CX=字符重复次数 | |
10 | B | 置彩色调板(320×200图形) | BH=彩色调板ID BL=和ID配套使用的颜色 | |
10 | C | 写象素 | DX=行(0-199) CX=列(0-639) AL=象素值 | |
10 | D | 读象素 | DX=行(0-199) CX=列(0-639) | AL=象素值 |
10 | E | 显示字符 (光标前移) | AL=字符 BL=前景色 | |
10 | F | 取当前显示方式 | AH=字符列数 AL=显示方式 | |
10 | 13 | 显示字符串(适用AT) | ES:BP=串地址 CX=串长度 DH,DL=起始行,列 BH=页号 AL=0,BL=属性 串:char,char,... AL=1,BL=属性 串:char,char,... AL=2 串:char,attr,char,attr,... AL=3 串:char,attr,char,attr,... | 光标返回起始位置 光标跟随移动 光标返回起始位置 光标跟随移动 |
11 | 设备检验 | AX=返回值 bit0=1,配有磁盘 bit1=1,80287协处理器 bit4,5=01,40×25BW(彩色板) =10,80×25BW(彩色板) =11,80×25BW(黑白板) bit6,7=罗盘驱动器 bit9,10,11=RS-232板号 bit12=游戏适配器 bit13=串行打印机 bit14,15=打印机号 | ||
12 | 测定存储器容量 | AX=字节数(KB) | ||
13 | 0 | 软盘系统复位 | ||
13 | 1 | 读软盘状态 | AL=状态字节 | |
13 | 2 | 读磁盘 | AL=扇区数 CH,CL=磁盘号,扇区号 DH,DL=磁头号,驱动器号 ES:BX=数据缓冲区地址 | 读成功:AH=0 AL=读取的扇区数 读失败:AH=出错代码 |
13 | 3 | 写磁盘 | 同上 | 写成功:AH=0 AL=写入的扇区数 写失败:AH=出错代码 |
13 | 4 | 检验磁盘扇区 | 同上(ES:BX不设置) | 成功:AH=0 AL=检验的扇区数 失败:AH=出错代码 |
13 | 5 | 格式化盘磁道 | ES:BX=磁道地址 | 成功:AH=0 失败:AH=出错代码 |
14 | 0 | 初始化串行通讯口 | AL=初始化参数 DX=通讯口号(0,1) | AH=通读口状态 AL=调制解调器状态 |
14 | 1 | 向串行通讯口写字符 | AL=字符 DX=通讯口号(0,1) | 写成功:(AH)7=0 写失败:(AH)7=1 (AH)0-6=通讯口状态 |
14 | 2 | 从串行通讯口读字符 | DX=通讯口号(0,1) | 读成功:(AH)7=0 (AL)=字符 写失败:(AH)7=1 (AH)0-6=通讯口状态 |
14 | 3 | 取通讯口状态 | DX=通讯口号(0,1) | AH=通讯口状态 AL=调制解调器状态 |
15 | 0 | 启动盒式磁带马达 | ||
15 | 1 | 停止盒式磁带马达 | ||
15 | 2 | 磁带分块读 | ES:BX=数据传输区地址 CX=字节数 | AH=状态字节 AH=00 读成功 =01 冗余检验错 =02 无数据传输 =04 无引导 |
15 | 3 | 磁带分块写 | DS:BX=数据传输区地址 CX=字节数 | 同上 |
16 | 0 | 从键盘读字符 | AL=字符码 AH=扫描码 | |
16 | 1 | 读键盘缓冲区字符 | ZF=0 AL=字符码 AH=扫描码 ZF=1 缓冲区空 | |
16 | 2 | 读键盘状态字节 | AL=键盘状态字节 | |
17 | 0 | 打印字符 回送状态字节 | AL=字符 DX=打印机号 | AH=打印机状态字节 |
17 | 1 | 初始化打印机 回送状态字节 | DX=打印机号 | AH=打印机状态字节 |
17 | 2 | 取状态字节 | DX=打印机号 | AH=打印机状态字节 |
1A | 0 | 读时钟 | CH:CL=时:分 DH:DL=秒:1/100秒 | |
1A | 1 | 置时钟 | CH:CL=时:分 DH:DL=秒:1/100秒 | |
1A | 2 | 读实时钟 | CH:CL=时:分(BCD) DH:DL=秒:1/100秒(BCD) | |
1A | 6 | 置报警时间 | CH:CL=时:分(BCD) DH:DL=秒:1/100秒(BCD) | |
1A | 7 | 清除报警 |
作者:liyonghelpme 发表于2010/6/13 13:17:00 原文链接
阅读:274 评论:0 查看评论