灵感来自这个问题

我怎么能力库拆卸?

我想知道有关INT21h作为一个概念。现在,我有一些很生疏知识的内部结构,但没有那么多的细节。我记得,在C64你经常中断和不可屏蔽中断,但是我的知识站在这里。能不能请你给我一些线索?它是一个DOS相关的战略?

有帮助吗?

解决方案

此处: 多用途DOS中断用于各种功能,包括读取键盘和写入控制台和打印机。它也被用于读取和写入利用较早文件控制块(FCB)方法的磁盘。

其他提示

DOS可以被认为是一个库用于提供PC中的文件/目录抽象(-and多一点)的。的 int 21h 是一个简单的硬件“特技”,可以很容易调用从这个库中的代码,而不需要事先知道在那里它将被定位在存储器中。或者,你可以认为这是利用了DOS API的方式。

现在,软件中断的话题是一个复杂的,一方面是因为概念随着时间而演变为英特尔增值功能的x86系列,同时努力保持与老软件兼容。一个适当的解释将采取几页,但我会尽量简短。

的主要问题是你是否在的实模式或的受保护模式

<强>实时模式是简单,“原始”的操作为x86处理器模式。这是在DOS下运行(在运行Windows下的DOS程序,实模式的处理器是虚拟化的,所以在它的规则同样适用)的模式。当前正在运行的程序具有比处理器的完全控制。

在实模式下,存在告诉跳转到每哪个地址处理器向量表的中断从0到255该表由BIOS和DOS,以及设备驱动程序填充,有时有特殊节目需要。一些这些中断可以通过硬件(例如,通过按键)来生成。其它的通过某些软件条件(例如由0分)中产生。 它们中的任何可以通过执行的 int n 指令来产生。

程序可以设置/清除“启用中断”标志;这个标志影响硬件仅中断,并且不影响的 int 的指令。

在DOS设计者选择使用中断号21H处理DOS请求 - 数是没有实质意义:它当时只是一个未使用的条目。有很多人(数10H是BIOS安装中断程序,与图形的交易,例如)。还要注意的是,这一切都是为IBM PC兼容机只。在说嵌入式系统可能有自己的软件和中断表x86处理器的安排完全不同!

<强>受保护模式是复数,“安全意识”这是在286处理器中引入和多扩展在386它提供了多个权限级别模式。操作系统必须配置了这一切(如果OS得到它错了,你有一个潜在的安全漏洞)。用户程序一般只局限于操作,在试图访问硬件端口,或改变中断标志位,或访问某些内存区域的“最小特权”模式,停止该程序,并允许操作系统来决定做什么(无论是终止该程序或给它似乎想要的程序)。

中断处理是由更为复杂。足以说,通常,如果用户程序执行软件中断,中断号是用作载体进入中断表。而是生成一般保护性异常和操作系统处理程序表示异常可能(如果操作系统是设计这种方式)制定的过程中想要什么,并请求服务。我敢肯定,Linux和Windows在过去(如果不是当前)使用这种机制,为他们的系统调用。但也有其他的方法来实现这一点,如SYSENTER指令。

拉尔夫*布朗的中断表 含有大量的信息,其中断做什么。 int21, ,所有其他人一样,支持一个范围广泛的功能性取决于登记册的价值观。

一个 非HTML版的拉尔夫*布朗的列表 也可以。

在INT指令是软件中断。它导致跳转到程序通过中断向量,这是在存储器中的固定位置指向。 INT指令的优点是,只有2字节长,如oposed到也许6所述的JMP,并且它可以很容易地通过修改所述中断向量的内容重新定向。

内部为0x21是一个x86软件中断 - 基本上,这意味着有中断表在存储器中的固定点上市软件中断函数的地址。当x86处理器接收到中断操作码(或以其他方式决定一个特定的软件中断应执行),它引用该表来执行到该点的呼叫(在这一点上的功能,必须改用iretret返回)。

是可能的重新映射诠释为0x21和其他软件中断(即使内部DOS虽然这可以具有负面影响)。一个有趣的软件中断映射或链诠释为0x1C(或0x08的,如果你很小心),这是系统节拍中断,叫做18.2次每秒。这可以被用来创建“背景”的过程,即使在单线程实模式(实模式过程将被中断18.2倍的第二打电话给你的中断功能)。

在DOS操作系统(或正在提供一些DOS仿真,比如Windows控制台的系统)中等0×21被映射到什么是有效的DOS操作系统主“API”。通过向AH寄存器提供不同的值,不同的DOS的功能可以如打开一个文件(AH =的0x3D)或印刷到屏幕(AH = 0×09)。

被执行

这是从大约中断汇编语言程序的艺术:

  

在80x86的,有三种类型的通常称为事件   中断:陷阱,异常和中断(硬件中断)。   本章将介绍每一种形式并讨论其   支撑件上80x86的CPU和PC兼容机。

     

尽管术语陷阱和异常常常同义地使用,我们   将使用术语陷阱表示程序员发起并预期   控制转移到专门的处理程序。在许多方面,一个   陷阱只不过是一个专门的子程序调用更多。许多文本   请参阅陷阱的软件中断。 80x86的INT指令   主车辆用于执行陷阱。需要注意的是陷阱通常是   无条件的;也就是说,当你执行一个int指令,控制   总是传送到与收集相关联的过程。以来   陷阱通过明确的指令执行,很容易确定   到底是哪一个程序指令将调用陷阱处理   例程。

第17章 - 中断结构和中断服务例程

(几乎)全部DOS接口已作为INT21H命令中,用各种寄存器参数。这是一个小窍门,使用内置的硬件表跳转到正确的代码。也INT 33H是为鼠标。

这是一个“软件中断”;所以不是硬件中断的。

当应用程序调用软件中断,这是基本相同,其作出的子程序调用,不同之处在于(不同于子程序调用)的并不需要知道它的调用代码的确切的内存地址。

系统软件(例如DOS和BIOS)暴露它们的API向应用软件中断。

因此,该软件中断是一种动态联。

要精确,这里的直接链接到R.布朗的INT 21H命令列表: HTTP ://www.ctyme.com/intr/int-21.htm

实际上,有很多概念在这里。让我们从基础开始。

中断是意味着要求的注意力从CPU, 中断 目前的程序流程,跳跃到一个中断的处理程序(ISR中断服务程序),做一些工作(通常由操作系统或核装置驱动)和然后返回。

什么是一些典型的使用对于中断?

  • 硬件的中断:设备要求的注意力从CPU通过发出中断的请求。
  • CPU情况除外:如果一些异常CPU条件的发生,例如分通过零,一页的错...CPU跳到相应的中断处理这样的操作系统可以做任何不(发送一个信号,以一个过程,载入页面交换和更新TLB/page表,...).
  • 软件的中断:由于中断结束了调用的操作系统内核,一个简单的方法实现系统的电话是使用中断。但你不需要,在x86你可以使用一个呼叫指令的一些结构(某种类型的TSS请参考),并在新的x86有系统调用/SYSENTER手册.

Cpu决定哪里跳出来寻找在一个表中(除向量,中断向量,IVT在x86真正的模式,IDT在x86保护模式,...).一些Cpu有一个单一的矢量,用于硬件的中断,另外一个例外情况等等,以及ISR已经做了一些工作,以识别发端人的中断。其他有大量的矢量,并直接跳到非常具体的Isr.

x86有256个中断的矢量。在原有的电脑,这些都是分成几组:

  • 00-04 CPU例外情况,包括内容。随后Cpu(80186,286,...),这个范围扩大,重叠与下列范围内。
  • 08-0F 这些是硬件的中断,通常称为IRQ0-7.PC-在加入IRQ8-15
  • 10-1F BIOS话。从概念上讲,这些可被认为是系统调用,由于BIOS的一部分DOS,取决于具体的机(这是它的定义是在CP/M)。
  • 20-2F DOS话。其中一些是复,并提供多种功能。主要的一个是INT21h,它提供的大多数DOS服务。
  • 30-FF 其余的,用于由外部驱动程序和用户的程序。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top