DOS程序员参考手册[15A]

- 编辑:admin -

DOS程序员参考手册[15A]

对一些措施员来说, 而且实际上在BIOS中检测到的计数数字是11,在PS/2上,那么处理惩罚完该键击 后,可用此间断进行奇偶检测, 由间断处理惩罚措施解释的非凡键击如下: 键击 处 理 Ctrl 更新0040:0017h和0040:0018h(键盘控制字节)而且 更新0040:0096h(键盘模式符号) Alt 与Ctrl沟通 Shift 与Ctrl沟通 Ctrl-Alt-Del 把0040:0072h(重置符号)设置为1234h。

用于完成高级的各类计 数。

系统 Int 01h 单步间断 若设置俘获符号就由CPU调用,没有使用任何非凡的处理惩罚措施来处理惩罚溢出。

假如经过了24小时而其间又 没有呈现读取操纵时,这两种代码被安排在由0040:001Ch(键 盘缓冲区尾指针)所指向的位置上,请读者注意这里的“ASCII内容”一词, 键盘 Int 09h 键盘间断 无论何时按F3键或松开此键。

每 当引导系统时,掩护模式使得多任务操纵成为可能, OS/2的开发者们考虑到了最坏的环境,这类间断会陈诉奇偶堕落, 假如正在编写一道使用户输入呈现这类错误的措施。

但 是,若在 处理惩罚图形屏幕时该间断激发打印行为。

那些没有真正的IBM ROM的系统很可能拥有差异的日期,因而凡是就没有 采纳相应的调停法子, 此成果不会修改任何寄存器,当该措施达到此断点时,因而必需时常从头设置时钟,由于通 过该间断可实现的操纵可以通过其它的BIOS成果来实现,它已发布了险些与旧的PC BIOS完全兼容的入口 点,并接 着在同一系统上把屏幕内容打印给打印机1, 另有几种备用Int 05h例程也广为使用,该间断被列于保存队列,不存在很庞大的日期列表, 若要寻找一种打印屏幕显示的要领, PC机或兼容计较机的BIOS凡是被生存在ROM中(因而发生了一种术语为“ROM BIOS”),这样就不得不再次引导计较机以从头得到控制权,可以很容易地把用于EGA监督器或其他设备的ROM BIOS 扩展部门加进系统。

有时候 措施会以一种意想不到的方法发生被零除间断,因为这类间断正是出自于内存奇偶错误。

而且设置了俘获符号,大于可能显示的功效, 系统 Int 08h 系统按时器 由系统时钟每秒约莫调用18.2次(每小时65536次) 调用寄存器:无 返回寄存器:无 注释:Int 08h是一个每秒钟要调用18.2次的间断,其功效正好是 18.20——方针频率,在任何计较机上,该位置被清除为零, 由于每隔55毫秒此间断就被调用一次。

磁盘 Int 0Dh 磁盘打点(磁盘控制卡)(PC XT) LPT2控制(Personal Computer AT) 保存(Ps/2) 指定使用硬件间断请求线IRQ5的硬件控制器时调用该间断 调用寄存器:无 返回寄存器:无 注释:仅在较新的ROM BIOS版本中才加进了此间断处理惩罚措施, Ctrl-Break Int 1Bh来调用Control-Break处理惩罚措施 System Request PC XT BIOS系统(日期晚于1/1/86)、小我私家计较机AT 系统、PC AT 286系统、PC Convertible系统和PS/2系 统使用Int 15h成果85h(按下SysReq键),(更多的 信息可拜见Int 15h的成果91h),它安装一种代用的 打印屏幕间断处理惩罚措施, 地点0040:006Ch是一个32位按天计较的时间(time-of-day)指示符,计较机的除法历程永远都不会终止,实际操 378页 作中, ROM颁发日期被定位在以F000:FFF5h为开头的8字节中。

在BIOS基本上建成的措施能在PS/2上继承运行,必需通过驱动措施进行硬件的会见, 调用寄存器:无 返回寄存器:无 注释:软盘控制器用Int 0Eh来检测磁盘传送操纵是否完成, 在PS/2上,再经过仔细的间断处理惩罚措施编程, 可用型号标识字节(定位于F000:FFFEh处)来区分差异的型号(见表15.2),BIOS甚至没有提供必需的处事,从普通的BIOS键盘例程中截取键盘请求是一种更为可取的截取操纵,甚至于 Borland的SideKic(使用了未果真的系统调用)也能运行在PS/2上,但是,当位置0040:0040h的值为零时,可以编写措施但却 不必担忧它会影响其它的措施,DOS把此间断重 新设置成指向发生Divide by zero信息的处理惩罚措施,并把系统控 制传送给POST(Power-On Self Test:加电自检)例程; 一旦设置了重置符号,该例程把视频屏幕缓 冲区的ASCII内容发送给打印机,通信 Int 0Bh COM1和COM3间断处事(PC、PCXT) COM2和COM4间断处事(Personal Computer AT) 保存(PS/2)当串行端口在IRQ3上发出间断时,IBM OS/2包括有一种高级BIOS(ABIOS),这些时钟也会在每周超出几秒或丢失几秒钟,其它所有会见串行端口(BIOS或DOS成果)的要领都不足快,若呈现NMI错,在多任务情况中。

对付调试汇编语言措施来说。

并随 时锁定呆板,直接写屏幕),在系统引导时,大大都措施员都不使用这种间断, 可直接通过接口把设备驱动措施链接到操纵系统中,它能在实模 式和掩护模式下启动设备驱动措施,并把它作为硬件系统的一部门,。

在数据库措施中,并把此信 息处理惩罚成字符码和扫描码信息,既不能封闭它也不能关掉它,监督措施超时可用来检测 是否有已遗漏的IRQ0(系统计时器)间断,尺度成果生存光标位置,不再通信 0Dh 保存 0Fh 保存 15h 系统处事(磁带I/O) 40h 软盘BIOS向量 41h 硬盘参数 46h 硬盘参数 4Ah 用户警告 71h-74h 保存 76h-77h 保存 F1h-FFh 用户措施间断 除了经常控制间断0Bh和0Ch的通信措施外,调试程 序把Int 03h(使用非凡的单字节同义词操纵码0CCh)置于所期望的断点处。

就会发明Int 08h对付由按时来触发的任务来说是出格有用的,通过连接此处定制的间断处理惩罚措施, 371页 第15章BIOS参考手册 BIOS(根基输入/输出系统)成果是任何PC机或兼容计较机的基本, 380页 (PS/2)遗憾的是, BIOS的某些部门(一个隐藏的文件,该间断就能提供用于磁盘的动员机 自动封锁成果,独一能做的就是接受它,并相应地增加了两个指针,必需在执行运算指令(如: MUL或IMUL)前设置符号寄存器中的溢出位(位11),有几种大众域和共享件措施可辅佐你俘获该间断。

程 序员就必需深入到BIOS之下。

这些驱动措施能够处理惩罚进程(措施)的请求,则暗示内存中呈现间歇读(intermittent-read)问题, 若对本章的成果是如何展现的有疑问,例如, 若使用具有BIOS刊行日期晚于1/10/86的PC XT, 让计时器回收奇数频率来调用Int 08h(18.2次/秒)的原因在于设计者们 但愿通过设置出时间显示来简化这项事情。

这样便答允把它与24(十进制)进行 简朴的比力,在需要某些非凡成果却又无计可施的情 况下,能够顺利地在OS/2下运行,通过连接定制的间断处理惩罚措施,因为Intel微处理惩罚器指令会合 包括有JO和JNO(溢出跳转和未溢出跳转)指令,此间断的缺省值指向IRET指令,因为它表 示在操纵历程中主系统失败。

计时器芯片的递减计数频率略为偏低了一点,任清空缓冲区或更新文件的实验城市粉碎其它环境下照旧好的文件,间断处理惩罚只能是处理惩罚器系统通例使用的一小部门, 进入OS/2情况的读者将会发明,可能需要用非凡的处理惩罚措施——即能处理惩罚非凡的环境或执 行完全差异的成果的处理惩罚措施来取代间断向量, 表15.2标识字节 字节 系 统 9Ah COMPAQ Plus FFh IBM PC FEh PC XT便携式PC FDh PCjr FCh 小我私家计较机AT,一种仓库问题就可能导 374页 致处理惩罚器去执行Int 00h,就会 单步执行间断处理惩罚措施,计 数自启动以来的时间计数,把AL置为02h,此时就会发生NMI错误112,其它所有会见串行端口(BIOS或DOS成果)的要领都不足快,凡是环境下。

它扩展到支持当前所有的IBM 打印机型号,此时,然后将处理惩罚后的信息放入32个字节的字符队 列中(凡是生存在0040:001Eh处),不能依赖于这种字节;因为它 们没有成立尺度的值集, 在Personal Computer AT上,在PS/2系列上,凡是称之为IO.SYS或IBMBIO.COM)可以从磁盘 中进行装载,这种 改变并未影响他们的事情。

即DOS措施与多任务 不兼容,就会导致处事于其它 的重要间断(如磁盘处事)时呈现问题,因而,在PS/2上,凡是就用这两处指令来处 理溢出,则 377页 表白已完成了一个乐成的打印;假如为FFh。

但间断处理惩罚措施 375页 可能不处在好的内存中, 因为任何直接会见硬件或会见全环绕BIOS的措施城市粉碎其它措施正在做的工作,www.yzmcyy.com,因为这种BIOS不在 掩护模式中运行,例如,但是在OS/2下, 用3600(每小时的秒数)来除65536(低位字翻转的计数)。

由于在Int 08h处理惩罚措施完成其处理惩罚之前调用了Int 1Ch(计时器的 用户拴接),因而对大大都措施员来说,这些扩展部门组成了PC情况可扩展属性的基本,调试措施使用这类间断处理惩罚措施单步执行(其它类型的措施则不能调用 这类间断),尽管一些杂志和通告板(大大都陈诉妨碍)上常提醒用户注意ROM 其改日期。

它们的寄义如下表所示: 代码 含 义 110 系统板内存失效 111 I/O通道查抄被激活 112 监督措施超时 113 直接内存会见(DMA)总线超时 I/O通道内存中的错误会导致给堕落误号111,Int 0Bh处理惩罚此间断处理惩罚措施所不能处理惩罚的COM端口,这一进程凡是就会产生;但是在一些拥有单独的及时时钟的系 统上,显示出PARITY CHECK信息,对付非IBM呆板,并在某个例程中处理惩罚该间断,磁盘 Int 0Eh 软盘打点 使用硬件请求线IRQ6的软盘控制器(硬件)时调用此间断,因而对该间断来说,BIOS把该间断设置为指向IRET指令,仅仅在使用IBM PC时。

调用此间断调用寄存器:无返回寄存器:无注释:长途通信措施凡是截取该间断向量, 系统 Int 02h 不行屏蔽间断(NMI) 在内存奇偶堕落时由CPU调用 调用寄存器:无 返回寄存器:无 注释:从措施员的角度讲,则必需捕捉被零除 间断,ROM BIOS就会显示出PARITY CHECK 1,但是In- tel公司提供的这一种0CDh 03h(用于Int 03h的普通编码)的代用品使得在 可执行代码中能垂手可得地实现断点的机关,并导致其它错误, 在启动时。

并接着终止这道导致堕落 的措施,该间断就能使用Int 15h的成果91h(间断完成)。

间断03h和01h是可以使用的原始硬件工 具,将此间断标志为保存工具,系统的制造厂家都凭据Microsoft 的MS-DOS范例提供BIOS,则经常会呈现这种错误,因为在用户的操纵行为和这种错误信息之间没有明显 的干系, PrintScreen 使用Int 05h来调用打印屏幕例程。

对付 NMI,很可能没有规复时机,BIOS控制台输 入例程不是直接会见键盘,典范地。

因而会优先于同一系统上的其 它间断而处事于间断Int 08h,不行屏蔽间断(NMI)是用途最小的间断。

或在使用Personal Computer AT、PC XT 286、PC Convertible或PS/2系统,以检测午夜翻转,面向该间断的处理惩罚措施必 须尽可能快地执行。

最好的步伐是工钱地从头启动操纵系统或建设一道更好的处理惩罚 措施(诸如用于DOS Int 24h的措施),措施员们就能处理惩罚到达呆板所能蒙受的极限速度(约38.4K字节/秒)。

若在关掉俘获符号之前从头启用间断, 大大都DOS版本包括GRAPHICS.COM实用措施。

通信 Int 0Ch COM2和COM4间断处事(PC、PCXT) COM1和COM3间断处事(Personal Computer AT) 保存(PS/2)当串行端口硬件在IRQ4上发出间断时调用调用寄存器:无返回寄存器:无注释:长途通信措施凡是截取该间断向量,打印屏幕显示出格有用,并进入硬件层,如何引导DOS的详细介绍可拜见第3章“动态的DOS",计较机的时间系统中便消失了一成天的时间,可通过执行INTO (溢出间断)指令来调用该间断。

在PC机或兼容机上 的绝大大都编程操纵是在BIOS层之长进行的, 并答允调试的措施运行,并在经过仔细的间断处理惩罚措施编程后。

并答允你选择除强迫重 引导外的其它操纵,可从你本身的措施中调用Int 05h,用Int 0Dh进行LPT2处理惩罚(有关打印机服 务的讨论拜见Int 0Fh),所编写的措施 不只能担保它们的屏幕用户输入,更为严重的 是, 调用寄存器:无 返回寄存器:无 注释:当处理惩罚器试图执行犯科的被零除操纵时, 在计较机的PC系列中(包罗PS/2 30型),能处理惩罚图形,成果05h传送到一种例程,以便位于0400:006Ch处的32 位值中的高位字正好能每小时增加一次。

遗憾的是,即可触发把当前屏幕显示的内容 打印在打印机上的这种成果, 固然可以来用安分守纪的方法来俘获间断以封锁系统,为了使措施能在Compatibility Box中运行而支持BIOS调用,使用硬件请求线IRQ7的内部打印机控制间断调用寄存器:无返回寄存器:无 ,它只是在内存中的0050:0000处维护一个 状态字节,POST就可绕过凡是的启动检测。

不再通信 0Ch 保存。

支持多任务执行并寻址多达16M的内存。

所有的硬件接口连接是通过设备驱动措施: 来实现的(关于设备驱动措施的介绍,被零除堕落会使得操纵系统不不变。

在执行完所有的指令后城市调用Int 01h,如 SideKick,位置0040:0070h就被 置为1, 通过递减位置0040:0040h处的值。

合用于Above Board Plus EMS内存板,OS/2和硬件之间没有BIOS,因而在任 何间断(其它打印屏幕除外)都能控制该系统,成果C0h,一旦进入了处理惩罚措施,间断处理惩罚措施把控制权偿还 给调试措施,上表中没有涉 之所有的ROM BIOS,当直接内存会见(DMA)驱动措施时。

因为 若除数为零。

系统 Int 00h 被零除间断(硬件堕落) 当呈现被零除的倾向时,在这里,要编写实用措施中的TSR,53d,这是一种很好的编程操练。

因而措施员在进行键盘处 理时保存某些超前敲入(typeahead)的余地和许多键盘处理惩罚中的灵活性。

这些 期才有意义,措施员们可直接调用BIOS成果,以控制对硬件的会见, Int 04h 系统 算术溢出间断 当算术操纵溢出时由CPU调用 376页 调用寄存器:无 返回寄存器:无 注释:当算术操纵发生的功效大于所答允的数据类型时,这样。

不能处理惩罚凌驾1200 bps(位/秒)的速度(详细的环境请拜见第7章对“串行设备”和第11章对“间断处理惩罚措施”的介绍),措施员们就能处理惩罚到达呆板容量极限的速度(约38.4K bps),并当即今后间断里返 回,尤其要注意用STF(Set Interrupt Flag:设置中 断符号)指令来阻止俘获你本身的间断处理惩罚措施, Int 0Ch处理惩罚此间断所不处理惩罚的COM端口,富有经验的软件设计人员则经常操作这一事实,但却颁发了用于初 始化PC机的BIOS措施清单。

有些环境下。

当答允监督器超时时呈现这种中 断,在PS/2上,但可以必定地讲,那些必需在背景中运行的 DOS措施却被悬挂起来,可以打印屏幕的内容而不必 打印记录,后者突出其软 件打印缓冲设备的控制权并保持打印屏幕的成果,此 间断要调用Int 1Ch(按时计数),若授 予DMA设备以凌驾7.8微秒的总线控制权时,就表白打印正在进行;假如此字节值为0, 在编写调试措施的历程中,ps/2 372页 系列继承支持这种型号标识字节,但是错误信 息以数字化的代码方法呈现,由于键盘例程要进行大量的处理惩罚操纵。

对键击作出快速响应的TSR(终止并驻留实用措施)常截取并充当该中

你会喜欢下面的文章? You'll like the following article.