自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

canmeng50401的专栏

编程加调试才是王道。

  • 博客(25)
  • 资源 (18)
  • 收藏
  • 关注

转载 人物传奇:操作系统“天神”David Cutler

      David Cutler,VMS和Windows NT的首席设计师,1988年去微软前号称硅谷最牛的内核开发人员,在操作系统领域摸爬滚打几十年,其间的经历就像一部标准的外省青年奋斗记。      与许多计算机界的前辈牛人们一样,David Cutler并不是计算机科班出生,他在大学拿的是数学学士,主攻物理,满怀热情地想成为一位建造事物的工程师。所以,毕业后他进入杜邦公司从事材料测试。一次偶然的机会,David被指派负责在DEC的计算机上运行模拟程序,还为多台单机实时系统编写中央控制程序,调度各种

2011-05-30 22:04:00 1664

转载 世界上最牛的程序员

      MIT BBS上说微软电话面试的一道题就是“Who do you think is the best coder, andwhy?”。我觉得挺有意思的,也来凑个热闹。排名不分先后。      Bill Joy, 前任Sun的首席科学家,当年在Berkeley时主持开发了最早版本的BSD。他还是vi和csh的作者。当然,Csh Programming Considered Harmful 是另一个话题乐。据说他想看看自己能不能写个操作系统,就在三天里写了个自己的Unix, 也就是BSD的前身。当然

2011-05-29 18:06:00 1753

原创 第17章 使用BIOS进行键盘输入和磁盘读写 笔记2

<br />上次只实现了向软盘中写数据。今天要实现向软盘中读取数据。今天晚上回来后看了会儿小说,就开始调试程序了。我上次是使用Virtual PC 2007进行实验的,但是发现Virtual PC 2007有一点小问题。今天就使用的是bochs。调试许久,终于出来了。真高兴啊。实验代码如下面:<br />assume cs:codedata segmentdw 256 dup (1324h)data endscode segmentint7ch: jmp short beg

2011-05-18 00:47:00 607

原创 第17章 使用BIOS进行键盘输入和磁盘读写

P302 键盘输入将引发9号中断,BIOS提供了 int 9 中断例程。P303 BIOS的 int 9 中断例程和 int 16h 中断例程是一对相互配合的程序,int 9 中断例程向键盘缓冲区中写入,int 16h 中断例程从缓冲区中读出。它们写入和读出的实际不同,int 9 中断例程是在有键按下的时候想键盘缓冲区中写入数据;而 int 16h 中断例程是在应用程序对其进行调用的时候,将数据从键盘缓冲区中读出。

2011-05-15 23:25:00 770 1

原创 2011.05.14 Family Day 公司内部趣味运动会

      今天公司在万科城小学举办了趣味运动会,我也参加了。我走了方阵,参加了“鱼跃五环”和“力拔山河”这两项比赛。天气也还好,不算太热。一会儿出太阳,一会儿又被云彩遮住了,还凉风习习的。      不过比赛的过程中出现了一点小插曲,快要进行拔河比赛时,突然下起了小雨,还有越来越大的趋势。我们坚持着没有散开,淋了一会儿雨居然停了。比赛正常进行了下去。不过可惜的是,最后我们“联合方阵1”在7支队伍中名列第六,没有取得前三甲,可惜啊。       感觉公司举办这样的活动还是很好的,至少能促进一下部门内部和部门

2011-05-14 23:05:00 943

原创 第16章 直接定址表 笔记

P289 数据标号标记了存储数据的单元的地址和长度。它不同于仅仅表示地址的地址标号。P290 注意:在后面加有":"的地址标号,只能在代码段中使用,不能在其它段中使用。P295 在上面的两个子程序中,我们将 通过给出的数据进行计算或比较而得到结果的问题,转化为用给出的数据作为查表的数据,通过查表得到问题的结果。具体的查表方法,是用查表的依据数据,直接计算出所要查找的元素在表中的位置。像这种可以通过依据数据,直接计算出所要找的元素的位置的表,我们称其为:直接定址表。P299 实验16 编写包含多个功能子程序的

2011-05-14 21:22:00 547

原创 第15章 外中断 笔记

P272 PC系统的接口卡和主板上,装有各种接口芯片。这些外设接口芯片的内部有若干寄存器,CPU将这些寄存器当作端口来访问。         外设的输入不直接送入内存和CPU,而是送入相关的接口芯片的端口中;CPU向外设的输出也不是直接送入外设,而是先送入到端口中,再由相关的芯片送到外设。CPU还可以向外设输出控制命令,而这些控制命令也是先送到相关芯片的端口中,然后再由相关的芯片根据命令对外设实施控制。         可见,CPU通过端口和外部设备进行联系。P274 一般将按下一个键时产生的扫描码称为通码

2011-05-13 21:51:00 458

原创 第14章 端口 笔记

P265 CPU可以直接读写以下3个地方的数据:(1) CPU内部的寄存器;(2) 内存单元;(3) 端口。        在访问端口的时候,CPU通过端口地址来定位端口。因为端口所在的芯片和CPU通过总线相连,所以端口地址和内存地址一样,通过地址总线来传送。在PC系统中,CPU最多可以定位64KB个不同的端口。则端口地址的范围是0~65535。        对端口的读写不能用mov,push,pop等内存读写指令。端口的读写指令只有两条:in和out,分别用于从端口读取数据和往端口写入数据。P266 注

2011-05-12 22:38:00 602

原创 第13章 int指令 笔记

<br />P252 CPU执行int n指令,相当于引发一个n号中断的中断过程。<br />P254 int指令和iret指令的配合使用与call和ret指令的配合使用具有相似的思路。<br />P259 一般来说,一个供程序员调用的中断例程中往往包括多个子程序,中断例程内部用传递进来的参数来决定执行哪一个子程序。BIOS和DOS提供的中断例程,都用ah来传递内部子程序的编号。<br />P262 实验13 编写、应用中断例程。(书里都有例子的,比较简单,就不写程序了)

2011-05-11 22:32:00 605

转载 Intel公司的CPU发展史简述

      摘要:中央处理器(Central Processing Unit,CPU),是电子计算机的主要设备之一,由运算器和控制器组成。本文介绍CPU由4位处理器、8位处理器、16位处理器、32位处理器的简单发展历程,挑选了里程碑的事件进行讲述。可以说个人电脑的发展是随着CPU的发展而前进的。一. Intel 4004  1971年,英特尔公司推出了世界上第一款微处理器4004,这是第一个用于微型计算机的4位微处理器,它包含2300个晶体管,随后英特尔又推出了8008,由于运算性能很差,其市场反应十分不理

2011-05-10 23:10:00 9773

转载 windows操作系统中安装驱动文件时的关于数字签名的知识

      在Windows 2000以前的Windows版本中,安装操作系统之外的软件,可能会覆盖掉一些共享的系统文件,例如动态链接库(*.dll文件)、可执行文件(*.exe),这样可能会导致程序运行不稳定、系统出现故障,这主要是由于所谓的DLL陷阱所导致。      为了彻底解决这一问题,在Windows 2000和Windows XP中,微软引入了“Windows文件保护”机制用来防止替换受到保护的系统文件,包括*.sys、*.dll、*.ocx、*.ttf、*.fon、*.exe等类型的文件,Wi

2011-05-10 22:32:00 6227

原创 第12章 内中断 笔记

P238 可以用中断类型码,在中断向量表中找到中断处理程序的入口。找到这个入口地址的最终目的是用它设置CS和IP,使CPU执行中断处理程序。用中断类型码找到中断向量,并用它设置CS和IP,这个工作是由CPU的硬件自动完成的。CPU硬件完成这个工作的过程被称为中断过程。         CPU收到中断消息后,要对中断消息进行处理,首先将引发中断过程。硬件在完成中断过程后,CS:IP将指向中断处理程序的入口,CPU开始执行中断处理程序。         下面是8086CPU在受到中断消息后,所引发的中断过程:(

2011-05-10 21:59:00 649

原创 第11章 标志寄存器 笔记

P213 在CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理器,个数和结构都可能不同)具有以下3种作用:(1) 用来存储相关指令的某些执行结果;(2)用来为CPU执行相关指令提供行为依据;(3)用来控制CPU的相关工作方式。         这种特殊的寄存器在8086CPU中,被称为标志寄存器。P233 pushf的功能是将标志寄存器的值压栈,而popf是从栈中弹出数据,送入标识寄存器。pushf和popf,为直接访问标志寄存器提供了一种方法。P234 编写子程序,代码如下:assume cs:co

2011-05-09 22:16:00 740

转载 评论:微软37年的悲剧:MS-DOS的幽灵

声明:本文转载自太平洋电脑网:http://article.pchome.net/content-1147174.html       一个由虚拟设备文件而造成的限制,竟然能跨越三十多年,跨越CP/M、MS-DOS、Windows、OS/2和Windows NT五个架构而以相同的形式存在,这最后也许真是微软的一场悲剧。      1973年,一个名为CP/M的操作系统诞生了。CP/M的文件系统是单层目录结构,文件名限制为8.3字符。为了支持用户程序的输入输出,CP/M提供了虚拟文件 COM1, COM2,

2011-05-08 23:44:00 722

原创 第10章 CALL和RET指令 课程设计一

     第10章的课程设计一是比较难的。我以前也做出来过,这次再做,也花了一个下午加一个晚上的时间。还是自己功力不行啊。平时多多练习多多编程还是正道。下面是今天晚上该搞定的代码:assume cs:codesgdata segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db '1984','1985','1986','1987','1988','1989','1990','1991','199

2011-05-08 22:16:00 524

原创 第10章 CALL和RET指令 笔记

P190 call和ret指令都是转移指令,它们都修改IP,或同时修改CS和IP。它们经常被共同用来实现子程序的设计。         ret指令用栈中的数据,修改IP的内容,从而实现近转移;         CPU执行ret指令时,相当于进行:    pop IP。         retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移。         CPU执行retf指令时,相当于进行:    pop IP    pop CSP199 mul是乘法指令,使用mul做乘法的时候,注意以下两点:

2011-05-08 11:52:00 644

原创 第9章 转移指令的原理 笔记

P175 可以修改IP,或同事修改CS和IP的指令统称为转移指令。概括地讲,转移指令就是可以控制CPU执行内存中某处代码的指令。         8086CPU的转移行为有以下几类:● 只修改IP时,称为段内转移,比如 jmp ax● 同时修改CS和IP时,称为段间转移,比如 jmp 1000:0         由于转移指令对IP的修改范围不同,段内转移又分为:短转移和近转移。● 短转移IP的修改范围为-128~127。● 近转移IP的修改范围为-32768~32767。         8086CPU的

2011-05-08 09:08:00 531

原创 第8章 数据处理的两个基本问题 笔记

P161 在8086CPU中,只有4个寄存器bx,si,di和bp可以用在“[……]”中进行内存单元的寻址。         在“[……]”中,这4个寄存器或者单个出现,或只能以4中组合出现:bx和si,bx和di,bp和si,bp和di。P162 只要在[……]中使用寄存器bp,而指令中没有显式地给出段地址,段地址就默认放在ss中。P169 div是除法指令。使用div做除法的时候应注意以下问题:(1) 除数:有8位和16位两种,在一个reg或内存单元中。(2) 被除数:有16位和32位两种,默认放在AX

2011-05-07 23:00:00 486

原创 第7章 更灵活的定位内存地址的方法 笔记

P139 我们可以在汇编程序中,用'……'的方式指明数据是以字符的形式给出的。编译器将把它们转化成相对应的ASCII码。P152 如果我们比较一下前面用到的几种定位内存地址的方法(可称为寻址方式),就可以发现:(1) [idata]用一个常量来表示地址,可用于直接定位一个内存单元;(2) [bx]用一个变量来表示内存地址,可用于间接定位一个内存单元;(3) [bx+idata]用一个变量和常量表示地址,可在一个起始地址的基础上用变量间接定位一个内存单元;(4) [bx+si]用两个变量表示地址;(5) [b

2011-05-05 22:10:00 528

原创 第6章 包含多个段的程序 笔记

P123 程序取得所需空间的方法有两种:一是在加载程序的时候为程序分配;二是在程序执行的过程中向系统申请。在我们的课程中,不讨论第二种方法。         我们若要一个程序在被加载的时候取得所需的空间,则必须要在源程序中作出说明。我们通过在源程序中定义段来进行内存空间的获取。P126 我们可以在源程序中指明程序的入口所在。         伪指令end除了通知编译器程序结束外,还可以通知编译器程序的入口在什么地方。         在前面的课程中(参见4.8节),我们已经指导在单任务系统中,可执行文件的程

2011-05-04 22:21:00 454

原创 第5章 [BX]和loop指令 笔记

P95 要完整地描述一个内存单元,需要两种信息:1.内存单元的地址;2.内存单元的长度(类型)。       为了描述上的简洁,在以后的课程中,我们将使用一个描述性的符号“()”来标识一个寄存器中的内容或一个内存单元中的内容。P96 注意,“()”中的元素可以有3中类型:1.寄存器名;2.段寄存器名;3.内存单元的物理地址(一个20位数据)。       “(X)”所表示的数据有两种类型:1.字节;2.字。P99 loop指令的格式为:loop 标号,CPU执行loop指令的时候,要进行两步操作,1.(cx

2011-05-03 23:17:00 541

原创 第4章 第一个程序 笔记

P77 可执行文件包括两部分内容:1.程序(从源程序中的汇编指令翻译过来的机器码)和数据(源程序中定义的数据);2.相关的描述信息(比如,程序有多大,要占用多少内存空间等)。P79 注意,以后可以将源程序文件中的所有内容成为源程序,将源程序中最终由计算机执行、处理的指令或数据,成为程序。P91 为了观察程序的运行过程,可以使用debug。debug可以将程序加载入内存,设置CS:IP指向程序的入口,但debug并不放弃对CPU的控制,这样,我们就可以使用debug的相关命令来单步执行程序,查看每一条指令的执

2011-05-02 22:11:00 409

原创 第3章 寄存器(内存访问) 笔记

P47 字单元,即存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成。高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节。P48 任何两个地址连续的内存单元,N号单元和N+1号单元,可以将它们看成两个内存单元,也可看成一个地址为N的字单元的高位字节单元和低位字节单元。P49 8086CPU不支持将数据直接送入段寄存器的操作。为什么8086CPU不支持将数据直接送入段寄存器的操作?这属于8086CPU硬件设计的问题,我们只要知道这一点就行了。P57 8086CPU的

2011-05-02 21:55:00 513

原创 第2章 寄存器 笔记

P14 8086CPU有14个寄存器,每个寄存器有一个名称。这些寄存器是:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。       8086CPU的所有寄存器都是16位的,可以存放两个字节。       8086CPU的上一代CPU中的寄存器都是8位的,为了保证兼容,使原来基于上代CPU编写的程序稍加修改就可以运行在8086之上,8086CPU的AX、BX、CX、DX这4个寄存器都可分为两个可独立使用的8位寄存器来用。P16 处于兼容性的考虑,8086CPU可以一次

2011-05-02 17:09:00 665

原创 第1章 基础知识 笔记

P4 磁盘不同于内存,磁盘上的数据或程序如果不读到内存中,就无法被CPU使用。P7 8088CPU的数据总线宽度为8,8086CPU的数据总线宽度为16。P8 CPU可以直接使用的信息在存储器(内存)中存放。P9 地址总线的宽度决定了CPU的寻址能力;     数据总线的宽度决定了CPU与其它器件进行数据传送时的一次数据传送量;     控制总线的宽度决定了CPU对系统中其它器件的控制能力。

2011-05-02 16:07:00 403

windows高级调试 代码

非常经典的一本书。windows高级调试,英文名字是advanced windows debugging。这是源代码。

2011-06-19

virtual_PC_2007_32bits 第二部分(共2部分)

虚拟机软件有VMWare,virtual PC,VirtualBox,bochs等。这是virual PC。virtual_PC_2007_32bits共有两部分,这是第二部分,把两部分下载到同一个文件夹下面,进行解压。

2011-04-24

virtual_PC_2007_32bits 第一部分(共2部分)

虚拟机软件有VMWare,virtual PC,VirtualBox,bochs等。这是virual PC。virtual_PC_2007_32bits共有两部分,这是第一部分,把两部分下载到同一个文件夹下面,进行解压。

2011-04-24

琢石成器_Windows环境下32位汇编语言程序设计 光盘源代码

《琢石成器_Windows环境下32位汇编语言程序设计》是罗云彬写的一本书,极其经典,我非常喜欢,也买了一本。这里面是光盘中包含的源代码。

2011-04-24

Windows驱动开发技术详解源代码

《Windows驱动开发技术详解源代码》是电子工业出版社的书,写的不错。这里是书中源代码。

2011-04-21

programming the microsoft windows driver model中文版

《programming the microsoft windows driver model》这本书极其经典,值得一看。

2011-04-21

dos书籍之3:实用DOS技术分析.pdf

《实用DOS技术分析》这本书里面也讲了不少的dos知识,大家谁有兴趣不妨看看。

2011-04-19

硬盘保护技术手册 人民邮电出版社

硬盘保护技术手册,人民邮电出版社出版,高云庆编著,叶民改编。有需要的朋友可以看看。

2011-04-17

masm V6.11 编译器

masm V6.11版本的编译器。有需要的朋友可以下载来用。

2011-04-17

Dev-C++ 4.0 编译器

我们常常用的是Visual C++编译器。至于Dev-C++编译器大家就比较陌生了。不过这个编译器还是很好用的。

2011-04-15

micrium ucos-II嵌入式操作系统 V2.70源代码

ucos-II的最后一个版本是V2.86。这里是ucos-II嵌入式操作系统 V2.70的源代码和pdf。网上大多数都是2.52版本的。要研究ucos的朋友可以看看。

2011-04-05

micrium ucos-II嵌入式操作系统 V2.61源代码

ucos-II的最后一个版本是V2.86。这里是ucos-II嵌入式操作系统 V2.61的源代码和pdf。网上大多数都是2.52版本的。要研究ucos的朋友可以看看。

2011-04-05

micrium ucos-II嵌入式操作系统 V2.85源代码

ucos-II的最后一个版本是V2.86。这里是ucos-II嵌入式操作系统 V2.85的源代码和pdf。网上大多数都是2.52版本的。要研究ucos的朋友可以看看。

2011-04-04

dos启动过程教学初步

其中包含了四个部分:1.启动过程;2.IO.SYS;3.MSDOS.SYS;4COMMAND.COM。都有很详细的描述。

2011-04-04

NASM编译器使用手册-中文

nasm 中文手册,比较有参考价值。可以对照着英文一起看。

2011-04-04

Windows XP 启动过程详解

详细描述了windows xp操作系统的启动过程,感觉讲的很好的。

2011-03-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除