專利名稱:采用存儲(chǔ)單元轉(zhuǎn)換方式的數(shù)據(jù)處理系統(tǒng)中的子程序執(zhí)行裝置及其方法
技術(shù)領(lǐng)域:
本發(fā)明是關(guān)于子程序執(zhí)行裝置及方法,特別是關(guān)于在具有由兩個(gè)以上存儲(chǔ)器存儲(chǔ)單元組成的程序存儲(chǔ)器的系統(tǒng)中執(zhí)行子例行程序以及中斷處理程序的裝置及其方法。
要使數(shù)據(jù)處理系統(tǒng)執(zhí)行一定的數(shù)據(jù)處理操作就必須有程序。為此,通常最簡單的數(shù)據(jù)處理系統(tǒng)中也都包含有存放各種數(shù)據(jù)和由外設(shè)提供的用戶程序等的主存儲(chǔ)器;存放該處理系統(tǒng)固有程序等的程序存儲(chǔ)器;和根據(jù)這些程序進(jìn)行數(shù)據(jù)處理的中央運(yùn)算處理單元(CPU)。
但是,隨著數(shù)據(jù)處理系統(tǒng)的多功能化,其處理程序的規(guī)模也日益巨大,這就使存放處理程序的存儲(chǔ)器區(qū)增加。在這種情況下,由于CPU的存儲(chǔ)器容量取決于CPU可利用的地址位(畢特)數(shù),就不可能將規(guī)模很大的處理程序全部存放到該存儲(chǔ)器區(qū)域內(nèi)。為解決這一問題設(shè)置了多個(gè)存儲(chǔ)器存儲(chǔ)單元,以實(shí)現(xiàn)通過轉(zhuǎn)換存儲(chǔ)器存儲(chǔ)單元來擴(kuò)大CPU存儲(chǔ)器范圍的存儲(chǔ)器轉(zhuǎn)換方法。此時(shí)各個(gè)存儲(chǔ)器存儲(chǔ)單元中存放不同的處理程序。通常根據(jù)在存儲(chǔ)器存儲(chǔ)單元之外設(shè)置的主存儲(chǔ)器的共用區(qū)域內(nèi)存放的存儲(chǔ)單元轉(zhuǎn)換專用控制程序來進(jìn)行存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換。
可是從存儲(chǔ)器容量方面來考慮程序區(qū)域是有限制的,不可能在主存儲(chǔ)器中設(shè)置這樣的共用區(qū),在較小容量的系統(tǒng)中,就有必要由存儲(chǔ)器存儲(chǔ)單元之內(nèi)的處理程序來執(zhí)行對(duì)存儲(chǔ)單元轉(zhuǎn)換的控制。在日本專利公開昭62-120543中展示了這樣的存儲(chǔ)單元的轉(zhuǎn)換,下面將對(duì)照
圖1對(duì)該專利公開所展示的現(xiàn)有存儲(chǔ)單元轉(zhuǎn)換方法作簡要說明。
參看圖1,存儲(chǔ)單元A和存儲(chǔ)單元B具有地址0000H~FFFFH,其中由0000H到1FFFH的存儲(chǔ)器范圍分配給程序使用。而且該數(shù)據(jù)處理系統(tǒng)還被作為是在指令執(zhí)行過程中即取走下一指令的予取指方式工作系統(tǒng)。
首先,CPU訪問存儲(chǔ)單元A,順次逐步讀出其中存放的程序的各條指令。在進(jìn)行到地址X時(shí),讀出存放在其中的存儲(chǔ)單元轉(zhuǎn)換指令后,被訪問的存儲(chǔ)器即由存儲(chǔ)單元A向存儲(chǔ)單元B轉(zhuǎn)換。這種存儲(chǔ)單元的轉(zhuǎn)換依靠地址中的附加位(畢特)來實(shí)現(xiàn)。也就是說,此附加位和指定地址的地址計(jì)數(shù)器(程序計(jì)數(shù)器)的計(jì)數(shù)值組合起來構(gòu)成存儲(chǔ)單元地址。例如,以“0”作為針對(duì)存儲(chǔ)單元A的附加位值。而以“1”作為針對(duì)存儲(chǔ)單元B的附加位值。在地址為00000~0FFFF時(shí)訪問存儲(chǔ)單元A,而在地址為10000~1FFFF時(shí)訪問存儲(chǔ)單元B。
采用這一存儲(chǔ)單元轉(zhuǎn)換方式時(shí),由存儲(chǔ)單元轉(zhuǎn)換指令對(duì)附加位(這在存儲(chǔ)器的適當(dāng)位置上,實(shí)際被存放在擴(kuò)展地址寄存器中)進(jìn)行更新,來作存儲(chǔ)單元轉(zhuǎn)換。但程序計(jì)數(shù)器維持不變。因而程序計(jì)數(shù)器輸出的存儲(chǔ)器訪問地址即成為地址X,X+1,X+2……。由此,在存儲(chǔ)單元B中即繼續(xù)執(zhí)行其中的地址X+2以后所存儲(chǔ)的程序指令。同時(shí),由于這里是假定為采用予取指方式的系統(tǒng),所以由訪問存儲(chǔ)單元A的地址X所讀出的存儲(chǔ)單元轉(zhuǎn)換指令,在對(duì)下一地址X+1進(jìn)行訪問的時(shí)鐘周期內(nèi)被執(zhí)行,就這樣來來完成存儲(chǔ)單元轉(zhuǎn)換過程。這時(shí),由于在地址X+1所讀出的指令屬于存儲(chǔ)單元A,是無用的,所以就在存儲(chǔ)單元A的地址X+1中存放指令“NOP”(空操作)。結(jié)果,在地址X+2被訪問的定時(shí)周期無指令執(zhí)行,而僅只由存儲(chǔ)單元B的地址X+2(圖1中的斜線部分)讀出指令。在地址X+3被訪問時(shí),
即執(zhí)行存儲(chǔ)單元B的地址X+2的指令。
因而,如將這種存儲(chǔ)單元轉(zhuǎn)換方式應(yīng)用到執(zhí)行子例行程序中,就產(chǎn)生了下面的問題。過去為了避免程序的冗長并考慮到程序區(qū)間利用效率的問題,將反復(fù)使用的程序作為子例行程序存放在另外的存儲(chǔ)器區(qū)內(nèi),并采用了在需要時(shí)調(diào)用這種子例行程序的程序操作方法?,F(xiàn)在所要采用的上述存儲(chǔ)單元轉(zhuǎn)換方法,則是由一個(gè)存儲(chǔ)器存儲(chǔ)單元的主程序調(diào)用另一個(gè)存儲(chǔ)器存儲(chǔ)單元的子例行程序。在這種情況下,當(dāng)主程序需要多次調(diào)用子例行程序時(shí),就必須對(duì)主程序內(nèi)的存儲(chǔ)單元轉(zhuǎn)換地址和子程序的首地址進(jìn)行地址組合,在作程序開發(fā)時(shí)需要很多時(shí)間,從而使程序開發(fā)效率降低。
此外,當(dāng)欲調(diào)用的子例行程序數(shù)(種類)很多時(shí),有需要進(jìn)行地址組合這樣的限制,就不可能再進(jìn)行所期望的程序開發(fā)。而且當(dāng)設(shè)有3個(gè)以上的存儲(chǔ)器存儲(chǔ)單元時(shí),也會(huì)產(chǎn)生和上述應(yīng)用存儲(chǔ)單元轉(zhuǎn)換方式時(shí)的同樣的困難,幾乎不可能進(jìn)行子例行程序的嵌套等操作。
要克服這樣的困難,應(yīng)將必要的子例行程序全都存儲(chǔ)到各存儲(chǔ)器存儲(chǔ)單元中,但這樣以來各存儲(chǔ)器存儲(chǔ)單元所需的存儲(chǔ)器容量就很大,要將所期望的程序全部存入有限的程序存儲(chǔ)區(qū)內(nèi)是不可能的。
而且在與子例行程序相似的處理程序中還有中斷子程序。這種中斷處理子程序,雖然就作為一個(gè)存放在主程序之外的另一存儲(chǔ)器區(qū)域內(nèi)的獨(dú)立程序這一點(diǎn)來說,與子例行程序相似,但就其與主程序的處理內(nèi)容完全無關(guān)這一點(diǎn)來看,則完全不同。在下面的說明中,將子例行程序和中斷處理子程序總稱之為與其它程序意義有別的子程序。
存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換方式中的中斷控制方式在例如日本專利公開昭57-30050中已有披露。在這一現(xiàn)有技術(shù)文獻(xiàn)中,在多個(gè)存儲(chǔ)器存儲(chǔ)單元之外另設(shè)置的公用存儲(chǔ)器區(qū)域內(nèi),存放中斷處理程序或者用來指定存放有中斷處理程序的特定存儲(chǔ)單元存儲(chǔ)器和存儲(chǔ)單元地址等的中斷用存儲(chǔ)單元控制程序。產(chǎn)生中斷時(shí),即根據(jù)存放在該公用存儲(chǔ)器區(qū)和/或特定存儲(chǔ)器存儲(chǔ)單元中的處理程序進(jìn)行中斷處理。
采用這一現(xiàn)有技術(shù)方法,根據(jù)系統(tǒng)設(shè)計(jì)上或系統(tǒng)存儲(chǔ)器容量上的措施,不再存在不能在存儲(chǔ)器存儲(chǔ)單元之外的公用存儲(chǔ)器區(qū)內(nèi)設(shè)置為存放與中斷處理有關(guān)程序的區(qū)域的情況。因而,在這樣的系統(tǒng)中,必須將同樣的中斷處理程序存儲(chǔ)在各個(gè)存儲(chǔ)器存儲(chǔ)單元中。這就使由于存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換方式,不使擴(kuò)大的存儲(chǔ)器區(qū)域?yàn)橹袛嗵幚沓绦蛩?dú)占,而使存放處理程序的存儲(chǔ)器區(qū)域變窄。
同時(shí),上述日本專利公開昭62-120543中提出的是,在該存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換方式中,代替存儲(chǔ)單元轉(zhuǎn)換指令后的指令NOP,用指令JMP(轉(zhuǎn)移)指定轉(zhuǎn)移地址,從而排除了進(jìn)行地址組合的必要性。然而在這一現(xiàn)有技術(shù)中,在存儲(chǔ)單元轉(zhuǎn)換后,只能用指令JMP來指定轉(zhuǎn)移地址,根本沒有考慮如何指定返回地址等問題。而且由于一般的CPU在執(zhí)行指令JMP后,并不保證實(shí)際上存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換已經(jīng)結(jié)束,所以這一方法難以可靠地實(shí)現(xiàn)。因此,不能將這一現(xiàn)有技術(shù)應(yīng)用于在存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換方式的系統(tǒng)中的子例行程序執(zhí)行方法和中斷處理方法。
本發(fā)明的目的在于提供一種數(shù)據(jù)處理裝置,能夠采用既能存儲(chǔ)含有存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換的程序而又無須考慮存儲(chǔ)器存儲(chǔ)單元之間地址組合問題的存儲(chǔ)器存儲(chǔ)單元的轉(zhuǎn)換方法。
本發(fā)明的另一目的是提供一種采用存儲(chǔ)單元轉(zhuǎn)換方式的數(shù)據(jù)處理裝置,能在有限的存貯器區(qū)域內(nèi)有效地存放包含有存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換的程序。
本發(fā)明的又一目的是提供一種采用存儲(chǔ)單元轉(zhuǎn)換方式的數(shù)據(jù)處理裝置,能將帶有存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換的子例行程序和中斷處理子程序分配在任一存儲(chǔ)器存儲(chǔ)單元內(nèi)。
本發(fā)明的再一目的是提供一種采用存儲(chǔ)單元轉(zhuǎn)換方式的子程序執(zhí)行裝置,能從任一存儲(chǔ)器存儲(chǔ)單元中調(diào)用任一存儲(chǔ)器存儲(chǔ)單元的子例行程序,并且返回到原先的存儲(chǔ)器存儲(chǔ)單元。
本發(fā)明的又一目的是提供一種采用存儲(chǔ)單元轉(zhuǎn)換方式的中斷處理執(zhí)行裝置,能有效地利用程序存儲(chǔ)區(qū)。
本發(fā)明的再一目的是在存儲(chǔ)單元轉(zhuǎn)換方式的數(shù)據(jù)處理裝置中提供一種子程序執(zhí)行方式,能在任何存儲(chǔ)器存儲(chǔ)單元間進(jìn)行子程序調(diào)用和返回。
本發(fā)明的又一目的為的是在采用存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換方式的數(shù)據(jù)處理裝置中提供一種子例行程序和中斷處理程序的執(zhí)行方法,能有效地利用存儲(chǔ)器區(qū)域。
本發(fā)明的再一目的是提供一種能減少包含帶存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換的子例行程序的程序開發(fā)時(shí)間的子例行程序執(zhí)行方法。
本發(fā)明的又一目的是提供一種在多個(gè)子程序中能共同利用同一存儲(chǔ)單元轉(zhuǎn)換控制程序的帶存儲(chǔ)單元轉(zhuǎn)換的子程序執(zhí)行方法。
本發(fā)明再一目的是提供一種能以較少處理步驟進(jìn)行存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換的帶有存儲(chǔ)單元轉(zhuǎn)換的子程序執(zhí)行方法。
涉及本發(fā)明存儲(chǔ)單元轉(zhuǎn)換方式的數(shù)據(jù)處理裝置,有多個(gè)存儲(chǔ)器存儲(chǔ)單元,在每一個(gè)這種存儲(chǔ)器存儲(chǔ)單元中,存儲(chǔ)單元轉(zhuǎn)換控制程序存放在給予相同地址的存儲(chǔ)器區(qū)域內(nèi)。
該存儲(chǔ)單元轉(zhuǎn)換控制程序的各步,進(jìn)行存儲(chǔ)器存儲(chǔ)單元間的地址組合。
涉及本發(fā)明的子程序執(zhí)行方法,當(dāng)執(zhí)行第一存儲(chǔ)器存儲(chǔ)單元的處理程序中發(fā)生需要進(jìn)行第二個(gè)存儲(chǔ)器存儲(chǔ)單元的子程序的情況時(shí),包括如下步驟根據(jù)第一存儲(chǔ)器存儲(chǔ)單元的存儲(chǔ)單元轉(zhuǎn)換控制程序進(jìn)行存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換,并讀出第二存儲(chǔ)器存儲(chǔ)單元的存儲(chǔ)單元轉(zhuǎn)換控制程序;根據(jù)所調(diào)用的第二存儲(chǔ)器存儲(chǔ)單元的存儲(chǔ)單元轉(zhuǎn)換控制程序調(diào)用所需的子程序;在該子程序執(zhí)行完畢后返回到第二存儲(chǔ)器存儲(chǔ)單元的存儲(chǔ)單元轉(zhuǎn)換控制程序;根據(jù)此返回的第二存儲(chǔ)器存儲(chǔ)單元的存儲(chǔ)單元的轉(zhuǎn)換控制程序;將存儲(chǔ)器存儲(chǔ)單元由第二存儲(chǔ)器存儲(chǔ)單元向第一存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換,并讀出第一存儲(chǔ)器存儲(chǔ)單元的存儲(chǔ)單元轉(zhuǎn)換控制程序;根據(jù)此讀出的第一存儲(chǔ)器存儲(chǔ)單元的存儲(chǔ)單元轉(zhuǎn)換控制程序返回到原先的處理程序。
在上述結(jié)構(gòu)中,用于存儲(chǔ)單元轉(zhuǎn)換的控制程序僅僅存放在各存儲(chǔ)器存儲(chǔ)單元相同地址空間內(nèi),而根據(jù)此存儲(chǔ)單元轉(zhuǎn)換控制程序進(jìn)行存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換,調(diào)用子程序并返回到原先的處理程序。因而不必考慮主程序和子程序的地址組合問題,可以把子程序分配至存儲(chǔ)器存儲(chǔ)單元的任何地址位置,能有效地利用存儲(chǔ)器區(qū)域并縮短程序開發(fā)時(shí)間。
特別是在多個(gè)子程序共用一種存儲(chǔ)單元轉(zhuǎn)換控制程序的情況下,能更有效地利用存儲(chǔ)器區(qū)域。
而且在各個(gè)子程序中設(shè)置存儲(chǔ)單元轉(zhuǎn)換控制程序的結(jié)構(gòu)情況下,也能減少處理步驟,就是說交迭地進(jìn)行存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換。
通過下面對(duì)照附圖進(jìn)行的詳細(xì)說明,將可對(duì)本發(fā)明的上述目的及其他目的、特征、細(xì)節(jié)和效果有進(jìn)一步了解。
對(duì)附圖的簡要說明圖1為現(xiàn)有的存儲(chǔ)單元轉(zhuǎn)換方式的結(jié)構(gòu)示意圖;
圖2為作為本發(fā)明一實(shí)施例的存儲(chǔ)單元轉(zhuǎn)換方式的系統(tǒng)結(jié)構(gòu)示意圖;
圖3為應(yīng)用圖2所示系統(tǒng)子例行程序執(zhí)行方法中的存儲(chǔ)器存儲(chǔ)單元所存儲(chǔ)內(nèi)容的示意圖;
圖4為本發(fā)明另一實(shí)施例中的存儲(chǔ)單元轉(zhuǎn)換方式大致結(jié)構(gòu)示意圖;
圖5為應(yīng)用圖4所示系統(tǒng)的子程序執(zhí)行方式中存儲(chǔ)器存儲(chǔ)單元的存儲(chǔ)內(nèi)容示例圖;
圖6為本發(fā)明又一實(shí)施例中存儲(chǔ)單元轉(zhuǎn)換方式的系統(tǒng)結(jié)構(gòu)示意圖;
圖7為應(yīng)用圖6所示系統(tǒng)的中斷處理方式中各存儲(chǔ)器存儲(chǔ)單元的存儲(chǔ)內(nèi)容示例圖;
圖8為應(yīng)用圖6所示系統(tǒng)的另一種中斷處理方式中各存儲(chǔ)器存儲(chǔ)單元的存儲(chǔ)內(nèi)容示例圖;
圖9為本發(fā)明又一實(shí)施例的存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換方式的系統(tǒng)結(jié)構(gòu)示意圖;
圖10為應(yīng)用圖9所示系統(tǒng)的中斷控制方式中各存儲(chǔ)器存儲(chǔ)單元的存儲(chǔ)內(nèi)容示例圖;
圖11為應(yīng)用圖9所示系統(tǒng)的另一中斷控制方式中各存儲(chǔ)器存儲(chǔ)單元的存儲(chǔ)內(nèi)容示例圖。
下面在作為本發(fā)明實(shí)施例的存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換方式的數(shù)據(jù)處理系統(tǒng)中,就子程序執(zhí)行方式,順次對(duì)子程序、中斷處理程序,參照附圖進(jìn)行說明。
圖2中示出作為本發(fā)明第一實(shí)施例的存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換方式的數(shù)據(jù)處理系統(tǒng)的主要部件的大致組成。如圖2所示,數(shù)據(jù)處理系統(tǒng)由按照所給定的程序進(jìn)行數(shù)據(jù)處理、控制操作等的CPU1,分別存儲(chǔ)給定的處理程序的存儲(chǔ)器存儲(chǔ)單元A4、B5,存放各種數(shù)據(jù)以及由外設(shè)(圖中未示出)裝載的用戶程序等的主存儲(chǔ)器7所組成。
CPU1可以采用市售的,例如Intel公司的產(chǎn)品16位的8086。存儲(chǔ)器存儲(chǔ)單元A4由ROM(只讀存儲(chǔ)器)構(gòu)成,用來固定地存放予先確定的系統(tǒng)固有的第一處理程序。存儲(chǔ)器存儲(chǔ)單元B5也同樣由ROM構(gòu)成,固定地存放系統(tǒng)固有的第二處理程序。主存儲(chǔ)器7,為使其內(nèi)容能夠改寫,由RAM(隨機(jī)存儲(chǔ)存儲(chǔ)器)組成。這里為暫時(shí)存放由存儲(chǔ)器存儲(chǔ)單元A4、B3以及主存儲(chǔ)器7所讀出的內(nèi)容,設(shè)置有寄存器區(qū)域。這一寄存器區(qū)域雖然在后面的操作敘述中被看作是寄存器BX,但如圖所示,它可以是設(shè)在CPU1內(nèi)部的,或者是利用主存儲(chǔ)器7中某一定區(qū)間。
為進(jìn)行存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換,設(shè)有存放為存儲(chǔ)單元專用的存儲(chǔ)單元指定數(shù)據(jù)的存儲(chǔ)單元寄存器8以及根據(jù)存儲(chǔ)單元寄存器8的內(nèi)容來選擇存儲(chǔ)器存儲(chǔ)單元A4或B5的處于啟動(dòng)狀態(tài)的譯碼器9。
譯碼器9通常由“或非門”、“與非門”等組成。在上述的系統(tǒng)結(jié)構(gòu)中,存儲(chǔ)器存儲(chǔ)單元A、B是分別由ROM4、5所構(gòu)成,但最好將存儲(chǔ)器存儲(chǔ)單元A、B設(shè)置在一個(gè)ROM芯片上。
下面參照?qǐng)D3對(duì)存儲(chǔ)器存儲(chǔ)單元A、B的存儲(chǔ)內(nèi)容加以說明。
存儲(chǔ)器存儲(chǔ)單元A4和B5同時(shí)都包含存放存儲(chǔ)單元轉(zhuǎn)換控制程序(以下稱為存儲(chǔ)單元轉(zhuǎn)換管理程序)的區(qū)域90和存放一定處理程序的區(qū)域100。在區(qū)域90中分配有存儲(chǔ)器存儲(chǔ)單元A4和B5的相同地址區(qū)(圖3中由地址0至地址5)。存儲(chǔ)器存儲(chǔ)單元A4和B5的處理程序存儲(chǔ)區(qū)100存放相互間不同的處理程序。為傳送數(shù)據(jù)和地址,設(shè)有數(shù)據(jù)母線3和地址母線2。
下面對(duì)照?qǐng)D2和圖3來說明由存儲(chǔ)器存儲(chǔ)單元A4的主程序調(diào)用存儲(chǔ)器存儲(chǔ)單元B5的子程序的操作執(zhí)行情況。圖3中以箭頭表示操作流向。
在存儲(chǔ)器存儲(chǔ)單元B5的存儲(chǔ)器區(qū)10內(nèi),多個(gè)子程序SUB1、SUB2……被存放在與存放有存儲(chǔ)器存儲(chǔ)單元A4的主程序的子程序調(diào)用指令CALL的地址無關(guān)的地址位置上。
在存儲(chǔ)器存儲(chǔ)單元A4的主程序中,地址X的位置處存放有用來將子程序SUB1的首地址Y的內(nèi)容傳送到寄存器BX(圖2中被設(shè)置在CPU1或RAM7中,如虛線所示)的指令MOV BX Y。下一地址X+1的位置上存放調(diào)用由地址0開始的存儲(chǔ)單元轉(zhuǎn)換管理程序的指令CALL 0。
在存儲(chǔ)器存儲(chǔ)單元A4的存儲(chǔ)單元轉(zhuǎn)換管理程序中,地址0存放由存儲(chǔ)單元A到存儲(chǔ)單元B的存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換指令,地址1存放向本地址轉(zhuǎn)移的指令JMP $,地址2~4存放指令NOP,地址5存放在子程序結(jié)束時(shí)向主程序返回的指令RET。
在存儲(chǔ)器存儲(chǔ)單元B5的存儲(chǔ)單元轉(zhuǎn)換管理程序中,地址0、1、5存放指令NOP,地址2存放調(diào)用寄存器BX的內(nèi)容的指令CALLBX,地址3存放由存儲(chǔ)單元B到存儲(chǔ)單元A的存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換指令,地址4存放指令JMP $。借助地址2的指令CALLBX,對(duì)由設(shè)置在寄存器BX中的地址開始的子程序進(jìn)行調(diào)用。
現(xiàn)在來討論在存儲(chǔ)器存儲(chǔ)單元A4的主程序執(zhí)行當(dāng)中,程序到達(dá)地址X那一步的情況。因地址X的指令MOV的作用,表明地址Y的數(shù)據(jù)設(shè)置在寄存器BX中。接著由地址X+1的指令CALL將存儲(chǔ)器存儲(chǔ)單元A4的地址O的內(nèi)容調(diào)出,存儲(chǔ)單元執(zhí)行由存儲(chǔ)單元A向存儲(chǔ)單元B轉(zhuǎn)換的存貯單元轉(zhuǎn)換指令,接著執(zhí)行存儲(chǔ)器存儲(chǔ)單元A4的地址1的指令JMP。存儲(chǔ)單元轉(zhuǎn)換的進(jìn)行是,CPU1根據(jù)存儲(chǔ)單元轉(zhuǎn)換指令,將識(shí)別存儲(chǔ)器存儲(chǔ)單元B5的存儲(chǔ)單元識(shí)別數(shù)據(jù)寫入存儲(chǔ)單元寄存器7中,譯碼器8對(duì)此存儲(chǔ)單元寄存器7中的識(shí)別數(shù)據(jù)進(jìn)行譯碼,從而使存儲(chǔ)器存儲(chǔ)單元A4關(guān)閉,并打開存儲(chǔ)器存儲(chǔ)單元B5。這時(shí),因?yàn)槭怯枞≈阜绞?,所以在?zhí)行存儲(chǔ)器存儲(chǔ)單元A4的地址1的指令JMP $時(shí),此存儲(chǔ)單元轉(zhuǎn)換實(shí)質(zhì)上已經(jīng)完成。從而在指令JMP之后即執(zhí)行存儲(chǔ)器存儲(chǔ)單元B4的地址2的指令CALLBX。由這一指令CALL將已經(jīng)存放在寄存器BX中的地址Y讀出,而執(zhí)行由此地址Y開始的子程序SUB1。子程序SUB1結(jié)束,程序執(zhí)行步驟到達(dá)地址Y'時(shí),因指令RET的作用而執(zhí)行存儲(chǔ)器存儲(chǔ)單元B5的指令CALL的下一地址(地址3)的存儲(chǔ)單元轉(zhuǎn)換指令,存儲(chǔ)器存儲(chǔ)單元在CPU1的控制下進(jìn)行由存儲(chǔ)器存儲(chǔ)單元B5向存儲(chǔ)器存儲(chǔ)單元A4轉(zhuǎn)換。這一轉(zhuǎn)換也是在存儲(chǔ)器存儲(chǔ)單元B5的地址4的指令JMP $的執(zhí)行中進(jìn)行的,接著就執(zhí)行存儲(chǔ)器存儲(chǔ)單元A4的地址5的指令RET。借助指令RET將存儲(chǔ)器存儲(chǔ)單元A4的指令CALL后的下一地址(地址X+2)的內(nèi)容讀出。這就完成了向存儲(chǔ)器存儲(chǔ)單元A4的主程序返回的操作,再順序執(zhí)行該主程序的程序指令。
當(dāng)存儲(chǔ)器存儲(chǔ)單元A4的主程序調(diào)用存儲(chǔ)器存儲(chǔ)單元B5的子程序SUB2時(shí),要利用指令MOV將子程序SUB2的首地址送到寄存器BX中。
由存儲(chǔ)器存儲(chǔ)單元B5的主程序調(diào)用存儲(chǔ)器存儲(chǔ)單元A4的子程序,這種在存儲(chǔ)器存儲(chǔ)單元A4和存儲(chǔ)器存儲(chǔ)單元B5之間相互作子程序調(diào)用的結(jié)構(gòu),用于存儲(chǔ)器存儲(chǔ)單元管理程序的區(qū)域,將比圖3中的增大一倍。在存儲(chǔ)器存儲(chǔ)單元B5這一增加區(qū)域中,存放和存儲(chǔ)器存儲(chǔ)單元A4的存儲(chǔ)單元轉(zhuǎn)換管理程序(地址0~地址5)同樣的管理程序;而在存儲(chǔ)器存儲(chǔ)單元A4的這一增加區(qū)域中,存放和存儲(chǔ)器存儲(chǔ)單元B5的如圖3所示的存儲(chǔ)單元轉(zhuǎn)換管理程序同樣的轉(zhuǎn)換管理程序。這時(shí)在存儲(chǔ)器存儲(chǔ)單元B5的主程序中,要像在存儲(chǔ)器存儲(chǔ)單元A4的主程序中一樣,存放用作調(diào)用子程序的指令MOV和調(diào)用在所增加區(qū)域內(nèi)的存儲(chǔ)單元轉(zhuǎn)換管理程序的指令CALL。
下面來說明設(shè)置有三個(gè)以上存儲(chǔ)器存儲(chǔ)單元,而它們相互間執(zhí)行子程序調(diào)用的系統(tǒng)結(jié)構(gòu)。
作為一個(gè)例子,圖4中示出了由三個(gè)存儲(chǔ)器存儲(chǔ)單元組成的存儲(chǔ)單元轉(zhuǎn)換方式的系統(tǒng)主要結(jié)構(gòu)。在圖4中將圖2所示結(jié)構(gòu)增加了構(gòu)成第三存儲(chǔ)器存儲(chǔ)單元的存儲(chǔ)器存儲(chǔ)單元C6。存儲(chǔ)器存儲(chǔ)單元C6由ROM組成。存儲(chǔ)器存儲(chǔ)單元A4、B5、C6存放各不相同的處理程序。設(shè)置有存放予返回存儲(chǔ)單元的標(biāo)識(shí)數(shù)據(jù)的寄存器AH,存放予轉(zhuǎn)換存儲(chǔ)器存儲(chǔ)單元的數(shù)據(jù)的寄存器AL以及存放子程序首地址的寄存器BX。這些寄存器AH、AL、BX,如圖所示,設(shè)置在CPU1內(nèi),或者設(shè)置在隨機(jī)存儲(chǔ)存儲(chǔ)器(RAM)7的一定區(qū)域內(nèi)。CPU1中通常設(shè)有為暫時(shí)存放要處理的數(shù)據(jù)的寄存器A、B、C、D等,可以將A~D這些寄存器用來作為寄存器AH、AL、BX。
圖5示出了存儲(chǔ)器存儲(chǔ)單元的存放內(nèi)容的示例。存儲(chǔ)器存儲(chǔ)單元A4、B5和C6同時(shí)都包括有存儲(chǔ)單元轉(zhuǎn)換管理程序存儲(chǔ)區(qū)90和存放給定程序的處理程序區(qū)100。存儲(chǔ)單元轉(zhuǎn)換管理程序區(qū)90被分配在存儲(chǔ)器存儲(chǔ)單元A4、B5和C6的有相同指定區(qū)間即地址0~地址(S-1)的區(qū)域。存儲(chǔ)器存儲(chǔ)單元A4、B5和C6各自的上述區(qū)域地址以下的區(qū)域被分配做處理程序區(qū)。存儲(chǔ)器存儲(chǔ)單元A4、B5和C6存儲(chǔ)各不相同的處理程序。
存儲(chǔ)單元轉(zhuǎn)換管理程序大致上包括第1至第4個(gè)程序,分別存放地址O~(P-1),P~(Q-1)、Q~(R-1)和R~(S-1)。
存放地址O~(P-1)的第1程序包括把各存儲(chǔ)器存儲(chǔ)單元A4、B5和C6等自身的存儲(chǔ)識(shí)別數(shù)據(jù)作為返回存儲(chǔ)單元識(shí)別數(shù)據(jù),例如寄存器AH中存儲(chǔ)在給定寄存器的指令以及對(duì)駐存于給定寄存器AL中的存儲(chǔ)單元轉(zhuǎn)換識(shí)別數(shù)據(jù)進(jìn)行譯碼,并作向第2程序(后述)的相應(yīng)地址執(zhí)行轉(zhuǎn)移的指令。
存儲(chǔ)器存儲(chǔ)單元A4、B5和C6各自在地址P(Q-1)中所存儲(chǔ)的第2程序是把存儲(chǔ)單元實(shí)際向轉(zhuǎn)移存儲(chǔ)單元進(jìn)行轉(zhuǎn)移的程序。在第2程序中包括由指令NOP和JMP Q組成的指令組,以及為由本身存儲(chǔ)單元向其他兩個(gè)存儲(chǔ)器存儲(chǔ)單元中任一個(gè)轉(zhuǎn)移的二個(gè)存儲(chǔ)單元轉(zhuǎn)換指令。在第2程序中,存儲(chǔ)器存儲(chǔ)單元A、B、C各自均在同一地址上分別存儲(chǔ)向存儲(chǔ)單元A轉(zhuǎn)移的指令,向存儲(chǔ)單元B轉(zhuǎn)移的指令和向存儲(chǔ)單元C轉(zhuǎn)移的指令,而在作為這些存儲(chǔ)單元轉(zhuǎn)移指令的轉(zhuǎn)移對(duì)象的存儲(chǔ)單元中,則在此同一地址上存放指令NOP。
地址Q~(R-1)的第三程序,各存儲(chǔ)器存儲(chǔ)單元均同樣包括調(diào)用由駐存于寄存器BX中的轉(zhuǎn)移地址開始的子程序指令,和對(duì)駐存在寄存器AH中的返回存儲(chǔ)單元標(biāo)識(shí)數(shù)據(jù)加以譯碼,作為向第4程序(下面說明)的對(duì)應(yīng)地址轉(zhuǎn)移的指令。
地址R~(S-1)的第4程序是實(shí)際進(jìn)行使存儲(chǔ)單元向返回存儲(chǔ)單元轉(zhuǎn)移用的返回程序。第4程序具有與第2程序大致相同的結(jié)構(gòu),僅僅在以指令RET代替指令JMP這一點(diǎn)上與后者不同。
下面在存儲(chǔ)器存儲(chǔ)單元C6中的地址Y和地址W為起點(diǎn)的區(qū)域分別存放子程序SUB1和SUB2的情況下,對(duì)由存儲(chǔ)器存儲(chǔ)單元A4的主程序調(diào)用存儲(chǔ)器存儲(chǔ)單元C6的子程序SUB1的操作加以說明。而且在下面的說明中,為簡單起見,將此系統(tǒng)看作是非予取指方式的,只有在每次指令執(zhí)行結(jié)束后才進(jìn)行取指操作。
在存儲(chǔ)器存儲(chǔ)單元A4的地址X處存放有將指明存放著子程序SUB1的存儲(chǔ)器存儲(chǔ)單元的轉(zhuǎn)移存儲(chǔ)單元的標(biāo)識(shí)數(shù)據(jù)(特指定為存儲(chǔ)單元C6)駐存到給定寄存器AL中的指令MOV。地址X+1存放為將子程序SUB1的首地址作為轉(zhuǎn)移地址駐存到寄存器BX的指令MOV。地址X+2上存放調(diào)用由地址O開始的程序轉(zhuǎn)換管理程序(第一程序)的指令CALL。這里必須注意的是,主程序調(diào)用子程序所用的地址X與子程序SUB1的首地址之間是沒有任何關(guān)系的。下面對(duì)操作進(jìn)行說明。圖5中用箭頭來表示操作執(zhí)行流向。存儲(chǔ)器存儲(chǔ)單元A4的主程序處理進(jìn)行到地址X時(shí),因地址X的指令MOV的作用,將轉(zhuǎn)移存儲(chǔ)單元(存儲(chǔ)器存儲(chǔ)單元C6)標(biāo)識(shí)數(shù)據(jù)存入寄存器AL中。在地址X+1處,子程序SUB1的首地址Y被駐存到寄存器BX中。接著在地址X+2處將存儲(chǔ)器存儲(chǔ)單元A4的地址O的內(nèi)容調(diào)出,開始執(zhí)行存儲(chǔ)器存儲(chǔ)單元A4的存儲(chǔ)單元轉(zhuǎn)換管理程序。在這一存儲(chǔ)單元轉(zhuǎn)換管理程序中,存儲(chǔ)器存儲(chǔ)單元自身的編號(hào)A被作為返回存儲(chǔ)單元標(biāo)識(shí)數(shù)據(jù)駐存入寄存器AH中。接著對(duì)已駐存在寄存器AL中的轉(zhuǎn)移存儲(chǔ)單元編號(hào)(這里是存儲(chǔ)單元C)進(jìn)行譯碼,按照這一經(jīng)過譯碼的轉(zhuǎn)移存儲(chǔ)單元標(biāo)識(shí)數(shù)據(jù),向存儲(chǔ)器存儲(chǔ)單元A4的第2程序內(nèi)的對(duì)應(yīng)地址轉(zhuǎn)移。由于轉(zhuǎn)移存儲(chǔ)單元是存儲(chǔ)單元C6,故向該第2程序中應(yīng)用于存儲(chǔ)單元C的地址轉(zhuǎn)移,以此來執(zhí)行向存儲(chǔ)器存儲(chǔ)單元C6的存儲(chǔ)單元轉(zhuǎn)換。在存儲(chǔ)器存儲(chǔ)單元C中,指令NOP之后存放著指令JMP Q。一方面在進(jìn)行存貯單元轉(zhuǎn)換時(shí),給出執(zhí)行所需地址的地址指示字(圖中未繪出)不會(huì)有任何改變。因而在存儲(chǔ)單元轉(zhuǎn)換完成后,后面就執(zhí)行存儲(chǔ)器存儲(chǔ)單元C6的指令JMP Q。這樣,按照地址Q的指令CALL BX,而將駐存于寄存器BX中的子程序SUB1的首地址Y的內(nèi)容讀出,執(zhí)行子程序SUB1。
子程序SUB1執(zhí)行后,由地址Y'的指令RET的作用,進(jìn)行存儲(chǔ)器存儲(chǔ)單元C6第3程序的返回存儲(chǔ)單元判斷操作。在這一返回存儲(chǔ)單元的判斷操作中,首先對(duì)駐存于寄存器AH中的返回存儲(chǔ)單元的標(biāo)識(shí)數(shù)據(jù)進(jìn)行譯碼,根據(jù)此譯碼結(jié)果執(zhí)行向存儲(chǔ)器存儲(chǔ)單元C6第4程序的對(duì)應(yīng)地址轉(zhuǎn)移的操作。這時(shí)由于返回存儲(chǔ)單元是存儲(chǔ)器存儲(chǔ)單元A4,因而執(zhí)行轉(zhuǎn)移到存儲(chǔ)器存儲(chǔ)單元C6第四程序中的向存儲(chǔ)單元A轉(zhuǎn)換的指令的操作,進(jìn)行由存儲(chǔ)單元C6到存儲(chǔ)單元A4的轉(zhuǎn)換。
存儲(chǔ)單元轉(zhuǎn)換后,由存儲(chǔ)器存儲(chǔ)單元A4第四程序的指令RET,進(jìn)行返回到存儲(chǔ)器存儲(chǔ)單元A4的主程序的操作。
這里,存儲(chǔ)單元的轉(zhuǎn)換過程是這樣的,即根據(jù)存儲(chǔ)單元轉(zhuǎn)換指令,在CPU1的控制下使存儲(chǔ)單元寄存器8的內(nèi)容改變,再按照此改變后的存儲(chǔ)單元寄存器8的內(nèi)容,譯碼器9就啟動(dòng)相應(yīng)的存儲(chǔ)器存儲(chǔ)單元。
在調(diào)用子程序SUB2的情況下,按照存儲(chǔ)器存儲(chǔ)單元A4的地址X的指令MOV,寄存器BX中僅存有子程序SUB2的首地址W。
雖然在上述實(shí)施例中,說明的是由存儲(chǔ)器存儲(chǔ)單元A4調(diào)用存儲(chǔ)器存儲(chǔ)單元C6的子程序的情況,而由任一存儲(chǔ)器存儲(chǔ)單元的主程序來調(diào)用其他存儲(chǔ)器存儲(chǔ)單元的子程序當(dāng)然也是可能的。
采用上述結(jié)構(gòu),在具有多個(gè)存儲(chǔ)器存儲(chǔ)單元的存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換方式的系統(tǒng)中,可以由任一存儲(chǔ)器存儲(chǔ)單元的主程序來調(diào)用任一存儲(chǔ)器存儲(chǔ)單元的子程序。而且因?yàn)闊o須在主程序和子程序間進(jìn)行復(fù)雜的地址組合,從而有可能將子程序分配到任何地址上,這就能使程序開發(fā)工作大為改善。
此外,由于可以只在特定的地址區(qū)域內(nèi)存放程序來執(zhí)行存儲(chǔ)單元轉(zhuǎn)換,為進(jìn)行存儲(chǔ)單元轉(zhuǎn)換所需的程序區(qū)域就可以減小。
下面對(duì)將上述那種在存儲(chǔ)器存儲(chǔ)單元的特定地址區(qū)域內(nèi)存放存儲(chǔ)單元轉(zhuǎn)換用程序的結(jié)構(gòu),按照用于中斷處理程序時(shí)的結(jié)構(gòu)加以說明。
圖6示出了設(shè)置有兩個(gè)存儲(chǔ)器存儲(chǔ)單元的存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換方式的系統(tǒng)中與中斷處理相關(guān)的結(jié)構(gòu)主要部分。
圖6是在圖2所示結(jié)構(gòu)中增加了中斷控制器20。中斷控制器20監(jiān)視各種中斷信號(hào),中斷發(fā)生時(shí),即產(chǎn)生中斷發(fā)生指示信號(hào)INT,在將此信號(hào)送到CPU1的同時(shí),還將與所發(fā)生中斷種類相應(yīng)的向量地址送到地址母線2。
在主存儲(chǔ)器7的一定區(qū)域內(nèi),存放有對(duì)應(yīng)各向量地址所必須執(zhí)行的記錄中斷處理程序首地址的中斷向量表。中斷發(fā)生時(shí)CPU1中止執(zhí)行運(yùn)行中的處理程序,由所述表中讀出與向量地址相應(yīng)的起始地址,執(zhí)行從該表讀出的地址開始的程序。
圖7表示存儲(chǔ)器存儲(chǔ)單元A和B中存放的程序示例。但圖7中僅僅示出了與多個(gè)中斷中的一個(gè)中斷有關(guān)的程序,并假定在該中斷發(fā)生時(shí),根據(jù)主存儲(chǔ)器7上的中斷向量表,所指定的地址為地址X。
存儲(chǔ)器存儲(chǔ)單元A4和B5包括有存放存儲(chǔ)單元轉(zhuǎn)換用控制程序(存儲(chǔ)單元轉(zhuǎn)換管理程序)的區(qū)域90,和存放給定處理程序的區(qū)域100。在存儲(chǔ)單元轉(zhuǎn)換管理程序用的區(qū)域中,存儲(chǔ)器存儲(chǔ)單元A4和B5同時(shí)被分配以相同的地址區(qū)域(圖7中為地址0~5的區(qū)域)。
存儲(chǔ)器存儲(chǔ)單元A4的處理程序區(qū)100包括存放與特定中斷相關(guān)的中斷處理程序12的區(qū)域(地址區(qū)X~W)和存放給定處理程序的區(qū)域。更具體地說,存儲(chǔ)器存儲(chǔ)單元A4的地址區(qū)域Y~W,存放表示中斷處理的實(shí)際內(nèi)容的中斷處理子程序,地址X和X+1分別存放調(diào)用該中斷處理子程序的指令CALL和表明由子程序向主程序返回的指令RET。地址Y為中斷處理子程序的起始地址,而在地址W存放表明子程序結(jié)束和返回到主程序的指令RET。
在存儲(chǔ)器存儲(chǔ)單元B5中地址X~Z存放中斷控制程序13。此中斷控制程序13包含有將寄存器BX的內(nèi)容存入堆棧(設(shè)置在CPU1內(nèi)部)的指令PUSH,將中斷處理程序的首地址送到寄存器BX的指令MOV,調(diào)用以地址O起始的存儲(chǔ)單元轉(zhuǎn)換管理程序的指令CALL,將堆棧中存儲(chǔ)的內(nèi)容向寄存器BX裝載的指令POP,和由中斷處理子程序返回到主程序的指令I(lǐng)RET。
在存儲(chǔ)器存儲(chǔ)單元B5的存儲(chǔ)單元轉(zhuǎn)換管理程序中,地址O存放由存儲(chǔ)單元B到存儲(chǔ)單元A的存儲(chǔ)單元轉(zhuǎn)換指令,地址1存放指令JAP $,地址2~4存放指令NOP,地址5存放指令RET。
在存儲(chǔ)器存儲(chǔ)單元A4的存儲(chǔ)單元轉(zhuǎn)換管理程序中,地址0、1、和5存放指令NOP,地址2存放調(diào)用以駐存在寄存器BX中的地址為首地址的程序的指令CALL,地址4存放指令JMP $。下面說明其操作過程。圖4中以箭頭表示操作流向。
假定在執(zhí)行存儲(chǔ)器存儲(chǔ)單元B5的主程序中發(fā)生了中斷(圖7中★號(hào)標(biāo)示處)。中斷控制器20給CPU1發(fā)出中斷發(fā)生指示信號(hào)INT,并同時(shí)將向量地址送到地址母線2。根據(jù)這一向量地址,由主存儲(chǔ)器7的中斷向量表中讀出所存儲(chǔ)的地址X,將寄存器BX的內(nèi)容置入堆棧,CPU1即執(zhí)行由地址X起始的中斷控制程序。這就是說,接著要將中斷子程序由首地址Y送入寄存器BX。然后訪問存儲(chǔ)器存儲(chǔ)單元B5的地址O,執(zhí)行地址O中的指令,而后再執(zhí)行指令JMP $。由此來進(jìn)行由存儲(chǔ)單元B5向存儲(chǔ)單元A4的存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換,并執(zhí)行存儲(chǔ)器存儲(chǔ)單元A4地址2中的指令CALL。由指令CALL來進(jìn)行對(duì)存放在寄存器BX中的地址Y進(jìn)行訪問,而執(zhí)行由地址Y起始的中斷處理子程序。此中斷處理子程序執(zhí)行完后,由地址W的指令RET的作用,返回到存儲(chǔ)器存儲(chǔ)單元A4的存儲(chǔ)單元轉(zhuǎn)換管理程序指令CALL的下一個(gè)地址。先返回的地址3的內(nèi)容為存儲(chǔ)單元轉(zhuǎn)換指令,與地址4的指令JMP $共同進(jìn)行由存儲(chǔ)單元A4到存儲(chǔ)單元B5的存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換,接著執(zhí)行地址5的指令RET。借助此指令RET的作用,進(jìn)而執(zhí)行存放在存儲(chǔ)器存儲(chǔ)單元B5的程序13的指令CALL地址的后一地址中的指令POP。由此將堆棧中設(shè)置的內(nèi)容裝載到寄存器BX。在此裝載之后,執(zhí)行指令I(lǐng)RET,恢復(fù)執(zhí)行存儲(chǔ)器存儲(chǔ)單元B4的被中斷了的主程序。
同樣,即使對(duì)其他不同的中斷,如果也在該中斷所指定的特定地址(即與向量地址相對(duì)應(yīng)的表內(nèi)地址)中存入將所需執(zhí)行的中斷處理程序的首地址傳送到寄存器BX的指令MOV,也就可能應(yīng)用區(qū)域90內(nèi)的存儲(chǔ)單元轉(zhuǎn)換管理程序進(jìn)行這一中斷處理。
在當(dāng)存儲(chǔ)器存儲(chǔ)單元A4的主程序執(zhí)行中發(fā)生中斷時(shí),由存儲(chǔ)器存儲(chǔ)單元A4中地址X的指令CALL的作用,執(zhí)行從地址Y起始的中斷處理子程序,在此子程序執(zhí)行完畢后,即由地址W的指令RET將處理返回到原先的主程序繼續(xù)進(jìn)行。
而且,在中斷控制程序13中,亦可采取用指令JMP代替指令CALL來執(zhí)行向地址O轉(zhuǎn)移的設(shè)計(jì)。在這種情況下,由存儲(chǔ)器存儲(chǔ)單元B5的存儲(chǔ)單元轉(zhuǎn)換管理程序來進(jìn)行存儲(chǔ)單元轉(zhuǎn)換,在中斷處理子程序執(zhí)行之后,執(zhí)行存儲(chǔ)器存儲(chǔ)單元A4的存儲(chǔ)單元轉(zhuǎn)換管理程序中的指令POP和指令I(lǐng)RET,可以不通過中斷控制子程序13,而使其返回到存儲(chǔ)器存儲(chǔ)單元B5中被中斷的處理程序。也就是說,在存儲(chǔ)單元A4的區(qū)域90內(nèi)的地址3~5存放指令POP BX,存儲(chǔ)單元轉(zhuǎn)換指令和指令I(lǐng)RET。
下面參照?qǐng)D8對(duì)另一中斷處理方法加以說明。圖8所示方法和圖7所示方法有兩點(diǎn)很不相同。第一點(diǎn)在圖8的方法中,將所需執(zhí)行的中斷處理主程序的起始地址傳送到給定寄存器的中斷控制程序(圖7中的13)是被存放在內(nèi)部的。亦即在圖8的方法中借助地址X的指令JMP立即執(zhí)行存儲(chǔ)器存儲(chǔ)單元B5的存儲(chǔ)單元轉(zhuǎn)換管理程序。
第二點(diǎn)在圖8的方法中,存儲(chǔ)器存儲(chǔ)單元A4的存儲(chǔ)單元轉(zhuǎn)換管理程序內(nèi)部進(jìn)行中斷處理子程序調(diào)用時(shí),可以直接指定這一地址。也就是說,不用給定的寄存器BX,以指令CALL Y來代替指令CALL BX,這是圖8方法與圖7所示又不同之處。其它結(jié)構(gòu)圖8和圖7兩者基本上一樣。
按照?qǐng)D8所示這一方法,存儲(chǔ)器存儲(chǔ)單元B5的主程序進(jìn)行處理中發(fā)生中斷時(shí),也和圖7所示方法同樣,經(jīng)過存儲(chǔ)單元轉(zhuǎn)換后,執(zhí)行存儲(chǔ)器存儲(chǔ)單元A4的中斷處理子程序,并在中斷處理子程序執(zhí)行后,即恢復(fù)執(zhí)行被中斷的存儲(chǔ)器存儲(chǔ)單元B5的主程序。
在圖8這一方法中,因?yàn)楸仨氃诖鎯?chǔ)單元轉(zhuǎn)換管理程序內(nèi)指定中斷處理子程序的首地址,對(duì)于其他各種中斷來說就不能共同存放在區(qū)域90內(nèi)的存儲(chǔ)單元轉(zhuǎn)換管理程序,而必須為每一個(gè)中斷設(shè)置存儲(chǔ)單元轉(zhuǎn)換管理程序。不過與圖7所示方法相比,在處理步數(shù)上,圖8所示方法大大減少了。這樣就可以縮短中斷控制所需的時(shí)間,這對(duì)于頻繁發(fā)生中斷的情況具有良好的效果。
再者,根據(jù)中斷的種類,將圖7所示方法和圖8所示的兩者結(jié)合起來應(yīng)用,當(dāng)然也可以。
而且圖8所示的結(jié)構(gòu)中,雖然是采用由存儲(chǔ)器存儲(chǔ)單元B5的存儲(chǔ)單元轉(zhuǎn)換管理程序內(nèi)的指令I(lǐng)RET來執(zhí)行返回到被中斷的處理程序,但也可代之以如圖8( )中所示那樣,在存儲(chǔ)器存儲(chǔ)單元B4中地址X處,存放指令CALL O來代替指令JMP O,在地址X+1存放指令I(lǐng)RET,并且在存儲(chǔ)單元轉(zhuǎn)換管理程序中用指令RET來代替IRET,以執(zhí)行向被中斷程序的返回。
下面以具有三個(gè)存儲(chǔ)器存儲(chǔ)單元的情況作為例子來設(shè)置三個(gè)以上存儲(chǔ)器存儲(chǔ)單元的存儲(chǔ)器存儲(chǔ)單元轉(zhuǎn)換方式的系統(tǒng)的中斷處理方法進(jìn)行說明。
圖9表示系統(tǒng)的大致結(jié)構(gòu)。在圖6的結(jié)構(gòu)中增加了一個(gè)由ROM組成的存儲(chǔ)器存儲(chǔ)單元C6。存儲(chǔ)單元寄存器8存放指定存儲(chǔ)器存儲(chǔ)單元A4、B5和C6中之一的存儲(chǔ)單元識(shí)別數(shù)據(jù)。譯碼器9對(duì)存儲(chǔ)單元寄存器8中存儲(chǔ)單元標(biāo)識(shí)數(shù)據(jù)進(jìn)行譯碼,啟動(dòng)唯一相對(duì)應(yīng)的存儲(chǔ)器存儲(chǔ)單元。其他構(gòu)成本質(zhì)上均與圖6所示相同。
圖10為存儲(chǔ)器存儲(chǔ)單元A4、B5和C6的存儲(chǔ)內(nèi)容示例。圖10中也是進(jìn)行多個(gè)中斷處理中一個(gè)特定中斷處理的結(jié)構(gòu)情況。此特定中斷處理用的子程序的首地址X,由在主存儲(chǔ)器7給定區(qū)域中的被擴(kuò)大了的中斷向量表來指明。因?yàn)橹鞔鎯?chǔ)器7是由RAM組成的,所以該中斷向量表在系統(tǒng)啟動(dòng)時(shí),由引導(dǎo)程序存入主存儲(chǔ)器7的給定區(qū)域內(nèi)。
如圖10所示,存儲(chǔ)器存儲(chǔ)單元A4、B5、C6包括有存放存儲(chǔ)單元轉(zhuǎn)換管理程序的區(qū)域90,和存放各自給定的處理程序的處理程序區(qū)100。區(qū)域90在存儲(chǔ)器存儲(chǔ)單元A4、B5、C6中均被分配在同一地址區(qū)域,即地址O~(S-1)。
存儲(chǔ)單元轉(zhuǎn)換管理程序具有與圖5所示為執(zhí)行子程序所采取的相同的結(jié)構(gòu)。亦即無需詳細(xì)贅述,存儲(chǔ)單元轉(zhuǎn)換管理程序由存儲(chǔ)在地址O~(P-1)的返回存儲(chǔ)單元和轉(zhuǎn)移存儲(chǔ)單元賦值用第一程序,存儲(chǔ)在地址P~(Q-1)的實(shí)際進(jìn)行把存儲(chǔ)單元向轉(zhuǎn)移存儲(chǔ)單元轉(zhuǎn)換的第二程序,存儲(chǔ)在地址Q~(R-1)的中斷處理子程序首地址賦值和返回存儲(chǔ)單元判定用的第三程序,和存儲(chǔ)在地址R~(S-1)的實(shí)際把存儲(chǔ)單元向返回存儲(chǔ)單元轉(zhuǎn)換的第四程序組成。
針對(duì)特定中斷的中斷處理程序33被存放在存儲(chǔ)器存儲(chǔ)單元C的地址X~W的區(qū)域內(nèi)。中斷處理程序33具有存放在地址X的指令CALLY,存放在地址(X+1)的指令I(lǐng)RET,以便存放在地址Y~W的表示實(shí)際中斷處理內(nèi)容的中斷處理子程序。下面對(duì)主存儲(chǔ)單元A4和B5之一在其處理程序執(zhí)行中發(fā)生中斷時(shí)的處理操作加以說明。圖10中的操作流向示例以箭頭表示。
存儲(chǔ)器存儲(chǔ)單元A4或B5的的處理程序執(zhí)行中一發(fā)生中斷時(shí)(圖10中是在存儲(chǔ)器存儲(chǔ)單元A4中標(biāo)有★號(hào)處表明示例中發(fā)生中斷的地點(diǎn)),根據(jù)中斷控制器20所產(chǎn)生的向量地址,由主存儲(chǔ)器7中的表讀出地址X,CPU即執(zhí)行該地址X中的內(nèi)容。存儲(chǔ)器存儲(chǔ)單元A4和B5的地址X~Z的區(qū)域內(nèi),存放由將指明存儲(chǔ)有對(duì)應(yīng)中斷處理程序的存儲(chǔ)單元的標(biāo)識(shí)數(shù)據(jù)BANK NOA。存入寄存器AL的指令MOV,將中斷處理子程序的首地址Y存入寄存器BX的指令MOV,調(diào)用存儲(chǔ)單元轉(zhuǎn)換管理程序的指令CALL,和表明向中斷地址返回的指令I(lǐng)RET所組成的中斷控制程序。
這樣如圖10中以★號(hào)標(biāo)明所示,存儲(chǔ)器存儲(chǔ)單元A4的處理程序執(zhí)行中一發(fā)生中斷,首先,就執(zhí)行由存儲(chǔ)器存儲(chǔ)單元A4的地址X起始的中斷控制程序。較具體的說就是,在寄存器AL和寄存器BX中分別存入轉(zhuǎn)移存儲(chǔ)單元標(biāo)識(shí)數(shù)據(jù)BANK NOC和轉(zhuǎn)移地址,之后,CPU的操作即移向主存儲(chǔ)器的存儲(chǔ)單元轉(zhuǎn)換管理程序。在存儲(chǔ)器存儲(chǔ)單元A4的存儲(chǔ)單元轉(zhuǎn)換管理程序中,首先,將自身的存儲(chǔ)器存儲(chǔ)單元的編號(hào),即存儲(chǔ)器存儲(chǔ)單元A,作為返回存儲(chǔ)單元標(biāo)識(shí)數(shù)據(jù),存入例如說寄存器AH中,接著,對(duì)存放在寄存器AL中的轉(zhuǎn)移存儲(chǔ)單元標(biāo)識(shí)數(shù)據(jù)進(jìn)行譯碼,向第二程序的相應(yīng)地址作轉(zhuǎn)移。由于此時(shí)的轉(zhuǎn)移存儲(chǔ)單元是存儲(chǔ)器在存儲(chǔ)單元C6,所以即向存儲(chǔ)器存儲(chǔ)單元C6執(zhí)行用的地址轉(zhuǎn)移,接著就進(jìn)行由存儲(chǔ)器存儲(chǔ)單元A向存儲(chǔ)器存儲(chǔ)單元C的存儲(chǔ)單元轉(zhuǎn)換。
在存儲(chǔ)器存儲(chǔ)單元C6中,因?yàn)樵谥噶頝OP后存放的是指令JMP Q,所以在向存儲(chǔ)器存儲(chǔ)單元C6轉(zhuǎn)換后,即調(diào)用由存儲(chǔ)在寄存器BX中的地址Y起始的中斷處理子程序。此子程序執(zhí)行后,依靠地址W的指令RET對(duì)存放在寄存器AH中的返回地址進(jìn)行譯碼。這時(shí),由于返回存儲(chǔ)單元是存儲(chǔ)器存儲(chǔ)單元A4,所以即向存儲(chǔ)單元A的返回用地址轉(zhuǎn)移,以執(zhí)行向存儲(chǔ)器存儲(chǔ)單元A4的轉(zhuǎn)換。存儲(chǔ)單元轉(zhuǎn)換后,由于存儲(chǔ)器存儲(chǔ)單元A4的指令RET作用,返回到存儲(chǔ)器存儲(chǔ)單元A4的中斷控制程序(指令I(lǐng)RET),通過這一程序回到中斷前的處理程序。
此外,在執(zhí)行存儲(chǔ)器存儲(chǔ)單元B5中的處理程序中發(fā)生上述特定的中斷時(shí),也進(jìn)行完全相同的處理。而在存儲(chǔ)器存儲(chǔ)單元C6的處理程序執(zhí)行中發(fā)生這一特定中斷時(shí),由地址X的指令CALL的作用而執(zhí)行中斷處理子程序,在此子程序執(zhí)行后,再借助指令RET和IRET返回到原先被中斷了的子程序,而恢復(fù)該處理程序。
在上述結(jié)構(gòu)中,依靠存放在同一地址區(qū)內(nèi)的存儲(chǔ)單元轉(zhuǎn)換管理程序,可作由任一存儲(chǔ)單元向任一存儲(chǔ)單元的轉(zhuǎn)換。因而,如果對(duì)于存放在其他存儲(chǔ)器存儲(chǔ)單元中的中斷處理程序和其他種類的中斷,同樣地在由這些中斷所標(biāo)識(shí)的特定地址上也存放將所需執(zhí)行的中斷處理程序的轉(zhuǎn)換存儲(chǔ)單元標(biāo)識(shí)數(shù)據(jù)和/或轉(zhuǎn)移地址存入寄存器AL和/或寄存器BX的中斷控制程序的話,那么就可以共同利用區(qū)域90所存放的存儲(chǔ)單元轉(zhuǎn)換管理程序來進(jìn)行中斷控制。
下面圖11中示出了將圖8所示結(jié)構(gòu)應(yīng)用于三個(gè)存儲(chǔ)器存儲(chǔ)單元的系統(tǒng)的情形。圖11所示的結(jié)構(gòu)中與圖8所示一樣,將存儲(chǔ)單元轉(zhuǎn)換管理程序設(shè)置為特定中斷所專用的。具體地說就是,存儲(chǔ)單元轉(zhuǎn)換的轉(zhuǎn)移存儲(chǔ)單元標(biāo)識(shí)數(shù)據(jù)和轉(zhuǎn)移地址(中斷處理子程序的首地址),在各存儲(chǔ)器存儲(chǔ)單元的存儲(chǔ)單元轉(zhuǎn)換管理程序中,分別被固定在存儲(chǔ)器存儲(chǔ)單元C6和地址Y。在這樣的結(jié)構(gòu)中,當(dāng)存儲(chǔ)器存儲(chǔ)單元A4的處理程序執(zhí)行中一發(fā)生中斷(圖11中標(biāo)有★號(hào)處),由地址X的指令JMP φ立即使CPU1轉(zhuǎn)移到執(zhí)行存儲(chǔ)器存儲(chǔ)單元A4的存儲(chǔ)單元轉(zhuǎn)換管理程序,在返回存儲(chǔ)單元的存儲(chǔ)單元A4標(biāo)識(shí)數(shù)據(jù)存放后,即唯一地進(jìn)行向存儲(chǔ)器存儲(chǔ)單元C6的轉(zhuǎn)換。在存儲(chǔ)單元轉(zhuǎn)換后,指令CALL Y直接標(biāo)識(shí)地址Y,而將中斷處理子程序調(diào)出。這一子程序執(zhí)行后,進(jìn)行向返回存儲(chǔ)單元的轉(zhuǎn)換。轉(zhuǎn)換到返回存儲(chǔ)單元后,借助存儲(chǔ)器存儲(chǔ)單元A4的存儲(chǔ)單元轉(zhuǎn)換管理程序中的指令I(lǐng)RET,即執(zhí)行返回到被中斷了的處理程序。
在這種結(jié)構(gòu)的情況下,雖然也與前述一樣不能共同應(yīng)用同一存儲(chǔ)單元轉(zhuǎn)換管理程序,但由于處理步驟數(shù)大為減少而可縮短中斷控制所需時(shí)間。
而且在限于只向同一存儲(chǔ)器存儲(chǔ)單元作存儲(chǔ)單元轉(zhuǎn)換時(shí),為針對(duì)多種中斷能共同利用存儲(chǔ)單元轉(zhuǎn)換管理程序,在圖11所示結(jié)構(gòu)中,代替地址X的指令JMP φ,從地址X起存放指令MOV BX,Y,指令CALL O和指令I(lǐng)RET,并存放指令RET和CALLBX來分別代替存儲(chǔ)單元轉(zhuǎn)換管理程序中的指令I(lǐng)RET和CALLY。這就是說在向中斷發(fā)生后的存儲(chǔ)單元轉(zhuǎn)換管理程序轉(zhuǎn)移前,將中斷處理子程序的首地址存入寄存器BX,在由存儲(chǔ)單元轉(zhuǎn)換管理程序作出存儲(chǔ)單元轉(zhuǎn)換后,調(diào)用寄存器BX的內(nèi)容來執(zhí)行中斷處理子程序。因此,例如即使僅在存儲(chǔ)器存儲(chǔ)單元C6中存儲(chǔ)有多種中斷處理子程序,不必增設(shè)存儲(chǔ)單元轉(zhuǎn)換管理程序,也可進(jìn)行中斷處理。在這種場合下,與多個(gè)中斷處理相對(duì)應(yīng)地,由存儲(chǔ)器存儲(chǔ)單元A4、B5的地址X開始設(shè)置多個(gè)控制程序。而且,在四個(gè)以上存儲(chǔ)器存儲(chǔ)單元的情況下,僅僅只要增加上述的存儲(chǔ)單元標(biāo)識(shí)數(shù)據(jù)數(shù),所以將系統(tǒng)擴(kuò)大到四個(gè)以上存儲(chǔ)器存儲(chǔ)單元的結(jié)構(gòu)亦很容易。
依靠以上這種結(jié)構(gòu),在采用存儲(chǔ)單元轉(zhuǎn)換方式的系統(tǒng)中,存儲(chǔ)單元轉(zhuǎn)換管理程序被存放在各存儲(chǔ)器單元的相同地址區(qū)域內(nèi),由這種存儲(chǔ)單元轉(zhuǎn)換管理程序來進(jìn)行存儲(chǔ)單元轉(zhuǎn)換,就可以執(zhí)行所需的中斷處理。因此,即使在不能在存儲(chǔ)器存儲(chǔ)單元外部設(shè)置共用存儲(chǔ)器區(qū)域的系統(tǒng)中,任一存儲(chǔ)器存儲(chǔ)單元的處理程序執(zhí)行中發(fā)生中斷時(shí),也能利用存放在某一存儲(chǔ)器存儲(chǔ)單元中的中斷處理程序來執(zhí)行中斷處理,并恢復(fù)執(zhí)行被中斷的處理程序,因此,做為為存儲(chǔ)原先的處理程序的程序區(qū)域能使用廣大存儲(chǔ)器區(qū)域,而充分地利用存儲(chǔ)器的存儲(chǔ)區(qū)間。這樣就可能將長處理程序和所要求的必須的處理程序全部存進(jìn)存儲(chǔ)器存儲(chǔ)單元內(nèi)。
雖然本發(fā)明按附圖進(jìn)行了詳細(xì)說明,這僅僅是作為圖解和舉例,當(dāng)然不能理解為僅僅只限于此,本發(fā)明的思想和范圍由所附權(quán)利要求的措詞來限定。
權(quán)利要求
1.在具有多個(gè)存儲(chǔ)器存儲(chǔ)單元,并以對(duì)所述存儲(chǔ)器存儲(chǔ)單元的轉(zhuǎn)換來擴(kuò)大系統(tǒng)存儲(chǔ)容量的數(shù)據(jù)處理系統(tǒng)中設(shè)有為執(zhí)行子程序所設(shè)的裝置,所述子程序由子例行程序和中斷處理子程序中的一個(gè)組成;所述多個(gè)存儲(chǔ)器存儲(chǔ)單元中,各自包含有存放予先確定的處理程序的第一存儲(chǔ)器區(qū)域,所述處理程序在所述多個(gè)存儲(chǔ)器存儲(chǔ)單元中各不相同,而且所述多個(gè)存儲(chǔ)器存儲(chǔ)單元中至少有一個(gè)在其所述第一存儲(chǔ)器區(qū)域內(nèi)存儲(chǔ)有所述子程序;除存儲(chǔ)有所述子程序的至少一個(gè)存儲(chǔ)器存儲(chǔ)單元之外的存儲(chǔ)器存儲(chǔ)單元,包含有在所述第一存儲(chǔ)器區(qū)域內(nèi)的處理程序執(zhí)行中必須執(zhí)行所述子程序時(shí)選擇存儲(chǔ)有所述子程序的存儲(chǔ)器存儲(chǔ)單元的第一控制程序和在所述子程序執(zhí)行完畢后存放第二控制程序的第二控制器區(qū)域所說的第二控制程序使所述子程序返回到必須的處理程序。存儲(chǔ)所述必須執(zhí)行的子程序的存儲(chǔ)器存儲(chǔ)單元具有存放調(diào)用所述必須執(zhí)行的子程序的第三控制程序和在所述必須執(zhí)行的子程序執(zhí)行完畢后存放第四控制程序的第三存儲(chǔ)區(qū)域,所說的第四控制程序選擇存放必須執(zhí)行所述子程序的所述處理程序的存儲(chǔ)器存儲(chǔ)單元;所述第二存儲(chǔ)器區(qū)和所述第三存儲(chǔ)器區(qū),在所述多個(gè)存儲(chǔ)器存儲(chǔ)單元中都被設(shè)置在具有相同地址的存儲(chǔ)器區(qū)域內(nèi)。
2.在權(quán)利要求1的子程序執(zhí)行裝置中,所述子程序?yàn)橹袛嗵幚碜映绦?,所述裝置設(shè)置有產(chǎn)生與所發(fā)生中斷相對(duì)應(yīng)的向量地址的裝置,和存放與所述向量地址相應(yīng)的,展現(xiàn)成表的形式的、為調(diào)用所述中斷處理子程序的,中斷控制程序首地址的裝置;所述中斷控制程序存放在所述第一存儲(chǔ)區(qū)內(nèi),而所述中斷處理子程序則僅存放在所述多個(gè)存儲(chǔ)器存儲(chǔ)單元中的特定存儲(chǔ)器存儲(chǔ)單元中。
3.在權(quán)利要求1的子程序執(zhí)行裝置中,所述多個(gè)存儲(chǔ)器存儲(chǔ)單元具有,存儲(chǔ)有必須執(zhí)行的子程序的第一存儲(chǔ)器存儲(chǔ)單元,和與所述第一存儲(chǔ)器存儲(chǔ)單元不同的、存放有在執(zhí)行所述必須執(zhí)行的子程序之前執(zhí)行的第一處理程序的第二存儲(chǔ)器存儲(chǔ)單元;在所述第二存貯器存貯單元的第二存貯區(qū)存放有把存儲(chǔ)器存儲(chǔ)單元由所述第二存貯器存貯單元向所述第一存貯器存貯單元轉(zhuǎn)換的指令、和向所述第一處理程序返回的指令。所述第一存貯器存貯單元的所述第3存貯區(qū)包含有調(diào)用所述必須執(zhí)行的子程序的指令,和把存貯單元由所述第一存貯器存貯單元向所述第二存貯器存貯單元轉(zhuǎn)換的指令。
4.權(quán)利要求1中的子程序執(zhí)行裝置中,所述多個(gè)存貯器存貯單元各自的所述第二和第三存貯器區(qū)域包含有指定在所述必須執(zhí)行的子程序執(zhí)行完畢后必須返回的存貯器存貯單元、并判別含有所述必須執(zhí)行的子程序的存貯器存貯單元的第一程序。將存貯器存貯單元向所述被判定的存貯器存貯單元轉(zhuǎn)換的第二程序。調(diào)用所述必須執(zhí)行的子程序、并判別在所述必須執(zhí)行的子程序執(zhí)行完后必須返回的存貯器存貯單元的第三程序,和將存儲(chǔ)器存儲(chǔ)單元向所述被判定的必須返回的存貯器存貯單元轉(zhuǎn)換的第四程序;所述第一至第四程序每一個(gè)在所述存貯器存貯單元中都被存放在具有相同地址的區(qū)域內(nèi)。
5.權(quán)利要求2的子程序執(zhí)行裝置中,所述特定存貯器存貯單元的所述第三存貯器區(qū)域包含有調(diào)用所述必須執(zhí)行的子程序的指令,和使存貯器存貯單元向返回存貯單元轉(zhuǎn)換的指令;除所述指定存貯器存貯單元外的存貯器存貯單元的所述第二存貯器區(qū)域包含有給定存貯單元本身特定信息作為所述返回存貯單元的特定信息的指令,和使存貯器存貯單元向所述特定存貯器存貯單元轉(zhuǎn)換的指令。
6.具有各自都存貯著處理程序的多個(gè)存貯器存貯單元的數(shù)據(jù)處理系統(tǒng)中執(zhí)行子程序的方法,包括有下列步驟作為所述的多個(gè)存貯器存貯單元,準(zhǔn)備分別在各自的相同地址區(qū)內(nèi)存放存貯單元轉(zhuǎn)換控制程序的多個(gè)存貯器存貯單元;在需要轉(zhuǎn)換存貯單元時(shí)根據(jù)所述存貯單元轉(zhuǎn)換控制程序進(jìn)行存貯器存貯單元轉(zhuǎn)換。
7.權(quán)利要求6的子程序執(zhí)行方法,所述存貯器存貯單元具有第一和第二存貯器存貯單元,包括下列步驟在所述第一存貯器存貯單元中存貯的處理程序的主程序,當(dāng)需要存放所述第二存貯器存貯單元中的子程序時(shí),將前述所要求子程序的首地址存放進(jìn)給定的存貯裝置中;讀出存貯在所述第一存貯器存貯單元中的存貯單元轉(zhuǎn)換控制程序;根據(jù)所述讀出的第一存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序,將存貯單元由所述第一存貯器存貯單元向所述第二存貯器存貯單元轉(zhuǎn)換,并讀出所述第二存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序;根據(jù)所述讀出的第二存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序,取出所述給定存貯裝置中存放的起始地址,執(zhí)行前述所要求的子程序;在前述所要求的子程序執(zhí)行后,讀出所述第二存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序,根據(jù)所述第二存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序,將存貯器存貯單元由所述第二存貯器存貯單元向所述第一存貯器存貯單元轉(zhuǎn)換,并讀出所述第一存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序;和根據(jù)所述被讀出的所述第一存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序,返回到所述主程序。
8.權(quán)利要求6的子程序執(zhí)行方法,所述存貯器存貯單元至少具有第一、第二和第三存貯器存貯單元,包括下列步驟在所述第一存貯器存貯單元中存貯的處理程序的主程序,在需要存放在所述第二存貯器存貯單元中的子程序時(shí),根據(jù)所述主程序中的指令,將指定所述第二存貯器存貯單元的信息和所述要求的子程序的首地址存入給定的第一存貯裝置,同時(shí)讀出所述第一存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序;根據(jù)所述被讀出的所述第一存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序,將所述第一存貯器存貯單元的專用信息存入給定的第二存貯裝置,根據(jù)所述被存貯的第二存貯器存貯單元的專用信息,把存貯器存貯單元由所述第一存貯器存貯單元向所述第二存貯器存貯單元轉(zhuǎn)換,并將所述第二存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序讀出;根據(jù)所述被讀出的所述第二存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序,按照所述被存貯的子程序起始地址將所述子程序調(diào)出,執(zhí)行所述被調(diào)出的子程序,此子程序執(zhí)行完畢后,讀出所述第二存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序,根據(jù)所述被讀出的所述第二存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序,按照所述被存貯的第一存貯器存貯單元專用信息將存貯器存貯單元由所述第二存貯器存貯單元向所述第一存貯器存貯單元轉(zhuǎn)換,并讀出所述第一存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序;和根據(jù)所述被讀出的所述第一存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序,返回到所述主程序。
9.權(quán)利要求6的子程序執(zhí)行方法,所述子程序?yàn)橹袛嗵幚碜映绦颍龆鄠€(gè)存貯器存貯單元具有存放所述中斷處理子程序的第一存貯器存貯單元和存放將所述中斷處理子程序首地址存入給定存貯裝置的中斷控制程序的第二存貯器存貯單元,包括下列步驟在所述第二存貯器存貯單元的處理程序執(zhí)行中發(fā)生中斷時(shí),中斷執(zhí)行所述執(zhí)行中的處理程序,轉(zhuǎn)換到所述中斷控制程序;根據(jù)所述中斷控制程序,將與所產(chǎn)生中斷相對(duì)應(yīng)的中斷處理子程序的起始地址存放到所述給定的存貯裝置,并取出所述第二存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序;根據(jù)所述被取出的所述第二存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序,將存貯器存貯單元由所述第二存貯器存貯單元向所述第一存貯器存貯單元轉(zhuǎn)換,同時(shí)讀出所述第一存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序;根據(jù)所述被讀出的所述第一存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序,按照存放在所述給定存貯裝置中的首地址信息,取出所述相應(yīng)的中斷處理子程序,執(zhí)行所述被取出的中斷處理子程序,執(zhí)行完畢后,轉(zhuǎn)移到執(zhí)行所述第一存貯器存貯單元的所述存貯單元轉(zhuǎn)換控制程序;根據(jù)所述第一存貯器存貯單元的所述存貯單元轉(zhuǎn)換控制程序,將存貯器存貯單元由所述第一存貯器存貯單元向所述第二存貯器存貯單元轉(zhuǎn)換,并讀出所述第二存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序;和根據(jù)所述被讀出的所述第二存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序,返回到所述被中斷的處理程序。
10.權(quán)利要求6的子程序執(zhí)行方法,所述子程序具有多個(gè)中斷處理子程序,而所述多個(gè)存貯器存貯單元?jiǎng)t有存放所述中斷處理子程序的第一存貯器存貯單元和具有讀出所述存貯器存貯單元轉(zhuǎn)換控制程序的指令的第二存貯器存貯單元,包括下列步驟在所述第二存貯器存貯單元的處理程序執(zhí)行中發(fā)生中斷時(shí),中斷執(zhí)行該執(zhí)行中的處理程序,執(zhí)行所述讀出指令,讀出所述第二存貯器存貯單元的所述存貯單元轉(zhuǎn)換控制程序;根據(jù)所述被讀出的所述第二存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序,將存貯器存貯單元由所述第二存貯器存貯單元向所述第一存貯器存貯單元轉(zhuǎn)換,并讀出所述第一存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序;根據(jù)所述被讀出的所述第一存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序,取出與所述發(fā)生的中斷相對(duì)應(yīng)的中斷處理子程序;在所述中斷處理子程序執(zhí)行完畢后,返回到所述第一存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序;根據(jù)所述第一存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序,將存貯器存貯單元由所述第一存貯器存貯單元向所述第二存貯器存貯單元轉(zhuǎn)換,并讀出所述第二存貯器存貯單元的所述被讀出的存貯單元轉(zhuǎn)換控制程序;和根據(jù)所述被讀出的所述第二存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序,返回到所述被中斷的處理程序。
11.權(quán)利要求10的方法中,與多個(gè)中斷處理的每一個(gè)相對(duì)應(yīng)地設(shè)置有所述第二存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序讀出指令,并且所述第一和第二存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序具有與所述多個(gè)中斷處理每一個(gè)相對(duì)應(yīng)的多個(gè)存貯單元轉(zhuǎn)換控制程序,在發(fā)生中斷時(shí)執(zhí)行相應(yīng)的存貯單元轉(zhuǎn)換控制程序。
12.權(quán)利要求6的子程序執(zhí)行方法,所述多個(gè)存貯器存貯單元至少具有存貯用來處理所發(fā)生中斷的中斷處理子程序的第一存貯器存貯單元,和存貯中斷控制程序的第二和第三存貯器存貯單元,包括有下列步驟在所述第二和第三存貯器存貯單元中任一個(gè)存貯器存貯單元的處理程序執(zhí)行中發(fā)生中斷要求時(shí),中斷執(zhí)行所述執(zhí)行中的處理程序,轉(zhuǎn)移到執(zhí)行所述的一個(gè)存貯器存貯單元的中斷控制程序;根據(jù)所述的一個(gè)存貯器存貯單元的中斷控制程序,將存放所述中斷處理子程序的前述第一存貯器存貯單元的專用信息和至少一個(gè)所述中斷處理子程序的起始地址存入第一存貯裝置,同時(shí)將處理步驟轉(zhuǎn)移到所述的一個(gè)存貯器存貯單元的所述存貯單元轉(zhuǎn)換控制程序;根據(jù)所述的一個(gè)存貯器存貯單元的所述存貯單元轉(zhuǎn)換控制程序,將所述的一個(gè)存貯器存貯單元的專用情報(bào)存入第二存貯裝置,并進(jìn)行由所述的一個(gè)存貯器存貯單元向所述第一存貯器存貯單元轉(zhuǎn)換,并讀出所述第一存貯器存貯單元轉(zhuǎn)換控制程序;根據(jù)所述第一存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序,取出所述中斷處理子程序;執(zhí)行所述被取出的中斷處理子程序,在其執(zhí)行完畢后,返回到所述第一存貯器存貯單元的所述存貯單元轉(zhuǎn)換控制程序;根據(jù)所述返回的所述第一存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序,按照被存放于所述第二存貯裝置中的所述的一個(gè)存貯器存貯單元的專用信息,將存貯器存貯單元由所述第一存貯器存貯單元向所述的一個(gè)存貯器存貯單元轉(zhuǎn)換,同時(shí)讀出所述的一個(gè)存貯器存貯單元的所述存貯單元轉(zhuǎn)換控制程序;和根據(jù)所述被讀出的所述的一個(gè)存貯器存貯單元的所述存貯單元轉(zhuǎn)換控制程序,返回到所述被中斷的處理程序。
13.權(quán)利要求12的子程序執(zhí)行方法中,向所述第一存貯裝置進(jìn)行存貯的步驟,包括存貯所述第一存貯器存貯單元的專用信息和所述中斷處理子程序起始地址兩者的步驟,由所述的一個(gè)存貯器存貯單元向所述第一存貯器存貯單元作存貯器存貯單元轉(zhuǎn)換的步驟包括對(duì)存放在所述第一存貯裝置中的存貯器存貯單元專用信息進(jìn)行譯碼的步驟。
14.權(quán)利要求12的子程序執(zhí)行方法中,僅在所述多個(gè)存貯器存貯單元中的一個(gè)存貯器存貯單元中,存放所述中斷處理子程序,向所述第一存貯裝置進(jìn)行存貯的步驟,具有只存貯所述中斷處理子程序的首地址的步驟。
15.權(quán)利要求12的子程序執(zhí)行方法,其中與多個(gè)中斷處理相對(duì)應(yīng)地設(shè)置有多個(gè)所述中斷控制程序,包括有下列步驟;轉(zhuǎn)移到執(zhí)行所述中斷控制程序的步驟中,與所發(fā)生中斷相對(duì)應(yīng)地輸出向量地址;與所述向量地址相對(duì)應(yīng)地,讀出展現(xiàn)呈表狀的中斷控制程序的起始地址,和根據(jù)所讀出的起始地址,取出對(duì)應(yīng)的中斷控制程序。
16.權(quán)利要求6的子程序執(zhí)行方法,所述多個(gè)存貯器存貯單元至少具有存放針對(duì)所發(fā)生的中斷的中斷處理子程序的第一存貯器存貯單元和與所述第一存貯器存貯單元不同的第二和第三存貯器存貯單元,包括下列步驟在所述第二和第三存貯器存貯單元中的一個(gè)存貯器存貯單元的處理程序執(zhí)行中發(fā)生中斷時(shí),中斷執(zhí)行所述執(zhí)行中的處理程序,轉(zhuǎn)移到執(zhí)行所述的一個(gè)存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序;根據(jù)所述的一個(gè)存貯器的存貯單元轉(zhuǎn)換控制程序,將所述的一個(gè)存貯器存貯單元的專用信息存入存貯裝置,并使存貯器存貯單元由所述的一個(gè)存貯器存貯單元向所述第一存貯器存貯單元轉(zhuǎn)換,進(jìn)而讀出在此轉(zhuǎn)換后的所述第一存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序;根據(jù)所述第一存貯器存貯單元的所述存貯單元轉(zhuǎn)換控制程序,取出所述中斷處理子程序;執(zhí)行所述被取出的中斷處理子程序,在其執(zhí)行后返回到所述第一存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序;根據(jù)所述第一存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序,按照被存放在所述存貯裝置中的所述的一個(gè)存貯器存貯單元專用信息,使存貯器存貯單元由所述第一存貯器存貯單元向所述的一個(gè)存貯器存貯單元轉(zhuǎn)換,并讀出所述的一個(gè)存貯器存貯單元的所述存貯單元轉(zhuǎn)換控制程序;和根據(jù)所述的一個(gè)存貯器存貯單元的存貯單元轉(zhuǎn)換控制程序,返回到所述被中斷的處理程序。
17.權(quán)利要求16的子程序執(zhí)行方法,具有多種所述中斷處理子程序,而所述存貯單元轉(zhuǎn)換控制程序具有與所述多種中斷處理子程序相對(duì)應(yīng)的多個(gè)存貯單元轉(zhuǎn)換子程序,所述多個(gè)存貯單元轉(zhuǎn)換子程序各自存放在所述第一、第二和第三存貯器存貯單元的所述第二存貯區(qū)內(nèi)同一地址區(qū)間內(nèi),包括下列步驟在發(fā)生所述中斷時(shí),轉(zhuǎn)移到執(zhí)行存貯單元轉(zhuǎn)換控制程序;發(fā)出專用于所發(fā)生中斷向量地址;響應(yīng)所述向量地址,從以表狀展現(xiàn)的地址中讀出相應(yīng)的地址;由所述第一存貯區(qū)讀出存放在所述被讀出地址位置上的控制指令;和根據(jù)所讀出的控制指令,由所述多個(gè)存貯單元轉(zhuǎn)換控制程序中讀出對(duì)應(yīng)的控制程序。
18.用于存貯單元轉(zhuǎn)換方式的數(shù)據(jù)處理系統(tǒng)的程序存貯器中,具有構(gòu)成多個(gè)存貯器存貯單元的多個(gè)存貯器塊,所述多個(gè)存貯器塊各自存貯為執(zhí)行所述存貯單元轉(zhuǎn)換的控制程序,所述存貯單元轉(zhuǎn)換控制程序在所述多個(gè)存貯器塊的每一個(gè)中被存放在有相同地址的存貯器區(qū)間內(nèi)。
全文摘要
在具有多個(gè)存貯器存貯單元(4、5、6)的,采用存貯單元轉(zhuǎn)換方式的,執(zhí)行子例行程序和中斷處理子程序的裝置中,分別將存貯單元轉(zhuǎn)換控制程序存放在多個(gè)存貯器存貯單元的各自的相同地址空間(90)內(nèi)。
文檔編號(hào)G06F9/42GK1036646SQ8910186
公開日1989年10月25日 申請(qǐng)日期1989年2月24日 優(yōu)先權(quán)日1988年2月24日
發(fā)明者金子豐 申請(qǐng)人:三洋電機(jī)株式會(huì)社