您的位置:首页 > 理论基础 > 计算机网络

操作系统与网络实现 之十一

2015-12-09 16:11 344 查看
 
上传字库与图片

新建目录:D:\GX\ya\charpic
存放asc16英文字库,hzk16f汉字字库,图片ya.bmp,faya.bmp
文件hzk16f和文件asc16分别为16*16的汉字点阵文件和8*16的英文点阵文件
 
对应的我们将用到int 13h功能:
功能02H 
功能描述:读扇区 
入口参数:AH=02H
AL=扇区数 
CH=磁道 
CL=开始扇区 
DH=磁头 
DL=驱动器号,00H~7FH:软盘;80H~0FFH:硬盘  
这里我们的DL是0
ES:BX=缓冲区的地址  也就是我们要写入的地址
 
asc16 大小4096字节
/512=8(占8扇区合4096字节,读写盘以此为根据)
hzk16f大小261696字节/512=511.1(占512扇区合262144字节,读写盘以此为根据)
ya.bmp大小94178字节/512=183.9(占184扇区合94208字节,读写盘以此为根据)
faya.bmp大小31930字节/512=62.3(占63扇区合32256字节,读写盘以此为根据)
在磁盘中存储顺序这样:ASCII->HZK16F->ya.bmp->faya.bmp->空白扇区XX个->kernel.bin放在最后。
 
三个相关值
程序
write_in_img起始字节
存入软盘 磁头.磁道.扇区
内存物理地址 及 es:bx
boot.bin
0 (占512)
0.0.1 (占512)
7c00计算机自动载入
kernelloader.bin
0+512=512 (占1024)
0.0.2 -0.0.3 (占1024)
0x10000    0x1000:0x0000
asc16
512+1024=1536(占4096)
0.0.4  (占4096)
0x10400    0x1000:0x0400
hzk16f
1536+4096=5632 (占262144)
 
0x11400
ya.bmp
5632+262144=267776 (占94208
)
 
0x51400
faya.bmp
267776+94208=361984(占32256)
 
0x68400
 
空白XX
 
 
 
前面合计52个磁道
 
 
kernel.bin
479232  (52X18X512)
0.26.1
0x80000    es=0x8000
 
 
 
 
 
 
文件字节数
字节,读写盘以此为根据
开始于

结束于
asc16 大小4096
占4096
0x10400
0x1000
0x11400
hzk16f大小261696
占262144
0x11400
0x40000
0x51400
ya.bmp大小94178
占94208
0x51400
0x17000
0x68400
faya.bmp大小31930
占32256
0x68400
0x7e00
0x70200
英文字库+中文字库+图片=
4096 + 262144 + 94208 +32256 = 392704
 
一个扇区512=0x200 一个磁道=9216 一个段=65536
一个段等于7磁道加2扇区,在下面计算中用到6磁道20扇区,同一段上下两个读扇区数和为20,而紧接着的下一段与上一段读扇区数和为18
 
三个表示磁头.磁道.扇区 两个表示磁头.磁道
比如0.0.4表示0磁头.0磁道.4扇区,1.0表示1磁头.0磁道
 
 
开始                                             
读入内存物理地址
动作
备注
es:bx起始值
0.0.4
0x10400
读入15个扇区
读入同一磁道剩余的扇区
0x1000:0x0400
1.0
计算得出
读入6个磁道
1.0 0.1 1.1 0.2 1.2 0.3
 
1.3.1
计算得出
读入3个扇区
 
写完0x1000段
上面读入64512
 
 
 
 
1.3.4
0x20000
读入15个扇区
读入同一磁道剩余的扇区
0x2000:0x0000
0.4
计算得出
读入6个磁道 
0.4 1.4 0.5 1.5 0.6 1.6
 
0.7.1
计算得出
读入5个扇区
 
写完0x2000段
上面读入65536
 
 
 
 
0.7.6                             
0x30000
读入13个扇区
读入同一磁道剩余的扇区
0x3000:0x0000
1.7     
计算得出
读入6个磁道
1.7 0.8 1.8 0.9 1.9 0.10
 
1.10.1                                                 
计算得出
读入7个扇区 
 
写完0x3000段
上面读入65536
 
 
 
 
1.10.8 
0x40000
读入11个扇区
读入同一磁道剩余的扇区
0x4000:0x0000
0.11                          
计算得出
读入6个磁道
0.11 1.11 0.12 1.12 0.13 1.13
 
0.14.1                     
计算得出
读入9个扇区
 
写完0x4000段
上面读入65536
 
 
 
 
0.14.10                           
0x50000
读入9个扇区
读入同一磁道剩余的扇区
0x5000:0x0000
1.14                       
计算得出
读入6个磁道 
1.14 0.15 1.15 0.16 1.16 0.17
 
1.17.1                      
计算得出
读入11个扇区
 
写完0x5000段
上面读入65536
 
 
 
 
1.17.12                            
0x60000
读入7个扇区
读入同一磁道剩余的扇区
0x6000:0x0000
0.18                        
计算得出
读入6个磁道
0.18 1.18 0.19 1.19 0.20 1.20
 
0.21.1                     
计算得出
读入13个扇区
 
写完0x6000段
上面读入65536   此时还剩392704
- 64512 -5*65536 =512 合1个扇区
0.21.14                               
0x70000
读入1个扇区
读入同一磁道剩余的扇区
0x7000:0x0000
 

表格传上来变形了,大家凑合着看吧

字库、图片已经上传到http://www.cnblogs.com/ya20151015/

 
 
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: