码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-12-09 17:13:25      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:

 

上传字库与图片

新建目录D:\GX\ya\charpic

存放asc16英文字库,hzk16f汉字字库,图片ya.bmp,faya.bmp

文件hzk16f和文件asc16分别为16*16的汉字点阵文件和8*16英文点阵文件

 

对应的我们将用到int 13h功能:

功能02H 
功能描述:读扇区 
入口参数:AH02H
AL=扇区数 
CH=磁 
CL开始扇区 
DH=磁头 
DL=驱动器00H~7FH:软盘;80H~0FFH:硬盘   这里我们的DL0
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/p/5033168.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!