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

上传字库与图片

新建目录: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

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

时间: 2024-11-01 06:22:45

操作系统与网络实现 之十一的相关文章

什么是网络操作系统?网络操作系统具有哪些基本功能?

网络操作系统是网络上各计算机能方便而有效地共享网络资源,为网络用户提供所需的各种服务的软件和有关规程的集合. 网络操作系统与通常的操作系统有所不同,它除了应具有通常操作系统应具有的处理机管理.存储器管理.设备管理和文件管理外, 还应具有以下两大功能:(1)提供高效.可靠的网络通信能力:(2)提供多种网络服务功能,如:远程作业录入并进行处理的服务功能:文件转输服务功能:电子邮件服务功能:远程打印服务功能 原文地址:https://www.cnblogs.com/Hello1world/p/9940

操作系统和网络基础的整理

操作系统 为何要有操作系统: 计算机系统非常庞大难懂,程序员写程序时需要搞懂计算机系统,效率很低. 操作系统的出现缓解了程序员的大部分工作,操作系统管理及优化计算机硬件,程序员不需要全部搞懂计算机系统就可写代码编写软件. 软件在操作系统的基础上运行,间接使用硬件. 操作系统的位置: 操作系统位于计算机硬件及应用程序之间,协调.管理和控制计算机硬件和软件系统的一个程序. 操作系统的功能: 操作系统协调.管理和控制计算机硬件和软件的一个软件. 操作系统的功能由操作系统运行内核态管理硬件和操作系统运行

操作系统与网络基础

操作系统简介 1.为什么需要操作系统? 现代计算机系统是一个复杂的系统.应用程序员无法掌握其中的每一个细节,于是,计算安装了一层软件(系统软件),称为操作系统.它的任务就是为用户程序提供一个更好.更简单.更清晰的计算机模型,并管理计算机系统中的所有设备.简单来讲,将硬件这些繁琐的工作由操作系统来干,程序员只需要考虑自己的应用软件的编写,应用软件直接使用操作系统提供的功能来间接使用硬件. 2.操作系统的位置 操作系统位于计算机硬件与应用软件之间,本质也是一个软件.操作系统由操作系统的内核(运行于内

ovf虚机模板导入后,操作系统原网络设置失效,脚本设定新的网络!

从虚拟机ovf模板导入的虚拟机网络设置会发生改变,网卡会发生改变,所以导致虚拟机启动后网络不能用. 所以要做下面几件事情,网络才会可用: 1 首先查看/etc/udev/rules.d/70-persistent-net.rules文件,在文件最后出现的eth网卡为系统建立的新网卡,以及mac地址.将原来网卡那行注释掉. 2 查看/etc/sysconfig/network-scripts/ifcfg-eth0(1)这个文件,这个文件为原始虚拟机的网络设置 3 将原有ifcfg-eh文件进行改名

linux网络命令(十一)之glances

一.glances使用 1.简介 glances 是一款用于 Linux.BSD 的开源命令行系统监视工具,它使用 Python 语言开发,能够监视 CPU.负载.内存.磁盘 I/O.网络流量.文件系统.系统温度等信息.本文介绍 glances 的使用方法和技巧,帮助 Linux 系统管理员了解掌握服务器性能. 2.特点 glances 可以为 Unix 和 Linux 性能专家提供监视和分析性能数据的功能,其中包括: CPU 使用率 内存使用情况 内核统计信息和运行队列信息 磁盘 I/O 速度

Android网络编程(十一)源码解析Retrofit

相关文章 Android网络编程(一)HTTP协议原理 Android网络编程(二)HttpClient与HttpURLConnection Android网络编程(三)Volley用法全解析 Android网络编程(四)从源码解析volley Android网络编程(五)OkHttp2.x用法全解析 Android网络编程(六)OkHttp3用法全解析 Android网络编程(七)源码解析OkHttp前篇[请求网络] Android网络编程(八)源码解析OkHttp后篇[复用连接池] Andr

Linux网络编程学习(十一) ----- 五种I/O模式(第六章)

1.五种I/O模式是哪几个? 阻塞I/O,非阻塞I/O,I/O多路复用,信号驱动I/O(SIGIO),异步I/O 一般来讲程序进行输入操作有两个步骤,一是等待有数据可读,二是将数据从系统内核中拷贝到程序的数据集区. 对于一个套接字的数据操作,第一步就是等待数据从网络上传到本地,当数据包到达时,数据将会从网络层拷贝到内核的缓冲中,第二步就是从内核中将数据拷贝到程序的数据区中. 2.五种阻塞模式简介 1)阻塞I/O模式 套接字建立后默认的模式就是阻塞I/O模式,对于UDP而言,数据就绪的标志比较简单

操作系统与网络实现 之七

使用C语言编写内核 到目前为止,我们可以使用32位编程了,但是用汇编编程还是一件比较枯燥.比较痛苦的事,下一步我们想用C语言编写32位系统,那么怎么办? 办法就是在kernel.asm使用call语句直接调用C程序. 具体过程如下: 汇编文件kernel.asm生成中间文件kernel.asmo. C文件kernel.c生成中间文件kernel.o. 这两个中间文件再链接生成kernel.bin文件,具体过程参见makefile. 有一点要注意,这里我们使用的djgpp在编译c语言时会在函数名加

操作系统与网络实现 之五

用32位指令编写程序 上面用补充机器码的方式编写32位指令实在是麻烦,我们可以把16位与32位指令分离,分别编写16位与32位程序,这样就方便多了. kernelloader跳转到32位的kernel.asm程序 修改kernelloader.asm,源码如下: [BITS 16] jmp                 main gdt_entries   equ      3                ;共有三个段描述符:null,os code32,os data32 pe