内容列表
80386ASM程序设计基础(四)
   算术运算指令,逻辑运算指令,移位指令   AA.算术运算指令   A.加减法运算ADD,ADC,INC,SUB,SBB,DEC,CMP,NEG   a.ADD,和8086功能,用法相同,不过支持32位操作,下面的语句都是合法的。   ADD  ESI,EDI  
分类:编程语言 查阅全文
80386ASM程序设计基础(三)
   在接下来的四篇里将介绍80386的汇编指令及用法,并和8086的指令进行比较。   80386的指令集包含了8086/8088,80186,80286的指令集,可以分为几个大类:数据传送指令,算术运算/逻辑运算指令,移位指令,控制转移指令,串操作指令,高级语言支持的指令,条件字节设置指令,位操作指令,处理器控制指令和保护方式指令。高级语言支持指令始于8
分类:编程语言 查阅全文
80386ASM程序设计基础(二)
 80386处理器的寻址方式    在实式模式下,80386处理器的最大寻址空间仍然为1M,和8086/8088相似。即段地址*10H+段内偏移地址,从而形成20位地址。此种模式下,段基址是16的倍数,长度最大不超过64K。    在保护模式下,80386处理器可以使用所有的物理内存。段基址可以是32位,也可以不是16的倍数,同
分类:编程语言 查阅全文
80x86保护模式系列教程(5)任务状态段和控制门
五.任务状态段和控制门 每个任务有一个任务状态段TSS,用于保存任务的有关信息,在任务内变换特权级和任务切换时,要用到这些信息。为了控制任务内发生特权级变换的转移,为了控制任务切换,一般要通过控制门进行这些转移。本文将介绍任务状态段和控制门。 <一>系统段描述符 系统段是为了实现存储管理机制所使用的一种特别的段。在80386中,有两种系统段:任务状态段TSS和局部描述符表L
分类:编程语言 查阅全文
80386ASM程序设计基础(五)
  控制转移指令,串操作指令  80386控制转移指令包括:转移指令,循环指令,过程调用和返回指令。  A.转移指令包括无条件转移指令JMP和条件转移指令,无条件转移指令分为段内直接转移,段内间接转移,段间直接转移,段间间接转移。由于80386有保护模式和实模式,在实模式下,段内转移的范围在-128~127,段间转移最大范围为64K。在保护模式需要用48位指针,即CS
分类:编程语言 查阅全文
从Turbo Vision源码看事件驱动
1:缘起在传统的程序中,一个具有交互功能的应用程序的主体无疑是如下的一段循环代码:不断读取用户的输入,根据输入采取相应的动作,完成所需的功能。例如:bool quit=false;char ch;while(!quit) { ch=read_input(); switch(ch) {  case 'i':   // ... …&
分类:编程语言 查阅全文
80386ASM程序设计基础(十一)
 主要介绍系统地址寄存器和控制寄存器以及在程序中实方式下与保护方式下的切换   80386处理器新增了一组控制寄存器CR0,CR1,CR2,CR3和一组系统地址寄存器GDTR,LDTR,IDTR,TR,它们全部都是32位的。CR0包含了指定处理器工作方式的控制位,CR1保留未使用,CR2和CR3由分页管理部件使用,CR0中的5~30位和CR3中的0~11位必须为0,分
分类:编程语言 查阅全文
链表操作源程序
    链表,是数据结构的基础。利用链表,我们可以很好的实现数据的管理。但是我们经常在网上看见各式各样的有关链表的问题,在此我给出了一个比较简单但是功能比较强大的程序来给大家显示关于链表的编程。如果你很深入的了解了下面程序的工作原理,说明你对链表的理解就算过关了,如果不能,请仔细阅读一下下面的程序,特别注意程序指针的修改顺序。 特别是链表的倒置程序,不超过10行就搞定
分类:编程语言 查阅全文
Effective STL前言
It came without ribbons!It came without tags! It came without packages, boxes or bags!——Dr. Seuss, How the Grinch Stole Christmas!, Random House, 1957 我第一次写关于Standard Template Library的东西是在1995年,那时,我决
分类:编程语言 查阅全文
Effective STL条款16
条款16: 如何将vector和string的数据传给传统的API 因为 C++语言已经于1998年被标准化,C++的中坚分子在努力推动程序员从数组转到vector时就没什么顾虑了。同样显然的情况也发生于尝试使开发者从char*指针迁移到string对象的过程中。有很好的理由来做这些转变,包括可以消除常见的编程错误(参见条款13),而且有机会获得STL算法的全部强大能力(比如参见条款31)。
分类:编程语言 查阅全文
80386ASM程序设计基础(十)
主要介绍段描述符,段选择子   在保护模式下,段是实现虚拟地址到线性地址转换的基础。在保护方下,每个段有三个参数:段基址,段界限,段属性。段基址规定了线性地址空间中段的开始地址,段基址长度为32位,所以任何一个段都可以从32位线性地址空间中的任何一个字节开始,这一点和实式方式不同,实式方式下要求段的边界必须被16整除。段界限规定段的大小,段界限用20位表示,而且段界限可以是字节
分类:编程语言 查阅全文
Effective STL条款44
条款44: 尽量用成员函数代替同名的算法 有些容器拥有和STL算法同名的成员函数。关联容器提供了count、find、lower_bound、upper_bound和equal_range,而list提供了remove、remove_if、unique、sort、merge和reverse。大多数情况下,你应该用成员函数代替算法。这样做有两个理由。首先,成员函数更快。其次,比起算法来,它们与容器
分类:编程语言 查阅全文
MINIX系统调用EXIT分析
  MINIX内存管理 系统调用EXIT分析   一、系统调用EXIT简介 系统调用exit(status)通过进程向MM发送EXIT类型的消息完成,它是终止一个进程的一般手段,exit关闭进程的所有文件,并且如果其父进程执行了wait则通知父进程。这个调用不能返回。 exit(status)的实现请参见LIB的38504行。 38504  PUBLIC
分类:编程语言 查阅全文
Effective STL 目录
由于没有看内容,有些翻译可能不准确,请见谅:) 容器 条款1: 仔细选择你要的容器 条款2: 小心对“容器无关代码”的幻想 条款3: 使容器里对象的拷贝操作轻量而正确 条款4: 用empty来代替检查size是否为0 条款5: 尽量使用范围成员函数代替他们的单元素兄弟 条款6: 警惕C++的及其令人恼怒的分析 条款7: 当使用new得指针的容器时,切记在容器销毁前d
分类:编程语言 查阅全文
Effective STL条款21
条款21: 永远让比较函数对相等的值返回false 让我向你展示一些比较酷的东西。建立一个set,比较类型用less_equal,然后插入一个10:set<int, less_equal<int> > s; // s以“<=”排序 s.insert(10); // 插入10 现在尝试再插入一次10:s.insert(10); 对于这个ins
分类:编程语言 查阅全文
Effective STL 条款2
条款 2: 小心对“容器无关代码”的幻想 STL是建立在泛型之上的。数组泛化为容器,参数化了所包含的对象的类型。函数泛化为算法,参数化了所用的迭代器的类型。指针泛化为迭代器,参数化了所指向的对象的类型。 这只是个开始。独立的容器类型泛化为序列或关联容器,而且类似的容器拥有类似的功能。标准的内存相邻容器(参见条款1)都提供随机访问迭代器,标准的基于节点的容器(再参见条款1)都提供双向迭代器。序列
分类:编程语言 查阅全文
80386ASM程序设计基础(九)
 虽然80386处理器要较以前的处理器的功能大大增强,但这些功能只能在保护模式下才能全部得到发挥。在实模式下最大寻址空间只有1M,但在保护模式最大寻址空间可达4G,可以访问到所有的物理内存。同时由于引入虚拟内存的概念,在程序设计中可使用的地址空间为64TB。80386处理器采用了可扩充的分段管理和可选的分页管理机制,这两个存储管理机制由MMU(Memory Management Unit
分类:编程语言 查阅全文
指南:工作者线程和信号量(续)
http://www.thebits.org/tutorials/mjsema1.asp   指南:工作者线程和信号量 ©Malcolm Smith, 14th October 2002   创建工作者线程并等待它们结束        那么在是何种境况下您可以创建使应用程序冻结直到所有的线程完成了它们的处理的
分类:编程语言 查阅全文
指南:工作者线程和信号量
http://www.thebits.org/tutorials/mjsema.asp   指南:工作者线程和信号量 ©Malcolm Smith, 14th October 2002       和我们的所有指南一样,这个指南没有义务去处理随时可能发生的任何事。请看我们的法律信息页面。本文基于一个在Windows XP Pro
分类:编程语言 查阅全文
整数平方根的汇编求法
 SQUAREROOT--A APPROACH BY BINARY SEARCH(2) 1。Improved edition. It improved in several ways.  It expand input limit to up to 65535. It uses a general "divide" function to generalize the
分类:编程语言 查阅全文
<< 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 >>