- 博客(46)
- 收藏
- 关注
原创 修改通知
在操作系统与网络实现 之二--使用makefile文件--中有一个错误:将然后电脑将这个程序读入内存地址0xfc00:0000处开始执行。改为:然后电脑将这个程序读入内存地址0x7c00:0000处开始执行。
2017-05-24 14:49:16 244
原创 操作系统与网络实现 之十九(己)
抓包工具显示源地址和目标地址:192.168.1.99 111.13.100.92 同时显示网卡传送数据:Hello world! 至此网络试验结束。
2016-12-08 21:11:40 226
原创 操作系统与网络实现 之十九(戊)
下面回文之前的询问: 因为我们没有回答,回文没收到 抓包工具正确捕获发送数据如下: EC 17 2F F4 C5 A2 B0 C4 20 A1 3C 00 08 00 45 00 00 54 00 10 00 00 40 01 E5 24 C0 A8 01 63 6F 0D 64 5C 08 00 96 98 2B 00
2016-12-08 20:46:24 243
原创 操作系统与网络实现 之十九(丁)
下面是网卡发送ICMP(模拟ping 命令) 用niclist查看我的真实网卡并在bochsrc.bxrc中写入: ne2k:enabled=1,mac=b0:c4:20:A1:3C:00,ethmod=win32, ethdev=\Device\NPF_{B59B6CEB-251D-46D7-8778-EBAC0CAACC7D} pci: e
2016-12-08 20:23:56 269
原创 操作系统与网络实现 之十九(丙)
mac.asm中ns数据解释,共九十八字节: 0xEC,0x17,0x2F,0xF4,0xC5,0xA2,0xB0,0xC4,0x20,0xA1,0x3C,0x00,0x08,0x00,0x45,0x00,0x00,0x54,0x00,0x10,0x00,0x00,0x40,0x01,0xE5,0x24,0xC0,0xA8,0x01,0x63,0x6F,0x0D,0x64,0x5
2016-12-08 20:23:13 356
原创 操作系统与网络实现 之十九(乙)
对网卡初始化,先要熟悉ne2000兼容网卡,我没找到8029资料,不过8019也是一样。 参考 rtl8019as中文手册 寄存器 偏移量 0页方式
2016-12-08 19:37:23 359
原创 操作系统与网络实现 之十九(甲)
网络连接代码解释 通过以上实验我们大致了解了网络连接中发生的事情,下面我们用代码来实现它。 我们没有必要按上面的实验一步一步来,有些数据对于我们来说是清楚的,那么可以省去这部分代码。 比如: 192.168.1.1 对应 ec:17:2f:f4:c5:a2 192.168.1.99 对应 b0:c4
2016-12-08 19:15:42 251
原创 操作系统与网络实现 之一(戊)
在C盘根目录建立文件夹DJGPP,C:\DJGPP,将下载的文件全部拷贝到这个文件夹.进入dos窗口,打开文件夹C:\DJGPP,并运行命令: unzip32 *.zip. 用IE打开README.1ST,按其方法配置djgpp。 步骤如下: 设置环境变量 右击“我的电脑”——“属性”——“高级”——“环境变量”
2016-11-03 19:44:12 285
原创 操作系统与网络实现 之一(丙)
C编译器 选择djgpp 在Windows环境下gcc编译器有djgpp, MinGW,devcpp,等.我们选择djgpp 这个djgpp里面带的gcc版本是4.7.3 具体下载过程: 打开网页http://www.delorie.com/djgpp/ 点
2016-11-03 19:42:57 249
原创 操作系统与网络实现 之一(乙)
网卡成功传送数据:Hello world! 搭建开发环境 在windows XP环境下 首先选择各个工具软件,我们选择的都是可以自由使用的软件: 文本编辑器: 选用软件Notepad++。 其它辅助工具: 反汇编软件
2016-11-03 19:42:12 263
原创 操作系统与网络实现 之十八(丁)
在bochs2.6中运行DlxLinux: ping –c 1 111.13.100.92 这时dos窗口windump看到: arp首先会问网关在哪里: 1. arp问谁有这个IP地址:192.168.1.1 (真实路由) arp答复在ec:17:2f:f4:c5:
2016-11-03 16:54:14 379
原创 操作系统与网络实现 之十八(丙)
使用抓包软件 下载windump放在D:盘。 下载并安装抓包软件。 运行抓包工具->包过滤->选择网卡192.168.1.101->协议过滤->仅包含->ICMP->开始捕包。 两个软件一起使用,互相对照,对于windump我们只用到两个命令-D查看网卡命令,-i 监听第几个网卡命令
2016-11-03 16:51:40 291
原创 操作系统与网络实现 之十八(乙)
设置好网络之后,下面可以运行网络命令了。 首先ping网关: ping –c 1 192.168.1.1 显示发出一个包,接收一个包: 接下来ping百度: ping –c 1 111.13.100.92 如果一直没有反应,那么就是防火墙拦住了。 点开ZoneAlarm
2016-11-03 16:32:30 216
原创 操作系统与网络实现 之十八(甲)
网络运行实验 讲到网络,别人都是吞吞吐吐,欲语还羞的,从这里开始,我们就为大家揭开这层神秘的面纱。 目前我们对网络连接一无所知,概念上也没有一个具体的认识,只有自己真正的经历过,思想里才会形成一个感性的认识。有这么一个连上网络的实践过程显得很重要,对我们网络编程也会起到一个指导作用。 我们将通过在bochs2.6.0运行其自带的dlxlinux
2016-11-03 16:20:17 468
原创 操作系统与网络实现 之十七
设备枚举 在linux中设备枚举是个很复杂的过程,设备登记,建立链表,等等等等......,我们这里大大简化了,因为我们知道bochs虚拟机有pci总线,有网卡,这些是已知的,那么“检测有什么设备”这个步骤就可以省略,只要直接找到它们就行了,这样简单了很多。 实际上大家电脑配置都不一样,但是用bochs虚拟机与大家的电脑实际配置是没有关系的,bochs虚拟出来的
2016-10-11 16:30:35 480
原创 操作系统与网络实现 之十六
内嵌汇编 以后我们要和一些端口打交道,端口0xCF8是PCI的地址寄存器IO地址,端口0xCFC是PCI的数据寄存器IO地址,还有网卡端口。 要执行写入端口和从端口读出操作,在汇编中是这样实现的: mov al,0x02 in 0xcf8,al Linux下c语言内嵌汇编格式: __asm_
2016-10-02 16:36:01 249
原创 操作系统与网络实现 之十五
鼠标及键盘 这两部分代码,网上有很多资源,亲们可以自己试试编写,这里先就不介绍了,以后有机会再补充。下面重点介绍网络连接。
2016-10-02 16:27:05 218
原创 修改通知
请大家注意,对代码作了小的修改,就是 mov word[pdescr+0],(gdt_entries*8-1) 改为mov word[pdescr+0],(gdt_entries*8)
2016-01-19 14:45:58 191
原创 操作系统与网络实现 之十四
今天是2016年1月17日,乙未年腊八节,给大家上新的一章 显示图片 掌握上面的知识,编写画图程序就简单了: boot.asm不变: [BITS 16] ;编译成16位的指令 [ORG 0x7C00] jmp main read_kernelloader:
2016-01-18 15:21:33 284
原创 操作系统与网络实现 之十三
BMP文件格式解析 2016到了,大家新年好,新的东西,福利来了 bmp文件结构解析: 一个bmp图片最多由4大部分组成:BITMAPFILEHEADER结构体,BITMAPINFOHEADER结构体,RGBQUAD结构体(这个结构体可以有,也可以没有),DIB数据区。其中DIB意思就是Device-Independent Bitmap(设备无关位图)。 一个bmp文件以BITMAPFILEHEA
2016-01-04 14:14:45 254
原创 操作系统与网络实现 之十二
输出字库中的字符 现在在内存中有字库了,我们就可以任意显示英文和中文了。 boot.asm不变: [BITS 16] ;编译成16位的指令 [ORG 0x7C00] jmp main read_kernelloader: ;读入 kernelloader 程序 push es .rkl:
2015-12-12 19:26:18 268
原创 操作系统与网络实现 之十一
上传字库与图片 新建目录: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=驱动器号,
2015-12-09 16:11:15 321
原创 操作系统与网络实现 之十
显示字母与汉字 现在我们明白了字符是怎么存在的,是怎么被显示出来的,下面我们将实践这个过程。 一些准备工作。 新建目录:D:\GX\ya\include,这里将存放头文件。 boot.asm源码不变: [BITS 16] ;编译成16位的指令 [ORG 0x7C00] jmp main read_kernelloader:
2015-11-16 19:57:19 333
原创 bochs上网及配置
下载并安装bochs2.6:(不能是更高版本) 创建bochs 时注意勾选Dlx linux Demo,但是其文件bochsrc.bxrc中无Ne2k网卡选项,这一段要自己添加,详情见后。 先确定我们电脑里的真实网卡: 开始->程序->附件->命令提示符 DOS窗口下运行ipconfig /all 记住真实网卡是VIA 下载安装wincap,这个是bochs运行网卡要求的条件,它是
2015-11-15 16:54:51 4556
原创 操作系统与网络实现 之九
点阵字库 字母Y 对应bit值 字母A 对应bit值 00000000 00000000 00000000 00000000 M M M M
2015-11-10 12:54:01 287
原创 操作系统与网络实现 之八
颜色的生成 前面我们使用了一个值0x7ff,将此值填入显卡地址后显示的是一个蓝色的点,那么这个值是怎么来的呢? 色彩是由红、绿、蓝三色按不同配比而组成的. 不同色彩的值经过一定形式组合后,会产生各种不同的色彩。 三种颜色的值从0到255,代表三色的强弱,分别对应值0x0 - 0xff。每种颜色是8位,三种颜色就占24位,但是我们的图形模式是16位颜色,其中r:g:b是按5:6:5占位,共16位,2
2015-11-07 13:42:44 297
原创 操作系统与网络实现 之七
使用C语言编写内核 到目前为止,我们可以使用32位编程了,但是用汇编编程还是一件比较枯燥、比较痛苦的事,下一步我们想用C语言编写32位系统,那么怎么办? 办法就是在kernel.asm使用call语句直接调用C程序。 具体过程如下: 汇编文件kernel.asm生成中间文件kernel.asmo。 C文件kernel.c生成中间文件kernel.o。 这两个中间文件再链接生成kernel.bin文
2015-11-06 21:36:06 213
原创 操作系统与网络实现 之三
关于磁盘的数据存储和定位 这是一个磁盘示意图: 一个磁盘有两面。0面和1面。 磁道共80个,编号由外向里(0号-79号)。 扇区(Sector)是磁盘存储的最小单位,一个扇区有512字节,一个磁道有18个扇区(1号-18号)。 为方便存取文件必须对扇区进行编号,这编号称为软盘地址。软盘地址由磁头号、磁道号、扇区号三部分组成。 (1)磁头号。0面对应0号磁头,1面对应1号磁头。 (2)
2015-11-06 15:27:55 336
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人