操作系统与网络实现 之二十(丁)

mac.asm

[BITS 32]

 

[GLOBAL _netinitial]    ;我们必须导出这个函数让C程序使用,注意此函数名不用出现在头文件里

[SECTION .data]

ns db 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,0x5C,0x08,0x00,0x96,0x98,0x2B,0x00,0x00,0x00,0x44,0x45,0xF3,0x55,0x0C,0xC9,0x07,0x00,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x48,0x65,0x6C,0x6C,0x6F,0x20,0x77,0x6F,0x72,0x6C, 0x64,0x21,

               

;;Hello world! -> 48 65 6C 6C 6F 20 77 6F 72 6C 64 21

[SECTION .text]

_netinitial:            ;入口

pushad

ioNo equ 0xc040        ;一定要以数字开头,不能用ioNo dw 0c000h

mov edi, 0x4001c0      ;内存中存放节点的缓冲区首址0x4001c0  待改

mov dx,ioNo             ;CR命令寄存器

mov  al,0x21            ;选择页面0,总清网卡,看看里面是什么,一开始选择页面0是因为许多寄存器在页面0

                          ;强制DMA结束

out dx,al

 

mov dx,ioNo+0xa

xor al,0x6               

out dx,al        

 

mov dx,ioNo+0xb

xor al,1               

out dx,al  

 

mov dx,ioNo+0xc

mov al,0xe0             ;monitor mode (no packet receive)

out dx,al 

 

mov dx,ioNo+0xd

mov al,0xe2             ;loop back mode

out dx,al 

 

;;使用0x40-0x4B为网卡的发送缓冲区,共12页,刚好可以存储2个最大的以太网包。

;;使用0x4c0x7f为网卡的接收缓冲区,共52页。

 

mov dx,ioNo+0x01

mov al,0x4c             ;Pstart  接收缓冲区范围

out dx,al 

 

mov dx,ioNo+0x02

mov al,0x80             ;Pstop

out dx,al 

 

mov dx,ioNo+0x03

mov al,0x4c             ;BNRY设置指针

out dx,al

 

 

 

mov dx,ioNo+0x07

mov al,0xff             ;清除所有中断标志位

out dx,al

 

mov dx,ioNo+0x0f

mov al,0x00             ;IMR disable all interrupt

out dx,al

 

mov dx,ioNo+0x0e

;;mov al,0x49           ;DCR设置数据配置寄存器,规定远程传输方式使用PIO

mov al,0xc8             ;DCR设置数据配置寄存器,使用FIFO缓存,普通模式,8位数据DMA

out dx,al

 

;;下面转到页面1

mov dx,ioNo

mov  al,0x62            ;选择页面1,加电start,强制DMA结束

out dx,al

 

;;给页面1PDR0~5写入mac

mov cx,6                ;循环6

mov ebx,6               ;从数组[6]开始

mov dx,ioNo+1           ;PAR0

next1:

mov al,[ns + ebx]

out  dx,al              ;写网卡

inc dx

inc bx

dec cx

jnz next1               ;cx不为0则继续

 

 

mov dx,ioNo+0x07

mov al,0x4d             ;CURRRTL8019AS写内存的指针,指向当前正在写的页的下一页,初始化时指向0x4c+1=0x4d

out dx,al

 

 

;;再次选择页面0

;;将网卡设置成正常的模式,跟外部网络连接

mov dx,ioNo          ;CR命令寄存器

mov  al,0x22         ;选择页面0start网卡,强制DMA结束

out dx,al

 

mov dx,ioNo+0xc

mov al,0xcc          ;RCR设置接收配置寄存器,使用接收缓冲区,仅接收自己地址的数据包(以及广播地址数据包)和多点播送地址包,小于64字节的包丢弃,校验错的数据包不接收;

out dx,al 

 

mov dx,ioNo+0xd

mov al,0xe0          ;TCR 设置发送配置寄存器,启用CRC自动生成和自动校验,工作在正常模式;

out dx,al

 

mov dx,ioNo+0x07

mov al,0xff          ;清除所有中断标志位

out dx,al

 

 

 

 

;;之后启动远程DMA,数据写入RTL8019ASRAM,再启动本地DMA,将数据发送网上。

mov dx,ioNo+0x08

mov al,0x00          ;RSAR0寄存器为远程开始地址低8

out dx,al

mov dx,ioNo+0x09

mov al,0x40          ;RSAR1寄存器为远程开始地址高8

out dx,al

 

mov dx,ioNo

mov al,0x12          ;远程DMA写页面0开始

out dx,al

 

 

mov cx,98            ;循环98

mov ebx,0

mov dx,ioNo+0x10     ;远程DMA读写端口

next2:

mov al,[ns+ebx]

out dx,al            ;依次写入到网卡rom 0x4000

inc ebx

dec cx

jnz next2            ;cx不为0则继续

 

;;之后启动远程DMA,数据写入RTL8019ASRAM0x4000,再启动本地DMA,将数据发送网上。

mov dx,ioNo+0x08

mov al,0x00          ;RSAR0寄存器为远程开始地址低8

out dx,al

mov dx,ioNo+0x09

mov al,0x40          ;RSAR1寄存器为远程开始地址高8

out dx,al

 

mov dx,ioNo+0x04

mov al,0x40          ;TPSR 发送页的起始页地址,初始化为指向第一个发送缓冲区的页即0x40

out dx,al

 

mov dx,ioNo+0x05

mov al,0x62          ;TBCR0 发送字节计数 98字节,低八位

out dx,al

 

mov dx,ioNo+0x06

mov al,0x00          ;TBCR1 发送字节计数器,高八位

out dx,al

 

mov dx,ioNo

mov al,0x16          ;禁远程DMA,页面0,网卡加电,发送

out dx,al

 

popad

ret

 

 

 

 

 

graph.h

#ifndef _GRAPH_H_

#define _GRAPH_H_

 

 

// 色调合成函数

unsigned short rgb_mix( unsigned char r , unsigned char g , unsigned char b ) ;

 

// 画点函数

void draw_dot( unsigned int x , unsigned int y , unsigned short color ) ;

 

// 显示英文

void ya_draw_english( unsigned int x , unsigned int y , unsigned int pos_in_font , unsigned short color ) ;

 

// 显示汉字

void ya_draw_chinese( unsigned int x , unsigned int y , unsigned int pos_in_font , unsigned short color ) ;

 

// 显示字符串

void ya_draw_chars( int x, int y, char *chars , unsigned short color) ;

 

 

// 显示四位bmp图片

void ya_draw_4bit_bmp( unsigned int x , unsigned int y ,unsigned int addr) ;

 

//画块,旋转

void draw_trunk(int addr_begin, int x, int y, int a, int b, unsigned short color) ;

 

#endif

 

 

 

 

port.h

#ifndef _PORT_H_

#define _PORT_H_

 

unsigned char readb( unsigned short p ) ;

 

unsigned short readw( unsigned short p ) ;

 

unsigned int readl( unsigned short p ) ;

 

 

void writeb( unsigned short p , unsigned char val ) ;

 

void writew( unsigned short p , unsigned short val ) ;

 

void writel( unsigned short p , unsigned int val ) ;

 

#endif

 

 

 

pciprobe.h

 

#ifndef _PCIPROBE_H_

#define _PCIPROBE_H_

 

#define CONFIG_ADDRESS       0xCF8    //Configure register used to read configure space. PCI的地址寄存器IO地址

#define CONFIG_DATA          0xCFC    //Data register.  PCI的数据寄存器IO地址

 

int  PciBusProbe();

void PciProbe() ;

void netcardprobe() ;

 

 

#endif

 

 

 

 

 

makefile

######################

#声明要编译的所有组成,这里的ya是本工程名称,可以取任何名字,这里就用ya

######################

ya:out/boot.bin out/kernelloader.bin out/kernel.asmo out/kernel.o out/graph.o out/port.o out/pciprobe.o out/mac.asmo out/kernel.ld  out/kernel.bin out/creat_img.exe out/write_in_img.exe A B C D E F G H

#开始对各部分编译,注意不是空格是Tab

out/boot.bin:code/boot.asm

nasm code/boot.asm -o out/boot.bin

out/kernelloader.bin:code/kernelloader.asm

nasm code/kernelloader.asm -o out/kernelloader.bin

# 编译asm文件,生成中间文件

out/kernel.asmo:code/kernel.asm

nasm -f aout code/kernel.asm -o out/kernel.asmo

out/mac.asmo:code/mac.asm

nasm -f aout code/mac.asm -o out/mac.asmo

# 编译C文件,生成中间文件

out/kernel.o:code/kernel.c

gcc -fpack-struct -std=c99 -c code/kernel.c -o out/kernel.o

out/graph.o:code/graph.c

gcc -fpack-struct -std=c99 -Wno-packed-bitfield-compat -c code/graph.c -o out/graph.o

out/port.o:code/port.c

gcc -fpack-struct -std=c99 -Wno-packed-bitfield-compat -c code/port.c -o out/port.o

out/pciprobe.o:code/pciprobe.c

gcc -fpack-struct -std=c99 -Wno-packed-bitfield-compat -c code/pciprobe.c -o out/pciprobe.o

# 链接内核

out/kernel.ld:out/kernel.asmo out/kernel.o out/graph.o out/port.o out/pciprobe.o out/mac.asmo

ld  -Ttext 0x80000 -e start -o out/kernel.ld out/kernel.asmo out/kernel.o out/graph.o out/port.o out/pciprobe.o out/mac.asmo

# 生成可执行代码文件

out/kernel.bin:out/kernel.ld

objcopy -R .note -R .comment -S -O binary out/kernel.ld out/kernel.bin

# 制作内核映象文件

out/creat_img.exe:code/creat_img.c

gpp code/creat_img.c -o out/creat_img.exe

# 执行dos命令,在final目录下生成a.img文件

A:

out/creat_img.exe final/a.img

 

# 写入文件,argv[1]=目标文件 argv[2]=源文件  argv[3]=写入偏移量  

#DOS下用法: write.exe a.img kernelloader.bin 512

out/write_in_img.exe:code/write_in_img.c

gpp code/write_in_img.c -o out/write_in_img.exe

# 执行dos命令,向a.img写入代码,内容是boot.bin

# 写入磁盘位置从0偏移量起始,1个扇区512字节

B:

out/write_in_img.exe final/a.img out/boot.bin 0

# 执行dos命令,向a.img写入代码,内容是kernelloader.bin

# boot.bin已经占用了512字节,写入磁盘位置从512偏移量起始,2个扇区1024字节

C:

out/write_in_img.exe final/a.img out/kernelloader.bin 512

# 执行dos命令,向a.img写入代码,内容是asc16

# boot.bin+kernelloader.bin已经占用了512+1024 = 1536字节,写入磁盘位置从1536偏移量起始

D:

out/write_in_img.exe final/a.img charpic/asc16 1536

E:

out/write_in_img.exe final/a.img charpic/hzk16f 5632

F:

out/write_in_img.exe final/a.img charpic/ya.bmp 267776

G:

out/write_in_img.exe final/a.img charpic/faya.bmp 361984

H:

out/write_in_img.exe final/a.img out/kernel.bin 479232

 

 

######################

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
网络安全题目 填空题:1。网络安全应具有保密性、完整性、可用性、可控性、可审查性五个方面的特 征. 2. 对于网络安全问题物理措施、访问控制、数据加密、网络。隔离措施、防火墙技术可以 做到防范于未然。 3目前各类网络攻击技术分为阻塞类攻击、控制类攻击、探测类攻击、欺骗类攻击、病毒 类攻击、电磁辐射攻击。 4. .威胁网络安全的主要因素有自然灾害、 意外事故 、计算机犯罪 、"黑客"行为 。 5。 网络服务提供者在业务活动中收集、使用公民个人电子信息,应当遵循的原则有合法原 则、正当原则、必要原则。 选择题:1。 在网络纠纷案件中,网络游戏客户的号码被盗了,应采取的合理措施是(A) A。向网站 客服投诉请求解决 B。拨打 120 C。拨打 119 D。找网络黑客再盗回来 2。下列情形中,不构成侵权的是(C) A.未经他人同意擅自在网络上公布他人隐私 B.下载网络小说供离线阅读 C。伪造、篡改 个人信息 D.非法侵入他人电脑窃取资料 3.网络蠕虫一般指利用计算机系统漏洞、通过互联网传播扩散的一类病毒程序。为了防 止受 到网络蠕虫的侵害,应当注意对(A)进行升级更新. A.计算机操作系统 B.计算机 硬件 C.文字处理软件 4.甲冒充新闻工作者,以在新闻网站上发布隐私为要挟,向乙、丙、等人索取了数十 万财物。 甲的行为应当认定为(A) A。敲诈勒索罪 B.诈骗罪 C.招摇撞骗罪 D。寻衅 滋事罪 5。某公司未经授权,擅自在其经营的网站提供某电影供在线观看,该公司侵犯了制作该 电影的 电影公司的(C) A。专利权 B。商标权 C.信息网络传播权 D。发明权 6.以下关于非对称密钥加密的表述,正确的是(C) A.加密方和解密方使用的是不同的算 法 B.加密密钥和解密密钥是不同的 C。加密密钥和解密密钥匙相同的 D.加密密钥和解 密密钥没有任何关系 7.国内第一家网上银行是(A) A.招商银行网上银行 B。中国农业银行网上银行 C.中国 银行网上银行 D.中国建设银行网上银行 8.采用一种或多种传播手段,使大量主机感染病毒,从而在控制者和被感染主机之间形成 一个 可一对多控制的网络。该网络通常称为(A) A.钓鱼网络B。游戏网络 C。僵尸网络 D.互联网络 9. 以下关于宏病毒的表述,正确的是(B) A.宏病毒主要感染可执行文件 B.宏病毒仅向办公自动化程序编制的文档进行传染 C.宏病毒主要感染 U 盘、硬盘的引 导扇区或主引导扇区 D.CIH 病毒属于宏病毒 10.下列程序能修改高级语言源程序的是(D) A.调试程序 B.解释程序 C。编译程序 D .编辑程序 12。互联网上网服务营业场所不得允许未成年人进入,经营者应当在显著位置设置未成 年人 禁入标志;对难以判明是否已成年的,应当要求其出示(B) A.学生证 B.身份证 C .工作证 D。借书证 13。在网络环境下,权利管理信息专指以(A)出现的信息,它们被嵌在电子文档里,附 加于作品的 每件复制品上或作品中向公众传播时显示出来。 A。数字化形式 B。纸面化 形式 C。图像形D。声音形式 D.声音形式 14。 下列选项中,使用身份认证双因素法的是(D) A。电话卡 B。交通卡 C.校园饭卡 D.银 行卡 15。非法获取计算机信息系统数据、非法控制计算机信息系统罪的犯罪主体是年满(D)周 岁并 具有刑事责任能力的自然人. A.10.0 B。14.0 C.16.0 D。18。0 16.国际电信联盟将每年的5月17日确立为世界电信日,今年已经是第38届。今年世界电信 日的主题为. A、"让全球网络更安全" B、"信息通信技术:实现可持续发展的途径" C、"行 动起来创建公平的信息社会" 17.信息产业部将以世界电信日主题纪念活动为契机,广泛进行宣传和引导,进一步增 强电信行业和全社会的意识。 A、国家安全 B、网络与信息安全 C、公共安全 18.为了进一步净化网络环境,倡导网络文明,信息产业部于2006年2月21日启动了 持续到年底的系列活动。 A、阳光绿色网络工程 B、绿色网络行动 C、网络犯罪专项整治 19."阳光绿色网络工程"的"阳光"寓意着光明和普惠万事万物,并要涤荡网络上的污 浊;"绿色"代表要面向未来构建充满生机的和谐网络环境;"网络"代表活动的主要内容 以网络信息服务为主;"工程"代表活动的系统性和长期性。系列活动的副主题为:倡导 网络文明,。 A、构建和谐环境 B、打击网络犯罪 C、清除网络垃圾 20.为了规范互联网电子邮件服务,依法治理垃圾电子邮件问题,保障互联网电子邮件 用户的合法权益,信息产业部于2006年2月20日颁布了,自2006年3月30日开始施行。 A、《互联网信息服务管理办法》 B、《互联网电子邮件服务管理办法》 C、《互联网 电子公告服务管理规定》 --

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值