实模式和保护模式

   Dos 下编汇编程序,我们可以管理系统的所有资源,我们可以改动系统中所有的内存,如自己改动内存控制块来分配内存,自己修改中断向量表来截获中断等,对其他操作也是如此,如我们对键盘端口直接操作就可以把键盘屏蔽掉,可以这样来描述 Dos 系统:系统只有一个特权级别,在编程上讲,任何程序和操作系统都是同级的,所以在 Dos 下,一个编得不好的程序会影响其他所有的程序,如一个程序把键盘口中断关掉了,所有程序就都不能从键盘获得键入的数据,直到任何一个程序重新打开键盘为止,一个程序陷入死循环,也没有其他程序可以把它终止掉。 Dos 下的编程思路是 单任务 的,你只要认为你的程序会按照你的流程一步步的执行下去,不必考虑先后问题(当然程序可能会被中断打断,但你可以认为它们会把环境恢复,如果中断程序没有把环境恢复,那是他们的错)。

   在内存管理方式上, Dos 汇编和 Win32 汇编也有很多的不同: Dos 工作在实模式下,我们可以寻址 1M 的内存,寻址时通过段寄存器来制定段的初始地址,每个段的大小为 64K ,超过 1M 的部分,就只能把他作为 XMS 使用,也就是说,只能用作数据存放使用而无法在其中执行程序。

   Windows 在保护模式下执行,这里所有的资源对应用程序来说都是被 保护 的:程序在执行中有级别之分,只有操作系统工作在最高级 --0 级中,所有应用程序都工作在 3 级中( Ring3)
Ring3 中,你无法直接访问 IO 端口,无法访问其他程序运行的内存,连向程序自己的代码段写入数据都是非法的,会在 Windows 的屏幕上冒出一个熟悉的蓝屏幕来。只有对 Ring0 的程序来说,系统才是全开放的。

   在内存方面, Windows 使用了处理器的分页机制,使得对应用程序来说,所有的内存都是 平坦 的,你不必用一个段寄存器去指定段的地址,因为在保护模式下,段寄存器的含义是不同的(可以参见 80386 手册方面的书籍),你可以直接指定一个 32 位的地址来寻址 4GB 的内存。

   在程序结构方面, Windows 程序也有很大的不同,它是 基于消息 的,你可以想象这样一个常见的 Windows 窗口,上面有几个按钮,如果你用 Dos 编程的思路去考虑,你会发现实现它很困难:鼠标移动到窗口边缘时拖动会改变窗口大小,鼠标点击按钮时再做要做的事,你会发现,你的程序自开始执行后就在等待,你不知道鼠标先会点什么地方,实际上你是在等待所有可能的事情的发生。而在 Dos 下,你可以只顾自己先执行,需要用户输入时,再停下来,你不输入我就不再执行,而且,我让你输入数据 A 你就不能输入数据 B   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值