操作系统与网络实现 一
来源:互联网 发布:淘宝如何修改收货地址 编辑:程序博客网 时间:2024/05/22 15:44
写在前面的话
自己一直以来对操作系统感兴趣,想把自己的一些体会写出来,希望起到抛砖引玉的作用,能对大家有一些帮助,那就是我最愿意看到的事。
可以显示图片及汉字,可以连接网络,代码基本完成,只是形成文字需要一点时间。不足之处请多提意见,大家共同学习共同提高。
新内容将会在我的博客 http://www.cnblogs.com/ya20151015/ 发布
这个小东西还差一个名字,就叫它“小Ya”吧。
系统运行效果:
显示字符串:
显示四位十六色bmp:
显示十六位64K色bmp:
搭建开发环境
在windows XP环境下
首先选择各个工具软件,我们选择的都是可以自由使用的软件:
文本编辑器:
选用软件Notepad++。
其它辅助工具:
反汇编软件 ----用来对bin文件反汇编,调试程序使用
磁盘编辑工具 ---- 用来查看、修改文件内容
这几个软件对安装目录不作要求,下载安装很简单,就不详细说了。
第一个汇编程序
汇编编译器
选择Nasm。
安装在D:\nasm目录下。
在http://sourceforge.net/projects/nasm下载nasm
将文件解压后得到两个文件
NASM.EXE为编译器 ndisnasm.exe为反编译器。
用Notepad++编写以下代码,存为first.asm文件:
org0x100
ns db0x31,0x32;1和2的ascII码
moval,[ns+0];数组从0开始
movah,0eh
int10h
jmp$
将 first.asm 源代码放到 nasm.exe 的所在目录D:\nasm
打开DOS窗口(开始->程序->附件->命令提示符),进入D:\nasm目录,以后打开dos仿照此方法
cd /d d:\nasm
然后输入命令:
nasm first.asm -o first.com
此命令将源代码编译成.com文件,双击first.com运行
在屏幕上显示数值1
每次编译一个asm程序要反复更换到命令行窗口,效率低。有没有高效率的办法呢? 有,可以使用批命令+makefile,这个以后讲解。
C编译器
选择djgpp
在Windows环境下gcc编译器有djgpp, MinGW,devcpp,等.我们选择djgpp
这个djgpp里面带的gcc版本是4.7.3
具体下载过程:
打开网页http://www.delorie.com/djgpp/
点击Zip Picker
在打开的第二个网页中:
Pick one for me从下拉菜单中选择第一个
继续选择如下内容:
最后点击最下面的
在打开的第三网页中,依次点击下载以下各文件:
在C盘根目录建立文件夹DJGPP,C:\DJGPP,将下载的文件全部拷贝到这个文件夹.进入dos窗口,打开文件夹C:\DJGPP,并运行命令:
unzip32 *.zip.
用IE打开README.1ST,按其方法配置djgpp。
步骤如下:
设置环境变量
右击"我的电脑"——"属性"——"高级"——"环境变量"
添加C:\DJGPP\BIN;%PATH%到path变量,注意与前面间隔要加分号' ; '
添加D:\nasm;%PATH%到path变量
新建变量DJGPP为C:\DJGPP\DJGPP.ENV
错误信息定向
在djgpp里有个程序叫redir.exe,它可以将编译的信息输入到指定的txt文件中,其用法如下:
redir -o xx.txt -eo 接编译命令
问题是Windows已经有自己的redir.exe,两个程序互相冲突,运行会提示:The VDM redirector is already loaded ,解决办法是把djgpp中的bin\redir.exe改名为djredir.exe,
打开DOS窗口,进入D:\nasm,在命令行中输入:djredir -o 01.txt -eo nasm 1.asm -o 1.com,编译信息会保存在当前目录下的01.txt文件中。
为什么要用djredir.exe,因为编译程序时DOS窗口会闪过,看不清里面的内容,所以定向输出到txt文件里慢慢看结果。
使用批命令
到目前为此,每次编译程序时都要打开DOS窗口,很是麻烦,现在我们看看用批命令怎么来编译程序:
第一个c程序"Hello world"
新建目录:D:\GX\ya\code
在此目录下用Notepad++编写以下代码,存为Helloworld.c 文件:
#include<stdio.h>
#include<stdlib.h>
int main(){
printf("Hello world! ");
system("pause");//加此句是运行时保留DOS窗口以便看清内容
return0;
}
新建目录:D:\GX\ya\out 这里用来存放我们编译程序的结果
在D:\GX\ya目录下编写一个djgpp.bat,内容为djredir -o 30.txt -eo gcc code/Helloworld.c -o out/ Helloworld.exe
意思是生成一个可执行文件名为Helloworld.exe存放在out目录下,并且从定向生成一个30.txt文件,里面包含编译过程中出现的错误提示信息。
双击djgpp.bat,在目录out中生成Helloworld.exe
双击Helloworld.exe,显示Hello world!
把开头的first.asm复制到code目录,用相似的办法看看能不能编译。
- 操作系统与网络实现 一
- 操作系统与网络实现 之四
- 操作系统与网络实现 之五
- 操作系统与网络实现 之二
- 操作系统与网络实现 之六
- 操作系统与网络实现 之一 (甲)
- 操作系统与网络实现 之三
- 操作系统与网络实现 之七
- 操作系统与网络实现 之八
- 操作系统与网络实现 之九
- 操作系统与网络实现 之十
- 操作系统与网络实现 之十一
- 操作系统与网络实现 之十二
- 操作系统与网络实现 之十三
- 操作系统与网络实现 之十四
- 操作系统与网络实现 之十五
- 操作系统与网络实现 之十六
- 操作系统与网络实现 之十七
- 笔记_Maya绑定基础_ 骨骼绑定 注意规范 和属性调节以及插入骨骼
- 鸟哥的Linux私房菜(基础篇)- 附录 A: GNU 的 GPL 条文 version 2
- 简单的介绍Thread与Handler的原理
- 关于 Java Collections API 您不知道的 5 件事--转
- CentOS6.6下的Nagio安装配置详解(三)
- 操作系统与网络实现 一
- base64加密原理及作用
- Android 监控软键盘状态
- IOS @符号
- Dockerfile编写
- urllib和urllib2常用方法
- GridView 行动画
- Android判断权限被限制
- android studio运行时报错the selected device is incompatible