DOS程序员手册(五)】的更多相关文章

当今MS-Windows横扫大江南北,让我们这就来研究一下它的祖宗——MS-DOS! 这本书很难得,希望读者好好学习! DOS程序员手册(一) DOS教程 (以下内容全部为原作者的阐述,照样保留) 这个电子书只是很简单地把txt做成了chm,文本格式方面可能会让人看得有点恼火,呵,不好意思了,将就一下,因为我本身写网页是手工的,如果全部进行整理会花上几天时间.希望您看的时候不会边看边骂 (京)新登字158号 DOS Programmer's Reference,4th Edition Terrv…
附录A ASCII字符集 十进制        十六进制      二进制              AscII         控制        按键 X10         X16           X2                字符 000               00              0000 0000              null              NUL            ^@ 001               01            …
第14章参考手册概述     本书余下的章节将向读者们介绍BIOS.DOS各种各样API函数和服务,作为一名程 序员,了解和掌握这些知识是很有好处的.在所介绍的参考手册中,每部手册都汇集了大 量的资源.所有的内容都力求给出准确的技术以及当前最新最流行的信息,如果读者发现 书中有不恰当之处,请向我们的Que公司的有关部门反映,对读者所提的每一个问题他 们都会很重视.     以下几章的主要内容是:     · BIOS参考手册     · DOS参考手册     . 鼠标参考手册     · EM…
第8章磁           盘       学习编程语言,常常是从基本的输入和输出入手的(正如第5.6和第7章曾介绍的一 样).到目前为止,我们不仅学习了怎样输入和输出数据,还学习了如何进行数据操作.     在开始编写重要程序之前,需要先了解文件(第9章是有关“目录和文件”的介绍),因 为大多数程序都与不同的类型的文件一起工作.有些则直接与磁盘和目录结构一起工 作.要预先了解第9章的一些基本原理,让我们先看看磁盘.       首先要了解基本磁盘技术的工作方式.软盘和硬盘的容量虽不同,但通过…
备,就可以从程序中访问驱动程序.可以用句柄功能调用来     打开设备(见列表12.9)         列表12.9           /*example.C               Listing 12.9 of DOS Programmer's Reference*/           union REGS regs:           regs.h.ah=0x3d:         /*Open-file function*/           regs.h.al=0x01:…
5.4打印机功能 打印机是能够直接控制的输出设备之外的唯一的重要输出设备.它们的功能比屏幕 107页 功能要简单得多,因为它们只涉及字符输出,并最小程度地与打印机的输入有关. 输出给打印机的最简单的方法是利用DOS层的打印机输出功能(Int 21h,功能 05h),如列表5.9所示.该功能使用户能将字符输送给打印机设备.如果使用该功能出现 了错误,通过引入关键出错处理程序,DOS就可以处理出错情况. 列表5.9 /*prtout.c Listing 5.9 of DOS Programmer'S…
2.6存储设备     随着DOS的升级,磁盘存储容量也有了很大扩充.表2.4介绍了软盘容量的增加以     及所支持驱动器型号的数量.                                       表2.4软盘容量 DOS版本                     软盘                      容量 1.0                        5.25英寸SSDD                       160K                 …
744页 在DPMI 1.0下,系统会修改并重新装载所有含选择符的段寄存器,并且将所有 含有要释放的选择符的寄存器清空为0. 客户程序绝不能修改或释放该功能分配的任何描述符.Int 31h.功能0101h 会自动地解除对它们的分配. 系统 Int 31h     功能0200h                          DPMI版本0.9 获取实模式中断向量 返回当前虚拟机器的实模式中断向量的内容 调用寄存器: AX            0200h BL          中断号 返回…
DOS可安全使用 610页 在DOS控制台I/O操作进行轮询循环时,有规律地调用中断,以便允许终止 并驻留(TSR)程序(如适用于DOS的实用程序PRINT.COM),知道它可安全 地使用文件操作和其他功能号在0Ch之上的Int 21h功能. 调用寄存器:不能用 返回寄存器:不能用 注释: DOS在进行控制台输入轮询循环时,在能安全地进行文件系统操作或 执行大多数其他DOS功能(>0Ch)处才调用该中断. 通常,用于中断28h的向量指向某个IRET指令,从而使得它成为一个空 的处理程序承接体.所…
560页 版本5中新增加的子功能05h支持程序截获MS-DOS EXEC调用,并实 现自我装载.该子功能能实现内存的修补,如设置装载程序能接收的版本号 (通过SETVER设置的版本号)以及实现对装载程序在装载时的修补. 在把控制权传送给装载程序之前,功能05h应是系统发出的最后一个调 用.尤其是,在该功能成功地返回和把控制传送给装载程序的这段时间内,应 用程序既不能发出MS-DOS或BIOS调用,也不能发出任何软件中断调用. 如果DOS是在HMA中运行,那么从对子功能05h的调用中返回时,地 址…
终于到(十)了~~~ 503页 ES:DI       指向未更新且未打开的FCB的指针 注释:该功能最初用来从命令行中析取文件,并以正确的格式来保存此文件 以便打开FCB.为了实现这个目的,可首先将指针指向文件名字符串,并接着 将另一个指针指向打算使用的FCB.没有必要采用任何种类的格式来保存 FCB,单用内存块就能十分有效地保存好它. 在所有版本中,分隔符无非就是如下几种:句号(.).冒号(:).分号(:),等 号(=).加号(+).标记和空格.在DOS版本1中,还有以下几种符号也可用 作分…
第11章      中断处理程序 本章将深入到DOS系统内部探讨中断处理程序的内容.与其他计算机编程不一样, 中断处理程序这个名词听起来就很难懂.用最简单的话来说,中断处理程序就是对应于中 断激活的程序. 读者可能已发现,中断处理实际上并不是件很难办的事.事实上,在某些地方中断处 理很容易管理.但是,其中仍然有些“黑洞”,一旦陷入便不能自拔.本章的信息可让你不 致于迷失在黑洞中. 人们谈论中断已有好多年了.当它第一次作为系统设计的主要部分而应用到计算机 上时,它就获得了不安全的名声.在早期的计算…
217页 程序的主要部分后面是主程序所使用的许多小的扩充内存功能.将这些功能组合起 来这些功能便覆盖了扩充内存的操作,尽管还可能想向它们添加错误检查. 程序所包含的函数有: emmtest   检验内存中是否存在扩充内存管理程序. emmok     检验扩充内存管理程序的功能并确定页框架的基地址. emmalloc  从扩充内存管理程序请求指定数量的页数. emmmap    将一个扩充内存页映射进页框架中. emmmove   把数据移进页框架中的指定页中. emmget    从页框架中的…
56页     第4章DOS和BIOS接口     本章介绍了用户程序访问DOS内核和BIOS所提供的各种服务的方法.为了访问这 些服务,我们可以从任何编程语言中调用各个软件中断,这些中断便是我们在本书中要重 点地讨论的内容.用户当然不必了解访问系统资源的所有细节,但要入门,确实要学习相 当多的这方面知识.       本书重点介绍的是四种编程语言:汇编语言.C(极c++).Pascal和BASIC.所讨论 的实现程序分别有Microsoft Macro Assembler(宏汇编).Micro…
837页 writeln('TRACING Current Buffer==='); holdup; bcbtrc(cvtbase^.curbfr); writeln; holdup ; writeln('TRACING       Buffer Chain==='): holdup ; bCDtrc(Cvtbase^bfrchn); END. CVT3.PAS是用Turbo Pascal语言写成的.从5.0版开始,该程序已在任何版本上 (包括版本7.0)得到了验证并编译成功.这份用于VCT3.…
通常编程情况下,会导致软件项目变坏的一些列反应 原文:The five shouts of good programmers 在任何一天,在这个世界上都有软件项目正在失败,这很常见.常见到当软件产品按照预期发布时人们都会感到吃惊.这不是什么新鲜事,基于被广泛引用的Standish Group的Chaso报告,这种事情已经已经发生了几十年了.但是现在,在很多情况下,人们试图尽最大努力去避免这种悲剧,但是经常公司的政治总是会比实用主义更具优先级.只要不要太晚,这都是可以通过简单的延迟来避免. 在这种…
Intel 80386 Reference Programmer's Manual 80386程序员参考手册 Chapter 1 -- Introduction to the 80386 第1章 - 80386的介绍 The 80386 is an advanced 32-bit microprocessor optimized for multitasking operating systems and designed for applications needing very high p…
2.1 Memory Organization and Segmentation 内存组织和分段 The physical memory of an 80386 system is organized as a sequence of 8-bit bytes. Each byte is assigned a unique address that ranges from zero to a maximum of 2^(32) -1 (4 gigabytes). 80386系统的物理内存被看做8位…
10.2 Software Initialization for Real-Address Mode   实地址模式的软件初始化 In real-address mode a few structures must be initialized before a program can take advantage of all the features available in this mode. 在实地址模式,程序在能利用这个模式下的的所有可用特性之前,新架构必须被初始化. 10.2.1…
注:觉得本章内容与理解操作系统不直接相关,所以本章并未看完,也就没有翻译完,放在这里中是为了保证手册的完整.有兴趣的人可以去原址查看. https://pdos.csail.mit.edu/6.828/2016/readings/i386/c03.htm Chapter 3 Applications Instruction Set 程序指令集 This chapter presents an overview of the instructions which programmers can u…
从上一次学习MIT的操作系统课程又过去了一年.上次学习并没有坚持下去.想来虽有种种原因,其还在自身无法坚持罢了.故此次再鼓起勇气重新学习,发现课程都已由2014改版为2016了.但大部分内容并没有改变.在这一年多的时间里,也曾学习过其他课程,比如孟宁的Linux内核分析,也看过其他人写的文章.但还是有很多内容无法全部理解,而且从网上文章或讨论中也看出,象我这种似懂非懂的状态很多人都有.比如,在看到linux0.11中的那个TSS结构时就一直在想,为什么要这样设计呀?系统明明没有使用到那么多结构成…
Chapter 2 -- Basic Programming Model: 基本的程序模式 Introduces the models of memory organization. Defines the data types. Presents the register set used by applications. Introduces the stack. Explains string operations. Defines the parts of an instruction.…
当时面试能记下的就这些了,可能不太全请见谅: 一面 1.HashMap和ConcurrentHashMap: 2.再谈谈一致hash算法? 3.乐观锁还有悲观锁: 4.可重入锁和Synchronize? 5.事务四大特性? 6.事务的二段提交机制? 7.聚簇索引和非聚簇索引? 8.用自己的实践经历说一下索引的使用场景(说一个就要举一个例子)? 9.当前读和快照读? 10.类加载过程? 11.双亲委派机制及使用原因? 12.说说GC算法? 13.对于未来你有什么职业规划? 二面 1.说说自己参与的…
转自:https://blog.csdn.net/david_xtd/article/details/7311204 名称 malloc,free,calloc,realloc--分配和释放动态内存 概要 #include <stdlib.h> void *malloc(size_tsize); void free(void *ptr); void *realloc(void*ptr, size_t size); void *calloc(size_tnmemb, size_tsize); 描…
10.5 Initialization Example初始化的例子 译注:本来想把这个例子全部注释完,但由于对intel汇编实不熟悉,有太多的伪指令,本人也是免强看懂,所以就不再做翻译了. $TITLE ('Initial Task') #此处title为开始标识,$符号表示取地址 NAME INIT #为一段程序命名 init_stack SEGMENT RW #定义栈段 可读写 标识符为init_stack DW DUP(?) #保留20个双字位置 tos LABEL WORD #定义一个标…
10.3 Switching to Protected Mode  切换到保护模式 Setting the PE bit of the MSW in CR0 causes the 80386 to begin executing in protected mode. The current privilege level (CPL) starts at zero. The segment registers continue to point to the same linear address…
Chapter 10 Initialization 第10章 初始化 After a signal on the RESET pin, certain registers of the 80386 are set to predefined values. These values are adequate to enable execution of a bootstrap program, but additional initialization must be performed by…
译注:一些异常没有翻译,因为看书时主要为了理解linux代码,所以代码中没有主要使用的就没有仔细看.这部分内容后期再看时再进行翻译. 9.8 Exception Conditions 异常条件 The following sections describe each of the possible exception conditions in detail. Each description classifies the exception as a fault, trap, or abort…
9.7 Error Code 错误代码 With exceptions that relate to a specific segment, the processor pushes an error code onto the stack of the exception handler (whether procedure or task). The error code has the format shown in Figure 9-7 . The format of the error…
9.6 Interrupt Tasks and Interrupt Procedures 中断任务和中断处理程序 Just as a CALL instruction can call either a procedure or a task, so an interrupt or exception can "call" an interrupt handler that is either a procedure or a task. When responding to an i…