




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1微機原理與接口技術2第四章匯編語言程序設計匯編語言程序格式偽指令語句DOS系統功能調用和BIOS中斷調用程序設計方法宏匯編和條件匯編內容提要3計算機程序設計語言一般分為機器語言、匯編語言和高級語言三種。▲匯編語言(AssemblyLanguage)指令的助記符+符號地址+標號是機器語言的符號表示,是較低級的語言。▲高級語言:可讀性好,編程簡單;
▲匯編語言:實時性能好,程序效率高,節省內存,運行速度快。第四章宏匯編語言程序設計——概述
4.1概述4匯編程序的開發過程操作得到的文件
操作使用的工具
說明:編輯程序連接程序匯編程序文件XXX.ASMLINKASMMASMTASM記事本WPSWORDEDIT文件
XXX.OBJXXX.LSTXXX.CRF文件
XXX.EXEXXX.MAPXXX.LIBDEBUG出錯出錯出錯出錯.OBJ:目標文件,.LST:列表文件,.CRF:交叉引用文件.MAP:映像文件,LIB:庫文件54.2匯編語言格式DATA SEGMENTSTRING DB ‘HELLOWORLD!’,0DH,0AH,‘$’DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATABEGIN: MOV AX,DATA
MOV DS,AX ;初始化數據段的段地址 MOV AH,09H LEA DX,STRING;輸出字符串 INT 21H MOV AH,4CH INT 21H;調用4CH號系統功能返回DOSCODE ENDS END BEGIN數據段代碼段一個簡單的8086系統下的匯編語言程序:1、匯編語言程序是由若干個段組成,段由若干條語句組成。3、程序以END結束。64.2匯編語言格式語句是匯編語言程序的基本組成單位。匯編語言有3種基本語句類型:指令語句、偽指令語句和宏指令語句。指令語句由CPU執行,可產生機器代碼,CPU根據這些代碼才能執行相應的操作。偽指令語句由編譯器處理,為編譯和連接提供控制信息,不產生機器代碼。宏指令語句以一個宏名定義的一段指令序列,在匯編中凡是出現宏指令語句的地方,都會有相應的指令語句序列的目標代碼插入。74.2匯編語言格式指令語句
[標號:]指令助記符[操作數,操作數][;注釋]例如:movcx,8;2操作數指令
s:nop;0操作數指令(nop空操作)loops;1操作數指令偽指令語句
[名字]偽指令助記符參數,參數…[;注釋]例如:data1db0,1,2;數據定義偽指令DB,在內存中定義
;3個連續的字節單元,初值是0,1,2;data1表示第一個數據0的偏移地址84.3匯編語言的基本數據匯編語言程序的語句中包含的元素:字符集保留字與標識符常量、變量與標號表達式及運算符9一、字符集允許使用的字符:字母,包括大寫字母A~Z和小寫字母a~z;數字,包括0~9;特殊字符,包括:+-*/=()[]<>;,‘“.—:?@$&及空格、制表符、回車、換行等。注意:除了字符串,字母都是不區分大小寫一系列相連的空格、制表符效果相當于一個空格一系列相連的回車換行相當于一次回車換行分號“;”后一直到行尾的內容都是注釋字符“&”若用于某行的開頭,則表示該行是上一行的續行10二、保留字與標識符1、保留字 在匯編語言中有特定意義的詞,可分為:指令助記符及指令前綴
如:MOV、ADD、REP等寄存器名 如:AX、EBX、CL等偽指令助記符
如:DB、SEGMENT等其他保留字,包括運算符、操作符等 如:EQ、LT、OFFSET、SEG等112、標識符標識符是程序員自己起的名字,如變量名、標號、段名、過程名等標識符的命名規則:標識符必須由字母、數字和幾個特殊字符(包括_@$?:)組成,而且第一個字符不能是數字(否則可能與16進制的數字混淆)標識符不能與某個保留字相同,以免混淆。盡量用有意義的英文單詞或縮寫來命名,以增加程序的可讀性12三、常量、變量與標號1、常量數字常量二進制:以B結尾,如10101010B八進制:以Q結尾,如123Q,67Q十進制:以D結尾,“D”可省略,如1234D,5678十六進制:以H結尾,A~F開頭的數須在前面加“0”
如:1234H,0FFFFH字符串常量用單引號或雙引號引起來的一個或多個ASCII字符每個字符的值等于其ASCII碼值例:‘A’=41H一個字節,‘12’=31H、32H兩個字節132、變量變量是存放在存儲器中的操作數可通過變量的名字來訪問變量變量具有三個屬性:段屬性,即變量所在的段的基地址;偏移量屬性,即變量相對于段的起始地址的偏移量;類型屬性,包括BYTE(字節)、WORD(字)、DWORD(雙字)FWORD(6字節)、QWORD(四字)、TBYTE(10字節)等。143、標號標號是一條指令性語句的起始地址變量具有三個屬性:段屬性,即變量所在的段的基地址;偏移量屬性,即變量相對于段的起始地址的偏移量;類型屬性,包括NEAR(近程,即段內)、FAR(遠程,即段間)15四、表達式及運算符由常量、變量、標號和一些運算符、操作符構成的式子表達式的值在匯編的過程中就已經被匯編程序計算出來運算符的分類:算術運算符邏輯運算符關系運算符屬性運算符數值返回操作符161、算術運算符五種算術運算: 加:+、減:-、乘:*、除:/、模:MOD合法地址表達式:地址-地址(處在同個段中);地址±常數ADDR1-ADDR2(假設兩個地址處在同個段中)ADDR1+1ADDR2-2非法地址表達式:地址+地址;地址*地址;地址/地址;常量-地址;地址-地址(處在不同段中)ADDR1+ADDR2ADDR1*ADDR2ADDR1/2100-ADDR1SEG1_A-SEG2_B(假設兩個地址處在不同段中)172、邏輯運算符五種算術運算:
與AND、或OR、異或XOR、非NOT、邏輯左移SHL、邏輯右移SHR
只用于數字表達式中例:MOVAL,10101010BAND11001100B;AL←10001000BMOVAL,10001000BOR01000100B;AL←11001100BMOVAX,1000100010001000BXOR1100110011001100B ;AX←0100010001000100BMOVAX,NOT1010101010101010B ;AX←0101010101010101B183、關系運算符六種關系運算符:EQ(Equal,相等)NE(NotEqual,不等)LT(LessThan,小于)LE(LessthanorEqual,小于或等于)GT(GreatThan,大于)GE(GreatthanorEqual,大于或等于)運算結果:關系為真,則運算結果為0FFFFH關系為假,則運算結果為0194、屬性運算符(1)型重新指定操作符PTR功能: 臨時指定或修改存儲器操作數的數據類型屬性或地址類型屬性格式:類型PTR表達式例:VAR_WDW 1234HMOVAX,VAR_W;AX←1234HMOVAL,BYTEPTRVAR_W;AL←34H20(2)類型指定操作符THIS功能:指定或說明變量或標號的類型例1: DATA_WEQUTHISWORD DATA_BDB 1,2,3,4 MOV AL,DATA_B;AL←1 MOV AX,WORDPTRDATA_B;AL←0201H MOV AX,DATA_W;AL←0201H例2: ADDR_FEQUTHISFAR ADDR_N:MOVAX,1 JMPADDR_F;等價于:JMPFARPTRADDR_N215、數值返回操作符(1)SEG、OFFSET功能:SEG操作符用于求一個標號或變量所在段的基地址OFFSET操作符則用于求標號或變量在段中的地址偏移量例如,對于代碼段中的一條指令:2000H:1234HADDR:INCCX;段地址=2000H偏移量=1234H則有:MOVAX,SEGADDR;AX←2000HMOVAX,OFFSETADDR;AX←1234H;與指令“LEAAX,ADDR”等價22(2)TYPE、LENTH、SIZE功能:TYPE:求變量的數值類型屬性,即變量具有的字節數BYTE:返回1;WORD:返回2;DWORD:返回4;FWORD:返回6;QWORD:返回8,TBYTE:返回10;NEAR:返回0FFH;FAR:返回0FEHLENGTH:求變量所占用的內存單元數用于由重復操作符DUP()定義的存儲器變量對于其他變量,LENGTH的返回值都是1SIZE:計算變量所占存儲器的總字節數關系:
SIZE=LENGTH×TYPE23例: DATA1DW1234H DATA2DB‘HELLO’ DATA3DD100DUP(0);表示定義100個值為0的雙字 MOVAL,TYPE DATA1 ;AL←2 MOVAL,TYPE DATA2 ;AL←1 MOVAL,TYPE DATA3 ;AL←4 MOVBL,LENGTHDATA1 ;BL←1 MOVBL,LENGTHDATA2 ;BL←1 MOVBL,LENGTHDATA3 ;BL←100 MOVCL,SIZE DATA1 ;CL←2×1=2 MOVCL,SIZE DATA2 ;CL←1×1=1 MOVCL,SIZE DATA3 ;CL←4×100=40024(3)字節分離運算符HIGH、LOW功能:HIGH:分離一個字常量或一個地址表達式的高字節LOW:分離一個字常量或一個地址表達式的低字節例:只能用于常量或結果為常量的表達式ADDR1: MOVAL,HIGH1234H ;AL←12H MOVAL,LOWADDR1 ;AL←上一指令 ;地址偏移量的低8位不能用于變量或寄存器MOVBL,HIGHAX256、運算符的優先級表達式計算順序:先處理優先級別高的運算符對于優先級相等的運算符,則按從左至右的順序進行處理優先級順序:()、[](優先級最高)LENGTH、SIZEPTR、THIS、SEG、OFFSET、TYPEHIGH、LOW*、/、MOD、SHL、SHR+、-EQ、NE、LT、LE、GT、GENOTANDOR、XORSHORT(優先級最低)264.4偽指令一、偽指令(指示性語句)格式([]里的內容可選): [名字]偽指令符操作數,操作數,……[;注釋]名字:變量名、段名等,與指令地址無關,后面不能加冒號偽指令符:指定匯編程序要完成的具體操作操作數:常量、變量或表達式等注釋:說明、解釋當前語句的作用27常用偽指令:處理器選擇偽指令數據定義偽指令,包括DB、DW、DD、DF、DQ、DT符號定義偽指令,包括EQU、“=”段定義偽指令SEGMENT、ENDS假定偽指令ASSUME地址對準偽指令ORG過程定義偽指令PROC、ENDP源程序結束偽指令END282、數據定義偽指令功能:為變量分配存儲空間格式: [變量名]偽指令符操作數,操作數,……[;注釋]六種數據定義偽指令:DB(字節定義):每個操作數占1個字節DW(字定義):每個操作數占1個字,即2個字節DD(雙字定義):每個操作數的長度為雙字,即4個字節DF(6字節定義):每個操作數的長度為6個字節DQ(四字定義):每個操作數的長度為四字,即8個字節DT(10字節定義):每個操作數的長度為10個字節29例:可同時定義多個數據:NUMDW12H,-1;定義2個字STRINGDB‘HELLO’,0DH,0AH;定義字符串省略變量名:BUFDB1,10,100 DB1;省略變量名 ;但該數據仍可通過“BUF+3”訪問無初始化數據定義:用問號“?”代替操作數BUFFERDB2,?,?,?;定義4個字節 ;其中后3個字節不初始化30DUP操作符:格式: 重復的次數DUP(重復的內容)例: ARRAY DB 3DUP(1,2) ;等價于:ARRAYDB1,2,1,2,1,2 BUF_W DW 100DUP(?) ;定義100個字,但不初始化DUP的嵌套使用: ARRAY2 DB 2DUP(1,3DUP(0)) ;等價于:ARRAY2DB1,0,0,0,1,0,0,031地址表達式作為操作數:只能用DW、DD定義DW:變量/標號的偏移量DD:變量/標號的段地址和偏移量例: DATA1 DW ADDR1+1 ;把ADDR1偏移量加1后存放到DATA1對應的存儲單元中 DATA2 DD DATA1 ;把DATA1的偏移量和段地址存放到DATA2對應的存儲單 元中,其中偏移量放低地址,段地址放高地址。32地址計數器“$” “$”:表示到目前為止該段已經使用的地址空間例1:
設VAR1地址偏移量為1000H,則:
VAR1 DB 100HDUP(?) 之后,$=1100H,因此: ADDR1 DW $ 等價于“ADDR1DW1100H”,也等價于“ADDR1DWADDR1”例2: STRINGDB‘ABC’ LEN DW$-STRING;LEN的值為STRING的長度
數據段中首個變量的偏移量默認為0.33例如:DATASEGMENTADB0,?,3BDW100,1200H,-5CDB‘A’,‘XY’DDW‘XY’EDW3,4466H,2DUP(1,0)DW1123H,0015HFDWCDATAENDS
343、符號定義偽指令(1)等價偽指令EQU格式: 符號名 EQU表達式功能: 為常量、表達式及其他各種符號定義一個別名例: NUM EQU12 ;給數值定義符號名 NUM2 EQUNUM+10 ;給12+10=22定義符號名 ADDR EQUDS:[BX+SI] ;給尋址表達式定義符號名 COUNT EQUCX ;給寄存器CX定義符號名 CLEAR EQUXORAX,AX ;給指令定義符號名35(2)解除偽指令PURGE格式: PURGE 符號名,符號名,……作用: EQU偽指令不能直接對一個符號名重定義,必須先用PURGE解除例: COUNT EQU CX PURGE COUNT
COUNT EQU CL
36(3)等號“=”偽指令格式: 符號名 = 表達式功能: 為常量、表達式及其他各種符號定義一個等價的符號名 允許對符號名多次重復定義,且以最后一次定義的值為準例: CONST =1 ;給數值1定義符號名CONST ADDR =[BP+DI] ;給尋址表達式定義符號名ADDR CONST =0 ;重定義CONST374、段定義偽指令SEGMENT、ENDS格式:段名
segment[定位][組合][段字][‘類別’]….
段名ends
段的起始地址PAGEPARA(默認)WORDBYTE段間關系NONE(默認)PUBLICSTACK多個’類別’連續存放STACKCODEDATA38385、假定偽指令ASSUME格式:ASSUME 段寄存器:段名[,段寄存器:段名,……]功能:告訴匯編程序段與段寄存器的對應關系例:DATA SEGMENTVAR1 DB ?DATA ENDSCODE SEGMENT
ASSUME CS:CODE,DS:DATABEGIN: ……ASSUME指令:假定CS為代碼段,DS為數據段39段寄存器的裝入偽指令assumecs:code,ds:data,ss:stack只是將cs、ds、ss和code、data、stack相連,并沒有給cs、ds、ss賦相應的段地址CS的裝入
源程序結束定義偽指令:END標號 每個源程序都必須以END偽指令結束例如:start:…endstartend后面的標號start說明了程序的入口,cpu的cs:ip將被設置指向這個入口。40段寄存器的裝入DS與ES的裝入①用ASSUME將DS/ES與相應的段建立聯系②用數據傳送指令mov裝入段地址
MOV AX,段名
MOV DS/ES,AXSS的裝入(兩種辦法)第⑴種:在定義段時,用組合類型STACK說明
STACK1 SEGMENTPARASTACK DW20HDUP(0) STACK1 ENDS CODE SEGEMNT ASSUMECS:CODE,SS:STACK1 ……41段寄存器的裝入第(2)種:SS的裝入(類似于DS/ES的方法) STACK1SEGMENT DW40HDUP(0)
TOP LABELWORD STACK1ENDS …… CODE SEGEMNT ASSUMECS:CODE,SS:STACK1 ……
MOVAX,STACK1 MOVSS,AX
MOVSP,OFFSETTOP ;SP=80H …… 427、地址對準偽指令(1)ORG格式:ORG 數值表達式功能:用于指定下一個指令或數據在段內的起始地址例:LAB1: PUSH AX ORG 2000HLAB2: MOV AL,34則LAB2的地址偏移量為2000H。439、過程定義偽指令PROC、ENDP功能:定義一個過程格式: 過程名 PROC [過程屬性] ……
返回指令RET 過程名 ENDP過程屬性:NEAR:缺省屬性,表示段內調用/返回FAR:表示段間調用/返回4444§4-5匯編語言程序設計▲一個好的程序應該具備的特點:⑴程序結構模塊化,程序易讀,易調試及維護。⑵執行速度快。⑶占用內存空間小。概述4545▲常用四種程序結構:順序結構,分支結構,循環結構,子程序結構。▲設計匯編語言源程序的基本步驟:⑴分析問題:抽象數學模型,確定實現算法。⑵繪制程序流程圖粗框圖
細框圖。圖例如圖4-1所示。⑶分配存儲空間、工作單元:分配數據段、堆棧段、程序段的位置,確定寄存器主要作用。⑷編寫程序⑸靜態檢查,上機調試⑹程序運行,結果分析。464.5.1順序程序設計順序程序是指程序的結構從開始到結尾一直是順序執行,中途沒有分支。順序程序的流程圖如圖4-4所示。47例4-10試編寫程序計算表達式Z=(3X+Y-5)/2,設X、Y的值放在字變量VARX、VARY中,結果存放在VARZ中。算法分析:乘2n和除2n可以使用算術左移和右移實現;其它非2n的乘除運算可以用移位和加減組合運算來實現,如3X可以分解成2X+X。算法實現:DATASEGMENTVARXDW5VARYDW10VARZDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,VARXSHLAX,1;2*XADDAX,VARX;3*XADDAX,VARY;3X+YSUBAX,5;3*X+Y-5SARAX,1;(3*X+Y-5)/2MOVVARZ,AX;存結果
MOVAH,4CHINT21HCODEENDSENDSTART484.5.2分支程序設計分支程序結構是指程序的執行順序將根據某些指令的執行結果,選擇某些指令執行或不執行。分支程序的實現主要是由轉移指令完成。如圖4-5所示,分支程序結構有兩種形式:一種是二分支結構;另一種是多分支結構。49(1)用比較/測試指令+條件轉移指令實現分支算法分析:依次比較相鄰兩數的大小,將較大的送入AL中;每次比較后,較大數存放在AL中,相當于較大的數往下傳;比較一共要做7次。比較結束后,AL中存放的就是最大數。例4-11數據段的ARY數組中存放有8個無符號數,試找出其中最大者送入MAX單元。50算法實現:DATASEGMENTARYDB18,15,40,0,60,10,30,70MAXDB?DATAENDSSTART:MOVAX,DATAMOVDS,AXMOVSI,OFFSETARY;SI指向ARY的第一個元素
MOVCX,7;CX作次數計數器
MOVAL,[SI];取第一個元素到ALLOP:INCSI;SI指向后一個元素
CMPAL,[SI];比較兩個數
JAEBIGER;前元素≥后元素轉移
MOVAL,[SI];取較大數到ALBIGER:DECCX;減1計數
JNZLOP;未比較完轉回去,否則順序執行
MOVMAX,AL;存最大數
MOVAH,4CHINT21HCODEENDSENDSTART514.5.3循環程序設計
在實際工作中,有時需要對某一問題進行多次重復處理,該類計算過程具有循環特征,循環程序設計恰是解決這類問題行之有效的方法。⑴循環程序的構成循環程序一般主要包括以下四個部分:①初始化部分主要用于建立循環的初始狀態,即循環次數計數器、地址指針以及其他循環參數的初始設定。②循環體循環體是程序中重復執行的程序段,包括工作部分和修改部分。工作部分是完成循環程序任務的主要程序段;修改部分則是為循環的重復執行,完成某些參數的修改。③循環控制部分主要判斷循環條件是否成立。判斷方法主要有兩種:用計數控制循環和用條件控制循環。④結束處理部分處理循環結束后的結果,如存儲結果等。52(2)循環程序的結構類型依照問題的不同,循環體的結構一般可分為兩類:先執行后判斷和先判斷后執行,如圖4-8所示。圖4-8(a)先執行后判斷圖4-8(b)先判斷后執行53⑶控制循環次數的方法①用計數控制循環適用于循環次數已知的,或是在進入循環前可由某變量確定循環次數的情況。常選用CX作計數器,可選用LOOP、LOOPE或LOOPNE等循環控制指令。例4-13把以BUFFER為首址的6個字節單元中的二進制數據累加,求得的和存放到RES字單元中。54DATASEGMENTBUFFERDB1,9,21,12,23,13RESDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXXORAX,AX;AL清0MOVCX,06H;置計數器初值
MOVBX,OFFSETBUFFER;置地址指針L1:ADDAL,[BX];取一個數累加到AL上
ADCAH,0INCBX;地址加1LOOPL1;不為0,循環
MOVRES,AX;傳送結果
MOVAH,4CHINT21HCODEENDSENDSSTART
55②用條件控制循環適用于某些循環次數未知的,或循環次數可變的情況,可以由問題給出的條件控制循環結束。例4-14調用單字符輸出的DOS功能,向屏幕輸出以“#”結束的字符串。a.明確任務,確定算法。設字符串存放在以D1開始的存儲區中,字符串以“#”結束。雖然字符串長度未知,但可利用條件中的已知特征“#”來結束循環。顯然,可以用條件控制法。b.算法思想:初始化:將D1的首地址送入SI。循環:(a)將SI指向的存儲單元數據送到DL中;(b)判斷:如果DL中的字符不是“#”,則顯示
該字符,并修改SI的值即讓SI指向下一個存儲
單元,然后返回(a);否則執行(c)。(c)結束。56c.編寫程序DATASEGMENTD1DB‘HOWAREYOU?#’DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEASI,D1LP:MOVDL,[SI]
CMPDL,‘#’JZENDOUTMOVAH,2;顯示單個字符
INT21H
INCSI;指向下一個數據
JMPLPENDOUT:INT20HCODEENDSENDSTART574.5.4子程序設計子程序或過程是匯編語言中多次使用的一個相對獨立的程序段。⑴子程序的定義每一個子程序在被使用前必須先定義,子程序的定義格式就是過程的定義格式,完成子程序功能的程序段就包括在過程定義語句PROC。。。ENDP的中間。(2)子程序的調用和返回主程序通過使用CALL指令實現對子程序的調用,子程序通過使用RET指令實現返回主程序。如果在子程序中沒有保護與恢復現場,則應該在主程序調用子程序之前保護現場、在子程序返回主程序后恢復現場。58例4-16已知數組由50個字數據組成,試求出該數組元素之和。算法分析:假設數組已經存放在以ARY開始的存儲區中,其各個元素之和存放在以SUM開始的存儲區中。用子程序結構進行編程。DATASEGMENTARYDW50DUP(?)SUMDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXCALLRADDMOVAH,4CHINT21H60求和子程序RADDPROCNEARPUSHAXPUSHBXPUSHCXPUSHDXLEABX,ARYMOVCX,100MOVAX,0MOVDX,AXCL1:ADDAX,[BX]JNCCL2INCDX61CL2:ADDBX,2LOOPCL1MOVSUM,AXMOVSUM+2,DXPOPDXPOPCXPOPBXPOPAXRETRADDENDPCODEENDSENDSTART624.6DOS及BIOS功能調用
DOS是磁盤操作系統,它為程序設計人員提供了可以直接調用的功能子程序。DOS功能調用就是指對這些子程序的調用,也稱系統功能調用。子程序的順序編號稱為功能調用號。IBMPC系列機在只讀存儲器ROM中固化有一組外部設備驅動與管理軟件,占用系統板上8K字節的ROM區,組成PC機基本輸入輸出系統(BasicI/OSystem),它處于系統軟件的最低層,又稱ROMBIOS。63BIOS/DOS的每個功能子程序都對應著一個子程序文件,因此BIOS/DOS功
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權】 IEC 62047-46:2025 EN Semiconductor devices - Micro-electromechanical devices - Part 46: Silicon based MEMS fabrication technology - Measurement method of tensile strength of
- 2025年生物化學專業試卷及答案
- 2025年未來技術與創新管理測試題及答案
- 2025年物流管理專業考試試卷及答案
- 2025年地理信息科學考試試卷及答案
- 2025年科技創新與知識產權課程考試試卷及答案
- 2025年區域經濟發展與規劃考試試卷及答案
- 七級數學測試題及答案
- 一級消防工程師試題及答案
- 網店經營數據繼承與交接責任協議
- 電競酒店的計劃書
- GJB438C模板-軟件開發計劃(已按標準公文格式校準)
- 康復評定-常用康復評定項目課件
- 血友病性關節炎的治療及護理
- 肝硬化腹水臨床路徑(2019年版)
- 物業承接查驗標準及表格
- 鋼結構門頭專項施工方案
- 2023版馬克思主義基本原理課件 專題八 共產主義論
- 半導體物理與器件(第4版)尼曼課后答案【半導體物理與器件】【尼曼】課后小結與重要術語解
- 回彈法檢測磚砂漿強度計算表
- 《水的組成》說課課件
評論
0/150
提交評論