全套課件-DOS-Windows匯編語(yǔ)言程序設(shè)計(jì)教程_第1頁(yè)
全套課件-DOS-Windows匯編語(yǔ)言程序設(shè)計(jì)教程_第2頁(yè)
全套課件-DOS-Windows匯編語(yǔ)言程序設(shè)計(jì)教程_第3頁(yè)
全套課件-DOS-Windows匯編語(yǔ)言程序設(shè)計(jì)教程_第4頁(yè)
全套課件-DOS-Windows匯編語(yǔ)言程序設(shè)計(jì)教程_第5頁(yè)
已閱讀5頁(yè),還剩518頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

課程性質(zhì)

本課程是計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)的必修課程、也是本系其它專(zhuān)業(yè)專(zhuān)業(yè)課程學(xué)習(xí)的專(zhuān)業(yè)基礎(chǔ)課程。教學(xué)目的

本課程向?qū)W生介紹匯編語(yǔ)言程序設(shè)計(jì)的方法和技巧。以PC計(jì)算機(jī)的匯編語(yǔ)言為主,通過(guò)課堂教學(xué)和上機(jī)實(shí)習(xí),使學(xué)生掌握DOS和Windows匯編序言程序設(shè)計(jì)的特點(diǎn)及技術(shù),即匯編工具M(jìn)asm611和Masm32的使用;掌握軟件與硬件的交互原理,即DOS、BIOS功能的調(diào)用方法、MSDN的使用、API的調(diào)用熟練使用使用調(diào)試工具Debug和W32Dasm理解高級(jí)語(yǔ)言的實(shí)現(xiàn)原理1.1匯編語(yǔ)言的由來(lái)與特點(diǎn)計(jì)算機(jī)語(yǔ)言是人與計(jì)算機(jī)之間交流信息的工具程序:用計(jì)算機(jī)語(yǔ)言描述的處理步驟。程序設(shè)計(jì):編制處理步驟的過(guò)程。計(jì)算機(jī)語(yǔ)言可分為三類(lèi):◆機(jī)器語(yǔ)言◆匯編語(yǔ)言◆通用語(yǔ)言面向機(jī)器設(shè)計(jì)的,低級(jí)語(yǔ)言面向程序設(shè)計(jì)人員設(shè)計(jì)的,高級(jí)語(yǔ)言機(jī)器指令是CPU能直接識(shí)別并執(zhí)行的指令它的表現(xiàn)形式是二進(jìn)制編碼。機(jī)器指令通常由操作碼和操作數(shù)兩部分組成,操作碼指出該指令所要完成的操作,即指令的功能,操作數(shù)指出參與運(yùn)算的對(duì)象,以及運(yùn)算結(jié)果所存放的位置等。

機(jī)器語(yǔ)言是直接用描述機(jī)器指令來(lái)設(shè)計(jì)程序,它是CPU能直接識(shí)別的唯一一種語(yǔ)言。也就是說(shuō),CPU能直接執(zhí)行用機(jī)器語(yǔ)言描述的程序。一、機(jī)器語(yǔ)言10100000;1號(hào)單元內(nèi)容取入AL寄存器000000010000000010001010;2號(hào)單元內(nèi)容取入AH寄存器00100110000000100000000000000000;AL的內(nèi)容與AH的內(nèi)容相加,結(jié)11100000;果存入AL中10100010;AL的內(nèi)容送入3號(hào)單元000000110000000011110100;停機(jī)一、機(jī)器語(yǔ)言一、機(jī)器語(yǔ)言缺點(diǎn):(1)機(jī)器語(yǔ)言難記,程序難編,易錯(cuò),調(diào)試?yán)щy;(2)機(jī)器語(yǔ)言通用性差。優(yōu)點(diǎn):(1)計(jì)算機(jī)能直接認(rèn)識(shí)、執(zhí)行;(2)算法刻畫(huà)細(xì)致;(3)程序緊湊,占用內(nèi)存空間少,執(zhí)行速度高;(4)能充分發(fā)揮計(jì)算機(jī)的硬件功能。二、匯編語(yǔ)言

隨著計(jì)算機(jī)的發(fā)展,產(chǎn)生了符號(hào)語(yǔ)言,上面的程序用符號(hào)語(yǔ)言編寫(xiě)如下:

MOV AL,DATA1 ;取第一個(gè)數(shù)據(jù)

MOV AH,DATA2 ;取第二個(gè)數(shù)據(jù)

ADD AL,AH ;求和

MOV RLT,AL ;保存結(jié)果

HLT ;停機(jī)二、匯編語(yǔ)言匯編語(yǔ)言:符號(hào)語(yǔ)言的詞法、語(yǔ)法規(guī)則及偽指令符號(hào)就構(gòu)成了匯編語(yǔ)言。匯編過(guò)程:把匯編語(yǔ)言程序翻譯成機(jī)器語(yǔ)言程序的過(guò)程稱為匯編過(guò)程。匯編程序:完成匯編過(guò)程的程序稱為匯編程序。匯編語(yǔ)言程序:程序設(shè)計(jì)人員用匯編語(yǔ)言編寫(xiě)的程序,是匯編程序加工的對(duì)象,稱為源程序。目標(biāo)程序:匯編程序產(chǎn)生的結(jié)果,也稱作是目的程序。DSEGSEGMENT ;數(shù)據(jù)段開(kāi)始DATA1DB15HDATA2DB26HRLTDB0DSEGENDS ;數(shù)據(jù)段結(jié)束CSEGSEGMENT ;代碼段開(kāi)始

ASSUMECS:CSEG,DS:DSEGSTART:MOVAX,DSEG ;設(shè)置數(shù)據(jù)段基址

MOVDS,AXMOVAL,DATA1 ;取第一個(gè)數(shù)據(jù)

MOVAH,DATA2 ;取第二個(gè)數(shù)據(jù)

ADDAL,AH ;求和

MOVRLT,AL ;保存結(jié)果

HLT ;停機(jī)CSEGENDS ;代碼段結(jié)束

ENDSTART ;源程序結(jié)束二、匯編語(yǔ)言種類(lèi):8086匯編,8051匯編等執(zhí)行過(guò)程:二、匯編語(yǔ)言匯編程序計(jì)算機(jī)源程序目標(biāo)程序連接程序可執(zhí)行程序二、匯編語(yǔ)言優(yōu)點(diǎn):(1)程序容易編制、出錯(cuò)機(jī)會(huì)少、容易調(diào)試;(2)算法刻畫(huà)細(xì)致;(3)程序緊湊、占用內(nèi)存空間少、執(zhí)行速度高;(4)能充分發(fā)揮計(jì)算機(jī)的硬件功能。缺點(diǎn):(1)計(jì)算機(jī)不能直接認(rèn)識(shí)、執(zhí)行,必須經(jīng)過(guò)匯編變?yōu)闄C(jī)器語(yǔ)言程序;(2)通用性差。通用語(yǔ)言:是用來(lái)對(duì)計(jì)算機(jī)操作步驟進(jìn)行描述的一整套標(biāo)記符號(hào)、表達(dá)格式、結(jié)構(gòu)及其使用的語(yǔ)法規(guī)則。種類(lèi):Pascal,BASIC,C,COBOL,Java等等例子(C):inti,j,k;

k=i+j;三、通用語(yǔ)言(高級(jí)語(yǔ)言)執(zhí)行過(guò)程:三、通用語(yǔ)言(高級(jí)語(yǔ)言)編譯程序計(jì)算機(jī)源程序目標(biāo)程序連接可執(zhí)行程序三、通用語(yǔ)言(高級(jí)語(yǔ)言)優(yōu)點(diǎn):(1)程序容易編制、出錯(cuò)機(jī)會(huì)少、容易調(diào)試;(2)容易表達(dá)算法;(3)通用性強(qiáng)。缺點(diǎn):(1)計(jì)算機(jī)不能直接認(rèn)識(shí)、執(zhí)行,必須經(jīng)過(guò)編譯變?yōu)闄C(jī)器語(yǔ)言程序;(2)編譯后生成的機(jī)器語(yǔ)言程序冗長(zhǎng)、占用內(nèi)存空間多、執(zhí)行速度低;(3)不能充分發(fā)揮計(jì)算機(jī)的硬件功能。計(jì)算機(jī)語(yǔ)言發(fā)展簡(jiǎn)史機(jī)器語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言FORTRANBASICCOBOLPASCALC/C++JAVA…...匯編語(yǔ)言的應(yīng)用領(lǐng)域匯編語(yǔ)言的優(yōu)點(diǎn)在于“與機(jī)器相關(guān)”和“執(zhí)行的高效率”。但也導(dǎo)致其可移植性差和調(diào)試難。所以,我們?cè)谶x用匯編語(yǔ)言時(shí)要根據(jù)實(shí)際的應(yīng)用環(huán)境,盡可能避免其缺點(diǎn)對(duì)整個(gè)應(yīng)用系統(tǒng)的影響。匯編語(yǔ)言主要適用于下列領(lǐng)域:要求執(zhí)行效率高、反應(yīng)快的領(lǐng)域,如操作系統(tǒng)內(nèi)核,工業(yè)控制,實(shí)時(shí)系統(tǒng)等。系統(tǒng)性能的瓶頸,或頻繁被使用子程序或程序段。與硬件資源密切相關(guān)的軟件開(kāi)發(fā),如設(shè)備驅(qū)動(dòng)程序。受存儲(chǔ)容量限制的應(yīng)用領(lǐng)域,如家用電器的計(jì)算機(jī)控制功能。其它高級(jí)語(yǔ)言不適合的開(kāi)發(fā)環(huán)境。學(xué)好匯編的意義理解硬件的控制原理:比如,控制磁盤(pán)驅(qū)動(dòng)器、控制鍵盤(pán)、控制鼠標(biāo),等等。在學(xué)過(guò)匯編以后,可以和我們以前學(xué)習(xí)過(guò)的《計(jì)算機(jī)原理》結(jié)合起來(lái),對(duì)硬件的控制,硬件與軟件的交互機(jī)理有深入的認(rèn)識(shí)。深入理解高級(jí)語(yǔ)言:我們學(xué)過(guò)C語(yǔ)言,知道C語(yǔ)言用cin和cout怎么輸入輸出字符,在匯編中可以知道它們是怎么實(shí)現(xiàn)的。其它語(yǔ)句如switch、if…else、goto等,其它函數(shù)如strcmp、strlen、strcmp,我們也可以模擬它們的實(shí)現(xiàn)。軟件的加密解密:存在盜版軟件,是因?yàn)橛腥藢?duì)軟件進(jìn)行破解,讓其保護(hù)方式失去作用。保護(hù)自己的軟件,需要對(duì)軟件進(jìn)行加密,匯編語(yǔ)言可以顯示它的威力。信息安全:尤其在反病毒方面。例如,病毒為什么能夠感染可執(zhí)行文件,假設(shè)一個(gè)文件感染了病毒,我們?cè)趺慈シ治鏊?,祛除病毒代碼,都只有匯編語(yǔ)言更適合一些。1.2系統(tǒng)結(jié)構(gòu)微型計(jì)算機(jī)的系統(tǒng)結(jié)構(gòu)微型計(jì)算機(jī)的系統(tǒng)包括硬件系統(tǒng)、軟件系統(tǒng)。首先介紹微型計(jì)算機(jī)系統(tǒng)的基本結(jié)構(gòu),然后分別以8086為例介紹16位微處理器的結(jié)構(gòu)和以80386為例介紹32位微處理器的結(jié)構(gòu)。

硬件系統(tǒng)硬件是指構(gòu)成計(jì)算機(jī)物理設(shè)備的實(shí)體(如CPU、顯卡、外部設(shè)備等),一臺(tái)計(jì)算機(jī)所有硬件的集合構(gòu)成了計(jì)算機(jī)的硬件系統(tǒng)。一般將其分為微處理器、主存儲(chǔ)器、接口電路、外部設(shè)備和系統(tǒng)總線等。微型計(jì)算機(jī)的系統(tǒng)結(jié)構(gòu)微處理器就是由控制器和算術(shù)邏輯部件(ALU)組成的中央處理器(即CPU)。它的作用是自動(dòng)地執(zhí)行各條指令,協(xié)調(diào)整個(gè)系統(tǒng)的工作。主存儲(chǔ)器是計(jì)算機(jī)的記憶裝置,用于存儲(chǔ)計(jì)算機(jī)當(dāng)前正在執(zhí)行的程序和數(shù)據(jù),我們通常接觸的是RAM,它是一種隨機(jī)存取存儲(chǔ)器。系統(tǒng)總線是將CPU與存儲(chǔ)器及外部設(shè)備連接起來(lái)的總線,它是用來(lái)傳輸信息的。按傳輸信息的種類(lèi)不同把系統(tǒng)總線分為地址總線(AB)、數(shù)據(jù)總線(DB)、控制總線(CB)。外部設(shè)備按功能可分為二類(lèi):一類(lèi)是與計(jì)算機(jī)進(jìn)行通訊的設(shè)備如鍵盤(pán)、打印機(jī)和顯示器等,這些設(shè)備與計(jì)算機(jī)的通訊是通過(guò)I/O接口實(shí)現(xiàn)的。另一類(lèi)是用來(lái)存儲(chǔ)信息的設(shè)備如磁盤(pán)、光盤(pán)等。

軟件系統(tǒng)軟件是指所有程序和數(shù)據(jù)的總稱。通常我們將它分為系統(tǒng)軟件和應(yīng)用軟件兩大類(lèi)。

系統(tǒng)軟件主要用來(lái)對(duì)計(jì)算機(jī)系統(tǒng)實(shí)際運(yùn)行進(jìn)行控制,管理和服務(wù)的。它主要分為操作系統(tǒng)(如DOS、Unix、windows、Macintosh、Linux等),診斷程序,調(diào)試程序和語(yǔ)言處理程序如編譯程序、解釋程序和匯編程序等。

應(yīng)用軟件指的是用戶自己編寫(xiě)的各類(lèi)應(yīng)用程序。INTEL8086/808816位機(jī)的系統(tǒng)結(jié)構(gòu)Intel8086/8088是第三代微處理器。在匯編語(yǔ)言一級(jí),它們與第二代微處理器8080/8085是兼容的。8086有20條地址線,16條數(shù)據(jù)線,直接尋址的內(nèi)存空間可達(dá)1MB(220)。8088和8086內(nèi)部組成完全相同,不同的是8088外部數(shù)據(jù)總線只有8條。因此8088被稱為準(zhǔn)16機(jī)。IBMPC機(jī)及其兼容機(jī)上廣泛采用了8088CPU。8086/8088CPU按功能可分為二個(gè)部分:總線接口單元(BIU:BusInterfaceUnit)和執(zhí)行單元(EU:ExecuteUnit)。BIU由地址加法器,指令指針寄存器IP,指令流字節(jié)隊(duì)列和四個(gè)段寄存器(ES、CS、SS、DS)所組成的,它主要負(fù)責(zé)CPU與存儲(chǔ)器及外部設(shè)備之間的信息傳輸。EU由算術(shù)邏輯單元ALU(ArithmeticandLogicUnit),執(zhí)行單元控制系統(tǒng),8個(gè)16位寄存器和一個(gè)標(biāo)志寄存器PSW組成,它負(fù)責(zé)全部指令的執(zhí)行,即負(fù)責(zé)向總線接口單元提供數(shù)據(jù)和地址,并對(duì)通用寄存器和標(biāo)志寄存器進(jìn)行管理,在ALU中進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算。8086/8088CPU的寄存器8086/8088的寄存器分為4種類(lèi)型:(1)通用寄存器(2)指針和變址寄存器(3)段寄存器(4)標(biāo)志寄存器(1)通用寄存器(2)指針與變址寄存器(3)段寄存器(4)標(biāo)志寄存器標(biāo)志寄存器長(zhǎng)度為16位,其中9個(gè)位有定義?!痢痢痢罯F

DFIFTFSF

ZF×AF×PF

×CF1514131211109876543210CF,CarryFlag,進(jìn)位標(biāo)志,兩數(shù)相加,最高位向前的進(jìn)位;或兩數(shù)相減最高位向前的借位,舉例:100000011000000000000001+1100000001000000111111111-1AF,AuxiliaryCarryFlag,輔助進(jìn)位標(biāo)志,兩數(shù)相加,第3位向前的進(jìn)位;或兩數(shù)相減第3位向前的借位,舉例:000010010000100000010001+000000000000000111111111-PF,ParityFlag,奇偶標(biāo)志,兩數(shù)操作(算術(shù)或邏輯),結(jié)果的低8位中含有1的位數(shù)是偶還是奇。舉例:100001011010110010011101100101111000010110000100∧結(jié)果:PF=1ZF,ZeroFlag,零標(biāo)志,操作結(jié)果為0,則ZF為1。舉例:111111110000000100000000+進(jìn)位1操作結(jié)果為0,ZF=1SF,SignFlag,符號(hào)標(biāo)志,操作結(jié)果的符號(hào)位(即最高位的狀態(tài))。舉例:100001011010110010011101100101111000010110000100結(jié)果:SF=1∧OF,OverflowFlag,溢出標(biāo)志,算術(shù)操作,結(jié)果超過(guò)目標(biāo)所能容納的范圍。舉例:01111110(+126)00000011(+3)10000001(-127)+8086/8088存儲(chǔ)器結(jié)構(gòu)存儲(chǔ)器的分段結(jié)構(gòu)實(shí)際地址的產(chǎn)生存儲(chǔ)器的分段結(jié)構(gòu)長(zhǎng)度≤64KB:段地址XXXX0H:偏移地址段地址:段首單元在整個(gè)1MB單元中的編號(hào),其最低4位一定為0,高16位保存在段寄存器中。偏移地址:?jiǎn)卧谖恢镁嚯x其所在段段首單元的距離,段首單元的偏移地址為0000H,后續(xù)的單元順次增1。因此,對(duì)于存儲(chǔ)空間中的任意一個(gè)單元,我們都可以通過(guò)段地址和段內(nèi)的偏移地址唯一地確定。存儲(chǔ)器的分段結(jié)構(gòu)存儲(chǔ)器的分段結(jié)構(gòu)

指針變址寄存器SI,DI,BP,SP存放的是在某一段內(nèi)尋址的單元的偏移地址。其中SI和DI存放的是數(shù)據(jù)段內(nèi)某單元的偏移地址,而B(niǎo)P和SP存放的則是堆棧段內(nèi)某單元的偏移地址。指令指針I(yè)P用以存放下一條要執(zhí)行的指令在當(dāng)前代碼段內(nèi)的偏移地址。實(shí)際地址的產(chǎn)生實(shí)際地址:也稱物理地址,是該單元在整個(gè)1MB單元中的編號(hào),用一個(gè)20位的二進(jìn)制數(shù)表示,范圍從00000H~FFFFFH,該地址是唯一的。CPU與存儲(chǔ)器進(jìn)行數(shù)據(jù)交換時(shí)所使用的地址即是實(shí)際地址。邏輯地址:由兩部分組成,即段地址和偏移地址。我們?cè)诰帉?xiě)程序時(shí)所使用的地址即是邏輯地址。首先將存儲(chǔ)器分段之后段地址的高16位存入相應(yīng)的段寄存器中,然后再通過(guò)段內(nèi)的偏移地址對(duì)所需的單元進(jìn)行訪問(wèn)。實(shí)際地址的產(chǎn)生段地址偏移地址00450H0000H 0001H 0002H 0003H 0004H

:::

FFFDH FFFEH FFFFH邏輯地址:::00450H00451H00452H00453H00454H:::1044DH1044EH1044FH

物理地址(實(shí)際地址)實(shí)際地址的產(chǎn)生舉例:CS=9482,IP=2350,實(shí)際地址為:1001010010000010001000110101000010010110101101110000一個(gè)實(shí)際地址可以對(duì)應(yīng)多個(gè)邏輯地址。堆棧堆棧是按先進(jìn)后出的原則在內(nèi)存中組織的一個(gè)特殊的存儲(chǔ)區(qū)域。該區(qū)域一端固定一端活動(dòng),固定的一端稱為棧底,而活動(dòng)的一端稱為棧頂。往堆棧中存入或取出信息總是在堆棧的棧頂單元進(jìn)行的。CPU中的堆棧指針指示器SP總是指向堆棧的棧頂,而堆棧段寄存器SS則指明了堆棧段的起始位置。8038632位機(jī)的系統(tǒng)結(jié)構(gòu)Intel80386是為滿足高性能的應(yīng)用領(lǐng)域與多用戶、多任務(wù)的操作系統(tǒng)的需要而設(shè)計(jì)的,其最大的特點(diǎn)是在CPU芯片上集成了一個(gè)存儲(chǔ)器管理部件(MMU),可對(duì)246字節(jié)的虛擬存儲(chǔ)器和4千兆字節(jié)的物理存儲(chǔ)器進(jìn)行分段和分頁(yè)管理,段的最大長(zhǎng)度為4千兆字節(jié)。80386采用CHMOS工藝,陶瓷網(wǎng)格陣列(PlasticGridArray,PGA)封裝,全32位結(jié)構(gòu),它的時(shí)鐘頻率有16MHZ和20MHZ兩種,總線周期只有2個(gè)時(shí)鐘周期。體系結(jié)構(gòu)80386的內(nèi)部結(jié)構(gòu)由六個(gè)功能部件組成:總線接口部件BIU(BusInterface)、指令預(yù)取部件IPU(InstructionPrefetchUnit)、指令譯碼部件IDU(InstructionDecodeUnit)、存儲(chǔ)器管理部件MMU(MemoryManagementUnit)、執(zhí)行部件EU(ExecutionUnit)和控制部件。這6個(gè)部件可以并行地工作,構(gòu)成一個(gè)六級(jí)流水線體系結(jié)構(gòu)。這樣,可以同時(shí)處理多條指令以減少程序?qū)嶋H執(zhí)行時(shí)間。總線接口部件BIU完成在總線周期內(nèi)對(duì)必要的信號(hào)進(jìn)行控制。在80386內(nèi)部,指令預(yù)取部件要從存儲(chǔ)器取指令,執(zhí)行部件在執(zhí)行指令時(shí)要訪問(wèn)存儲(chǔ)器以讀/寫(xiě)數(shù)據(jù)、分頁(yè)部件將線形地址轉(zhuǎn)換成物理地址后,都會(huì)發(fā)出總線周期請(qǐng)求??偩€接口部件會(huì)根據(jù)優(yōu)先級(jí)對(duì)這些請(qǐng)求進(jìn)行仲裁,從而有條不紊地服務(wù)于多個(gè)請(qǐng)求,并產(chǎn)生相應(yīng)總線操作所需信號(hào),包括地址信號(hào)、數(shù)據(jù)信號(hào)、讀/寫(xiě)控制信號(hào)等。此外,總線接口部件也實(shí)現(xiàn)80386和協(xié)處理器之間的協(xié)調(diào)控制。指令預(yù)取部件IPU從存儲(chǔ)器中以4個(gè)字節(jié)為單位預(yù)取指令,按順序存放到16個(gè)字節(jié)的預(yù)取指令隊(duì)列中,以便在CPU執(zhí)行當(dāng)前指令時(shí),指令譯碼部件對(duì)下一條指令進(jìn)行譯碼。指令譯碼部件IDU從指令預(yù)取部件中的預(yù)取指令隊(duì)列里按順序取出指令并譯碼。執(zhí)行部件包括8個(gè)32位的通用寄存器組、32位的算術(shù)邏輯運(yùn)算單元ALU、1個(gè)64位的桶形移位寄存器和一個(gè)乘法除法器,它們共同執(zhí)行各種數(shù)據(jù)處理和運(yùn)算。此外,執(zhí)行部件中還包括ALU控制部分和保護(hù)測(cè)試部分,前者實(shí)現(xiàn)有效地址的計(jì)算、乘除法的加速等功能,后者檢驗(yàn)指令執(zhí)行中是否符合涉及的存儲(chǔ)器分段規(guī)則。80386允許使用虛擬存儲(chǔ)器。所謂虛擬存儲(chǔ)器就是系統(tǒng)中有一個(gè)速度較快的、容量比較小的內(nèi)部主存儲(chǔ)器,還有一個(gè)速度較慢但容量較大的外部存儲(chǔ)器,通過(guò)存儲(chǔ)管理機(jī)制,使后者和前者有機(jī)地、靈活地組合在一起,這樣從程序員的角度看,系統(tǒng)中似乎有一個(gè)容量很大、速度也相當(dāng)快的主存儲(chǔ)器MM(MainMemory),但它并不是真正的物理上的主存,所以稱為虛擬存儲(chǔ)器VM(VirtualMemory)。INTEI80386系統(tǒng)中,存儲(chǔ)體按段劃分,每個(gè)段的容量可變,最大可達(dá)4GB(232字節(jié))。分段的作用是可以對(duì)容量可變的代碼存儲(chǔ)塊或數(shù)據(jù)存儲(chǔ)塊提供模塊性和保護(hù)性。每個(gè)段又劃分為多個(gè)頁(yè)面,一個(gè)頁(yè)面可為1到4K字節(jié)。但在80386中,為了簡(jiǎn)化硬件和操作系統(tǒng)中的頁(yè)定位計(jì)算,每頁(yè)固定為4K字節(jié)。分頁(yè)的作用是便于實(shí)現(xiàn)虛擬存儲(chǔ)器管理,通常在內(nèi)存和磁盤(pán)進(jìn)行映象時(shí),都以頁(yè)為單位把CPU的地址空間映象到磁盤(pán)。存儲(chǔ)器管理部件MMU的功能就是實(shí)現(xiàn)存儲(chǔ)器的管理,它由分段部件SU(SegmentUnit)和分頁(yè)部件PU(PageUnit)組成。分段部件SU管理面向程序員的邏輯地址空間,并且將邏輯地址轉(zhuǎn)換為線形地址,在芯片上有一個(gè)段描述符高速緩沖寄存器,其中存有當(dāng)前使用的段描述符,它可以加快這種轉(zhuǎn)換;分頁(yè)部件PU管理物理地址空間,將分段部件或者指令譯碼部件產(chǎn)生的線形地址轉(zhuǎn)換為物理地址,在芯片上有一個(gè)頁(yè)描述符高速緩沖寄存器,它存放著頁(yè)描述符。

80386內(nèi)部寄存器

80386內(nèi)部共有34個(gè)寄存器,它們可以分為7類(lèi):通用寄存器、指令指針及標(biāo)志寄存器、段寄存器、控制寄存器、系統(tǒng)地址寄存器、調(diào)試寄存器和測(cè)試寄存器。通用寄存器:是8086/8088/80286中相應(yīng)16位通用寄存器的擴(kuò)展,命字分別是:EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP,用來(lái)存放數(shù)據(jù)和偏移地址。為了和8086/8088/80286兼容,每個(gè)通用寄存器的低16位可以獨(dú)立訪問(wèn),此時(shí),它們的名稱分別為AX、BX、CX、DX、SI、DI、BP、SP。同時(shí),為了和8080/8085兼容,AX、BX、CX、DX寄存器的低8位和高8位也可以獨(dú)立訪問(wèn),分別稱為AL、BL、CL、DL和AH、BH、CH和DH。32位的指令指針寄存器EIP由8086的IP擴(kuò)展而來(lái),用來(lái)存放將要執(zhí)行的下一條指令的地址偏移量,尋址范圍為4GB。為了和8086兼容,EIP的低16位可作為獨(dú)立指針,稱為IP,則其尋址范圍為64KB。32位的標(biāo)志寄存器EFLAGS中容納三類(lèi)標(biāo)志:狀態(tài)標(biāo)志、控制標(biāo)志和系統(tǒng)方式標(biāo)志。狀態(tài)標(biāo)志是CPU在執(zhí)行指令過(guò)程中產(chǎn)生的,控制標(biāo)志可以由程序員通過(guò)指令來(lái)設(shè)置,系統(tǒng)方式標(biāo)志是和系統(tǒng)所處的工作模式密切相關(guān)。80386內(nèi)部設(shè)置了6個(gè)16位的段寄存器CS、SS、DS、ES、FS、GS。前4個(gè)段寄存器的名稱和8086/8088相同。為了得到更大的存儲(chǔ)空間,80386采用了比8086更加巧妙的辦法來(lái)得到段基地址。在這里,段寄存器作為進(jìn)入存儲(chǔ)器中的一張表的變址寄存器,根據(jù)段寄存器的值可以從表中找到一個(gè)項(xiàng),這張表是由操作系統(tǒng)建立的,稱為段描述符表。表內(nèi)每一項(xiàng)稱為描述符,每一個(gè)描述符對(duì)應(yīng)一個(gè)段。描述符中含有對(duì)應(yīng)段的起始地址即段基地址、段界限和段的屬性。CS寄存器指向代碼段對(duì)應(yīng)的段描述符,由此可以找到當(dāng)前代碼段的段基地址,相類(lèi)似的,SS指向當(dāng)前堆棧段對(duì)應(yīng)的段描述符,DS寄存器指向當(dāng)前數(shù)據(jù)段對(duì)應(yīng)的段描述符,而ES、FS、GS指向當(dāng)前三個(gè)附加段對(duì)應(yīng)的段描述符。80386內(nèi)部有3個(gè)32位的控制寄存器CR0、CR2、CR3,用來(lái)保存機(jī)器的各種全局性狀態(tài)。這些狀態(tài)影響系統(tǒng)所有任務(wù)的運(yùn)行,它們主要是供操作系統(tǒng)使用的,因此操作系統(tǒng)設(shè)計(jì)人員需要熟悉這些寄存器。在INTEL80386中有4個(gè)系統(tǒng)地址寄存器,即全局描述符表寄存器GDTR(GlobalDescriptorTableRegister)、中斷描述符寄存器IDTR(InterruptDescriptorTableRegister)、任務(wù)狀態(tài)寄存器TR(TaskStateRegister)和局部描述符表寄存器LDTR(LocalDescriptorTableRegister)。INTEL80386有8個(gè)32位的調(diào)試寄存器DR0~DR7。這些寄存器可以使程序員在調(diào)試過(guò)程中一次設(shè)置4個(gè)斷點(diǎn),DR0~DR3用來(lái)容納4個(gè)32位的斷點(diǎn)線性地址;DR4、DR5為備用寄存器;DR6是斷點(diǎn)狀態(tài)寄存器,其中保存了幾個(gè)調(diào)試標(biāo)志,用來(lái)協(xié)助斷點(diǎn)調(diào)試;DR7為斷點(diǎn)控制寄存器,可以通過(guò)對(duì)應(yīng)位的設(shè)置來(lái)有選擇地允許和禁止斷點(diǎn)調(diào)試,比如僅在寫(xiě)數(shù)據(jù)時(shí)作為斷點(diǎn),或者僅在讀/寫(xiě)數(shù)據(jù)時(shí)作為斷點(diǎn)等。INTEL80386設(shè)置了8個(gè)32位的測(cè)試寄存器TR0~TR7,其中TR0~TR5由Intel公司保留,用戶只能訪問(wèn)TR6、TR7。這2個(gè)32位測(cè)試寄存器TR6和TR7用于存儲(chǔ)器測(cè)試,TR6為測(cè)試命令寄存器,其中存放測(cè)試控制命令,TR7為數(shù)據(jù)寄存器,容納存儲(chǔ)器測(cè)試所得的數(shù)據(jù)。。

80386的三種工作方式實(shí)地址模式(RealAddressModal)保護(hù)虛地址模式(ProtectedVirtualAddressMode)虛擬8086模式(Virtual8086Modal)。1.3

數(shù)據(jù)表示計(jì)算機(jī)處理的信息可分為兩大類(lèi):一類(lèi)是按進(jìn)位計(jì)算制表示的有大小、正負(fù)之分的數(shù)值信息;另一類(lèi)是非數(shù)值信息,如字符、文字、圖像、邏輯數(shù)據(jù)等。但在計(jì)算機(jī)內(nèi)部所有信息都要轉(zhuǎn)換成0和1表示的二進(jìn)制編碼。數(shù)制及其轉(zhuǎn)換計(jì)算機(jī)匯編語(yǔ)言中常用的計(jì)數(shù)制有:十進(jìn)制數(shù)(Decimal)二進(jìn)制數(shù)(Binary)十六進(jìn)制數(shù)(Hexadecimal)八進(jìn)制數(shù)(Octal)。數(shù)制的轉(zhuǎn)換

整數(shù)的轉(zhuǎn)換采用“除2取余”法。把要轉(zhuǎn)換的十進(jìn)制數(shù)的整數(shù)部分不斷除以2并在右邊記下余數(shù),然后以此類(lèi)推,直到最后的商為0,最后我們將余數(shù)倒著排列即得結(jié)果。

小數(shù)的轉(zhuǎn)換采用“乘2取整”法。小數(shù)的轉(zhuǎn)換正好與整數(shù)的轉(zhuǎn)換相反,將小數(shù)部分不斷的乘以2在右邊記下成績(jī)整數(shù)部分,依此類(lèi)推,直到最后小數(shù)部分為0或結(jié)果已達(dá)到精度要求為止。先取出來(lái)的整數(shù)作高位,后取出的整數(shù)作低位,順序排列即可。將十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)。

125.6875D=1111101.1011B將十進(jìn)制數(shù)轉(zhuǎn)換成八/十六進(jìn)制數(shù)

100D=64H

65535=0FFFFH

255=0FFH二/八/十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)轉(zhuǎn)換方法是采用位置記數(shù)法把他們寫(xiě)成相應(yīng)的冪運(yùn)算形式,然后求和即可得到結(jié)果。

572.34Q=5*82+7*8+2+3*8-1+4*8-2=378.4375D

二進(jìn)制數(shù)與八進(jìn)制數(shù)的轉(zhuǎn)換

二進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制數(shù)只需將二進(jìn)制數(shù)從小數(shù)點(diǎn)開(kāi)始每3位轉(zhuǎn)成一位八進(jìn)制數(shù),整數(shù)部分由最低位開(kāi)始劃分,小數(shù)部分從最高位開(kāi)始劃分。

101111010.011100B

=572.34Q二進(jìn)制數(shù)與十六進(jìn)制數(shù)的轉(zhuǎn)換

101111010.011111B

=17A.7CH有符號(hào)數(shù)的表示法原碼:原碼表示最高位為0表示正數(shù),為1表示負(fù)數(shù),其余位表示數(shù)的絕對(duì)值。對(duì)于整數(shù),原碼可以用下面的公式表示:

X當(dāng)0≤X<2n[X]原=

2n-X=2n+|X|當(dāng)0≥X>-2n對(duì)于小數(shù),原碼用下面的公式表示:

X當(dāng)1>X≥0[X]原=

1-X=1+|X|當(dāng)0≥X>-1反碼:正數(shù)的反碼表示和原碼相同,最高位為0表示正數(shù),其余位表示數(shù)的絕對(duì)值。負(fù)數(shù)的反碼表示可以在其原碼表示的基礎(chǔ)上保持符號(hào)位不變,其余位求反。對(duì)于整數(shù),反碼用下面的公式表示:

X當(dāng)0≤X<2n[X]反=

(2n+1-1)+X當(dāng)0≥X>-2n對(duì)于小數(shù),反碼用下面的公式表示:

X當(dāng)0≤X<2n[X]反=

(2-2-n)+X當(dāng)0≥X>-1補(bǔ)碼:正數(shù)的補(bǔ)碼表示和原碼相同,最高位為0表示正數(shù),其余位表示數(shù)的絕對(duì)值。負(fù)數(shù)的補(bǔ)碼表示可以在其原碼表示的基礎(chǔ)上保持符號(hào)位不變,其余位求反末位加1。對(duì)于整數(shù),補(bǔ)碼用下面的公式表示:

X當(dāng)0≤X<2n[X]補(bǔ)=

2n+1+X當(dāng)0≥X>-2n對(duì)于小數(shù),反碼用下面的公式表示:

X當(dāng)0≤X<2n[X]補(bǔ)=

2+X=2-|X|當(dāng)0≥X>-1BCD碼和字符編碼

BCD碼(BinaryCodeDecimal)在日常生活中人們常用的是十進(jìn)制數(shù),而機(jī)器內(nèi)部又只能處理二進(jìn)制數(shù),因此我們引進(jìn)了BCD碼。BCD碼是用四位的二進(jìn)制數(shù)來(lái)表示一位十進(jìn)制數(shù)。常用的BCD碼有8421BCD碼,5421BCD碼,2421BCD碼和余3碼等。

ASCII碼(

AmericanStandardCodeforInformationInterchange)除了數(shù)值數(shù)據(jù)外,計(jì)算機(jī)還可處理人們常用的符號(hào),如字母,標(biāo)點(diǎn)符號(hào)等。在計(jì)算機(jī)中這些符號(hào)是用ASCII碼來(lái)表示的。ASCII碼用一個(gè)字節(jié)的二進(jìn)制數(shù)來(lái)表示一個(gè)字符,但實(shí)際只用了七位,最高位被用來(lái)做奇偶校驗(yàn)位。在原來(lái)7位ASCII碼的基礎(chǔ)上加上一位校驗(yàn)位,使一個(gè)字節(jié)中包含1的個(gè)數(shù)為奇數(shù)(或偶數(shù))就稱為奇校驗(yàn)或偶校驗(yàn)。

ASCII碼UnicodeUnicode是一個(gè)16位的字符集,它包括了幾乎所有常見(jiàn)的信息交換用的字符(英、法、德、中(簡(jiǎn)、繁)、朝鮮、日等),其64K的編碼空間有大約1/3尚未分配。學(xué)習(xí)要求●掌握16位指令系統(tǒng)中常用指令的使用?!裾莆赵闯绦蛑谐S玫膫沃噶睢!裾莆蘸陞R編源程序的結(jié)構(gòu)及其編程方法。●掌握宏匯編語(yǔ)言上機(jī)調(diào)試過(guò)程。2.116位匯編程序設(shè)計(jì)概述在DOS下用匯編語(yǔ)言開(kāi)發(fā)程序的工具是Masm和Tasm。Masm常用的有Masm611和Masm614兩個(gè)版本,Tasm是Borland公司提供的工具。用Masm.exe來(lái)將源程序生成目標(biāo)文件。ML.exe既可以產(chǎn)生目標(biāo)文件,也可以產(chǎn)生可執(zhí)行文件。調(diào)試可執(zhí)行文件用Debug.exe或CV.exe。匯編語(yǔ)言程序的特點(diǎn)編程的第一步是編寫(xiě)源程序。用記事本等一切可以以純文本方式編輯保存文件的工具進(jìn)行。文件必須保存為擴(kuò)展名為asm的文件,且文件名不能超過(guò)8個(gè)ASCII碼字符。匯編語(yǔ)言程序的特點(diǎn)源程序中要使用指令,指令是最小的代碼單元。指令分為兩種,一種叫硬指令,另一種叫偽指令。硬指令是機(jī)器事實(shí)上存在的指令例如:MOVAX,1234

在源程序中寫(xiě)下這條指令,生成可執(zhí)行文件后,反匯編仍然存在這條指令。匯編語(yǔ)言程序的特點(diǎn)偽指令是告訴編譯器的一些說(shuō)明性語(yǔ)句,編譯器承認(rèn),而CPU中無(wú)此指令。例如:X1DW0

這是一條用偽指令DW定義字變量的語(yǔ)句,編譯器會(huì)將它在數(shù)據(jù)段中產(chǎn)生一個(gè)字的空間且初始化為0。程序中并沒(méi)有X1這個(gè)變量,其它指令操作該變量都會(huì)被編譯成從X1的地址讀寫(xiě)數(shù)據(jù)。指令尋址方式從8086的機(jī)器代碼格式入手,論述:立即數(shù)尋址方式寄存器尋址方式存儲(chǔ)器尋址方式進(jìn)而熟悉8086匯編語(yǔ)言指令格式,尤其是其中操作數(shù)的表達(dá)方法;為展開(kāi)8086指令系統(tǒng)做好準(zhǔn)備指令的組成指令由操作碼和操作數(shù)兩部分組成操作碼說(shuō)明計(jì)算機(jī)要執(zhí)行哪種操作,如傳送、運(yùn)算、移位、跳轉(zhuǎn)等操作,它是指令中不可缺少的組成部分操作數(shù)是指令執(zhí)行的參與者,即各種操作的對(duì)象有些指令不需要操作數(shù),通常的指令都有一個(gè)或兩個(gè)操作數(shù),也有個(gè)別指令有3個(gè)甚至4個(gè)操作數(shù)操作碼操作數(shù)指令的操作碼和操作數(shù)每種指令的操作碼:用一個(gè)唯一的助記符表示(指令功能的英文縮寫(xiě))對(duì)應(yīng)著機(jī)器指令的一個(gè)二進(jìn)制編碼指令中的操作數(shù):可以是一個(gè)具體的數(shù)值可以是存放數(shù)據(jù)的寄存器或指明數(shù)據(jù)在主存位置的存儲(chǔ)器地址尋址方式指令系統(tǒng)設(shè)計(jì)了多種操作數(shù)的來(lái)源尋找操作數(shù)的過(guò)程就是操作數(shù)的尋址操作數(shù)采取哪一種尋址方式,會(huì)影響機(jī)器運(yùn)行的速度和效率標(biāo)準(zhǔn)機(jī)器代碼示例

mov

ax,[BP+0]

;機(jī)器代碼是8B4600前一個(gè)字節(jié)8B是操作碼(含w=1表示字操作)中間一個(gè)字節(jié)46(01000110)是“modregr/m”字節(jié)reg=000表示目的操作數(shù)為AXmod=01和r/m=110表示源操作數(shù)為[BP+D8]最后一個(gè)字節(jié)就是8位位移量〔D8=〕001/2字節(jié)0/1字節(jié)0/1/2字節(jié)0/1/2字節(jié)操作碼modregr/m位移量立即數(shù)其它機(jī)器代碼形式moval,05;機(jī)器代碼是B005前一個(gè)字節(jié)B0是操作碼(含一個(gè)操作數(shù)AL),后一個(gè)字節(jié)05是立即數(shù)movax,0102H;機(jī)器代碼是B80201前一個(gè)字節(jié)B8是操作碼(含一個(gè)操作數(shù)AX),后兩個(gè)字節(jié)0201是16位立即數(shù)(低字節(jié)02在低地址)操作碼操作數(shù)指令的助記符格式

操作碼操作數(shù)1,操作數(shù)2

;注釋操作數(shù)2,稱為源操作數(shù)src,它表示參與指令操作的一個(gè)對(duì)象操作數(shù)1,稱為目的操作數(shù)dest,它不僅可以作為指令操作的一個(gè)對(duì)象,還可以用來(lái)存放指令操作的結(jié)果分號(hào)后的內(nèi)容是對(duì)指令的解釋示例傳送指令MOV的格式MOV

dest,src

;dest←srcMOV指令的功能是將源操作數(shù)src傳送至目的操作數(shù)dest,例如:MOVAL,05H ;AL←05HMOVBX,AX ;BX←AXMOVAX,[SI] ;AX←DS:[SI]MOVAX,[BP+06H] ;AX←SS:[BP+06H]MOVAX,[BX+SI] ;AX←DS:[BX+SI]演示傳送指令MOV的功能源操作數(shù)src目的操作數(shù)dest30H30H被傳送的數(shù)據(jù)立即數(shù)尋址方式指令中的操作數(shù)直接存放在機(jī)器代碼中,緊跟在操作碼之后(操作數(shù)作為指令的一部分存放在操作碼之后的主存單元中)這種操作數(shù)被稱為立即數(shù)imm它可以是8位數(shù)值i8(00H~FFH)也可以是16位數(shù)值i16(0000H~FFFFH)立即數(shù)尋址方式常用來(lái)給寄存器賦值立即數(shù)尋址指令MOVAL,05H

;AL←05HMOVAX,0102H

;AX←0102H指令功能執(zhí)行過(guò)程寄存器尋址方式操作數(shù)存放在CPU的內(nèi)部寄存器reg中,可以是:8位寄存器r8:AH、AL、BH、BL、CH、CL、DH、DL16位寄存器r16:AX、BX、CX、DX、SI、DI、BP、SP4個(gè)段寄存器seg:CS、DS、SS、ES寄存器尋址指令MOVAX,1234H ;AX←1234HMOVBX,AX

;BX←AX指令功能執(zhí)行過(guò)程存儲(chǔ)器尋址方式指令中給出操作數(shù)的主存地址信息(偏移地址,稱之為有效地址EA),而段地址在默認(rèn)的或用段超越前綴指定的段寄存器中8086設(shè)計(jì)了多種存儲(chǔ)器尋址方式1、直接尋址方式2、寄存器間接尋址方式3、寄存器相對(duì)尋址方式4、基址變址尋址方式5、相對(duì)基址變址尋址方式直接尋址方式有效地址在指令中直接給出默認(rèn)的段地址在DS段寄存器,可使用段超越前綴改變MOVAX,[2000H];AX←DS:[2000H];指令代碼:A10020MOVAX,ES:[2000H];AX←ES:[2000H];指令代碼:26A10020指令功能執(zhí)行過(guò)程寄存器間接尋址方式有效地址存放在基址寄存器BX或變址寄存器SI、DI中默認(rèn)的段地址在DS段寄存器,可使用段超越前綴改變MOVAX,[SI]

;AX←DS:[SI]指令功能執(zhí)行過(guò)程寄存器相對(duì)尋址方式有效地址是寄存器內(nèi)容與有符號(hào)8位或16位位移量之和,寄存器可以是BX、BP或SI、DI有效地址=BX/BP/SI/DI+8/16位位移量段地址對(duì)應(yīng)BX/SI/DI寄存器默認(rèn)是DS,對(duì)應(yīng)BP寄存器默認(rèn)是SS;可用段超越前綴改變寄存器相對(duì)尋址指令MOVAX,[DI+06H]

;AX←DS:[DI+06H]MOVAX,[BP+06H]

;AX←SS:[BP+06H]指令功能執(zhí)行過(guò)程基址變址尋址方式有效地址由基址寄存器(BX或BP)的內(nèi)容加上變址寄存器(SI或DI)的內(nèi)容構(gòu)成:有效地址=BX/BP+SI/DI段地址對(duì)應(yīng)BX基址寄存器默認(rèn)是DS,對(duì)應(yīng)BP基址寄存器默認(rèn)是SS;可用段超越前綴改變基址變址尋址指令MOVAX,[BX+SI]

;AX←DS:[BX+SI]MOVAX,[BP+DI]

;AX←SS:[BP+DI]MOVAX,DS:[BP+DI]

;AX←DS:[BP+DI]指令功能執(zhí)行過(guò)程相對(duì)基址變址尋址方式有效地址是基址寄存器(BX/BP)、變址寄存器(SI/DI)與一個(gè)8位或16位位移量之和:有效地址=BX/BP+SI/DI+8/16位位移量段地址對(duì)應(yīng)BX基址寄存器默認(rèn)是DS,對(duì)應(yīng)BP基址寄存器默認(rèn)是SS;可用段超越前綴改變相對(duì)基址變址尋址指令MOVAX,[BX+SI+06H]

;AX←DS:[BX+SI+06H]

位移量可用符號(hào)表示

同一尋址方式有多種表達(dá)形式指令功能執(zhí)行過(guò)程用符號(hào)表示位移量在寄存器相對(duì)尋址或相對(duì)基址變址尋址方式中,位移量可用符號(hào)表示:MOVAX,[SI+COUNT];COUNT是事先定義的變量或常量(就是數(shù)值)MOVAX,[BX+SI+WNUM];WNUM也是變量或常量多種表達(dá)形式同一尋址方式可以寫(xiě)成不同的形式:MOVAX,[BX][SI]

;等同于MOVAX,[BX+SI]MOVAX,COUNT[SI]

;等同于MOVAX,[SI+COUNT]MOVAX,WNUM[BX][SI]

;等同于MOVAX,WNUM[BX+SI]

;等同于MOVAX,[BX+SI+WNUM]匯編語(yǔ)言指令格式由4部分組成:標(biāo)號(hào):指令助記符目的操作數(shù),源操作數(shù) ;注釋

標(biāo)號(hào)表示該指令在主存中的邏輯地址

每個(gè)指令助記符就代表一種指令

目的和源操作數(shù)表示參與操作的對(duì)象

注釋是對(duì)該指令或程序段功能的說(shuō)明指令操作數(shù)的表達(dá)(1)r8——任意一個(gè)8位通用寄存器AHALBHBLCHCLDHDLr16——任意一個(gè)16位通用寄存器AXBXCXDXSIDIBPSPreg——代表r8或r16seg——段寄存器CS/DS/ES/SS指令操作數(shù)的表達(dá)(2)m8——一個(gè)8位存儲(chǔ)器操作數(shù)單元(所有主存尋址方式)m16——一個(gè)16位存儲(chǔ)器操作數(shù)單元(所有主存尋址方式)mem——代表m8或m16指令操作數(shù)的表達(dá)(3)i8——一個(gè)8位立即數(shù)i16——一個(gè)16位立即數(shù)imm——代表i8或i16dest——目的操作數(shù)src——源操作數(shù)邏輯段分配立即數(shù)尋址的功能立即數(shù)尋址的執(zhí)行寄存器尋址的功能寄存器尋址的執(zhí)行直接尋址的功能直接尋址的執(zhí)行寄存器間接尋址的功能寄存器間接尋址的執(zhí)行寄存器相對(duì)尋址的功能寄存器相對(duì)尋址的執(zhí)行基址變址尋址的功能基址變址尋址的執(zhí)行相對(duì)基址變址尋址的功能相對(duì)基址變址尋址的執(zhí)行2.2.1數(shù)據(jù)傳送類(lèi)指令把數(shù)據(jù)從一個(gè)位置傳送到另一個(gè)位置14條指令分5組1、通用數(shù)據(jù)傳送:MOV

XCHG

XLAT2、堆棧操作:PUSH

POP3、標(biāo)志寄存器傳送:LAHF

SAHF

PUSHF

POPF4、地址傳送:LEA

LDS

LES5、輸入輸出:IN

OUT學(xué)習(xí)要求數(shù)據(jù)傳送是計(jì)算機(jī)中最基本、最重要的一種操作。傳送指令也是最常使用的一類(lèi)指令。傳送指令把數(shù)據(jù)從一個(gè)位置傳送到另一個(gè)位置。除標(biāo)志寄存器傳送指令外,均不影響標(biāo)志位重點(diǎn)掌握:MOVPUSHPOP特別熟悉:

XCHGXLATLEA一般了解:LAHFSAHFPUSHFPOPFLDSLES以后展開(kāi):INOUT傳送指令MOV(move)把一個(gè)字節(jié)或字的操作數(shù)從源地址傳送至目的地址MOVreg/mem,imm ;立即數(shù)送寄存器或主存:例2.1MOVreg/mem/seg,reg

;寄存器送(段)寄存器或主存:例2.2MOVreg/seg,mem ;主存送寄存器:例2.3MOVreg/mem,seg ;段寄存器送寄存器或主存:例2.4傳送指令不是萬(wàn)能的,有不少非法傳送的情況。例子段寄存器:CS/DS/ES/SS通用寄存器:AX/BX/CX/DXAH/AL/BH/BL/CH/CL/DH/DL立即數(shù)

MEM例2.1:立即數(shù)傳送MOVAL,55HMOVAX,55AAHMOVCX,0F943HMOVBYTEPTR[BX],12H;12h

DS:[BX]MOVWORDPTR[BX+SI],100h;100h

DS:[BX+SI]注意:立即數(shù)是字節(jié)(byte)還是字(word),也就是明確指令是字節(jié)操作還是字操作。進(jìn)一步解釋例2.2:寄存器傳送MOVAX,BXMOVAH,BL例2.3:存儲(chǔ)器傳送MOVAX,[BX]MOV[SI],ALMOVSS,[2000H]MOVES:[DI],CS注意:不存在存儲(chǔ)器向存儲(chǔ)器的傳送指令進(jìn)一步解釋例2.4:段寄存器傳送MOVAX,CSMOVDS,AX注意:對(duì)段寄存器的操作有一些限制進(jìn)一步解釋非法傳送種種兩個(gè)操作數(shù)的類(lèi)型不一致例如源操作數(shù)是字節(jié),而目的操作數(shù)是字;或相反兩個(gè)操作數(shù)不能都是存儲(chǔ)器傳送指令很靈活,但主存之間的直接傳送卻不允許段寄存器的操作有一些限制段寄存器屬專(zhuān)用寄存器,對(duì)他們的操作能力有限實(shí)例實(shí)例實(shí)例兩個(gè)操作數(shù)的類(lèi)型要一致絕大多數(shù)雙操作數(shù)指令(包括傳送指令),除非特別說(shuō)明,目的操作數(shù)與源操作數(shù)必須類(lèi)型一致,或者同為字,或者同為字節(jié),否則為非法指令。

MOVAL,050AH;非法指令:050Ah為字,而AL為字節(jié)寄存器有明確的字節(jié)或字類(lèi)型,有寄存器參與的指令其操作數(shù)類(lèi)型就是寄存器的類(lèi)型。對(duì)于存儲(chǔ)器單元與立即數(shù)同時(shí)作為操作數(shù)的情況,必須顯式指明。byteptr指示字節(jié)類(lèi)型,wordptr指示字類(lèi)型。兩個(gè)操作數(shù)不能都是存儲(chǔ)器8086指令系統(tǒng)不允許兩個(gè)操作數(shù)都是存儲(chǔ)單元(除串操作指令),沒(méi)有主存至主存的數(shù)據(jù)傳送。要實(shí)現(xiàn)這種傳送,可通過(guò)寄存器間接實(shí)現(xiàn)。例2.5:buffer1單元的數(shù)據(jù)傳送到buffer2單元movax,buffer1 ;ax←buffer1(將buffer1內(nèi)容送ax)movbuffer2,ax ;buffer2←ax;這里buffer1和buffer2是兩個(gè)字變量;實(shí)際表示直接尋址方式段寄存器的操作有一些限制不允許立即數(shù)傳送給段寄存器MOVDS,100H

;非法指令:立即數(shù)不能傳送段寄存器不允許直接改變CS值MOVCS,[SI]

;不允許使用的指令不允許段寄存器之間的直接數(shù)據(jù)傳送MOVDS,ES

;非法指令:不允許段寄存器間傳送交換指令XCHG(exchange)把兩個(gè)地方的數(shù)據(jù)進(jìn)行互換XCHGreg,reg/mem

;reg←→reg/mem交換指令可以在寄存器與寄存器之間對(duì)換數(shù)據(jù)交換指令可以在寄存器與存儲(chǔ)器之間對(duì)換數(shù)據(jù)交換指令不能在存儲(chǔ)器與存儲(chǔ)器之間對(duì)換數(shù)據(jù)例2.7例2.6Why例2.6:寄存器與寄存器數(shù)據(jù)交換MOVAX,1234HMOVBX,5678HXCHGAX,BX。操作該段程序執(zhí)行完:AX=5678H,BX=1234H例2.7:寄存器與存儲(chǔ)器數(shù)據(jù)交換MOVBP,0200HMOVSI,0046HXCHGAX,[BP+SI];這里是BP,則對(duì)應(yīng)的段寄存器為SS設(shè)SS=5000H,則存儲(chǔ)單元的物理地址PA=SS*16+EA=50000H+0200H+0046H=50246H,指令執(zhí)行前:AX=5621H,(50246H)=12H,(50247H)=34H指令執(zhí)行后:AX=3412H,(50246H)=21H,(50247H)=56H換碼指令XLAT(translate)將BX指定的緩沖區(qū)中、AL指定的位移處的一個(gè)字節(jié)數(shù)據(jù)取出賦給ALXLAT ;al←ds:[bx+al]:例2.8換碼指令執(zhí)行前:在主存中建立一個(gè)字節(jié)表格,內(nèi)容是要轉(zhuǎn)換成的目的代碼,表格的首地址存放于BX,AL存放相對(duì)表格首地址的位移量然后,執(zhí)行換碼指令:將AL寄存器的內(nèi)容轉(zhuǎn)換為目標(biāo)代碼隱含尋址方式例2.8:代碼轉(zhuǎn)換換碼指令沒(méi)有顯式的操作數(shù),但使用了BX和AL;因?yàn)閾Q碼指令使用了隱含尋址方式。隱含尋址方式——采用默認(rèn)操作數(shù)的尋址方式。

例2.8例2.8:將0~9,A~F的16進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼并顯示

.MODELSMALL .STACK .DATA TABLEDB'0123456789ABCDEF';0~9,A~F的ASCII碼

.CODE

.STARTUP MOVBX,OFFSETTABLE MOVAL,10 XLAT;AL=41H,為A的ASCII碼

MOVDL,AL MOVAH,02H INT21H

.EXIT0 END堆棧操作指令堆棧的概念堆棧的操作:進(jìn)棧和出棧堆棧的特點(diǎn)PUSHr16/m16/seg;進(jìn)棧指令:;SP←SP-2;SS:[SP]←r16/m16/segPOPr16/m16/seg;出棧指令:;r16/m16/seg←SS:[SP];SP←SP+2什么是堆棧堆棧是一個(gè)“先進(jìn)后出”的主存區(qū)域,位于堆棧段中,使用SS段寄存器記錄其段地址。堆棧只有一個(gè)出口,即當(dāng)前棧頂。棧頂是地址較小的一端(低端),它用堆棧指針寄存器SP指定。圖a中的堆棧是個(gè)空棧。堆棧的操作堆棧只有兩種基本操作:進(jìn)棧和出棧,對(duì)應(yīng)兩條指令PUSH和POP。進(jìn)棧指令PUSH:進(jìn)棧指令先使堆棧指針SP減2,然后把一個(gè)字操作數(shù)存入堆棧頂部出棧指令POP:出棧指令把棧頂?shù)囊粋€(gè)字傳送至指定的目的操作數(shù),然后堆棧指針SP加2請(qǐng)參看實(shí)例2.9和例2.10請(qǐng)對(duì)照?qǐng)Db和圖c堆棧的實(shí)例和圖例MOVAX,1278HPUSHAXPOPAX操作堆棧的特點(diǎn)堆棧操作的單位是字,進(jìn)棧和出棧只對(duì)字量字量數(shù)據(jù)從棧頂壓入和彈出時(shí),都是低地址字節(jié)送低字節(jié),高地址字節(jié)送高字節(jié)堆棧操作遵循先進(jìn)后出原則可用存儲(chǔ)器尋址方式隨機(jī)存取堆棧中的數(shù)據(jù)堆棧常用來(lái)臨時(shí)存放數(shù)據(jù)傳遞參數(shù)保存和恢復(fù)寄存器例2.11例2.11:現(xiàn)場(chǎng)的保護(hù)和恢復(fù)pushax ;進(jìn)入子程序后pushbxpushds...popds ;返回主程序前popbxpopax有效地址傳送指令LEA(loadEA)將存儲(chǔ)器操作數(shù)的有效地址傳送至指定寄存器中LEAr16,mem ;r16←mem的有效地址例2.12:有效地址的獲取LEABX,[2000H];把[2000H]操作數(shù)的偏移地址送給BX

指令執(zhí)行后:BX=2000H。要注意和

MOVBX,[2000H]的區(qū)別,它是把DS:[2000H]的內(nèi)容送給BX。操作指針傳送指令LDSr16,mem;r16←mem,;DS←mem+2LDS指令將主存中mem指定的字送至r16,并將mem的下一字送DS寄存器LESr16,mem;r16←mem,;ES←mem+2LES指令將主存中mem指定的字送至r16,并將mem的下一字送ES寄存器例2.13例2.14例2.13:LDSBX,ADDRx[SI]若DS=2000H,SI=1000H,ADDRx=0020H,則存儲(chǔ)器操作數(shù)的物理地址是:PA=DS*16+EA=20000H+1000H+0020H=21020H。指令執(zhí)行前:BX=6543H,(21020H)=1040H,(21022H)=4000H。指令執(zhí)行后:BX=1040H,DS=4000H,(21020H)=1040H,(21022H)=4000H。操作例2.14LESBX,[SI]若DS=2000H,SI=1000H,則存儲(chǔ)器操作數(shù)的物理地址是:PA=DS*16=20000H+1000H=21000H。設(shè)指令執(zhí)行前:(21000H)=1400H,(21002H)=4000H。指令執(zhí)行后:BX=1400H,ES=4000H,(21000H)=1400H,(21002H)=4000H。標(biāo)志低字節(jié)出入AH指令LAHF;AH←FLAGS的低字節(jié)LAHF指令將標(biāo)志寄存器的低字節(jié)送寄存器AHSF/ZF/AF/PF/CF狀態(tài)標(biāo)志位分別送入AH的第7/6/4/2/0位,而AH的第5/3/1位任意SAHF;FLAGS的低字節(jié)←AHSAHF將AH寄存器內(nèi)容送FLAGS的低字節(jié)用AH的第7/6/4/2/0位相應(yīng)設(shè)置SF/ZF/AF/PF/CF標(biāo)志標(biāo)志寄存器出入堆棧指令PUSHF;SP←SP-2;SS:[SP]←FLAGSPUSHF指令將標(biāo)志寄存器的內(nèi)容壓入堆棧,同時(shí)棧頂指針SP減2POPF;FLAGS←SS:[SP];SP←SP+2POPF指令將棧頂字單元內(nèi)容送標(biāo)志寄存器,同時(shí)棧頂指針SP加2例2.15例2.15:置位單步標(biāo)志pushf ;保存全部標(biāo)志到堆棧popax ;從堆棧中取出全部標(biāo)志orax,0100h ;設(shè)置D8=TF=1, ;ax其他位不變pushax ;將ax壓入堆棧popf ;將堆棧內(nèi)容取到標(biāo)志寄存器, ;即FLAGS←AX輸入輸出指令I(lǐng)NAL/AX,i8/DX;AL/AX←I/O端口輸入IN指令將外設(shè)數(shù)據(jù)傳送給CPU內(nèi)的AL/AXOUTi8/DX,AL/AX;I/O端口←AL/AX輸出OUT指令將CPU內(nèi)的AL/AX數(shù)據(jù)傳送給外設(shè)8086通過(guò)輸入輸出指令與外設(shè)進(jìn)行數(shù)據(jù)傳送輸入輸出指令8086通過(guò)輸入輸出指令與外設(shè)進(jìn)行數(shù)據(jù)交換;呈現(xiàn)給程序員的外設(shè)是端口(Port)即I/O地址8086用于尋址外設(shè)端口的地址線為16條,端口最多為216=65536(64K)個(gè),端口號(hào)為0000H~FFFFH每個(gè)端口用于傳送一個(gè)字節(jié)的外設(shè)數(shù)據(jù)輸入輸出尋址方式8086的端口有64K個(gè),無(wú)需分段,設(shè)計(jì)有兩種尋址方式直接尋址:只用于尋址00H~FFH前256個(gè)端口,操作數(shù)i8表示端口號(hào)間接尋址:可用于尋址全部64K個(gè)端口,DX寄存器的值就是端口號(hào)對(duì)大于FFH的端口只能采用間接尋址方式例2.16INAL,60H;從端口60H讀入一個(gè)字節(jié)到AL中INAX,20H;把端口20H、21H按“高高低低”組成的字讀入AXMOVDX,2F8HINAL,DX;從端口2F8H讀入一個(gè)字節(jié)到AL中INAX,DX;把端口2F8H、2F9H按“高高低低”組成的字讀入AXINOUT61H,AL;把AL的內(nèi)容輸出到端口61H中OUT20H,AX;把AX的內(nèi)容輸出到端口20H、21HMOVDX,3C0HOUTDX,AL;把AL的內(nèi)容輸出到端口3C0H中OUTDX,AX;把AX的內(nèi)容輸出到端口3C0H、3C1H例2.17OUT教學(xué)提示全面而準(zhǔn)確地理解每條指令的功能和應(yīng)用,是編寫(xiě)匯編語(yǔ)言程序的關(guān)鍵逐個(gè)展開(kāi)指令2.2.2算術(shù)運(yùn)算類(lèi)指令四則運(yùn)算是計(jì)算機(jī)經(jīng)常進(jìn)行的一種操作。算術(shù)運(yùn)算指令實(shí)現(xiàn)二進(jìn)制(和十進(jìn)制)數(shù)據(jù)的四則運(yùn)算請(qǐng)注意算術(shù)運(yùn)算類(lèi)指令對(duì)標(biāo)志的影響掌握:ADD/ADC/INC、SUB/SBB/DEC/NEG/CMP熟悉:MUL/IMUL、DIV/IDIV理解:CBW/CWD、DAA/DAS、AAA/AAS/AAM/AAD1、加法指令A(yù)DDADD指令將源與目的操作數(shù)相加,結(jié)果送到目的操作數(shù)ADD指令按狀態(tài)標(biāo)志的定義相應(yīng)設(shè)置ADDADDreg,imm/reg/mem

;reg←reg+imm/reg/memADDmem,imm/reg

;mem←mem+imm/reg例題2.18例2.18:加法運(yùn)算MOVBX,1000HMOVWORDPTR[BX],0A988H

;WORDPTR指明操作類(lèi)型ADDWORDPTR[BX],9F76H程序段執(zhí)行后:[1000H]=48FEH,BX=1000H,CF=1,ZF=0,OF=1,SF=0,PF=0,AF=0。ADD帶進(jìn)位加法指令A(yù)DCADC指令將源與目的操作數(shù)相加,再加上進(jìn)位CF標(biāo)志,結(jié)果送到目的操作數(shù)ADC指令按狀態(tài)標(biāo)志的定義相應(yīng)設(shè)置ADC指令主要與ADD配合,實(shí)現(xiàn)多精度加法運(yùn)算ADCADCreg,imm/reg/mem

;reg←reg+imm/reg/mem+CFADCmem,imm/reg

;mem←mem+imm/reg+CF例題2.19例2.19:雙字加法MOVDX,0002H;高16位MOVAX,0F365H;低16位ADDAX,0E024H;低16位+低16位ADCDX,0005H;高16位相加,同時(shí)加進(jìn)位計(jì)算結(jié)果高16位為0008(DX,為0002+0005+進(jìn)位CY),低16位為0D389H(AX)。ADC增量指令I(lǐng)NC(increment)INC指令對(duì)操作數(shù)加1(增量)INC指令不影響進(jìn)位CF標(biāo)志,按定義設(shè)置其他狀態(tài)標(biāo)志INCINCreg/mem;reg/mem←reg/mem+1incbxincbyteptr[bx]2、減法指令SUB(subtract)SUB指令將目的操作數(shù)減去源操作數(shù),結(jié)果送到目的操作數(shù)SUB指令按照定義相應(yīng)設(shè)置狀態(tài)標(biāo)志SUBSUBreg,imm/reg/mem

;reg←reg-imm/reg/memSUBmem,imm/reg

;mem←mem-imm/reg例題2.20例2.20:減法運(yùn)算MOVBX,9548HMOVCX,28A7HSUBBX,CX程序段執(zhí)行后:BX=6C9CH,CX=28A7H,CF=0,ZF=0,OF=1,SF=0,PF=1,AF=1。SUB帶借位減法指令SBBSBB指令將目的操作數(shù)減去源操作數(shù),再減去借位CF(進(jìn)位),結(jié)果送到目的操作數(shù)。SBB指令按照定義相應(yīng)設(shè)置狀態(tài)標(biāo)志SBB指令主要與SUB配合,實(shí)現(xiàn)多精度減法運(yùn)算SBBSBBreg,imm/reg/mem

;reg←reg-imm/reg/mem-CFSBBmem,imm/reg

;mem←mem-imm/reg-CF例題2.21例2.21:雙字減法MOVDX,0012HMOVAX,7546HMOVCX,0010HMOVBX,9428HSUBAX,BXSBBDX,CXSUB指令執(zhí)行后:AX=E11EH,BX=9428H,CF=1,ZF=0,OF=1,SF=1,PF=1,AF=1。SBB指令執(zhí)行后:DX=0001H,CX=0010H,CF=0,ZF=0,OF=0,SF=0,PF=0,AF=0。SBB減量指令DEC(decrement)DEC指令對(duì)操作數(shù)減1(減量)DEC指令不影響進(jìn)位CF標(biāo)志,按定義設(shè)置其他狀態(tài)標(biāo)志DECDECreg/mem;reg/mem←reg/mem-1deccxdecwordptr[si]

INC指令和DEC指令都是單操作數(shù)指令主要用于對(duì)計(jì)數(shù)器和地址指針的調(diào)整3、求補(bǔ)指令NEG(negative)NEG指令對(duì)操作數(shù)執(zhí)行求補(bǔ)運(yùn)算:用零減去操作數(shù),然后結(jié)果返回操作數(shù)求補(bǔ)運(yùn)算也可以表達(dá)成:將操作數(shù)按位取反后加1NEG指令對(duì)標(biāo)志的影響與用零作減法的SUB指令一樣NEGNEGreg/mem;reg/mem←0-reg/mem例題2.22例2.22:求補(bǔ)運(yùn)算MOVBX,6780HNEGBX程序段執(zhí)行后:BX=9880H,CF=1,ZF=0,OF=1,SF=1,PF=0,AF=0。NEG4、比較指令CMP(compare)CMP指令將目的操作數(shù)減去源操作數(shù),按照定義相應(yīng)設(shè)置狀態(tài)標(biāo)志CMP指令執(zhí)行的功能與SUB指令,但結(jié)果不回送目的操作數(shù)CMPreg,imm/reg/mem

;reg-imm/reg/memCMPmem,imm/reg

;mem-imm/reg例題2.23CMP例2.23:比較AL與200CMPAX,200JGGREATER;大于則跳轉(zhuǎn)到GREATER,

ADDAX,100INCCXGREATER:……

執(zhí)行比較指令之后,可以根據(jù)標(biāo)志判斷兩個(gè)數(shù)是否相等、大小關(guān)系等CMP5、乘法指令MULr8/m8;無(wú)符號(hào)字節(jié)乘法;AX←AL×r8/m8MULr16/m16;無(wú)符號(hào)字乘法;DX.AX←AX×r16/m16IMULr8/m8;有符號(hào)字節(jié)乘法;AX←AL×r8/m8IMULr16/m16;有符號(hào)字乘法;DX.AX←AX×r16/m16例題2.24說(shuō)明乘法指令的功能乘法指令分無(wú)符號(hào)和有符號(hào)乘法指令乘法指令的源操作數(shù)顯式給出,隱含使用另一個(gè)操作數(shù)AX和DX字節(jié)量相乘:AL與r8/m8相乘,得到16位的結(jié)果,存入AX字量相乘:AX與r16/m16相乘,得到32位的結(jié)果,其高字存入DX,低字存入AX乘法指令利用OF和CF判斷乘積的高一半是否具有有效數(shù)值乘法指令對(duì)標(biāo)志的影響乘法指令如下影響OF和CF標(biāo)志:MUL指令——若乘積的高一半(AH或DX)為0,則OF=CF=0;否則OF=CF=1IMUL指令——若乘積的高一半是低一半的符號(hào)擴(kuò)展,則OF=CF=0;否則均為1乘法指令對(duì)其他狀態(tài)標(biāo)志沒(méi)有定義

對(duì)標(biāo)志沒(méi)有定義:指令執(zhí)行后這些標(biāo)志是任意的、不可預(yù)測(cè)(就是誰(shuí)也不知道是0還是1)對(duì)標(biāo)志沒(méi)有影響:指令執(zhí)行不改變標(biāo)志狀態(tài)例2.24:乘法運(yùn)算MOVAL,0B4HMOVBL,11HMULBL程序段執(zhí)行后:AX=0BF4H=3060D,BL=11H,CF=OF=1。MOVAL,0B4H;對(duì)于有符號(hào)數(shù)B4H,去二進(jìn)制編碼高位,變反加1,為-76(-4CH)MOVBL,11HIMULBL程序段執(zhí)行后:AX=FAF4H=-1292,BL=11H,CF=OF=1。6、除法指令DIVr8/m8

;無(wú)符號(hào)字節(jié)除法:AL←AX÷r8/m8的商,Ah←AX÷r8/m8的余數(shù)DIVr16/m16

;無(wú)符號(hào)字除法:;AX←DX.AX÷r16/m16的商,DX←DX.AX÷r16/m16的余數(shù)IDIVr8/m8 ;有符號(hào)字節(jié)除法:AL←AX÷r8/m8的商,Ah←AX÷r8/m8的余數(shù)IDIVr16/m16 ;有符號(hào)字除法:;AX←DX.AX÷r16/m16的商,DX←DX.AX÷r16/m16的余數(shù)例題2.25說(shuō)明除法指令的功能除法指令分無(wú)符號(hào)和有符號(hào)除法指令除法指令的除數(shù)顯式給出,隱含使用另一個(gè)操作數(shù)AX和DX作為被除數(shù)字節(jié)量除法:AX除以r8/m8,8位商存入AL,8位余數(shù)存入AH字量除法:DX.AX除以r16/m16,16位商存入AX,16位余數(shù)存入DX除法指令對(duì)標(biāo)志沒(méi)有定義除法指令會(huì)產(chǎn)生結(jié)果溢出除法錯(cuò)中斷當(dāng)被除數(shù)遠(yuǎn)大于除數(shù)時(shí),所得的商就有可能超出它所能表達(dá)的范圍。如果存放商的寄存器AL/AX不能表達(dá),便產(chǎn)生溢出,8086CPU中就產(chǎn)生編號(hào)為0的內(nèi)部中斷——除法錯(cuò)中斷對(duì)DIV指令,除

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論