首页> 中国专利> 采用存储单元转换方式的数据处理系统中的子程序执行装置及其方法

采用存储单元转换方式的数据处理系统中的子程序执行装置及其方法

摘要

在具有多个存贮器存贮单元(4、5、6)的,采用存贮单元转换方式的,执行子例行程序和中断处理子程序的装置中,分别将存贮单元转换控制程序存放在多个存贮器存贮单元的各自的相同地址空间(90)内。

著录项

  • 公开/公告号CN1036646A

    专利类型发明专利

  • 公开/公告日1989-10-25

    原文格式PDF

  • 申请/专利权人 三洋电机株式会社;

    申请/专利号CN89101867.0

  • 发明设计人 金子丰;

    申请日1989-02-24

  • 分类号G06F9/46;

  • 代理机构中国专利代理有限公司;

  • 代理人叶凯东

  • 地址 日本守口市

  • 入库时间 2023-12-17 12:06:25

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 1999-04-14

    专利权的终止未缴年费专利权终止

    专利权的终止未缴年费专利权终止

  • 1992-11-04

    授权

    授权

  • 1992-02-12

    审定

    审定

  • 1989-10-25

    公开

    公开

说明书

本发明是关于子程序执行装置及方法,特别是关于在具有由两个以上存储器存储单元组成的程序存储器的系统中执行子例行程序以及中断处理程序的装置及其方法。

要使数据处理系统执行一定的数据处理操作就必须有程序。为此,通常最简单的数据处理系统中也都包含有:存放各种数据和由外设提供的用户程序等的主存储器;存放该处理系统固有程序等的程序存储器;和根据这些程序进行数据处理的中央运算处理单元(CPU)。

但是,随着数据处理系统的多功能化,其处理程序的规模也日益巨大,这就使存放处理程序的存储器区增加。在这种情况下,由于CPU的存储器容量取决于CPU可利用的地址位(毕特)数,就不可能将规模很大的处理程序全部存放到该存储器区域内。为解决这一问题设置了多个存储器存储单元,以实现通过转换存储器存储单元来扩大CPU存储器范围的存储器转换方法。此时各个存储器存储单元中存放不同的处理程序。通常根据在存储器存储单元之外设置的主存储器的共用区域内存放的存储单元转换专用控制程序来进行存储器存储单元转换。

可是从存储器容量方面来考虑程序区域是有限制的,不可能在主存储器中设置这样的共用区,在较小容量的系统中,就有必要由存储器存储单元之内的处理程序来执行对存储单元转换的控制。在日本专利公开昭62-120543中展示了这样的存储单元的转换,下面将对照图1对该专利公开所展示的现有存储单元转换方法作简要说明。

参看图1,存储单元A和存储单元B具有地址0000H~FFFFH,其中由0000H到1FFFH的存储器范围分配给程序使用。而且该数据处理系统还被作为是在指令执行过程中即取走下一指令的予取指方式工作系统。

首先,CPU访问存储单元A,顺次逐步读出其中存放的程序的各条指令。在进行到地址X时,读出存放在其中的存储单元转换指令后,被访问的存储器即由存储单元A向存储单元B转换。这种存储单元的转换依靠地址中的附加位(毕特)来实现。也就是说,此附加位和指定地址的地址计数器(程序计数器)的计数值组合起来构成存储单元地址。例如,以“0”作为针对存储单元A的附加位值。而以“1”作为针对存储单元B的附加位值。在地址为00000~0FFFF时访问存储单元A,而在地址为10000~1FFFF时访问存储单元B。

采用这一存储单元转换方式时,由存储单元转换指令对附加位(这在存储器的适当位置上,实际被存放在扩展地址寄存器中)进行更新,来作存储单元转换。但程序计数器维持不变。因而程序计数器输出的存储器访问地址即成为地址X,X+1,X+2……。由此,在存储单元B中即继续执行其中的地址X+2以后所存储的程序指令。同时,由于这里是假定为采用予取指方式的系统,所以由访问存储单元A的地址X所读出的存储单元转换指令,在对下一地址X+1进行访问的时钟周期内被执行,就这样来来完成存储单元转换过程。这时,由于在地址X+1所读出的指令属于存储单元A,是无用的,所以就在存储单元A的地址X+1中存放指令“NOP”(空操作)。结果,在地址X+2被访问的定时周期无指令执行,而仅只由存储单元B的地址X+2(图1中的斜线部分)读出指令。在地址X+3被访问时,

即执行存储单元B的地址X+2的指令。

因而,如将这种存储单元转换方式应用到执行子例行程序中,就产生了下面的问题。过去为了避免程序的冗长并考虑到程序区间利用效率的问题,将反复使用的程序作为子例行程序存放在另外的存储器区内,并采用了在需要时调用这种子例行程序的程序操作方法。现在所要采用的上述存储单元转换方法,则是由一个存储器存储单元的主程序调用另一个存储器存储单元的子例行程序。在这种情况下,当主程序需要多次调用子例行程序时,就必须对主程序内的存储单元转换地址和子程序的首地址进行地址组合,在作程序开发时需要很多时间,从而使程序开发效率降低。

此外,当欲调用的子例行程序数(种类)很多时,有需要进行地址组合这样的限制,就不可能再进行所期望的程序开发。而且当设有3个以上的存储器存储单元时,也会产生和上述应用存储单元转换方式时的同样的困难,几乎不可能进行子例行程序的嵌套等操作。

要克服这样的困难,应将必要的子例行程序全都存储到各存储器存储单元中,但这样以来各存储器存储单元所需的存储器容量就很大,要将所期望的程序全部存入有限的程序存储区内是不可能的。

而且在与子例行程序相似的处理程序中还有中断子程序。这种中断处理子程序,虽然就作为一个存放在主程序之外的另一存储器区域内的独立程序这一点来说,与子例行程序相似,但就其与主程序的处理内容完全无关这一点来看,则完全不同。在下面的说明中,将子例行程序和中断处理子程序总称之为与其它程序意义有别的子程序。

存储器存储单元转换方式中的中断控制方式在例如日本专利公开昭57-30050中已有披露。在这一现有技术文献中,在多个存储器存储单元之外另设置的公用存储器区域内,存放中断处理程序或者用来指定存放有中断处理程序的特定存储单元存储器和存储单元地址等的中断用存储单元控制程序。产生中断时,即根据存放在该公用存储器区和/或特定存储器存储单元中的处理程序进行中断处理。

采用这一现有技术方法,根据系统设计上或系统存储器容量上的措施,不再存在不能在存储器存储单元之外的公用存储器区内设置为存放与中断处理有关程序的区域的情况。因而,在这样的系统中,必须将同样的中断处理程序存储在各个存储器存储单元中。这就使由于存储器存储单元转换方式,不使扩大的存储器区域为中断处理程序所独占,而使存放处理程序的存储器区域变窄。

同时,上述日本专利公开昭62-120543中提出的是,在该存储器存储单元转换方式中,代替存储单元转换指令后的指令NOP,用指令JMP(转移)指定转移地址,从而排除了进行地址组合的必要性。然而在这一现有技术中,在存储单元转换后,只能用指令JMP来指定转移地址,根本没有考虑如何指定返回地址等问题。而且由于一般的CPU在执行指令JMP后,并不保证实际上存储器存储单元转换已经结束,所以这一方法难以可靠地实现。因此,不能将这一现有技术应用于在存储器存储单元转换方式的系统中的子例行程序执行方法和中断处理方法。

本发明的目的在于提供一种数据处理装置,能够采用既能存储含有存储器存储单元转换的程序而又无须考虑存储器存储单元之间地址组合问题的存储器存储单元的转换方法。

本发明的另一目的是提供一种采用存储单元转换方式的数据处理装置,能在有限的存贮器区域内有效地存放包含有存储器存储单元转换的程序。

本发明的又一目的是提供一种采用存储单元转换方式的数据处理装置,能将带有存储器存储单元转换的子例行程序和中断处理子程序分配在任一存储器存储单元内。

本发明的再一目的是提供一种采用存储单元转换方式的子程序执行装置,能从任一存储器存储单元中调用任一存储器存储单元的子例行程序,并且返回到原先的存储器存储单元。

本发明的又一目的是提供一种采用存储单元转换方式的中断处理执行装置,能有效地利用程序存储区。

本发明的再一目的是在存储单元转换方式的数据处理装置中提供一种子程序执行方式,能在任何存储器存储单元间进行子程序调用和返回。

本发明的又一目的为的是在采用存储器存储单元转换方式的数据处理装置中提供一种子例行程序和中断处理程序的执行方法,能有效地利用存储器区域。

本发明的再一目的是提供一种能减少包含带存储器存储单元转换的子例行程序的程序开发时间的子例行程序执行方法。

本发明的又一目的是提供一种在多个子程序中能共同利用同一存储单元转换控制程序的带存储单元转换的子程序执行方法。

本发明再一目的是提供一种能以较少处理步骤进行存储器存储单元转换的带有存储单元转换的子程序执行方法。

涉及本发明存储单元转换方式的数据处理装置,有多个存储器存储单元,在每一个这种存储器存储单元中,存储单元转换控制程序存放在给予相同地址的存储器区域内。

该存储单元转换控制程序的各步,进行存储器存储单元间的地址组合。

涉及本发明的子程序执行方法,当执行第一存储器存储单元的处理程序中发生需要进行第二个存储器存储单元的子程序的情况时,包括如下步骤:根据第一存储器存储单元的存储单元转换控制程序进行存储器存储单元转换,并读出第二存储器存储单元的存储单元转换控制程序;根据所调用的第二存储器存储单元的存储单元转换控制程序调用所需的子程序;在该子程序执行完毕后返回到第二存储器存储单元的存储单元转换控制程序;根据此返回的第二存储器存储单元的存储单元的转换控制程序;将存储器存储单元由第二存储器存储单元向第一存储器存储单元转换,并读出第一存储器存储单元的存储单元转换控制程序;根据此读出的第一存储器存储单元的存储单元转换控制程序返回到原先的处理程序。

在上述结构中,用于存储单元转换的控制程序仅仅存放在各存储器存储单元相同地址空间内,而根据此存储单元转换控制程序进行存储器存储单元转换,调用子程序并返回到原先的处理程序。因而不必考虑主程序和子程序的地址组合问题,可以把子程序分配至存储器存储单元的任何地址位置,能有效地利用存储器区域并缩短程序开发时间。

特别是在多个子程序共用一种存储单元转换控制程序的情况下,能更有效地利用存储器区域。

而且在各个子程序中设置存储单元转换控制程序的结构情况下,也能减少处理步骤,就是说交迭地进行存储器存储单元转换。

通过下面对照附图进行的详细说明,将可对本发明的上述目的及其他目的、特征、细节和效果有进一步了解。

对附图的简要说明:

图1为现有的存储单元转换方式的结构示意图;

图2为作为本发明一实施例的存储单元转换方式的系统结构示意图;

图3为应用图2所示系统子例行程序执行方法中的存储器存储单元所存储内容的示意图;

图4为本发明另一实施例中的存储单元转换方式大致结构示意图;

图5为应用图4所示系统的子程序执行方式中存储器存储单元的存储内容示例图;

图6为本发明又一实施例中存储单元转换方式的系统结构示意图;

图7为应用图6所示系统的中断处理方式中各存储器存储单元的存储内容示例图;

图8为应用图6所示系统的另一种中断处理方式中各存储器存储单元的存储内容示例图;

图9为本发明又一实施例的存储器存储单元转换方式的系统结构示意图;

图10为应用图9所示系统的中断控制方式中各存储器存储单元的存储内容示例图;

图11为应用图9所示系统的另一中断控制方式中各存储器存储单元的存储内容示例图。

下面在作为本发明实施例的存储器存储单元转换方式的数据处理系统中,就子程序执行方式,顺次对子程序、中断处理程序,参照附图进行说明。

图2中示出作为本发明第一实施例的存储器存储单元转换方式的数据处理系统的主要部件的大致组成。如图2所示,数据处理系统由按照所给定的程序进行数据处理、控制操作等的CPU1,分别存储给定的处理程序的存储器存储单元A4、B5,存放各种数据以及由外设(图中未示出)装载的用户程序等的主存储器7所组成。

CPU1可以采用市售的,例如Intel公司的产品16位的8086。存储器存储单元A4由ROM(只读存储器)构成,用来固定地存放予先确定的系统固有的第一处理程序。存储器存储单元B5也同样由ROM构成,固定地存放系统固有的第二处理程序。主存储器7,为使其内容能够改写,由RAM(随机存储存储器)组成。这里为暂时存放由存储器存储单元A4、B3以及主存储器7所读出的内容,设置有寄存器区域。这一寄存器区域虽然在后面的操作叙述中被看作是寄存器BX,但如图所示,它可以是设在CPU1内部的,或者是利用主存储器7中某一定区间。

为进行存储器存储单元转换,设有存放为存储单元专用的存储单元指定数据的存储单元寄存器8以及根据存储单元寄存器8的内容来选择存储器存储单元A4或B5的处于启动状态的译码器9。

译码器9通常由“或非门”、“与非门”等组成。在上述的系统结构中,存储器存储单元A、B是分别由ROM4、5所构成,但最好将存储器存储单元A、B设置在一个ROM芯片上。

下面参照图3对存储器存储单元A、B的存储内容加以说明。

存储器存储单元A4和B5同时都包含存放存储单元转换控制程序(以下称为存储单元转换管理程序)的区域90和存放一定处理程序的区域100。在区域90中分配有存储器存储单元A4和B5的相同地址区(图3中由地址0至地址5)。存储器存储单元A4和B5的处理程序存储区100存放相互间不同的处理程序。为传送数据和地址,设有数据母线3和地址母线2。

下面对照图2和图3来说明由存储器存储单元A4的主程序调用存储器存储单元B5的子程序的操作执行情况。图3中以箭头表示操作流向。

在存储器存储单元B5的存储器区10内,多个子程序SUB1、SUB2……被存放在与存放有存储器存储单元A4的主程序的子程序调用指令CALL的地址无关的地址位置上。

在存储器存储单元A4的主程序中,地址X的位置处存放有用来将子程序SUB1的首地址Y的内容传送到寄存器BX(图2中被设置在CPU1或RAM7中,如虚线所示)的指令MOV>

在存储器存储单元A4的存储单元转换管理程序中,地址0存放由存储单元A到存储单元B的存储器存储单元转换指令,地址1存放向本地址转移的指令JMP>

在存储器存储单元B5的存储单元转换管理程序中,地址0、1、5存放指令NOP,地址2存放调用寄存器BX的内容的指令CALLBX,地址3存放由存储单元B到存储单元A的存储器存储单元转换指令,地址4存放指令JMP>

现在来讨论在存储器存储单元A4的主程序执行当中,程序到达地址X那一步的情况。因地址X的指令MOV的作用,表明地址Y的数据设置在寄存器BX中。接着由地址X+1的指令CALL将存储器存储单元A4的地址O的内容调出,存储单元执行由存储单元A向存储单元B转换的存贮单元转换指令,接着执行存储器存储单元A4的地址1的指令JMP。存储单元转换的进行是,CPU1根据存储单元转换指令,将识别存储器存储单元B5的存储单元识别数据写入存储单元寄存器7中,译码器8对此存储单元寄存器7中的识别数据进行译码,从而使存储器存储单元A4关闭,并打开存储器存储单元B5。这时,因为是予取指方式,所以在执行存储器存储单元A4的地址1的指令JMP>4的地址2的指令CALLBX。由这一指令CALL将已经存放在寄存器BX中的地址Y读出,而执行由此地址Y开始的子程序SUB1。子程序SUB1结束,程序执行步骤到达地址Y'时,因指令RET的作用而执行存储器存储单元B5的指令CALL的下一地址(地址3)的存储单元转换指令,存储器存储单元在CPU1的控制下进行由存储器存储单元B5向存储器存储单元A4转换。这一转换也是在存储器存储单元B5的地址4的指令JMP>4的地址5的指令RET。借助指令RET将存储器存储单元A4的指令CALL后的下一地址(地址X+2)的内容读出。这就完成了向存储器存储单元A4的主程序返回的操作,再顺序执行该主程序的程序指令。

当存储器存储单元A4的主程序调用存储器存储单元B5的子程序SUB2时,要利用指令MOV将子程序SUB2的首地址送到寄存器BX中。

由存储器存储单元B5的主程序调用存储器存储单元A4的子程序,这种在存储器存储单元A4和存储器存储单元B5之间相互作子程序调用的结构,用于存储器存储单元管理程序的区域,将比图3中的增大一倍。在存储器存储单元B5这一增加区域中,存放和存储器存储单元A4的存储单元转换管理程序(地址0~地址5)同样的管理程序;而在存储器存储单元A4的这一增加区域中,存放和存储器存储单元B5的如图3所示的存储单元转换管理程序同样的转换管理程序。这时在存储器存储单元B5的主程序中,要像在存储器存储单元A4的主程序中一样,存放用作调用子程序的指令MOV和调用在所增加区域内的存储单元转换管理程序的指令CALL。

下面来说明设置有三个以上存储器存储单元,而它们相互间执行子程序调用的系统结构。

作为一个例子,图4中示出了由三个存储器存储单元组成的存储单元转换方式的系统主要结构。在图4中将图2所示结构增加了构成第三存储器存储单元的存储器存储单元C6。存储器存储单元C6由ROM组成。存储器存储单元A4、B5、C6存放各不相同的处理程序。设置有存放予返回存储单元的标识数据的寄存器AH,存放予转换存储器存储单元的数据的寄存器AL以及存放子程序首地址的寄存器BX。这些寄存器AH、AL、BX,如图所示,设置在CPU1内,或者设置在随机存储存储器(RAM)7的一定区域内。CPU1中通常设有为暂时存放要处理的数据的寄存器A、B、C、D等,可以将A~D这些寄存器用来作为寄存器AH、AL、BX。

图5示出了存储器存储单元的存放内容的示例。存储器存储单元A4、B5和C6同时都包括有存储单元转换管理程序存储区90和存放给定程序的处理程序区100。存储单元转换管理程序区90被分配在存储器存储单元A4、B5和C6的有相同指定区间即地址0~地址(S-1)的区域。存储器存储单元A4、B5和C6各自的上述区域地址以下的区域被分配做处理程序区。存储器存储单元A4、B5和C6存储各不相同的处理程序。

存储单元转换管理程序大致上包括第1至第4个程序,分别存放地址O~(P-1),P~(Q-1)、Q~(R-1)和R~(S-1)。

存放地址O~(P-1)的第1程序包括把各存储器存储单元A4、B5和C6等自身的存储识别数据作为返回存储单元识别数据,例如寄存器AH中存储在给定寄存器的指令以及对驻存于给定寄存器AL中的存储单元转换识别数据进行译码,并作向第2程序(后述)的相应地址执行转移的指令。

存储器存储单元A4、B5和C6各自在地址P(Q-1)中所存储的第2程序是把存储单元实际向转移存储单元进行转移的程序。在第2程序中包括由指令NOP和JMP>

地址Q~(R-1)的第三程序,各存储器存储单元均同样包括调用由驻存于寄存器BX中的转移地址开始的子程序指令,和对驻存在寄存器AH中的返回存储单元标识数据加以译码,作为向第4程序(下面说明)的对应地址转移的指令。

地址R~(S-1)的第4程序是实际进行使存储单元向返回存储单元转移用的返回程序。第4程序具有与第2程序大致相同的结构,仅仅在以指令RET代替指令JMP这一点上与后者不同。

下面在存储器存储单元C6中的地址Y和地址W为起点的区域分别存放子程序SUB1和SUB2的情况下,对由存储器存储单元A4的主程序调用存储器存储单元C6的子程序SUB1的操作加以说明。而且在下面的说明中,为简单起见,将此系统看作是非予取指方式的,只有在每次指令执行结束后才进行取指操作。

在存储器存储单元A4的地址X处存放有将指明存放着子程序SUB1的存储器存储单元的转移存储单元的标识数据(特指定为存储单元C6)驻存到给定寄存器AL中的指令MOV。地址X+1存放为将子程序SUB1的首地址作为转移地址驻存到寄存器BX的指令MOV。地址X+2上存放调用由地址O开始的程序转换管理程序(第一程序)的指令CALL。这里必须注意的是,主程序调用子程序所用的地址X与子程序SUB1的首地址之间是没有任何关系的。下面对操作进行说明。图5中用箭头来表示操作执行流向。存储器存储单元A4的主程序处理进行到地址X时,因地址X的指令MOV的作用,将转移存储单元(存储器存储单元C6)标识数据存入寄存器AL中。在地址X+1处,子程序SUB1的首地址Y被驻存到寄存器BX中。接着在地址X+2处将存储器存储单元A4的地址O的内容调出,开始执行存储器存储单元A4的存储单元转换管理程序。在这一存储单元转换管理程序中,存储器存储单元自身的编号A被作为返回存储单元标识数据驻存入寄存器AH中。接着对已驻存在寄存器AL中的转移存储单元编号(这里是存储单元C)进行译码,按照这一经过译码的转移存储单元标识数据,向存储器存储单元A4的第2程序内的对应地址转移。由于转移存储单元是存储单元C6,故向该第2程序中应用于存储单元C的地址转移,以此来执行向存储器存储单元C6的存储单元转换。在存储器存储单元C中,指令NOP之后存放着指令JMP>6的指令JMP>

子程序SUB1执行后,由地址Y'的指令RET的作用,进行存储器存储单元C6第3程序的返回存储单元判断操作。在这一返回存储单元的判断操作中,首先对驻存于寄存器AH中的返回存储单元的标识数据进行译码,根据此译码结果执行向存储器存储单元C6第4程序的对应地址转移的操作。这时由于返回存储单元是存储器存储单元A4,因而执行转移到存储器存储单元C6第四程序中的向存储单元A转换的指令的操作,进行由存储单元C6到存储单元A4的转换。

存储单元转换后,由存储器存储单元A4第四程序的指令RET,进行返回到存储器存储单元A4的主程序的操作。

这里,存储单元的转换过程是这样的,即根据存储单元转换指令,在CPU1的控制下使存储单元寄存器8的内容改变,再按照此改变后的存储单元寄存器8的内容,译码器9就启动相应的存储器存储单元。

在调用子程序SUB2的情况下,按照存储器存储单元A4的地址X的指令MOV,寄存器BX中仅存有子程序SUB2的首地址W。

虽然在上述实施例中,说明的是由存储器存储单元A4调用存储器存储单元C6的子程序的情况,而由任一存储器存储单元的主程序来调用其他存储器存储单元的子程序当然也是可能的。

采用上述结构,在具有多个存储器存储单元的存储器存储单元转换方式的系统中,可以由任一存储器存储单元的主程序来调用任一存储器存储单元的子程序。而且因为无须在主程序和子程序间进行复杂的地址组合,从而有可能将子程序分配到任何地址上,这就能使程序开发工作大为改善。

此外,由于可以只在特定的地址区域内存放程序来执行存储单元转换,为进行存储单元转换所需的程序区域就可以减小。

下面对将上述那种在存储器存储单元的特定地址区域内存放存储单元转换用程序的结构,按照用于中断处理程序时的结构加以说明。

图6示出了设置有两个存储器存储单元的存储器存储单元转换方式的系统中与中断处理相关的结构主要部分。

图6是在图2所示结构中增加了中断控制器20。中断控制器20监视各种中断信号,中断发生时,即产生中断发生指示信号INT,在将此信号送到CPU1的同时,还将与所发生中断种类相应的向量地址送到地址母线2。

在主存储器7的一定区域内,存放有对应各向量地址所必须执行的记录中断处理程序首地址的中断向量表。中断发生时CPU1中止执行运行中的处理程序,由所述表中读出与向量地址相应的起始地址,执行从该表读出的地址开始的程序。

图7表示存储器存储单元A和B中存放的程序示例。但图7中仅仅示出了与多个中断中的一个中断有关的程序,并假定在该中断发生时,根据主存储器7上的中断向量表,所指定的地址为地址X。

存储器存储单元A4和B5包括有存放存储单元转换用控制程序(存储单元转换管理程序)的区域90,和存放给定处理程序的区域100。在存储单元转换管理程序用的区域中,存储器存储单元A4和B5同时被分配以相同的地址区域(图7中为地址0~5的区域)。

存储器存储单元A4的处理程序区100包括存放与特定中断相关的中断处理程序12的区域(地址区X~W)和存放给定处理程序的区域。更具体地说,存储器存储单元A4的地址区域Y~W,存放表示中断处理的实际内容的中断处理子程序,地址X和X+1分别存放调用该中断处理子程序的指令CALL和表明由子程序向主程序返回的指令RET。地址Y为中断处理子程序的起始地址,而在地址W存放表明子程序结束和返回到主程序的指令RET。

在存储器存储单元B5中地址X~Z存放中断控制程序13。此中断控制程序13包含有:将寄存器BX的内容存入堆栈(设置在CPU1内部)的指令PUSH,将中断处理程序的首地址送到寄存器BX的指令MOV,调用以地址O起始的存储单元转换管理程序的指令CALL,将堆栈中存储的内容向寄存器BX装载的指令POP,和由中断处理子程序返回到主程序的指令IRET。

在存储器存储单元B5的存储单元转换管理程序中,地址O存放由存储单元B到存储单元A的存储单元转换指令,地址1存放指令JAP>

在存储器存储单元A4的存储单元转换管理程序中,地址0、1、和5存放指令NOP,地址2存放调用以驻存在寄存器BX中的地址为首地址的程序的指令CALL,地址4存放指令JMP>

假定在执行存储器存储单元B5的主程序中发生了中断(图7中★号标示处)。中断控制器20给CPU1发出中断发生指示信号INT,并同时将向量地址送到地址母线2。根据这一向量地址,由主存储器7的中断向量表中读出所存储的地址X,将寄存器BX的内容置入堆栈,CPU1即执行由地址X起始的中断控制程序。这就是说,接着要将中断子程序由首地址Y送入寄存器BX。然后访问存储器存储单元B5的地址O,执行地址O中的指令,而后再执行指令JMP>5向存储单元A4的存储器存储单元转换,并执行存储器存储单元A4地址2中的指令CALL。由指令CALL来进行对存放在寄存器BX中的地址Y进行访问,而执行由地址Y起始的中断处理子程序。此中断处理子程序执行完后,由地址W的指令RET的作用,返回到存储器存储单元A4的存储单元转换管理程序指令CALL的下一个地址。先返回的地址3的内容为存储单元转换指令,与地址4的指令JMP>4到存储单元B5的存储器存储单元转换,接着执行地址5的指令RET。借助此指令RET的作用,进而执行存放在存储器存储单元B5的程序13的指令CALL地址的后一地址中的指令POP。由此将堆栈中设置的内容装载到寄存器BX。在此装载之后,执行指令IRET,恢复执行存储器存储单元B4的被中断了的主程序。

同样,即使对其他不同的中断,如果也在该中断所指定的特定地址(即与向量地址相对应的表内地址)中存入将所需执行的中断处理程序的首地址传送到寄存器BX的指令MOV,也就可能应用区域90内的存储单元转换管理程序进行这一中断处理。

在当存储器存储单元A4的主程序执行中发生中断时,由存储器存储单元A4中地址X的指令CALL的作用,执行从地址Y起始的中断处理子程序,在此子程序执行完毕后,即由地址W的指令RET将处理返回到原先的主程序继续进行。

而且,在中断控制程序13中,亦可采取用指令JMP代替指令CALL来执行向地址O转移的设计。在这种情况下,由存储器存储单元B5的存储单元转换管理程序来进行存储单元转换,在中断处理子程序执行之后,执行存储器存储单元A4的存储单元转换管理程序中的指令POP和指令IRET,可以不通过中断控制子程序13,而使其返回到存储器存储单元B5中被中断的处理程序。也就是说,在存储单元A4的区域90内的地址3~5存放指令POP>

下面参照图8对另一中断处理方法加以说明。图8所示方法和图7所示方法有两点很不相同。第一点:在图8的方法中,将所需执行的中断处理主程序的起始地址传送到给定寄存器的中断控制程序(图7中的13)是被存放在内部的。亦即在图8的方法中借助地址X的指令JMP立即执行存储器存储单元B5的存储单元转换管理程序。

第二点:在图8的方法中,存储器存储单元A4的存储单元转换管理程序内部进行中断处理子程序调用时,可以直接指定这一地址。也就是说,不用给定的寄存器BX,以指令CALL>

按照图8所示这一方法,存储器存储单元B5的主程序进行处理中发生中断时,也和图7所示方法同样,经过存储单元转换后,执行存储器存储单元A4的中断处理子程序,并在中断处理子程序执行后,即恢复执行被中断的存储器存储单元B5的主程序。

在图8这一方法中,因为必须在存储单元转换管理程序内指定中断处理子程序的首地址,对于其他各种中断来说就不能共同存放在区域90内的存储单元转换管理程序,而必须为每一个中断设置存储单元转换管理程序。不过与图7所示方法相比,在处理步数上,图8所示方法大大减少了。这样就可以缩短中断控制所需的时间,这对于频繁发生中断的情况具有良好的效果。

再者,根据中断的种类,将图7所示方法和图8所示的两者结合起来应用,当然也可以。

而且图8所示的结构中,虽然是采用由存储器存储单元B5的存储单元转换管理程序内的指令IRET来执行返回到被中断的处理程序,但也可代之以如图8(>4中地址X处,存放指令CALL>

下面以具有三个存储器存储单元的情况作为例子来设置三个以上存储器存储单元的存储器存储单元转换方式的系统的中断处理方法进行说明。

图9表示系统的大致结构。在图6的结构中增加了一个由ROM组成的存储器存储单元C6。存储单元寄存器8存放指定存储器存储单元A4、B5和C6中之一的存储单元识别数据。译码器9对存储单元寄存器8中存储单元标识数据进行译码,启动唯一相对应的存储器存储单元。其他构成本质上均与图6所示相同。

图10为存储器存储单元A4、B5和C6的存储内容示例。图10中也是进行多个中断处理中一个特定中断处理的结构情况。此特定中断处理用的子程序的首地址X,由在主存储器7给定区域中的被扩大了的中断向量表来指明。因为主存储器7是由RAM组成的,所以该中断向量表在系统启动时,由引导程序存入主存储器7的给定区域内。

如图10所示,存储器存储单元A4、B5、C6包括有存放存储单元转换管理程序的区域90,和存放各自给定的处理程序的处理程序区100。区域90在存储器存储单元A4、B5、C6中均被分配在同一地址区域,即地址O~(S-1)。

存储单元转换管理程序具有与图5所示为执行子程序所采取的相同的结构。亦即无需详细赘述,存储单元转换管理程序由存储在地址O~(P-1)的返回存储单元和转移存储单元赋值用第一程序,存储在地址P~(Q-1)的实际进行把存储单元向转移存储单元转换的第二程序,存储在地址Q~(R-1)的中断处理子程序首地址赋值和返回存储单元判定用的第三程序,和存储在地址R~(S-1)的实际把存储单元向返回存储单元转换的第四程序组成。

针对特定中断的中断处理程序33被存放在存储器存储单元C的地址X~W的区域内。中断处理程序33具有存放在地址X的指令CALL    Y,存放在地址(X+1)的指令IRET,以便存放在地址Y~W的表示实际中断处理内容的中断处理子程序。下面对主存储单元A4和B5之一在其处理程序执行中发生中断时的处理操作加以说明。图10中的操作流向示例以箭头表示。

存储器存储单元A4或B5的的处理程序执行中一发生中断时(图10中是在存储器存储单元A4中标有★号处表明示例中发生中断的地点),根据中断控制器20所产生的向量地址,由主存储器7中的表读出地址X,CPU即执行该地址X中的内容。存储器存储单元A4和B5的地址X~Z的区域内,存放由将指明存储有对应中断处理程序的存储单元的标识数据BANK>

这样如图10中以★号标明所示,存储器存储单元A4的处理程序执行中一发生中断,首先,就执行由存储器存储单元A4的地址X起始的中断控制程序。较具体的说就是,在寄存器AL和寄存器BX中分别存入转移存储单元标识数据BANK>4的存储单元转换管理程序中,首先,将自身的存储器存储单元的编号,即存储器存储单元A,作为返回存储单元标识数据,存入例如说寄存器AH中,接着,对存放在寄存器AL中的转移存储单元标识数据进行译码,向第二程序的相应地址作转移。由于此时的转移存储单元是存储器在存储单元C6,所以即向存储器存储单元C6执行用的地址转移,接着就进行由存储器存储单元A向存储器存储单元C的存储单元转换。

在存储器存储单元C6中,因为在指令NOP后存放的是指令JMP>6转换后,即调用由存储在寄存器BX中的地址Y起始的中断处理子程序。此子程序执行后,依靠地址W的指令RET对存放在寄存器AH中的返回地址进行译码。这时,由于返回存储单元是存储器存储单元A4,所以即向存储单元A的返回用地址转移,以执行向存储器存储单元A4的转换。存储单元转换后,由于存储器存储单元A4的指令RET作用,返回到存储器存储单元A4的中断控制程序(指令IRET),通过这一程序回到中断前的处理程序。

此外,在执行存储器存储单元B5中的处理程序中发生上述特定的中断时,也进行完全相同的处理。而在存储器存储单元C6的处理程序执行中发生这一特定中断时,由地址X的指令CALL的作用而执行中断处理子程序,在此子程序执行后,再借助指令RET和IRET返回到原先被中断了的子程序,而恢复该处理程序。

在上述结构中,依靠存放在同一地址区内的存储单元转换管理程序,可作由任一存储单元向任一存储单元的转换。因而,如果对于存放在其他存储器存储单元中的中断处理程序和其他种类的中断,同样地在由这些中断所标识的特定地址上也存放将所需执行的中断处理程序的转换存储单元标识数据和/或转移地址存入寄存器AL和/或寄存器BX的中断控制程序的话,那么就可以共同利用区域90所存放的存储单元转换管理程序来进行中断控制。

下面图11中示出了将图8所示结构应用于三个存储器存储单元的系统的情形。图11所示的结构中与图8所示一样,将存储单元转换管理程序设置为特定中断所专用的。具体地说就是,存储单元转换的转移存储单元标识数据和转移地址(中断处理子程序的首地址),在各存储器存储单元的存储单元转换管理程序中,分别被固定在存储器存储单元C6和地址Y。在这样的结构中,当存储器存储单元A4的处理程序执行中一发生中断(图11中标有★号处),由地址X的指令JMP>4的存储单元转换管理程序,在返回存储单元的存储单元A4标识数据存放后,即唯一地进行向存储器存储单元C6的转换。在存储单元转换后,指令CALL>4的存储单元转换管理程序中的指令IRET,即执行返回到被中断了的处理程序。

在这种结构的情况下,虽然也与前述一样不能共同应用同一存储单元转换管理程序,但由于处理步骤数大为减少而可缩短中断控制所需时间。

而且在限于只向同一存储器存储单元作存储单元转换时,为针对多种中断能共同利用存储单元转换管理程序,在图11所示结构中,代替地址X的指令JMP φ,从地址X起存放指令MOV BX,Y,指令CALL O和指令IRET,并存放指令RET和CALLBX来分别代替存储单元转换管理程序中的指令IRET和CALLY。这就是说在向中断发生后的存储单元转换管理程序转移前,将中断处理子程序的首地址存入寄存器BX,在由存储单元转换管理程序作出存储单元转换后,调用寄存器BX的内容来执行中断处理子程序。因此,例如即使仅在存储器存储单元C6中存储有多种中断处理子程序,不必增设存储单元转换管理程序,也可进行中断处理。在这种场合下,与多个中断处理相对应地,由存储器存储单元A4、B5的地址X开始设置多个控制程序。而且,在四个以上存储器存储单元的情况下,仅仅只要增加上述的存储单元标识数据数,所以将系统扩大到四个以上存储器存储单元的结构亦很容易。

依靠以上这种结构,在采用存储单元转换方式的系统中,存储单元转换管理程序被存放在各存储器单元的相同地址区域内,由这种存储单元转换管理程序来进行存储单元转换,就可以执行所需的中断处理。因此,即使在不能在存储器存储单元外部设置共用存储器区域的系统中,任一存储器存储单元的处理程序执行中发生中断时,也能利用存放在某一存储器存储单元中的中断处理程序来执行中断处理,并恢复执行被中断的处理程序,因此,做为为存储原先的处理程序的程序区域能使用广大存储器区域,而充分地利用存储器的存储区间。这样就可能将长处理程序和所要求的必须的处理程序全部存进存储器存储单元内。

虽然本发明按附图进行了详细说明,这仅仅是作为图解和举例,当然不能理解为仅仅只限于此,本发明的思想和范围由所附权利要求的措词来限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号