




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第第1414章章 模塊化程序設計模塊化程序設計 第第14章章 模塊化程序設計模塊化程序設計 14.1 段間調(diào)用段間調(diào)用 14.2 定義外部標識符偽指令定義外部標識符偽指令 14.3 運用運用EXTRN和和PUBLIC的范例的范例 14.4 在指令段運用在指令段運用PUBLIC 14.5 在數(shù)據(jù)段運用在數(shù)據(jù)段運用PUBLIC 14.6 參數(shù)傳送參數(shù)傳送 14.7 C言語與匯編言語的鏈接言語與匯編言語的鏈接 第第1414章章 模塊化程序設計模塊化程序設計 14.1 段段 間間 調(diào)調(diào) 用用 前面引見的CALL 指令都是段內(nèi)的調(diào)用,即在同一個指令段內(nèi)。段內(nèi)調(diào)用的CALL指令范圍為0000HFFFFH。
2、一條段內(nèi)調(diào)用指令(CALL) 的目的碼是3個字節(jié)長度,例如: E8 2000 (0020) ;十六進制第第1414章章 模塊化程序設計模塊化程序設計 十六進制E8是段內(nèi)調(diào)用指令(CALL)機器指令的操作碼,其操作是先把當前IP指令指針存放器的值壓入堆棧保管,這個值是CALL的下一條指令地址;然后,再把被調(diào)用的子程序的偏移地址(2000逆序)值送入IP 存放器,IP0020。微處置器把當前CS的值和IP的值相結合構成物理地址,此地址指向被調(diào)用子程序的第1字節(jié)。當子程序的執(zhí)行中,遇到RET指令分開子程序前往時,RET指令會從堆棧中彈出IP的保管值,并把它裝入IP,使程序前往到CALL的下一條指令繼
3、續(xù)執(zhí)行,這個過程是段內(nèi)調(diào)用。 第第1414章章 模塊化程序設計模塊化程序設計 其特點是在子程序調(diào)用、前往過程中段存放器CS不變化,只需指令指針存放器IP發(fā)生變化。主程序與被調(diào)用的子程序同在一個段內(nèi)。 模塊化程序設計必然涉及到模塊間的調(diào)用問題。模塊間的調(diào)用是經(jīng)過段間的調(diào)用來實現(xiàn)的。假設被調(diào)用的子程序是在現(xiàn)指令段之外,那么稱為段間調(diào)用。一條段間調(diào)用指令(CALL)的機器指令碼共有5個字節(jié)。例如: 9A 0002 AF04 (04AF 0200) ;十六進制第第1414章章 模塊化程序設計模塊化程序設計 十六進制9A是段間調(diào)用指令(CALL)機器指令的操作碼。操作是:首先將CS段存放器的值壓入堆棧,
4、并把被調(diào)用子程序所在段的段值(AF04逆序)裝入CS段存放器,CS04AF;然后把IP指令指針存放器的值壓入堆棧,并將被調(diào)用子程序相應的偏移地址(0002逆序)裝入IP,IP0200。第第1414章章 模塊化程序設計模塊化程序設計 這些操作建立了被調(diào)用子程序的第一條待執(zhí)行指令的地址: 十六進制 段 值: CS 04AF0 偏移地址: IP + 0200 物理地址: 04CF0第第1414章章 模塊化程序設計模塊化程序設計 當分開子程序前往時,段間調(diào)用的RET指令會從堆棧中依序彈出IP和CS兩個存放器的原值,前往到CALL的下一條指令。其特點是在子程序調(diào)用、前往過程中,段存放器CS和指令指針存放
5、器IP均發(fā)生變化。主程序與被調(diào)用的子程序不在同一個段內(nèi)。 第第1414章章 模塊化程序設計模塊化程序設計 14.2 定義外部標識符偽指令定義外部標識符偽指令 當進展模塊化程序設計時,首先應思索的問題是模塊間控制的耦合和數(shù)據(jù)的耦合??刂岂詈暇褪悄K在怎樣的環(huán)境下如何進入又如何退出。數(shù)據(jù)耦合就是諸模塊間如何進展數(shù)據(jù)通訊。例如,有一個主模塊(MAINPROG)調(diào)用一個子模塊(SUBPROG),它要用到一個段間調(diào)用(CALL),如圖14-1所示。第第1414章章 模塊化程序設計模塊化程序設計 EXTRN SUBPROG:FARMAINPROG: CALL SUBPROG PUBLIC SUBPROGS
6、UBPROG: RET圖14-1 段間調(diào)用第第1414章章 模塊化程序設計模塊化程序設計 主模塊MAINPROG內(nèi)的CALL指令,必需知道子模塊SUBPROG是位于本段之外的標號。否那么匯編過程中會產(chǎn)生一個錯誤信息指出SUBPROG是一個未定義的符號。EXTRN偽指令就是執(zhí)行此功能的,它通知匯編程序SUBPROG是一個遠程的標號(FAR Label),是定義在另一個模塊里的。由于匯編程序無法知道真是如此,所以就產(chǎn)生“空的目的操作數(shù)0000,即先空出;而由鏈接程序在鏈接時再填入確定值。例如(參考例14.4主模塊程序清單): 0011 9A0000-E 第第1414章章 模塊化程序設計模塊化程序設
7、計 子模塊SUBPROG內(nèi)含有一個PUBLIC偽指令,它通知匯編程序和鏈接程序,其他模塊需求知道SUBPROG的地址。當MAINPROG與SUBPROG都已匯編成目的模塊文件后,它們可以以下的方式來鏈接: LINK MAINPROG+SUBPROG Run File MAINPROG.EXE: List File NUL.MAP: CON Libraries .LIB:第第1414章章 模塊化程序設計模塊化程序設計 鏈接程序將一個目的模塊內(nèi)的EXTRN匹配上另一個模塊內(nèi)的PUBLIC,并將插入一切需求的偏移地址,然后把兩個目的模塊組合成一個可執(zhí)行的文件。假設有不匹配的情況,鏈接程序會給出錯誤信
8、息。 利用EXTRN和PUBLIC這兩條偽指令,一個模塊可以訪問其他模塊的標識符(變量或者標號)。假設一個標識符只在這一個模塊中定義過,那么它相對這個模塊就是一個內(nèi)部的標識符或部分標識符。假設它沒有在這一個模塊中定義過,而是在其他一個模塊中定義過,那么它相對于該模塊就稱為外部標識符。 第第1414章章 模塊化程序設計模塊化程序設計 對于只產(chǎn)生一個單一目的模塊的匯編言語程序而言,它所訪問的一切標識符必需是部分(內(nèi)部)定義的,否那么就會產(chǎn)生一個錯誤信息匯編程序會查出有一個未定義的標識符(標號或變量)存在。對于多模塊程序來說,必需給匯編程序一個信息以闡明其間的有些標識符是外部的,而不至于匯編程序把它
9、們了解為一些無效的標識符。此外為了允許其他模塊訪問本給定模塊中的標識符,該給定模塊必需包含一個標識符清單,以闡明其中的標識符可以讓其他模塊訪問。因此,每個模塊可含有(不一定絕對含有)兩個清單,一個清單闡明它所訪問其他模塊的外部標識符(EXTRN),而另一個那么列出它所定義的且讓其他模塊訪問的標識符(PUBLIC); 第第1414章章 模塊化程序設計模塊化程序設計 這兩個清單靠EXTRN和PUBLIC這兩條偽指令來列出。 EXTRN和PUBLIC偽指令的格式如下: EXTRN 標識符:類型, PUBLIC 標識符, EXTRN偽指令里的標識符是被聲明的外部的變量或標號,而PUBLIC偽指令里的標
10、識符是供其他模塊運用的變量或標號。由于在產(chǎn)生相應的機器代碼之前,匯編言語必需求知道一切標識符的類型,以便確定指令的字節(jié)數(shù)(長度),故在EXTRN偽指令里的每一個標識符都伴有類型符出現(xiàn)。 第第1414章章 模塊化程序設計模塊化程序設計 對于變量來說,類型有BYTE、WORD、DWORD等,對于標號來說類型那么有NEAR或FAR。留意:標識符可以是變量、符號常量、標號和過程名。 例如:INC VAR1 語句,假設VAR1是外部變量,并且是一字變量,那么在含有這個語句的模塊中必需運用以下偽指令: EXTRN ,VAR1:WORD 而在定義VAR1的模塊中那么一定要有下面的偽指令: PUBLIC ,V
11、AR1第第1414章章 模塊化程序設計模塊化程序設計 鏈接程序的主要義務之一,就是檢測并證明EXTRN語句里的每一個標識符能否與PUBLIC語句的標識符相匹配,假設不相匹配,鏈接程序就會給出出錯信息。下面給出三個模塊,闡明鏈接程序是怎樣查找匹配,并指出其中錯誤。第第1414章章 模塊化程序設計模塊化程序設計 模塊1:EXTRN VAR2:WORD,LAB2:FARPUBLIC VAR1,LAB1; DATA1 SEGMENT VAR1 DB 2 VAR3 DB ? VAR4 DW ?DATA1 ENDS; 第第1414章章 模塊化程序設計模塊化程序設計 LAB1: 模塊2:EXTRN VAR1
12、:BYTE,VAR4:WORDPUBLIC VAR2 鏈接錯誤,緣由是模塊1中PUBLIC ; 沒有聲明匹配 DATA2 SEGMENT VAR2 DW 0 VAR3 DB 5 DUP(?)DATA2 ENDS ; 第第1414章章 模塊化程序設計模塊化程序設計 模塊3:EXTRN LAB1:FARPUBLIC LAB2,LAB3 ; 其他模塊未運用LAB2: 不需聲明 LAB3: 第第1414章章 模塊化程序設計模塊化程序設計 14.3 運用運用EXTRN和和PUBLIC的范例的范例 下面的例子中含有兩個模塊:主模塊CALLMUL1和一個子模塊SUBMUL1。主模塊定義了堆棧段、數(shù)據(jù)段和指令
13、段。數(shù)據(jù)段定義了兩個數(shù)據(jù)項PRICE和QTY。指令段分別把PRICE和QTY裝入AX和BX存放器,然后調(diào)用子模塊。主模塊內(nèi)的偽指令EXTRN指明了本模塊運用的外部模塊SUBMUL1。 第第1414章章 模塊化程序設計模塊化程序設計 子模塊內(nèi)有一條偽指令PUBLIC,它通知鏈接程序SUMUL1是由其他模塊調(diào)用的,同時指明此處是鏈接的進入點。子模塊的功能是把AX存放器的內(nèi)容乘以BX存放器的內(nèi)容,所得乘積放入DX:AX這一對存放器內(nèi)。 子模塊內(nèi)沒有定義任何數(shù)據(jù),所以它沒有數(shù)據(jù)段;也可以定義數(shù)據(jù)段,但只能在子模塊中運用。 在子模塊內(nèi)也沒有定義堆棧段,它與主模塊共同運用一個堆棧。所以,在主模塊中定義的堆
14、棧,子模塊也可以運用。鏈接程序要求至少有一個堆棧段,在主模塊內(nèi)定義的堆棧段就可以滿足要求。第第1414章章 模塊化程序設計模塊化程序設計 例14.1 EXTRN和PUBLIC運用。 主模塊程序清單如下:; 主模塊:; filename:CALLMUL1.ASMEXTRN SUBMUL1:FAR; STACK SEGMENT PARA STACK STACK DW 64 DUP (?)STACK ENDS第第1414章章 模塊化程序設計模塊化程序設計 ; DATASGSEGMENT PARA DATAQTY DW 0140HPRICE DW 2500HDATASGENDS; CODESG SEG
15、MENT PARA CODEBEGIN PROC FAR ASSUME CS:CODESG,DS:DATASG,SS:STACK第第1414章章 模塊化程序設計模塊化程序設計 PUSH DS SUB AX,AX PUSH AX MOVAX,DATASG MOV DS,AX MOV AX,PRICE MOV BX,QTY CALL SUBMUL1 RETBEGIN ENDPCODESG ENDS END BEGIN第第1414章章 模塊化程序設計模塊化程序設計 子模塊程序清單如下:; filename:SUBMUL1.ASM;子模塊:CODESG SEGMENT PARA CODESUBMUL1
16、 PROC FAR ASSUME CS:CODESG PUBLIC SUBMUL1 MUL BX RET第第1414章章 模塊化程序設計模塊化程序設計 SUBMUL1 ENDPCODESG ENDS END SUBMUL1主模塊和子模塊分別匯編正確無誤后,參考上節(jié)內(nèi)容鏈接,產(chǎn)生一個EXE文件。C:masmLINK CALLMUL1+SUBMUL1Run File CALLMUL1.EXE:Enter(回車)List File NUL.MAP: EnterLibraries .LIB: Enter第第1414章章 模塊化程序設計模塊化程序設計 14.4 在指令段運用在指令段運用PUBLIC 在主
17、模塊的指令段和子模塊的指令段運用PUBLIC偽指令,鏈接程序會把兩個邏輯指令區(qū)段結合成一個實踐的指令段。在例14.1的主模塊和子模塊中各有一處修正,均是在指令段的SEGMENT偽指令內(nèi)運用PUBLIC,用法如下:COD ESG SEGMENT PARA PUBLIC CODE第第1414章章 模塊化程序設計模塊化程序設計 例14.2 在指令段運用PUBLIC。主模塊程序清單如下:; 主模塊:; filename:CALLMUL.ASMEXTRN SUBMUL:FAR; STACK SEGMENT PARA STACK STACK DW 64 DUP (?)STACK ENDS第第1414章章
18、模塊化程序設計模塊化程序設計 ; DATASGSEGMENT PARA DATAQTY DW 0140HPRICE DW 2500HDATASG ENDS第第1414章章 模塊化程序設計模塊化程序設計 ; CODESG SEGMENT PARA PUBLIC CODEBEGIN PROC FAR ASSUME CS:CODESG,DS:DATASG,SS:STACK PUSH DS SUB AX,AX PUSH AX MOV AX,DATASG MOV DS,AX第第1414章章 模塊化程序設計模塊化程序設計 MOV AX,PRICE MOV BX,QTY CALL SUBMUL RETBEG
19、IN ENDPCODESG ENDS END BEGIN第第1414章章 模塊化程序設計模塊化程序設計 子模塊程序清單如下:; filename:SUBMUL.ASM; 子模塊:CODESG SEGMENT PARA PUBLIC CODESUBMUL PROC FAR ASSUME CS:CODESG PUBLIC SUBMUL MUL BX第第1414章章 模塊化程序設計模塊化程序設計 RETSUBMUL ENDPCODESG ENDS END SUBMUL第第1414章章 模塊化程序設計模塊化程序設計 當兩個段運用同一個稱號(CODESG)、同樣的類型(CODE)以及同樣段的組合類型(P
20、UBLIC)時,鏈接程序會把這樣的兩個邏輯段組合成一個實踐的物理指令區(qū)。經(jīng)過匯編時產(chǎn)生的LST文件中的符號表,可以了解到一個指令段的情況;也可利用DEBUG程序察看到一個指令段的情況。第第1414章章 模塊化程序設計模塊化程序設計 14.5 在數(shù)據(jù)段運用在數(shù)據(jù)段運用PUBLIC 他能夠會有這樣的需求,在一個模塊內(nèi)要處置另外一個模塊的數(shù)據(jù)。例如前面的例題中,主模塊依然定義數(shù)據(jù)PRICE和QTY;但是由子模塊運用它們,把它們的值放入AX和BX。程序修正如下: 第第1414章章 模塊化程序設計模塊化程序設計 例14.3 在數(shù)據(jù)段運用PUBLIC。主模塊程序清單如下:; 主模塊:; filename:
21、CALLMUL.ASMEXTRN SUBMUL:FARPUBLIC QTY,PRICE; STACK SEGMENT PARA STACK STACK第第1414章章 模塊化程序設計模塊化程序設計 DW 64 DUP (?)STACK ENDS; DATASGSEGMENT PARA PUBLIC DATAQTY DW 0140HPRICE DW 2500HDATASGENDS; 第第1414章章 模塊化程序設計模塊化程序設計 CODESG SEGMENT PARA PUBLIC CODEBEGIN PROC FAR ASSUME CS:CODESG,DS:DATASG,SS:STACK PU
22、SH DS SUB AX,AX PUSH AX MOV AX,DATASG MOV DS,AX CALL SUBMUL RET第第1414章章 模塊化程序設計模塊化程序設計 BEGIN ENDPCODESG ENDS END BEGIN 子模塊程序清單如下:; filename:SUBMUL.ASM; 子模塊: EXTRN QTY:WORD,PRICE:WORD; CODESG SEGMENT PARA PUBLIC CODE第第1414章章 模塊化程序設計模塊化程序設計 SUBMUL PROC FAR ASSUME CS:CODESG PUBLIC SUBMUL MOV AX,PRICE第第
23、1414章章 模塊化程序設計模塊化程序設計 MOV BX,QTY MUL BX RETSUBMUL ENDPCODESG ENDS END SUBMUL第第1414章章 模塊化程序設計模塊化程序設計 PUBLIC QTY,PRICE ;聲明主模塊的QTY和PRICE為外部援用EXTRN QTY:WORD,PRICE:WORD;聲明QTY 和PRICE是外部標識符 子模塊中運用了主模塊的變量,所以兩個模塊中都應進展聲明:第第1414章章 模塊化程序設計模塊化程序設計 14.6 參參 數(shù)數(shù) 傳傳 送送 主模塊調(diào)用子模塊,通常也稱為主程序調(diào)用子程序,主程序經(jīng)常要傳送一些參數(shù)給子程序,子程序運轉完成后
24、普通都要前往一些信息給主程序。這種主程序和子程序間的信息傳送稱為參數(shù)傳送或過程間的數(shù)據(jù)通訊。參數(shù)傳送的方法有三種:第第1414章章 模塊化程序設計模塊化程序設計 (1) 利用存放器傳送參數(shù):適用參數(shù)較少時;(2) 利用存儲器傳送參數(shù):適用參數(shù)較多時;(3) 利用堆棧傳送參數(shù):適用嵌套、遞歸情況。數(shù)據(jù)傳送根據(jù)范圍可分為以下幾種:(1) 同一個模塊內(nèi)的段內(nèi)參數(shù)傳送。(2) 同一個模塊內(nèi)的段間參數(shù)傳送。(3) 不同模塊間的參數(shù)傳送。(4) 不同言語間的參數(shù)傳送第第1414章章 模塊化程序設計模塊化程序設計 例14.4 利用堆棧傳送參數(shù)。 主模塊程序清單如下:; 主模塊:; filename:CALL
25、MUL.ASM EXTRN SUBMUL:FAR ; 0000 STACK SEGMENT PARA STACK STACK 0000 0040 DW 64 DUP (?) ? 第第1414章章 模塊化程序設計模塊化程序設計 0080STACK ENDS ; 0000DATASGSEGMENT PARA DATA 0000 0140QTY DW 0140H 0002 2500PRICE DW 2500H 0004DATASG ENDS ; 第第1414章章 模塊化程序設計模塊化程序設計 0000 CODESG SEGMENT PARA PUBLIC CODE 0000 BEGIN PROC F
26、AR ASSUME CS:CODESG,DS:DATASG,SS:STACK 0000 1EPUSH DS 0001 2B C0 SUB AX,AX 0003 50 PUSH AX 0004 B8 - RMOV AX,DATASG 第第1414章章 模塊化程序設計模塊化程序設計 0007 8E D8 MOV DS,AX 0009 FF 36 0002 R PUSH PRICE 000D FF 36 0000 R PUSH QTY 0011 9A 0000 E CALL SUBMUL 0016 CBRET 0017BEGIN ENDP 0017CODESG ENDS END BEGIN 第第14
27、14章章 模塊化程序設計模塊化程序設計 子模塊程序清單如下:; filename:SUBMUL.ASM ;子模塊: 0000 CODESG SEGMENT PARA PUBLIC CODE 0000 SUBMUL PROC FAR ASSUME CS:CODESG PUBLIC SUBMUL 0000 55PUSH BP 第第1414章章 模塊化程序設計模塊化程序設計 0001 8B ECMOV BP,SP 0003 8B 46 08MOV AX,BP+8 0006 8B 5E 06MOV BX,BP+6 0009 F7 E3MUL BX 000B 5DPOP BP 000C CA 0004R
28、ET 4 000FSUBMUL ENDP 000FCODESG ENDS END 第第1414章章 模塊化程序設計模塊化程序設計 主模塊程序在調(diào)用子模塊程序SUBMUL之前,把 PRICE和 QTY都壓入堆棧。 堆棧的變化如下: 16 00 XX XX 40 01 00 25 00 00 XX XX 6 5 4 3 2 1第第1414章章 模塊化程序設計模塊化程序設計 (1) PUSH DS 將DS中的段地址壓入堆棧。(2) PUSH AX 把偏移地址0壓入堆棧。(3) PUSH PRICE 把2500壓入堆棧。(4) PUSH QTY 把0140壓入堆棧。(5) CALL 把CS存放器的內(nèi)容
29、壓入堆棧。(6) IP 指令指針存放器的內(nèi)容0016 也被壓入堆棧。 第第1414章章 模塊化程序設計模塊化程序設計 被調(diào)用的子模塊程序SUBMUL要用BP來獲得堆棧內(nèi)的參數(shù)。它的第一個操作是把BP的內(nèi)容壓入到堆棧保管起來。本例中BP的內(nèi)容正好是0,然后把SP的內(nèi)容送入BP。由于BP可以作為尋址存放器,而SP那么不行。此操作使BP的值為0072,由于SP的初值應是堆棧的大小十六進制80,每次壓入堆棧一個字SP減2。堆棧指針的變化應是: 00 00 16 00 XX XX 40 01 00 25 00 00 XX XX . SP: 72 74 76 78 7A 7C 7E 80第第1414章章
30、模塊化程序設計模塊化程序設計 由于如今BP的內(nèi)容是0072,所以PRICE在BP+8位置,而QTY在BP+6位置。下面兩條指令把這些值分別搬入AX和BX,然后作乘法。要從子模塊程序回到調(diào)用程序時,先恢復BP的值0000并將SP加2,從72變成74。 最后一條指令RET,是一條子程序前往指令,它執(zhí)行以下操作:第第1414章章 模塊化程序設計模塊化程序設計 (1) 彈出當前堆棧頂端的字1600送入IP。 (2) 把SP+2,SP從74增為76。 (3) 取出目前堆棧頂端的字(XXXX),存入CS。 (4) 把SP+2,SP從76增為78。 子程序前往指令帶有參數(shù)即RET 4,指令中的4的作用是保證正確前往,將SP的值加4修正為7C。這是由于堆棧內(nèi)的參數(shù)已不再需求,故予以舍棄。運用堆棧傳送參數(shù)時應特別小心,SP的值弄錯的話會產(chǎn)生料想不到的結果。第第1414章章 模塊化程序設計模塊化程序設計 14.7 C言語與匯編言語的鏈接言語與匯編言語的鏈接 C言語與匯編言語的鏈接是指C言語與匯編言語的相互調(diào)用。通常只是指從C言語調(diào)用匯編言語程序。這是由于C言語不但編程容易,而且效率高。但是,匯編言語效率最高,特別是適宜對硬件的直接控制。因此,采用C言語與匯編言語混合編程的方法,能得到高質(zhì)量的程序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年抗血小板藥項目建議書
- 2025年建筑防水卷材及制品項目建議書
- 企業(yè)臨時保安合同范本
- 合資合伙協(xié)議合同范本
- 醫(yī)院保安協(xié)議合同范本
- 合同范本 渠道疏浚
- 煤矸石燒結磚購銷合同范本
- 農(nóng)村錯車道工程合同范例
- 叉車變賣合同范本
- 幼兒園玩具設備采購合同范本
- 《Spring框架》教學課件
- 七年級下冊《平行線的判定》課件與練習
- 2025年中考英語時文閱讀 6篇有關電影哪吒2和 DeepSeek的英語閱讀(含答案)
- 修高速土方合同范例
- 2024年形勢與政策復習題庫含答案(綜合題)
- 江蘇省南通市2025屆高三第一次調(diào)研測試數(shù)學試題(南通一模)(含答案)
- DCMM數(shù)據(jù)管理師練習測試卷
- 油氣行業(yè)人才需求預測-洞察分析
- 檢修安全知識培訓課件
- 學校心理健康教育存在的問題及改進措施
- 水利工程水庫混凝土防滲墻施工方案
評論
0/150
提交評論