版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章匯編語(yǔ)言程序設(shè)計(jì)12概述匯編語(yǔ)言的程序格式和語(yǔ)句分類(lèi)與格式偽指令宏指令匯編語(yǔ)言程序設(shè)計(jì)DOS和BIOS系統(tǒng)功能調(diào)用匯編語(yǔ)言與C++語(yǔ)言混合編程第4章
匯編語(yǔ)言程序設(shè)計(jì)34.1概述4.1.1計(jì)算機(jī)語(yǔ)言的分類(lèi)機(jī)器語(yǔ)言:優(yōu)點(diǎn):可以直接被計(jì)算機(jī)識(shí)別,執(zhí)行速度快,占用內(nèi)存空間少。缺點(diǎn):不直觀(guān),編寫(xiě)、閱讀和修改都很繁瑣。高級(jí)語(yǔ)言:優(yōu)點(diǎn):編寫(xiě)、閱讀和修改比較方便,通用性好。缺點(diǎn):執(zhí)行速度慢,占用內(nèi)存空間大,匯編語(yǔ)言:優(yōu)點(diǎn):執(zhí)行速度較快,占用內(nèi)存空間較少,編寫(xiě)、閱讀和修改比較方便。缺點(diǎn):面向機(jī)器的語(yǔ)言,通用性差。44.1.2匯編語(yǔ)言程序的格式DATASEGMENT……DATAENDSSTACKSEGMENT……STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AX
……MOVAH,4CHINT21HCODEENDSENDSTART5例
將字符串STR中的大寫(xiě)字母轉(zhuǎn)換為小寫(xiě)字母。程序代碼如下:DATASEGMENTSTRDB'HELLOWORLD!$';待處理字符串LENEQU$-STR;字符串中包含的字符個(gè)數(shù)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA;告訴匯編程序內(nèi)存物理段和邏輯段之間的關(guān)系MAINPROCFAR;定義過(guò)程START:MOVAX,DATAMOVDS,AX;初始化DSMOVBX,OFFSETSTR;設(shè)置地址指針MOVCX,LEN;設(shè)置循環(huán)次數(shù)6CHECK:MOVAL,[BX];檢查當(dāng)前字符是否為大寫(xiě)字母CMPAL,'A'JBNEXTCMPAL,'Z'JANEXTADDAL,20H;大寫(xiě)字母轉(zhuǎn)小寫(xiě)字母MOV[BX],AL;存儲(chǔ)轉(zhuǎn)換后的數(shù)據(jù)NEXT:INCBX;修改地址指針DECCX;修改循環(huán)次數(shù)JNZCHECKMOVDX,OFFSETSTR;字符串輸出MOVAH,9INT21HMOVAH,4CH;返回DOSINT21HMAINENDPCODEENDS;代碼段結(jié)束ENDSTART;程序結(jié)束7匯編語(yǔ)言程序具有如下特點(diǎn):分段結(jié)構(gòu)匯編語(yǔ)言程序采用分段組織的方式,示例中包含兩個(gè)段,DATA和CODE,以段定義偽指令SEGMENT表示段的開(kāi)始,以段定義偽指令ENDS表示段的結(jié)束。匯編語(yǔ)句匯編語(yǔ)言程序由匯編語(yǔ)句構(gòu)成,匯編語(yǔ)句分為指令性語(yǔ)句和指示性語(yǔ)句,指示性語(yǔ)句用于告訴匯編程序如何匯編,在可執(zhí)行程序中,無(wú)可執(zhí)行指令與其對(duì)應(yīng),指令性語(yǔ)句是執(zhí)行語(yǔ)句,匯編語(yǔ)言程序?qū)?yīng)的可執(zhí)行程序,有可執(zhí)行指令與其對(duì)應(yīng)。8匯編語(yǔ)言和DOS的接口為了保證程序執(zhí)行后正確返回DOS,匯編語(yǔ)言程序提供了兩種匯編語(yǔ)言程序和DOS的接口方法。方法一:將主程序定義成一個(gè)屬性為FAR的過(guò)程,在程序的開(kāi)始將INT20H指令段地址(DS的值)和偏移地址(0)壓入堆棧,在程序結(jié)束時(shí)用RET(將壓入堆棧的值彈出到IP和CS)結(jié)束,相當(dāng)于執(zhí)行INT20H指令,使程序正常結(jié)束,返回DOS方法二:用DOS功能調(diào)用。DOS功能調(diào)用中的4CH號(hào)調(diào)用,其功能是結(jié)束當(dāng)前程序,返回DOS。其調(diào)用方法是在程序結(jié)束前加入以下兩條指令。MOVAH,4CHINT21H9例:將鍵盤(pán)輸入的一個(gè)小寫(xiě)字母用大寫(xiě)字母形式在屏幕上顯示出來(lái)。程序代碼如下:CODESEGMENTASSUMECS:CODEMAINPROCFARSTART:PUSHDSMOVAX,0PUSHAXMOVAH,1INT21HCMPAL,'a'JBOVERFLOWCMPAL,'z'JAOVERFLOWSUBAL,20HMOVDL,ALMOVAH,06HINT21HOVERFLOW:RETMAINENDPCODEENDSENDSTART104.2匯編語(yǔ)言的程序格式和語(yǔ)句分類(lèi)4.2.1匯編語(yǔ)言的程序格式例:用匯編語(yǔ)言編程實(shí)現(xiàn)C=A+B。程序代碼如下:DATASEGMENT ADB? BDB? CDB?DATAENDSSTACKSEGMENT STDB200DUP(?)STACKENDS11CODESEGMENT MAINPROCFAR ASSUMECS:CODE,DS:DATA START:PUSHDS XORAX,AX PUSHAX MOVAX,DATA MOVDS,AX MOVA,78 MOVB,-65 MOVAL,A ADDAL,B MOVC,AL RET MAINENDPCODEENDSENDSTART12對(duì)匯編語(yǔ)言程序結(jié)構(gòu)的幾點(diǎn)說(shuō)明:匯編語(yǔ)言源程序采用分段結(jié)構(gòu),一個(gè)程序可以包含若干個(gè)邏輯段,最多4種類(lèi)型,分別為數(shù)據(jù)段、代碼段、堆棧段和附加段。程序中必須包含一個(gè)代碼段,其他邏輯段可有可無(wú),根據(jù)設(shè)計(jì)需要確定。2.對(duì)于變量的定義,即對(duì)于原始數(shù)據(jù)的設(shè)置,處理結(jié)果存儲(chǔ)空間的預(yù)留,通常在數(shù)據(jù)段和附加段完成。3.堆棧段主要用于存放需要保護(hù)的數(shù)據(jù),用戶(hù)可以自己設(shè)置堆棧段,也可以由系統(tǒng)自動(dòng)分配堆??臻g使用。4.在代碼段中,用ASSUME偽指令指明程序邏輯段和存儲(chǔ)器物理段之間的對(duì)應(yīng)關(guān)系,在代碼段的程序部分通過(guò)設(shè)置段寄存器的值,建立程序邏輯段和存儲(chǔ)器物理段之間的對(duì)應(yīng)關(guān)系。5.用END偽指令結(jié)束整個(gè)源程序。134.2.2匯編語(yǔ)句的分類(lèi)與格式1.匯編語(yǔ)句的分類(lèi)與格式1)指令性語(yǔ)句指令性語(yǔ)句是可執(zhí)行語(yǔ)句,指令性語(yǔ)句主要是指令系統(tǒng)中的指令。指令性語(yǔ)句的格式是:[名字][指令前綴]指令助記符[操作數(shù)][;注釋]2)指示性語(yǔ)句偽指令是指示性語(yǔ)句,指示性語(yǔ)句不是可執(zhí)行語(yǔ)句,其功能主要是在匯編過(guò)程中告訴匯編程序如何匯編,例如如何給變量分配存儲(chǔ)空間,程序的邏輯段與存儲(chǔ)器物理段之間的對(duì)應(yīng)關(guān)系等。指示性語(yǔ)句的格式是:[名字]助記符[操作數(shù)][;注釋]142.格式說(shuō)明1)名字指令性語(yǔ)句中的名字是標(biāo)號(hào),與指令前綴或者助記符以“:”間隔。指示性語(yǔ)句中的名字可以是變量名、段名、過(guò)程名等,與助記符之間以空格間隔。2)指令前綴對(duì)于8086/8088系統(tǒng)中用到的前綴主要有段超越前綴,鎖定前綴和重復(fù)前綴。153)助記符指令性語(yǔ)句中的助記符是語(yǔ)句的關(guān)鍵字,用于指出指令的功能和操作,是指令中不能省略的部分。指示性語(yǔ)句中的助記符是偽指令的關(guān)鍵字,用于規(guī)定匯編程序完成的操作,4)操作數(shù)(1)常數(shù)在指令的地址碼字段直接給出,不需要訪(fǎng)問(wèn)寄存器,也不涉及到存儲(chǔ)器數(shù)據(jù)段的操作,在指令中只能作為源操作數(shù)。常見(jiàn)的常數(shù)形式有:數(shù)字型常數(shù)、字符型常數(shù)。16數(shù)字型常數(shù):數(shù)字型常數(shù)可以是二進(jìn)制數(shù),十進(jìn)制數(shù),八進(jìn)制數(shù)和十六進(jìn)制數(shù)。字符型常數(shù):是由單引號(hào)引起的一個(gè)或一串字符,如'C','ABC'等。在匯編時(shí)字符在存儲(chǔ)器中以ASCII碼存放。2)標(biāo)號(hào)和變量標(biāo)號(hào)可以作為轉(zhuǎn)移指令、過(guò)程調(diào)用指令等的操作數(shù),標(biāo)號(hào)表征的是關(guān)聯(lián)指令的地址,具有段屬性、偏移屬性和類(lèi)型屬性。變量可以作為大部分指令的操作數(shù),變量具有段屬性、偏移屬性和類(lèi)型屬性。17例:DS1DB35H,6FHMOVAL,DS1;變量DS1的值35H送至ALMOVBX,OFFSETDS1;將變量DS1的偏移地址送至BX,;即數(shù)據(jù)35H的偏移地址送至BX3)由尋址方式給出的寄存器操作數(shù)或存儲(chǔ)器操作數(shù)184)表達(dá)式表達(dá)式是由常數(shù)、標(biāo)號(hào)、變量及各種尋址方式表示的操作數(shù)經(jīng)運(yùn)算符組合而成的,表達(dá)式的求值是在匯編過(guò)程中進(jìn)行的。運(yùn)算符算術(shù)運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符分析運(yùn)算符屬性運(yùn)算符。19算術(shù)運(yùn)算符有“+”,“-”,“*”,“/”,MOD(求余),SHL(左移)和SHR(右移)七種。算術(shù)運(yùn)算執(zhí)行的是整數(shù)運(yùn)算,運(yùn)算的結(jié)果為整數(shù)。數(shù)值表達(dá)式中7種算術(shù)運(yùn)算符都可以使用地址表達(dá)式只能使用加法運(yùn)算和減法運(yùn)算,實(shí)現(xiàn)同一邏輯段的地址進(jìn)行加法或減法運(yùn)算。例:MOVAL,26MOD4;匯編后變?yōu)镸OVAL,2MOVBH,(35*2+10)/7;匯編后變?yōu)镸OVBH,1120關(guān)系運(yùn)算符有“EQ”(相等),“NE”(不相等),“LT”(小于),“GT”(大于),“LE”(小于等于),“GE”(大于等于)六種。關(guān)系運(yùn)算的操作對(duì)象為數(shù)值或者同一邏輯段的地址,關(guān)系運(yùn)算的結(jié)果為布爾值,關(guān)系成立時(shí),其結(jié)果為全1(8位為0FFH,16位為0FFFFH),關(guān)系不成立時(shí),其結(jié)果為全0(0)。例:MOVBX,4EQ3;匯編后變?yōu)镸OVBX,0MOVBX,4NE3;匯編后變?yōu)镸OVBX,0FFFFH21邏輯運(yùn)算符有邏輯非NOT,邏輯與AND,邏輯或OR,邏輯異或XOR。邏輯運(yùn)算的操作對(duì)象為數(shù)值,不能對(duì)地址進(jìn)行邏輯運(yùn)算。例:MOVAL,0D0HAND55H;匯編后變?yōu)镸OVAL,50HMOVAL,0AEHOR0AAH;匯編后變?yōu)镸OVAL,0AEH22分析運(yùn)算符主要用于分析操作對(duì)象的屬性,操作對(duì)象可以是變量或者標(biāo)號(hào)。運(yùn)算符操作對(duì)象功能OFFSET變量或標(biāo)號(hào)分析變量或者標(biāo)號(hào)所在邏輯段的偏移地址SEG變量或標(biāo)號(hào)分析變量或者標(biāo)號(hào)所在邏輯段的段地址TYPE變量或標(biāo)號(hào)分析變量或者標(biāo)號(hào)的類(lèi)型屬性L(fǎng)ENGTH變量分析變量的長(zhǎng)度SIZE變量分析變量的大小23類(lèi)型BYTE(字節(jié))WORD(字)DWORD(雙字)QWORD(8字節(jié))TBYTE(10字節(jié))NEARFAR類(lèi)型值124810-1-2例:DATASEGMENTVARDW1234H,5678HARRAYDD12345678HSTRDB12H,34H,56H,78HDATAENDSCODESEGMENT…MOVDX,OFFSETARRAY;將ARRAY的偏移地址0004H送至DXOVAX,TYPEVAR;2(AX)MOVBX,TYPEARRAY;4(BX)MOVCX,TYPESTR;1(CX)…CODEENDS24例:DATASEGMENTFEESDW100DUP(0);LENGTHFEES=100ARRAYDW1,2,3;LENGTHARRAY=1DATAENDSCODESEGMENT…MOVAX,LENGTHFEES;100(AX)MOVBX,LENGTHARRAY;1(BX)…CODEENDS25例:已知變量上例中定義的變量,利用SIZE運(yùn)算符分析變量的大小。MOVAX,SIZEFEES;200(AX)MOVBX,SIZEARRAY;2(BX)5)注釋匯編語(yǔ)言中”;”后的內(nèi)容為注釋部分,注釋部分可有可無(wú),在程序設(shè)計(jì)中,清晰有序的注釋可大大增加程序可讀性。264.3偽指令4.3.1處理器定義偽指令格式:.微處理器名稱(chēng)功能:用于設(shè)定指令系統(tǒng)所屬的CPU類(lèi)型。.8086只匯編8086/8088的指令系統(tǒng),可缺省.286/.286C可匯編8086/8088的指令系統(tǒng)和286非保護(hù)方式的指令.286P可匯編8086/8088的指令系統(tǒng)和286的指令系統(tǒng)(保護(hù)方式和非保護(hù)方式).386/.386C可匯編8086/8088的指令系統(tǒng)和286,386非保護(hù)方式的指令.386P可匯編8086/8088的指令系統(tǒng)和286,386的指令系統(tǒng)(保護(hù)方式和非保護(hù)方式).486/.486C可匯編8086/8088的指令系統(tǒng)和286,386,486非保護(hù)方式的指令.486P可匯編8086/8088的指令系統(tǒng)和286,386,486的指令系統(tǒng)(保護(hù)方式和非保護(hù)方式).586/.586C可匯編8086/8088的指令系統(tǒng)和286,386,486,Pentium非保護(hù)方式的指令.586P可匯編8086/8088的指令系統(tǒng)和286,386,486,Pentium的指令系統(tǒng)(保護(hù)方式和非保護(hù)方式)274.3.2模式定義偽指令格式:.MODEL存儲(chǔ)模式[,語(yǔ)言類(lèi)型][,操作系統(tǒng)類(lèi)型][,堆棧類(lèi)型]功能:定義程序的存儲(chǔ)模式。TINY(微型模式)只有一個(gè)邏輯段,不大于64KBSMALL(小型模式)可以有一個(gè)代碼段和一個(gè)程序段,每段不大于64KBCOMPACT(緊湊模式)可以有一個(gè)代碼段(不大于64KB),多個(gè)數(shù)據(jù)段(超過(guò)64KB)MEDIUM(中型模式)可以有多個(gè)代碼段(大于64KB),一個(gè)數(shù)據(jù)段(不大于64KB)LARGE(大型模式)可以有多個(gè)代碼段(大于64KB)和多個(gè)數(shù)據(jù)段(大于64KB)靜態(tài)數(shù)據(jù)限制在64KB內(nèi)HUGE(巨型模式)可以有多個(gè)代碼段(大于64KB)和多個(gè)數(shù)據(jù)段(大于64KB)靜態(tài)數(shù)據(jù)不再局限于64KB內(nèi)FLAT(平展模式)用于創(chuàng)建一個(gè)32位的程序,只能運(yùn)行在32位X86CPU上。284.3.3段定義偽指令1.SEGMENT/ENDS格式:段名SEGMENT[定位類(lèi)型][,組合類(lèi)型][,字長(zhǎng)選擇][,類(lèi)別]
…段名ENDS功能:用于定義程序中的一個(gè)邏輯段,給該邏輯段賦予一個(gè)段名,通過(guò)定位類(lèi)型,組合類(lèi)型,字長(zhǎng)選擇,類(lèi)別等規(guī)定邏輯段的特性。292.ASSUME格式:ASSUME段寄存器:段名[,段寄存器:段名[,段寄存器:段名…]]功能:用于指明程序中的邏輯段和物理段之間的關(guān)系。ASSUME指令通常放在代碼段的開(kāi)始,即所有指令性指令的前面。需要注意的是ASSUME偽指令僅僅指明了程序中的邏輯段和物理段之間的關(guān)系,但是并未建立二者之間的真正聯(lián)系,即沒(méi)有給段寄存器賦值。304.3.3數(shù)據(jù)定義偽指令數(shù)據(jù)定義偽指令的格式:[變量名]助記符操作數(shù),[操作數(shù)…];[注釋]助記符:即數(shù)據(jù)定義偽指令,用于指明變量的類(lèi)型。有下面5種字節(jié)數(shù)據(jù)定義偽指令DB(DefineByte)用于定義字節(jié)類(lèi)型的變量,其后的每一個(gè)操作數(shù)分配一個(gè)存儲(chǔ)單元,即一個(gè)字節(jié)。字?jǐn)?shù)據(jù)定義偽指令DW(DefineWord)用于定義字類(lèi)型的變量,其后的每一個(gè)操作數(shù)分配兩個(gè)存儲(chǔ)單元,即兩個(gè)字節(jié)。雙字?jǐn)?shù)據(jù)定義偽指令DD(DefineDoubleWord)用于定義雙字類(lèi)型的變量,其后的每一個(gè)操作數(shù)分配四個(gè)存儲(chǔ)單元,即四個(gè)字節(jié)。318字節(jié)數(shù)據(jù)定義偽指令DQ(DefineQuadword)用于定義8字節(jié)類(lèi)型的變量,其后的每一個(gè)操作數(shù)分配8個(gè)存儲(chǔ)單元,即8個(gè)字節(jié)。數(shù)據(jù)存放時(shí),高位雙字占大地址的4個(gè)存儲(chǔ)單元,低位雙字占小地址的4個(gè)存儲(chǔ)單元,高位雙字和低位雙字按照雙字存放原則存放。10字節(jié)數(shù)據(jù)定義偽指令DT(DefineTenbytes)用于定義10字節(jié)類(lèi)型的變量,其后的每一個(gè)操作數(shù)分配10個(gè)存儲(chǔ)單元,即10個(gè)字節(jié)。數(shù)據(jù)存放時(shí)低位字節(jié)占小地址存儲(chǔ)單元,高位字節(jié)占大地址存儲(chǔ)單元。32操作數(shù):操作數(shù)是變量定義時(shí)分配的存儲(chǔ)空間中賦予的初值,可以是常數(shù)、字符串、表達(dá)式、變量和標(biāo)號(hào)等。1.操作數(shù)是一個(gè)或多個(gè)數(shù)值常量如果是多個(gè)操作數(shù)時(shí),操作數(shù)之間用,間隔。例:D1DB12H,25H
;定義字節(jié)類(lèi)型變量D1,分配兩個(gè)存儲(chǔ)單元,初值為12H,25HD2DW1234H;定義字節(jié)類(lèi)型變量D2,分配兩個(gè)存儲(chǔ)單元,初值為34H,12HD3DD1A2B3C4DH;定義雙字類(lèi)型變量D3,分配四個(gè)存儲(chǔ)單元,初值為4DH,3CH;2BH,1AH332.操作數(shù)是一個(gè)或者多個(gè)可求值的數(shù)值表達(dá)式例:DADB3*4,5+6*2;定義字節(jié)類(lèi)型變量DA,分配兩個(gè)存儲(chǔ)單元,初值為12和173.操作數(shù)是字符串常量例:D4DB‘12’;定義字節(jié)類(lèi)型變量D4,分配兩個(gè)存儲(chǔ)單元,初值為31H,32HD5DW‘12’;定義字節(jié)類(lèi)型變量D5,分配兩個(gè)存儲(chǔ)單元,初值為32H,31H344.操作數(shù)部分為??可以用于DB、DW、DD類(lèi)型的變量定義中,其作用是給定義的變量分配存儲(chǔ)空間,但是不賦予初值,一般用于定義存放結(jié)果的變量。例:DA1DB?;定義字節(jié)類(lèi)型變量DA1,分配1個(gè)存儲(chǔ)單元,不賦初值DA2DD?;定義字節(jié)類(lèi)型變量DA2,分配4個(gè)存儲(chǔ)單元,不賦初值355.操作數(shù)部分為帶DUP的表達(dá)式DUP表達(dá)式格式:
重復(fù)次數(shù)DUP(表達(dá)式)DUP表達(dá)式功能:
表達(dá)式重復(fù)預(yù)置,預(yù)置次數(shù)由重復(fù)次數(shù)確定例:TTADB50DUP(0);分配50個(gè)存儲(chǔ)單元,預(yù)置初值為0TTBDW100DUP(?);分配200個(gè)存儲(chǔ)單元,未預(yù)置初值TTCDB10DUP(‘ABC‘,0BH);分配40個(gè)存儲(chǔ)單元,重復(fù)預(yù)置初值41H;42H,43H,0BH,重復(fù)預(yù)置10次366.操作數(shù)是地址表達(dá)式當(dāng)操作數(shù)是地址表達(dá)式時(shí),只能用DW或DD定義變量。操作數(shù)可以是變量或者標(biāo)號(hào)加減常數(shù)。例:ZERODB0ONEDW1234H,5678HTWODWZERO;將變量ZERO的偏移地址賦給變量TWOTHREEDDTWO;將變量TWO的段地址和偏移地址賦給變量THREE;其中段地址為高字,偏移地址為低字FOURDBTWO-ONE;將TWO和ONE變量偏移地址的差值賦給變量FOUR374.3.5符號(hào)定義偽指令等值語(yǔ)句EQU格式:符號(hào)名EQU表達(dá)式功能:給EQU后的表達(dá)式賦予EQU前的符號(hào)名,在其后的編程中可以使用符號(hào)代替對(duì)應(yīng)的表達(dá)式,提高程序的可讀性和可維護(hù)性。例:XXEQU2010H;給常數(shù)2010H賦予一個(gè)符號(hào)名XXADSEQU[BX+80H];給地址表達(dá)式[BX+80H]賦予一個(gè)符號(hào)名ADSLODEQUMOV;給指令MOV賦予一個(gè)符號(hào)名LOD注意:利用EQU定義的符號(hào),在未經(jīng)解除前不能重復(fù)定義。382.等號(hào)語(yǔ)句=格式:符號(hào)名=表達(dá)式功能:等號(hào)語(yǔ)句的功能與EQU語(yǔ)句的功能完全相同,=語(yǔ)句與EQU語(yǔ)句的差別在于使用=語(yǔ)句定義的符號(hào)可以重復(fù)定義。例:AA=15;定義AA,AA的值為15AA=25+AA;重新定義AA,AA的值為40393.LABEL格式:名字LABEL類(lèi)型功能:定義變量或標(biāo)號(hào)的類(lèi)型。例:DBUFFER1LABELWORDDBUFFER2DB20DUP(0)例:XX_FARLABELFARXX:MOVAX,1234H404.3.6過(guò)程定義偽指令格式:過(guò)程名PROC[NEAR/FAR]
…RET過(guò)程名ENDP41例:過(guò)程XX的定義示例,過(guò)程XX與主調(diào)程序在同一個(gè)邏輯段MYCODE。MYCODE SEGMENTXX PROCNEAR DECCX RETXX ENDPSTART: MOVCX,0FFAH
┆ CALLXX
┆MYCODE ENDS42例:過(guò)程XX的定義示例,過(guò)程XX與主調(diào)程序在不在同一個(gè)邏輯段。MYCODE1SEGMENT
…XXPROCFAR…RETXXENDP…MYCODE1ENDSMYCODE2SEGMENTCALLXX…MYCODE2ENDS434.3.8程序計(jì)數(shù)器與定位偽指令1.程序計(jì)數(shù)器$“$”表示當(dāng)前位置的偏移地址。例:DATASEGMENT ADB10H,20H,30H,40H,50H;A的偏移地址為0000H,占用了5個(gè)存儲(chǔ)單元LENGTHAEQU$-A;LENGTHA的值為0005H-0000H=0005HDATA ENDS44
2.ORG格式:ORG表達(dá)式功能:將表達(dá)式的值作為后續(xù)數(shù)據(jù)或者指令的偏移地址例:DATASEGMENT ORG200HST1 DB10H,20H,30HLENGTHEQU$-ST1ST2 DW? ORG400HST3 DW123H,456H;給變量ST3在偏移地址為400H的位置分配存儲(chǔ)單元DATA ENDS453.EVEN格式:EVEN功能:規(guī)定后續(xù)程序或數(shù)據(jù)從偶地址開(kāi)始存放。當(dāng)默認(rèn)地址為偶數(shù)時(shí),不做調(diào)整,默認(rèn)地址為奇數(shù)時(shí),則偏移地址加1,指向后續(xù)的偶地址單元。例:DATASEGMENT DADB‘A’ EVEN;當(dāng)前偏移地址為0001H,調(diào)整,偏移地址為0002H DBDW1234HDATAENDS464.3.9模塊定義與結(jié)束偽指令1.NAME格式:NAME模塊名功能:用于給源程序代碼賦予一個(gè)模塊名。源代碼文件經(jīng)匯編后的目標(biāo)程序?qū)⑹褂肗AME定義的模塊名,鏈接時(shí)使用,如果源代碼文件沒(méi)有定義模塊名,將使用源代碼文件名進(jìn)行鏈接。2.END格式:END[標(biāo)號(hào)]功能:表示源程序到此結(jié)束。473.PUBLIC格式:PUBLIC符號(hào)[,符號(hào)…]用于說(shuō)明源代碼中的某個(gè)符號(hào)(標(biāo)號(hào),變量,過(guò)程名等)是公共的,PUBLIC偽指令說(shuō)明的符號(hào)可以被其他模塊引用。4.EXTRN格式:EXTRN符號(hào)名:類(lèi)型[,符號(hào)名:類(lèi)型…]EXTRN用于說(shuō)明當(dāng)前源代碼中的某些符號(hào)是其他模塊中已經(jīng)用PUBLIC聲明的符號(hào)。484.4宏指令1.宏指令定義格式:宏指令名MACRO[形參,…]…;宏定義體ENDM可以在源程序中調(diào)用經(jīng)過(guò)定義的宏指令,調(diào)用格式:宏指令名[實(shí)參1],[實(shí)參2],…49例:試編寫(xiě)一個(gè)宏定義,對(duì)兩個(gè)帶符號(hào)字?jǐn)?shù)據(jù)進(jìn)行交換。EXCHANGEMACROOPRD1,OPRD2 PUSHAXPUSHDXMOVAX,OPRD1MOVDX,OPRD2 MOVOPRD2,AXMOVOPRD1,DXPOPDXPOPAXENDM50EXCHANGESI,DI在匯編時(shí)進(jìn)行宏擴(kuò)展,可得如下指令代碼MAX_TWOSI,DI+PUSHAX+PUSHDX+MOVAX,SI+MOVDX,DI+MOVDI,AX+MOVSI,DX+POPDX+POPAX51例:將內(nèi)存數(shù)據(jù)區(qū)自1000H開(kāi)始的10個(gè)字節(jié)數(shù)據(jù)傳送至2000H開(kāi)始的存儲(chǔ)單元。DATAMOVMACROSRC,DST,COUNT,WIDTHMOVAX,DSMOVES,AXMOVSI,SRCMOVDI,DSTMOVCX,COUNTCLDREPMOVS&WIDTHENDM52DATAMOV1000H,2000H,10,B進(jìn)行宏擴(kuò)展后,指令代碼如下DATAMOV1000H,2000H,10,B+MOVAX,DS+MOVES,AX+MOVSI,1000H+MOVDI,2000H+MOVCX,10+CLD+REPMOVSB532.取消宏定義宏定義清除偽指令PURGE可以取消用MACRO定義的宏指令或者用EQU定義的符號(hào)。格式:PURGE宏指令名1[,宏指令名2…]544.3匯編語(yǔ)言程序設(shè)計(jì)4.5.1匯編語(yǔ)言程序設(shè)計(jì)步驟分析問(wèn)題。根據(jù)實(shí)際問(wèn)題抽象出其數(shù)學(xué)模型。確定算法。根據(jù)算法繪制流程圖分配存儲(chǔ)空間和工作單元編寫(xiě)程序并進(jìn)行靜態(tài)檢查上機(jī)調(diào)試554.5.2順序結(jié)構(gòu)程序設(shè)計(jì)例:在內(nèi)存數(shù)據(jù)區(qū)2100H單元存有2位組合BCD碼,將其變成分離BCD碼,低位存于2100H單元,高位存于2101H單元。分析:2100H單元存放的2位BCD碼,首先將2位數(shù)分離,分離出低4位的方法,就是數(shù)據(jù)與0FH進(jìn)行邏輯與運(yùn)算,分離出高4位的方法,是將數(shù)據(jù)右移4位。56程序代碼如下:DATASEGMENTORG2100HZBCDDB56HFBCDDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAMAINPROCFARSTART:MOVAX,DATAMOVDS,AXLEABX,ZBCDMOVAL,[BX]ANDZBCD,0FHMOVCL,4SHRAL,CLMOV[BX+1],ALMOVAH,4CHINT21HMAINENDPCODEENDSENDSTART57例:已知某班微機(jī)原理課程的成績(jī)按照學(xué)號(hào)從小到大的順序排列在SCOCE表格中,要查的學(xué)生學(xué)號(hào)存放在變量NO中,查找學(xué)生的成績(jī),將成績(jī)存放到RESULT單元。程序代碼如下:DATASEGMENTSCOREDB85,76,67,57,82,74,92,95,83,68NODB7RESULTDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAMAINPROCFARSTART:MOVAX,DATAMOVDS,AXLEABX,SCOREMOVAL,NODECALXLATMOVRESULT,ALMOVAH,4CHINT21HCODEENDSENDSTART584.5.3分支結(jié)構(gòu)程序設(shè)計(jì)例:將鍵盤(pán)輸入的一個(gè)小寫(xiě)字母用大寫(xiě)字母形式在屏幕上顯示出來(lái)。程序代碼如下:CODESEGMENTASSUMECS:CODEMAINPROCFARSTART:PUSHDSMOVAX,0PUSHAXMOVAH,1INT21H
CMPAL,'a'JBOVERFLOWCMPAL,'z'JAOVERFLOWSUBAL,20HMOVDL,ALMOVAH,06HINT21HOVERFLOW:RETMAINENDPENDSTART59例:內(nèi)存數(shù)據(jù)區(qū)自1000H開(kāi)始存放了3個(gè)帶符號(hào)字節(jié)數(shù)據(jù),將其中的最大值送至其后的RESULT單元。程序代碼如下:DATASEGMENTORG1000HBUFDB13H,89H,76HRESULTDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAMAINPROCFARSTART:MOVAX,DATAMOVDS,AX60MOVBX,[1000H]MOVAL,[BX]INCBXCMPAL,[BX]JGENEXTMOVAL,[BX]NEXT:INCBXCMPAL,[BX]JGEEXITMOVAL,[BX]MOVRESULT,ALEXIT:MOVAH,4CHINT21HMAINENDPCODEENDSENDSTART61例4-34:編寫(xiě)程序?qū)崿F(xiàn)符號(hào)函數(shù)的功能。1X>00X=0-1X<0Y=符號(hào)函數(shù):程序代碼如下:DATASEGMENTXDB-8YDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAMAINPROCFARSTART:MOVAX,DATAMOVDS,AX62MOVAL,XANDAL,ALJSNEGAJZZEROMOVY,1JMPEXITNEGA:MOVY,-1JMPEXITZERO:MOVY,0EXIT:MOVAH,4CHINT21HMAINENDPCODEENDSENDSTART634.5.4循環(huán)結(jié)構(gòu)程序設(shè)計(jì)循環(huán)結(jié)構(gòu)程序通常包含3部分:循環(huán)初始條件,循環(huán)體,循環(huán)結(jié)束條件。循環(huán)初始條件:是指循環(huán)體執(zhí)行前的初始狀態(tài),通常通過(guò)初始化寄存器和存儲(chǔ)單元來(lái)完成。循環(huán)體:循環(huán)體是循環(huán)程序的核心部分,包括循環(huán)工作部分和循環(huán)控制部分。循環(huán)結(jié)束條件:在循環(huán)程序設(shè)計(jì)中必須給出循環(huán)結(jié)束條件,控制循環(huán)的結(jié)束,不能結(jié)束的循環(huán)為死循環(huán)。64初始化循環(huán)體循環(huán)計(jì)數(shù)計(jì)數(shù)次數(shù)完成?結(jié)束YESNOLOOP型循環(huán)執(zhí)行過(guò)程65初始化化始化循環(huán)條件滿(mǎn)足?循環(huán)體結(jié)束化始化YESNOWHILE型循環(huán)執(zhí)行過(guò)程66初始化化始化循環(huán)條件滿(mǎn)足?循環(huán)體結(jié)束化始化YESNOUNTIL型循環(huán)執(zhí)行過(guò)程6767例:內(nèi)存數(shù)據(jù)去自1000H單元開(kāi)始的10個(gè)存儲(chǔ)單元存儲(chǔ)的10個(gè)帶符號(hào)字節(jié)數(shù)據(jù),編程統(tǒng)計(jì)其中正數(shù)、負(fù)數(shù)和零的個(gè)數(shù),并存放在其后的POSINUM,NEGNUM和ZERONUM單元中。程序代碼如下:DATASEGMENTORG1000HBUFDB10H,23H,97H,0F3H,78H,94H,48H,0A0H,98H,54HCOUNTEQU$-BUFPOSINUMDB?NEGNUMDB?ZERONUMDB?DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODEMAINPROCFARSTART:PUSHDSMOVAX,0PUSHAX68MOVAX,DATAMOVDS,AXMOVBX,OFFSETBUFMOVCX,COUNTMOVAH,0MOVDX,0AGAIN:MOVAL,[BX]ANDAL,ALJZZEROJSNEGTIVEINCAHJMPNEXTNEGTIVE:INCDLJMPNEXTZERO:INCDHNEXT:INCBXLOOPAGAINMOVPOSINUM,AHMOVNEGNUM,DLMOVZERONUM,DHRETMAINENDPCODEENDSENDSTART69例:在一串給定個(gè)數(shù)的帶符號(hào)字?jǐn)?shù)據(jù)中尋找最大值,將最大值和最大值地址分別存放至MAX和MAXADDR存儲(chǔ)單元。DATASEGMENTBUFDW12H,253AH,9036H,548AH,8778H,503BH,9388H,318CH,0FA43H,655BHLENEQU$-BUFMAXDW?MAXADDRDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAMAINPROCFARSTART:MOVAX,DATAMOVDS,AX70LEABX,BUFMOVCX,LENSHRCX,1MOVAX,[BX]MOVSI,BXINCBXINCBXDECCXAGAIN:CMPAX,[BX]JGENEXTMOVAX,[BX]MOVSI,BXNEXT:INCBXINCBXLOOPAGAINMOVMAX,AXMOVMAXADDR,SIMOVAH,4CHINT21HMAINENDPCODEENDSENDSTART71例:假設(shè)內(nèi)存數(shù)據(jù)區(qū)自3000H開(kāi)始存有一串以’$’結(jié)束的字符串,編程統(tǒng)計(jì)其中的'#'的個(gè)數(shù)并顯示。程序代碼如下:DATASEGMENT ORG3000HSTRDB'INV0&FAL2V#J76LH###TT$'DATAENDSCODESEGMENT ASSUMEDS:DATA,CS:CODE MOVAX,DATA MOVDS,AX LEASI,STR MOVBX,0
72CHECK:CMPBYTEPTR[SI],'$' JNENEXTJMPOUTPUTNEXT:CMPBYTEPTR[SI],'#'JNENEINCBXNE:INCSIJMPCHECKOUTPUT:CMPBX,10JBOP_DIGITMOVAX,BXMOVCL,10DIVCL73MOVBX,AXADDAL,30HMOVAH,6INT21HADDBH,30HMOVDL,BHMOVAH,6INT21HJMPEXITOP_DIGIT:ADDBL,30HMOVDL,BLMOVAH,6INT21HEXIT:MOVAH,4CHINT21HCODEENDS ENDSTART744.5.5過(guò)程設(shè)計(jì)與調(diào)用1.用寄存器傳遞參數(shù)用寄存器進(jìn)行參數(shù)傳遞就是把參數(shù)存放于約定的寄存器中,對(duì)于帶有出口參數(shù)的寄存器不能進(jìn)行保護(hù)。用寄存器傳遞參數(shù)的方法使用方便,是一種常用的參數(shù)傳遞方法。75例:將上例中顯示數(shù)字字符顯示部分設(shè)計(jì)為過(guò)程。程序代碼如下:DATASEGMENT ORG3000HSTRDB'INV0&FAL2V#J76LH###TT$'DATAENDSCODESEGMENT ASSUMEDS:DATA,CS:CODE MOVAX,DATA MOVDS,AX LEASI,STR MOVBX,0
76CHECK:CMPBYTEPTR[SI],'$' JNENEXTJMPOUTPUTNEXT:CMPBYTEPTR[SI],'#'JNENEINCBXNE:INCSIJMPCHECKOUTPUT:MOVAX,BXCMPAX,10JBONENUMMOVAX,BXMOVCL,10DIVCLMOVBX,AXCALLOP_DIGITMOVAL,BHCALLOP_DIGIT77JMPEXITONENUM:CALLOP_DIGITOP_DIGITPROCNEARADDAL,30HMOVDL,ALMOVAH,6INT21HRETOP_DIGITENDPEXIT:MOVAH,4CHINT21HCODEENDS ENDSTART782.用變量傳遞參數(shù)對(duì)于處在同一個(gè)源文件中的主調(diào)程序和過(guò)程可以共享一個(gè)變量,實(shí)現(xiàn)參數(shù)的傳遞;對(duì)于不在一個(gè)源文件中的主調(diào)程序和過(guò)程,利用PUBLIC/EXTERN聲明后,也可以利用變量傳遞參數(shù)。例:已知某小組10個(gè)同學(xué)的成績(jī),計(jì)算10個(gè)同學(xué)的平均成績(jī),并將其存入AVER單元。程序代碼如下:DATASEGMENT SCOREDB75,87,68,93,84,79,65,77,92,83 COUNTEQU$-SCORE AVERDB?DATAENDSCODESEGMENT ASSUMECS:CODE,DS:DATA START:MOVAX,DATA MOVDS,AX
79CALLAVER_FUNC MOVAH,4CH INT21H AVER_FUNCPROCNEAR PUSHAX PUSHBX PUSHCX LEABX,SCORE MOVCL,COUNT MOVCH,0 XORAX,AX SCORE_ADD:ADDAL,[BX] ADCAH,0 INCBX LOOPSCORE_ADD MOVCL,COUNT DIVCL
80MOVAVER,AL POPCX POPBX POPAX RET AVER_FUNCENDPCODEENDS ENDSTART813.用堆棧傳遞參數(shù)由主調(diào)程序?qū)⑷肟趨?shù)壓入堆棧,在過(guò)程中將數(shù)據(jù)從堆棧彈出,實(shí)現(xiàn)入口參數(shù)的傳遞;過(guò)程將出口參數(shù)壓入堆棧,在主調(diào)程序中將數(shù)據(jù)從堆棧彈出,實(shí)現(xiàn)出口參數(shù)的傳遞。82例:已知某小組10個(gè)同學(xué)的成績(jī),計(jì)算10個(gè)同學(xué)的平均成績(jī),并將其存入AVER單元。要求參數(shù)利用堆棧傳遞。DATASEGMENT SCOREDB75,87,68,93,84,79,65,77,92,83 COUNTEQU$-SCORE AVERDB?DATAENDSCODESEGMENT ASSUMECS:CODE,DS:DATA START:MOVAX,DATA MOVDS,AX MOVAX,OFFSETSCORE PUSHAX MOVAX,COUNT PUSHAX
83CALLSCORE_AVER SCORE_AVERPROCNEAR PUSHBP MOVBP,SP MOVBX,[BP+6] MOVCX,[BP+4] XORAX,AX SCORE_ADD:ADDAL,[BX] ADCAH,0 INCBX LOOPSCORE_ADD MOVCL,COUNT DIVCL MOVAVER,AL POPBP RET SCORE_AVERENDP
MOVAH,4CH INT21HCODEENDS ENDSTART844.6.1
DOS系統(tǒng)功能調(diào)用4.6DOS和BIOS系統(tǒng)功能調(diào)用設(shè)備管理類(lèi)目錄管理類(lèi)文件管理類(lèi)其他類(lèi)85DOS系統(tǒng)功能調(diào)用一般遵循如下3個(gè)步驟:1按照DOS系統(tǒng)功能調(diào)用的入口參數(shù)要求送入口參數(shù),無(wú)入口參數(shù)的忽略該步驟。2將DOS系統(tǒng)功能調(diào)用的子程序編號(hào)送至AH。3給出DOS子程序請(qǐng)求中斷指令,即INT21H。861.從鍵盤(pán)輸入一個(gè)字符并回顯(1號(hào)調(diào)用)功能:等待從鍵盤(pán)輸入一個(gè)字符,直到有鍵按下,有鍵按下后,在顯示器上顯示該字符,同時(shí)將該鍵的ASCII碼送至AL。入口參數(shù):無(wú)出口參數(shù):鍵盤(pán)上按下鍵的ASCII碼送至AL,并在顯示器上顯示該字符。例:MOVAH,1;功能號(hào)送AHINT21H;DOS功能調(diào)用872.從鍵盤(pán)輸入一個(gè)字符不回顯(7號(hào)調(diào)用)功能:等待從鍵盤(pán)輸入一個(gè)字符,直到有鍵按下,有鍵按下后,將該鍵的ASCII碼送至AL。入口參數(shù):無(wú)出口參數(shù):鍵盤(pán)上按下鍵的ASCII碼送至AL,不在顯示器上顯示該字符。例:MOVAH,7;功能號(hào)送AHINT21H;DOS功能調(diào)用883.從鍵盤(pán)輸入一個(gè)字符串(10號(hào)調(diào)用)功能:將從鍵盤(pán)輸入的以回車(chē)結(jié)束的一串字符送至指定的存儲(chǔ)區(qū)域。入口參數(shù):DS:DX指向接收字符串的存儲(chǔ)區(qū)的首存儲(chǔ)單元,接收字符串的存儲(chǔ)區(qū)的第一個(gè)字節(jié)存入用戶(hù)設(shè)置的接收存儲(chǔ)區(qū)可接收的最大字符數(shù)(含回車(chē))。出口參數(shù):將實(shí)際輸入的字符串的字符個(gè)數(shù)(不含回車(chē))存放到接收字符串存儲(chǔ)區(qū)的第二個(gè)字節(jié)存儲(chǔ)單元,實(shí)際輸入的字符串從接收字符串存儲(chǔ)區(qū)的第三個(gè)存儲(chǔ)單元開(kāi)始存放。89例:DATASEGMENT BUFDB20;用戶(hù)設(shè)置的接收字符數(shù)DB?;預(yù)留單元,接收實(shí)際輸入的字符數(shù)DB20DUP(?);預(yù)留單元,接收輸入的字符串DATAENDSCODESEGMENT
… MOVAX,DATA MOVDS,AX;DS指向接收字符串存儲(chǔ)區(qū)的首存儲(chǔ)單元 MOVDX,OFFSETBUF MOVAH,10;子程序編號(hào)送至AH INT21H;DOS功能調(diào)用
…CODEENDS904.在顯示器上顯示一個(gè)字符(2號(hào)調(diào)用)功能:在顯示器上顯示一個(gè)字符。入口參數(shù):將要顯示的字符的ASCII碼送至DL。出口參數(shù):無(wú)。例:MOVDL,'$';入口參數(shù)設(shè)置,'$'的ASCII碼送至DLMOVAH,2;子程序編號(hào)送至AHINT21H;DOS功能調(diào)用915.在顯示器上顯示一個(gè)字符串(9號(hào)調(diào)用)功能:在顯示器上顯示一個(gè)字符串(字符串必須以'$'結(jié)束,'$'不顯示)。入口參數(shù):DS:DX指向以'$'結(jié)尾的字符串的首字符對(duì)應(yīng)的存儲(chǔ)單元。出口參數(shù):無(wú)。92例:DATASEGMENT STRDB'HelloWorld!$';以'$'結(jié)束的字符串DATAENDSCODESEGMENT…MOVAX,DATAMOVDS,AX;DS指向字符串首字符對(duì)應(yīng)的存儲(chǔ)單元MOVDX,OFFSETSTR;DX指向字符串首字符對(duì)應(yīng)的存儲(chǔ)單元MOVAH,9;子程序編號(hào)送至AHINT21H;DOS功能調(diào)用…CODEENDS936.鍵盤(pán)輸入字符/顯示器輸出字符(6號(hào)調(diào)用)功能:從鍵盤(pán)輸入一個(gè)字符或者在顯示器上輸出一個(gè)字符。輸入功能時(shí):入口參數(shù):將0FFH送至DL,表示從鍵盤(pán)輸入一個(gè)字符。出口參數(shù):如果有鍵按下,ZF=0,按下字符的ASCII碼送至AL寄存器;如果沒(méi)有鍵按下,ZF=1。輸出功能時(shí):入口參數(shù):將要輸出字符的ASCII碼送至DL(不能為0FFH)。出口參數(shù):無(wú)。94例:6號(hào)調(diào)用從鍵盤(pán)輸入一個(gè)字符MOVDL,0FFH;入口參數(shù)0FFH送至DL,表示輸入功能MOVAH,6;子程序編號(hào)送AHINT21H;DOS功能調(diào)用例:6號(hào)調(diào)用在顯示器上輸出一個(gè)字符MOVDL,'A';入口參數(shù)設(shè)置,'A'的ASCII碼送至DLMOVAH,6;子程序編號(hào)送至AHINT21H;DOS功能調(diào)用95例:從鍵盤(pán)輸入一串小寫(xiě)字母,將其改為大寫(xiě)字母后輸出。程序代碼如下:DATASSEGMENTSTRING1DB'Pleaseinputsomesmallletters$'STRINGDB'THECONVERTEDLETTER:$'BUFFDB100DB?DB100DUP(?)DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AXMOVDX,OFFSETSTRING1MOVAH,09HINT21H96MOVDX,OFFSETBUFFMOVAH,0AHINT21HMOVDX,OFFSETSTRINGMOVAH,09HINT21HMOVAH,06HXORSI,SI MOVCL,BUFF[1]L1:MOVDL,BUFF[SI+2]CMPDL,'a'JBL2CMPDL,'z'JAL2SUBDL,20HL2:INT21HINCSIDECCLJNZL1MOVAH,4CHINT21HCODESENDSENDSTART974.7.1嵌入?yún)R編4.7匯編語(yǔ)言與C++語(yǔ)言混合編程格式如下:……/*C或C++代碼*/__asm{……/*匯編語(yǔ)言代碼*/}……/*C或C++代碼*/98例:利用嵌入?yún)R編計(jì)算十個(gè)同學(xué)高等數(shù)學(xué)成績(jī)的最高成績(jī)。方法一:匯編語(yǔ)言方案,代碼如下DATASEGMENT SCOREDB87,65,78,77,84,56,93,90,66,85 COUNTEQU$-SCORE MAXDB?DATAENDSCODESEGMENT ASSUMECS:CODE,DS:D
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 專(zhuān)業(yè)化通風(fēng)空調(diào)安裝項(xiàng)目協(xié)議2024版A版
- 三方債務(wù)責(zé)任轉(zhuǎn)移協(xié)議2024版
- 2025年度農(nóng)業(yè)園區(qū)場(chǎng)地租賃安全管理合同范本4篇
- 專(zhuān)業(yè)勞務(wù)分包協(xié)議(2024年版)樣本版A版
- 二零二四實(shí)習(xí)生就業(yè)權(quán)益與培訓(xùn)協(xié)議范本規(guī)范5篇
- 2025年度測(cè)繪數(shù)據(jù)安全保密協(xié)議4篇
- 專(zhuān)業(yè)標(biāo)識(shí)標(biāo)牌定制及施工服務(wù)協(xié)議版B版
- 專(zhuān)業(yè)攝影委托協(xié)議細(xì)則(2024年)版B版
- 2024物業(yè)管理權(quán)轉(zhuǎn)讓服務(wù)合同
- 2024版食品安全購(gòu)銷(xiāo)合作合同范本一
- 微機(jī)原理與接口技術(shù)考試試題及答案(綜合-必看)
- 勞務(wù)投標(biāo)技術(shù)標(biāo)
- 研發(fā)管理咨詢(xún)項(xiàng)目建議書(shū)
- 濕瘡的中醫(yī)護(hù)理常規(guī)課件
- 轉(zhuǎn)錢(qián)委托書(shū)授權(quán)書(shū)范本
- 一種配網(wǎng)高空作業(yè)智能安全帶及預(yù)警系統(tǒng)的制作方法
- 某墓園物業(yè)管理日常管護(hù)投標(biāo)方案
- 蘇教版六年級(jí)數(shù)學(xué)上冊(cè)集體備課記載表
- 內(nèi)蒙古匯能煤電集團(tuán)有限公司長(zhǎng)灘露天煤礦礦山地質(zhì)環(huán)境保護(hù)與土地復(fù)墾方案
- 22S702 室外排水設(shè)施設(shè)計(jì)與施工-鋼筋混凝土化糞池
- 2013日產(chǎn)天籟全電路圖維修手冊(cè)45車(chē)身控制系統(tǒng)
評(píng)論
0/150
提交評(píng)論