版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第四章 宏匯編語言程序設(shè)計(jì),4.1 匯編語言程序格式 4.2 MASM中的表達(dá)式 4.3 偽指令語句 4.4 DOS系統(tǒng)功能調(diào)用和BIOS中斷調(diào)用 4.5 程序設(shè)計(jì)方法 4.6 宏匯編和條件匯編,2020/9/7,2,4.1 匯編語言程序設(shè)計(jì)特點(diǎn),匯編語言是一種用符號(hào)表示的、面向CPU指令系統(tǒng)的程序設(shè)計(jì)語言。是機(jī)器語言的符號(hào)表示。 基本特點(diǎn): 程序設(shè)計(jì)人員能更充分地利用機(jī)器硬件的全部功能,發(fā)揮機(jī)器的長處; 程序目標(biāo)代碼占用內(nèi)存少,執(zhí)行速度快,效率高,具有實(shí)時(shí)性; 由于匯編的特點(diǎn),匯編語言常用于編寫計(jì)算機(jī)系統(tǒng)程序、實(shí)時(shí)通信程序和實(shí)時(shí)控制程序。但匯編語言程序依賴于機(jī)器硬件,其通用性和移植性都較差。
2、,2020/9/7,3,從源程序獲得目標(biāo)程序的過程,匯編語言源程序 經(jīng)過匯編翻譯成二進(jìn)制代碼的浮動(dòng)目標(biāo)文件,然后由連接程序?qū)⒛繕?biāo)文件和庫文件相連接 生成機(jī)器上可執(zhí)行的目標(biāo)程序 進(jìn)行匯編語言開發(fā)需要的文件: 1)匯編程序 MASM.exe 2)連接程序 LINK.EXE 3)庫管理程序LIB.EXE(如果不創(chuàng)建子程序庫,不需要該文件) 4)文本編輯器。如DOS下的EDIT 或其它開發(fā)工具中的編輯環(huán)境如Turbo C等。目的:生成.ASM文件。 5)調(diào)試程序 DEBUG,2020/9/7,4,開發(fā)的步驟(補(bǔ)充),1、源程序的匯編 命令格式:MASM 源程序文件名 如果沒有語法錯(cuò)誤,則生成目標(biāo)模塊文
3、件.obj,否則給出錯(cuò)誤信息 2、目標(biāo)文件的連接 命令格式:LINK obj文件名 如果沒有嚴(yán)重錯(cuò)誤,將生成可執(zhí)行文件 .exe,否則將提示相應(yīng)的錯(cuò)誤信息 3、可執(zhí)行文件的執(zhí)行調(diào)試 命令格式:可執(zhí)行文件名 操作系統(tǒng)加載該文件進(jìn)入主存開始運(yùn)行,如果出現(xiàn)運(yùn)行錯(cuò)誤,可用debug.exe調(diào)試程序。 命令格式:debug 可執(zhí)行程序文件名,注意:如果程序里沒有的堆棧段,系統(tǒng)會(huì)給出warning,但不會(huì)影響程序運(yùn)行。,2020/9/7,5,4-1匯編語言程序格式,匯編語言源程序用語句書寫,MASM中可以使用的語句有兩類:指令性語句和偽指令語句。,指令性語句:即執(zhí)行性語句(指令),與機(jī)器碼一一對(duì)應(yīng),表示某
4、種確定操作,包括四部分: 標(biāo)號(hào): 指令操作碼 操作數(shù) ;注釋 例: AGAN:ADC BX,AX;累加 指示性語句:即說明性語句(偽指令),不對(duì)應(yīng)機(jī)器碼,只為匯編提供所需信息,由四部分組成: 名字 偽指令 操作數(shù) ;注釋 例:SUMDW 0;為結(jié)果保留一個(gè)字,2020/9/7,6,DATASEGMENT SRC_LESSDBHELLO!,0DH,0AH,$ DATAENDS CODESEGMENT ASSUME CS:CODE,DS:DATA START:MOVAX,DATA MOVDS,AX MOV DX,OFFSET SRC_LESS MOV AH,9 INT 21H MOV AH,1 I
5、NT 21H MOVAH,4CH INT21H CODE ENDS ENDSTART,2020/9/7,7,匯編程序的基本結(jié)構(gòu)要求,完整的匯編程序要包括:段定義、段分配、設(shè)置段地址、返回DOS語句、程序結(jié)束 和程序體。必要時(shí)加上過程調(diào)用。 完整匯編語言程序的典型格式 段定義格式: 段名 SEGMENT 段名 ENDS 至少有一個(gè)代碼段,堆棧段如果不定義,由計(jì)算機(jī)自動(dòng)分配。段名是由字母數(shù)字組成的,可以任意定義。 計(jì)算機(jī)識(shí)別不同的段靠 段分配ASSUME 語句完成 ASSUME CS:段名,DS:段名,SS:段名,ES:段名,2020/9/7,8,assume指定段與段寄存器之間的關(guān)系,但并不為段
6、寄存器設(shè)定初值,程序中如果使用數(shù)據(jù)段或者附加段,需要明確對(duì)DS、ES賦值。只要正確書寫源程序,CS、IP和SS、SP的值將會(huì)由連接程序正確設(shè)置 設(shè)置方法: MOV AX,STACK MOV SS,AX MOV AX,DATA MOV DS,AX 程序執(zhí)行完畢后要返回DOS,最常用的實(shí)現(xiàn)方法: 全部程序以END結(jié)尾,END后面可以加上程序執(zhí)行起始的名稱,匯編程序遇到END就結(jié)束匯編。,MOV AX,4C00H INT 21H,2020/9/7,9,三、數(shù)據(jù)項(xiàng)(匯編語言中使用的操作數(shù)),1、常數(shù) 二進(jìn)制數(shù):以“B”結(jié)尾,如00001101B; 八進(jìn)制數(shù):以“O”結(jié)尾,如725O; 十六進(jìn)制數(shù):以“
7、H”結(jié)尾,并且必須以數(shù)字打頭,即若最高位為字母AF,前面應(yīng)加0,如0A12H; 十進(jìn)制數(shù):以“D”結(jié)尾或省略結(jié)尾,如10D、10。 字符串常量 字符串常量表示為包含在兩個(gè)單引號(hào)之間的一連串ASCII字符。每個(gè)串元素的值定義為該元素所對(duì)應(yīng)的1字節(jié)ASCII碼值。,2020/9/7,10,三、數(shù)據(jù)項(xiàng)(匯編語言中使用的操作數(shù)),2、變量:指存儲(chǔ)在存儲(chǔ)單元中的值,所有變量有三個(gè)屬性: 段值SEGMENT:變量所在段的段基址 段內(nèi)偏移地址OFFSET:變量所在地址和所在段首地址之間的偏移字節(jié)數(shù) 類型TYPE:變量中每個(gè)元素包含的字節(jié)數(shù)。 3、標(biāo)號(hào):可執(zhí)行指令語句地址的符號(hào)表示,三個(gè)屬性: 段值SEGME
8、NT:標(biāo)號(hào)所在段的段基址 段內(nèi)偏移地址OFFSET:標(biāo)號(hào)所在地址和所在段首地址之間的偏移字節(jié)數(shù) 類型TYPE:指轉(zhuǎn)移指令中標(biāo)號(hào)可轉(zhuǎn)移的距離,也叫距離屬性,NEAR(近標(biāo)號(hào),實(shí)現(xiàn)本代碼段內(nèi)轉(zhuǎn)移)、FAR(遠(yuǎn)標(biāo)號(hào),段間轉(zhuǎn)移),2020/9/7,11,補(bǔ)充:,變量:放在偽指令前的標(biāo)識(shí)符是變量 標(biāo)號(hào):放在指令前的標(biāo)識(shí)符是標(biāo)號(hào),標(biāo)號(hào)后有“:” 都有段地址、偏移地址、類型等屬性。 例如: DATA SEGMENT TRY DB 20 DATA ENDS NEXT: . LOOP NEXT,2020/9/7,12,4-2、MASM中的表達(dá)式,表達(dá)式=操作數(shù)+運(yùn)算符。 表達(dá)式可出現(xiàn)于源程序的任何地方, 在匯編
9、過程中(而不是程序執(zhí)行過程中)即可產(chǎn)生確定的值。運(yùn)算的結(jié)果作為語句中的操作數(shù)使用。,6類運(yùn)算符:算術(shù)運(yùn)算符、邏輯運(yùn)算符、關(guān)系運(yùn)算符、數(shù)值返回運(yùn)算符、修改屬性運(yùn)算符、其它運(yùn)算符,2020/9/7,13,算術(shù)運(yùn)算符:+、-、*、/、MOD、SHL、SHR 邏輯運(yùn)算符:AND、OR、XOR、NOT 關(guān)系運(yùn)算符:EQ、NE、GT、 LT、 GE 、LE 分析運(yùn)算符:SEG、OFFSET、TYPE、SIZE、LENGTH 、HIGH、LOW 綜合運(yùn)算符:PTR、DS:、THIS、SHORT,2020/9/7,14,一、算術(shù)運(yùn)算符,數(shù)值表達(dá)式中可使用所有算術(shù)運(yùn)算符 地址表達(dá)式僅使用+、-算術(shù)運(yùn)算符 /除法
10、,取商。MOD除法取余數(shù)。 例4-2 數(shù)組ARRAY定義如下:,ARRAY DB 1,2,3,4,5,6,7,8 TRY DB 20 指令為: MOVAX,30*5 MOVCX,(TRY-ARRAY),匯編時(shí),計(jì)算表達(dá)式形成的指令為: MOVAX,150 MOVCX,8,+、-、*、/、MOD、SHL、SHR,2020/9/7,15,二、邏輯運(yùn)算符,邏輯運(yùn)算符在兩個(gè)操作數(shù)之間按位進(jìn)行二進(jìn)制布爾運(yùn)算,結(jié)果產(chǎn)生確定的數(shù)值。AND、 OR、 NOT、 XOR 邏輯運(yùn)算符只能對(duì)常數(shù)進(jìn)行運(yùn)算,運(yùn)算結(jié)果也是常數(shù)。 例:AND BL, 46H AND 0FH ; 匯編后得到 “ AND BL, 06H ”
11、的目標(biāo)碼,2020/9/7,16,三、關(guān)系運(yùn)算符,在兩個(gè)無符號(hào)操作數(shù)之間進(jìn)行大小關(guān)系比較 EQ(相等)、NE(不等)、LT(小于)、GT(大于)、LE(小于或等于)、GE(大于或等于) 若關(guān)系滿足則返回全1,否則返回全0。(0FFH0FFFFH0) 兩個(gè)操作數(shù)必須為 數(shù)據(jù) 或是同一段內(nèi)的兩個(gè)存儲(chǔ)單元的地址 例: MOV AX, 0A2H NE 02H ; 匯編后得到 “ MOV AX, 0FFFFH ” 的目標(biāo)碼 例4-6 MOV CX,(PORT LT 5)AND 100)OR(PORT GE 5)AND 200),2020/9/7,17,四、數(shù)值返回運(yùn)算符(分析運(yùn)算符),對(duì)單個(gè)操作數(shù)進(jìn)行屬
12、性分解,分別返回不同屬性的值 SEG取變量或標(biāo)號(hào)所在段的段基址,結(jié)果為16位值 OFFSET 取變量或標(biāo)號(hào)的段內(nèi)偏移量,結(jié)果為16位值 TYPE 取變量或標(biāo)號(hào)的類型 LENGTH 取變量重復(fù)次數(shù) or 1 只和有無DUP有關(guān) SIZE 取分配給變量的字節(jié)個(gè)數(shù) SIZE=LENGTH*TYPE,表4-2 TYPE運(yùn)算符返回值,2020/9/7,18,例,CSEG SEGMENT BUFF DW 10DUP(1234H),10H,00H COUN DD 12345678H CSEG ENDS,則:SEG BUFF = CSEG ;段基址 OFFSET BUFF = 0 ;偏移量 TYPE BUFF
13、 = 2(字) ;類型 LENGTH BUFF = 10 ;DUP次數(shù) SIZE BUFF = 10*2 = 20 ;字節(jié)數(shù),SEG COUN = CSEG OFFSET COUN = 24 TYPE COUN = 4(雙字) LENGTH COUN = 1 SIZE COUN = 4,2020/9/7,19,修改屬性運(yùn)算符(綜合運(yùn)算符),可以在程序運(yùn)行過程中,通過“修改屬性運(yùn)算符”來修改變量或標(biāo)號(hào)的屬性,包括段屬性、偏移地址屬性、類型屬性等。 有: 段操作符、PTR、THIS、HIGH、LOW、SHORT,2020/9/7,20,段操作符(P36 表2-7) 格式:段前綴:變量或地址表達(dá)式
14、功能:修改變量或表達(dá)式到某個(gè)段寄存器提供的段基址中 段前綴:CS、ES、DS、SS Eg4-12:MOVAX,ES:BX,PTR:給已分配的存儲(chǔ)單元或標(biāo)號(hào)賦予新的屬性。 格式:類型/距離 PTR 變量或標(biāo)號(hào) 功能:將PTR左邊的類型屬性賦給右邊的變量或標(biāo)號(hào) 常與BYTE、WORD、NEAR、FAR等連用 Eg4-13: N1DB15H,36H MOVAX,WORD PTR N1,2020/9/7,21,PTR例 MUL BYTE PTRBX ;限定存儲(chǔ)器操作數(shù)的類型 JMP WORD PTRBX ;段內(nèi)轉(zhuǎn)移 JMP DWORD PTRBX ;段間轉(zhuǎn)移 CS:IP JMP FAR PTR LO
15、;段間轉(zhuǎn)移,2020/9/7,22,THIS: 格式:變量/標(biāo)號(hào) EQU THIS 類型/距離 功能:該變量或標(biāo)號(hào)的段地址和偏移地址與下一個(gè)存儲(chǔ)單元的地址相同,并具有THIS后的屬性 Eg4-45:FIRST EQU THIS BYTE TABLE DW 200DUP(?) EG4-46 :SP1 EQU THIS FAR MOV AX,100,SHORT: 格式:SHORT 標(biāo)號(hào) 功能:限制轉(zhuǎn)移類指令為短轉(zhuǎn)移(-128127) Eg:L1:JMP SHORT L2 . L2:MOV AX,0,2020/9/7,23,HIGH、LOW(字節(jié)分離運(yùn)算符) 格式:HIGH/LOW 變量或標(biāo)號(hào) 功能
16、:對(duì)于一個(gè)數(shù)或表達(dá)式,分離出高位字節(jié)和低位字節(jié) Eg:K1 EQU 0ABCDH K2 EQU 1234H MOV AH, HIGH K1 MOV BL, LOW K2,經(jīng)過匯編后形成指令: MOV AH,0ABH MOV BL,34H,2020/9/7,24,4-3 8086宏匯編語言常用偽指令,8086宏匯編語言MASM5.0規(guī)定的常用偽指令,包括 數(shù)據(jù)定義語句DB、DW、DD 標(biāo)號(hào)賦值語句:EQU、= 段定義語句SEGMENT、ENDS 段分配語句:ASSUME 過程定義語句:PROC.ENDP 程序開始結(jié)束語句:ORG、END、NAME 群定義語句GROUP 結(jié)構(gòu)定義語句:STRUC.
17、ENDS 記錄定義語句:RECODE,2020/9/7,25,一、數(shù)據(jù)定義語句DB、DW、DD等,用于為數(shù)據(jù)項(xiàng)分配存儲(chǔ)單元并預(yù)置初值。 DB 變量為字節(jié)數(shù)據(jù)類型(8位) DW 變量為字?jǐn)?shù)據(jù)類型(16位) DD 變量為雙字?jǐn)?shù)據(jù)類型(32位) DQ 變量為4字?jǐn)?shù)據(jù)類型(64位) DT 變量為10字節(jié)數(shù)據(jù)類型(80位) 格式1:變量名 助記符 操作數(shù),操作數(shù) ;注釋 格式2:變量名 助記符 n DUP(操作數(shù),操作數(shù).) ;注釋,2020/9/7,26,ONE DB 8; 給變量ONE分配一個(gè)字節(jié),并 預(yù)置初值為8 TWODB ?; 字節(jié)變量TWO初值不定 ST DB 96, 20, ?, 57;
18、以ST為首址連續(xù)分配4個(gè)字節(jié)的存儲(chǔ)單元 STR DB How are you ? $ ; 定義字符串 TWIN DB 5 DUP( 0FFH ); 連續(xù)分配5個(gè)字節(jié),初值均為0FFH,2020/9/7,27,DB 與DW的應(yīng)用,DATA SEGMENT ARE1 DB 20H,30H ARE2 DW 2030H ARE3 DB A,B ARE4 DW AB DATA ENDS,ARE1,ARE2,ARE3,ARE4,注意 :用DW定義字符串時(shí)只允許包括兩個(gè)字符,多于兩個(gè)字符只能用DB定義。,2020/9/7,28,例,設(shè)DATA的段首地址為2000H DATA SEGMENT ORG 0004
19、H AVR1 DW 2030H AVR2 DB 40H DWVR DW AVR1 DDVR DD AVR2 DATA ENDS,用偽指令可以將變量或標(biāo)號(hào)的偏移地址存入存儲(chǔ)器,當(dāng)用DD定義的時(shí)候,變量或標(biāo)號(hào)的偏移地址存入低位字中,段地址存入高位字中。,2020/9/7,29,二、表達(dá)式賦值語句,格式:符號(hào)名 EQU 表達(dá)式 功能:用于給變量、標(biāo)號(hào)、常數(shù)、指令、表達(dá)式等定義一個(gè)符號(hào)名,程序中用到左邊的變量標(biāo)號(hào)時(shí)可用右邊的常數(shù)或表達(dá)式代替 特點(diǎn) :一經(jīng)定義不能重新定義 例4-27 COUNT EQU 100 DATA EQU COUNT+2(注:count必須提前定義) A1 EQU BX+SI B
20、1 EQU OFFSET A1 C1 EQU ADD,2020/9/7,30,等號(hào)語句 ;賦值 PP = 89FAH PP = PP+1; PP = 89FBH 等號(hào)語句與EQU語句的相同點(diǎn)在于:定義符號(hào)而非變量,故用EQU、= 定義的符號(hào)不占用存儲(chǔ)器單元 區(qū)別在于:等號(hào)語句可以在同一源程序中重復(fù)定義符號(hào)而無需解除,2020/9/7,31,三、段定義語句,段定義語句 SEGMENT / ENDS 用于對(duì) DS、ES、SS、CS 段的定義 語句格式: 段名 SEGMENT 定位類型 組合類型 分類名 段名 ENDS ENDS必須與SEGMENT成對(duì)出現(xiàn),且段名必須一致。,2020/9/7,32,
21、段定義的相關(guān)約定(略),定位類型:規(guī)定邏輯段的起始邊界,有4種選擇: PAGE:段起始地址的最低8位必須為0。 PARA:段起始地址的最低4位必須為0(缺省)。 WORD:段起始地址的最低1位必須為0,即從偶地址開始。 BYTE:段起始地址為任意值,即從任何地址開始都行。,組合類型:各個(gè)邏輯段之間的組合方式 NONE:本段與其它段邏輯上不發(fā)生關(guān)系,每段都有自己的基地址(缺省選擇)。 PUBLIC:連接程序首先將本段與其它同名同類別的段相鄰地連接在一起,然后為所有這些PUBLIC段指定一個(gè)共同的段基址。連接的先后次序由連接命令指定。,2020/9/7,33,段定義的相關(guān)約定(略),STACK:此
22、參數(shù)在堆棧段中不能省略,多個(gè)模塊只需一個(gè)堆棧段,各個(gè)模塊的堆棧段采用覆蓋方式組合,容量為其中最大的那段的容量。 COMMON:本段與其它同名段有相同的起始地址,采用覆蓋方式在存儲(chǔ)器中存放,長度為同名段中最大段的長度。 AT表達(dá)式:連接程序把本段裝在表達(dá)式值所指定的段地址(此方式不能指定代碼段)。 MEMORY:定位該段與其它模塊中的同名段有相同的首地址,采用覆蓋方式在存儲(chǔ)器中組合連接,功能與COMMAN類似,區(qū)別在于第一個(gè)MEMORY邏輯段覆蓋其它段。,分類名:給各段的名字信息,連接程序?qū)㈩悇e名相同的段組成一個(gè)段組用它們共同的名字作為這個(gè)段組的名字,物理上相鄰的連接在一起。類別必須用單引號(hào)括起
23、來。,例:STACK SEGMENT PARA STACK STACK,2020/9/7,34,地址計(jì)數(shù)偽指令$,SORTD SEGMENT ARRAY DB 25,46,3,75,5 COUNT EQU $-ARRAY SORTD ENDS ARRAY的偏移地址:0000H $ 的偏移地址:0005H $-ARRAY 實(shí)際是ARRAY數(shù)組的長度,表示當(dāng)前偏移地址值,常用來計(jì)算變量定義的數(shù)組或字符串的個(gè)數(shù)。,2020/9/7,35,段分配語句ASSUME,ASSUME 偽指令僅用在代碼段首行,用來將邏輯段分別定義成代碼段、數(shù)據(jù)段、堆棧段及附加段,代碼段名 SEGMENT 相關(guān)約定 ASSUME
24、 CS:段名,DS:段名, 代碼段內(nèi)定義,指令集合 代碼段名 ENDS 例:ASSUME DS:DATA,SS:STACK,CS:CODE,2020/9/7,36,每個(gè)段的容量小于等于64KB 用戶可以設(shè)置多個(gè)邏輯段,但只允許4個(gè)邏輯段同時(shí)有效 4個(gè)邏輯段不一定全部定義,通常代碼段和數(shù)據(jù)段是必須的 如果代碼段中使用了串指令,必須設(shè)置附加段做目標(biāo)串基址 ASSUME只指定某個(gè)段分配給哪個(gè)段寄存器,并將代碼段的段基址自動(dòng)裝入CS寄存器,而不能把其它段基址裝入相應(yīng)的段寄存器,所以在代碼段的開始要有初始化程序完成這個(gè)工作。對(duì)堆棧段來說,除了將段基址送入SS寄存器,還需要將棧頂偏移地址置入堆棧指示器SP
25、。 例,例4-29:求兩個(gè)16位無符號(hào)數(shù)相乘 DATA SEGMENT D1 DW 1234H D2 DW 5678H P1 DD ? P2 DD ? DATA ENDS STACK SEGMENT STACK STT DB 100 DUP(?) TOP EQU LENGTH STT STACK ENDS CODE SEGMENT ASSUME CS:CODE , DS:DATA , SS:STACK MAIN PROC FAR START: MOV AX, STACK MOV SS, AX MOV SP, TOP PUSH DS SUB AX,AX PUSH AX MOV AX, DATA
26、MOV DS, AX,MOV AX, D1 MUL D2 MOV BX, OFFSET P1 MOV BX, AX MOV BX+2, DX RET MAIN ENDP CODE ENDS END START,TOP=?,2020/9/7,38,四、過程定義偽指令,PROC FAR 、ENDP 遠(yuǎn)過程定義偽指令 PROC NEAR、ENDP 近過程定義偽指令,過程名 PROC FAR(NEAR) 過程指令集合 RET 過程名 ENDP 注:過程定義必須在代碼段內(nèi) PROC FAR 為定義遠(yuǎn)過程 PROC NEAR 為定義近過程,2020/9/7,39,過程名實(shí)質(zhì)上是過程入口的符號(hào)地址,也有三種
27、屬性:段屬性、偏移量屬性和類型。過程的類型屬性可以是NEAR或FAR。 過程和其它程序可定義在同一個(gè)段中,也可定義在不同的段中。對(duì)過程的調(diào)用要使用CALL語句,如: CALL PROC_NAME1 注:如果在過程定義中沒有寫明是NEAR過程或FAR過程,則匯編器將這個(gè)過程默認(rèn)為NEAR過程。,例,COD1SEGMENT ASSUME CS: COD1, ; 代碼段中的其它語句(主程序) SUB1PROC FAR; 名為SUB1的FAR過程開始 RET; 返回 SUB1ENDP; SUB1結(jié)束 SUB2PROC ; 名為SUB2的NEAR過程開始 RET; 返回 SUB2ENDP; SUB2結(jié)束
28、 ; 可能定義的其它過程 COD1ENDS; 代碼段結(jié)束,2020/9/7,41,五、程序開始和結(jié)束語句,1、ORG 功能:給匯編程序設(shè)置位置指針,指定下面語句的偏移地址。 語句格式:ORG 表達(dá)式或常量 ORG語句之后段內(nèi)所有的數(shù)據(jù)或代碼均以表達(dá)式或常量的值為起始偏移量連續(xù)存放,除非遇到另一個(gè)ORG語句。 此語句本身并不占內(nèi)存。,2020/9/7,42,例4-33 用ORG指定代碼段地址,CODE SEGMENT ORG 100H ASSUME CS:CODE,DS:DATA START:MOVAX,DATA CODE ENDS,請(qǐng)問:這里100H是哪條語句的偏移地址呢?,2020/9/7,
29、43,2、NAME 格式:NAME 程序名 功能:給源程序匯編以后得到的目標(biāo)程序指定一個(gè)程序名,連接時(shí)需要使用這個(gè)目標(biāo)程序的名。 注釋:如果程序中沒有NAME偽指令,則匯編程序?qū)ITLE偽指令(TITLE屬于列表偽指令)后面“標(biāo)題名”中的前六個(gè)字符作為模塊名。如果源程序中既沒有使用NAME,也沒有使用 TITLE偽指令,則匯編程序?qū)⒃闯绦虻奈募鳛槟繕?biāo)程序的模塊名。,2020/9/7,44,3. END 格式:END標(biāo)號(hào) 功能:標(biāo)記匯編程序結(jié)束。 END偽指令助記符,不可缺省,在源程序最后一行, 每個(gè)模塊只有一個(gè)END,匯編程序到END語句停止匯編。 標(biāo)號(hào)是該程序中第一條可執(zhí)行語句的標(biāo)號(hào),
30、可以缺 省。,以上幾類偽指令語句是經(jīng)常用到的,下面所介紹的偽指 令語句對(duì)于靈活的編程較為有用。自學(xué)。,2020/9/7,45,4-4. DOS系統(tǒng)功能調(diào)用和BIOS中斷調(diào)用,用戶程序,高級(jí)語言,高級(jí)語言,DOS操作系統(tǒng),其它操作系統(tǒng),BIOS,硬件系統(tǒng),用戶程序和操作系統(tǒng)的關(guān)系,2020/9/7,46,4-4. DOS系統(tǒng)功能調(diào)用和BIOS中斷調(diào)用,補(bǔ)充知識(shí):當(dāng)我們編寫的匯編語言源程序是在DOS環(huán)境下運(yùn)行時(shí),必須了解匯編語言是如何同DOS操作系統(tǒng)接口的。 當(dāng)我們用編輯程序把源程序輸入到機(jī)器中,用匯編程序把它轉(zhuǎn)換為目標(biāo)程序,用連接程序?qū)ζ溥M(jìn)行連接和定位時(shí),操作系統(tǒng)為每一個(gè)用戶程序建立了一個(gè)程序段
31、前綴區(qū)PSP,其長度為256個(gè)字節(jié),主要用于存放所要執(zhí)行程序的有關(guān)信息,同時(shí)也提供了程序和操作系統(tǒng)的接口。操作系統(tǒng)在程序段前綴的開始處(偏移地址0000H)安排了一條INT 20H軟中斷指令。INT 20H中斷服務(wù)程序由DOS提供,執(zhí)行該服務(wù)程序后,控制就轉(zhuǎn)移到DOS,即返回到DOS管理的狀態(tài)。因此,用戶在組織程序時(shí),必須使程序執(zhí)行完后能去執(zhí)行存放于PSP開始處的INT 20H指令,這樣便返回到DOS,否則就無法繼續(xù)鍵入命令和程序。,2020/9/7,47,DOS在建立了程序段前綴區(qū)PSP之后,就將要執(zhí)行的程序(加載. EXE 文件時(shí))從磁盤裝入內(nèi)存。在定位程序時(shí),DOS將代碼段置于PSP下方
32、,代碼段之后是數(shù)據(jù)段,最后放置堆棧段。內(nèi)存分配好之后,DOS就設(shè)置段寄存器DS和ES的值,以使它們指向PSP的開始處,即INT 20H的存放地址,同時(shí)將CS設(shè)置為PSP后面代碼段的段地址,IP設(shè)置為指向代碼段中第一條要執(zhí)行的指令位置,把SS設(shè)置為指向堆棧的段地址,讓SP指向堆棧段的棧底(取決于堆棧的長度),然后系統(tǒng)開始執(zhí)行用戶程序。 為了保證用戶程序執(zhí)行完后能返回到DOS狀態(tài),可使用如下兩種方法。,2020/9/7,48,用戶程序返回DOS的方法,(1)標(biāo)準(zhǔn)方法 首先將用戶程序的主程序定義成一個(gè)FAR過程,其最后一條指令為RET。然后在代碼段的主程序(即FAR過程)的開始部分用如下三條指令將P
33、SP中INT 20H 指令的段地址及偏移地址壓入堆棧: PUSHDS ;保護(hù)PSP段地址 MOV AX,0 ;保護(hù)偏移地址0 PUSH AX,這樣,當(dāng)程序執(zhí)行到主程序的最后一條指令RET時(shí),由于該過程具有FAR屬性,故存在堆棧內(nèi)的兩個(gè)字就分別彈出到CS和IP,從而執(zhí)行INT 20H指令,使控制返回到DOS狀態(tài)。,2020/9/7,49,用戶程序返回DOS的方法,(2)非標(biāo)準(zhǔn)方法 也可在用戶的程序中不定義過程段,只在代碼段結(jié)束之前(即CODE ENDS之前)增加兩條語句: MOV AH,4CH INT 21H 則程序執(zhí)行完后也會(huì)自動(dòng)返回DOS狀態(tài)。,2020/9/7,50,例:基本程序結(jié)構(gòu)(1)
34、,CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK BEGIN: MOV AX, DATA MOV DS, AX MOV AH, 4CH INT 21H ;DOS 功能調(diào)用,結(jié)束程序,返回DOS CODE SEGMENT END BEGIN,2020/9/7,51,基本程序結(jié)構(gòu)(2),2020/9/7,52,二、DOS系統(tǒng)功能調(diào)用,DOS提供若干的軟中斷調(diào)用,例如 讀寫磁盤扇區(qū)的軟中斷INT 25H 和 INT 26H, 退出程序的軟中斷 INT 20H、INT 22H等。 軟中斷中以INT 21H功能最強(qiáng),它提供一系列的功能調(diào)用,可以說幾乎包括了整
35、個(gè)系統(tǒng)的功能。 要求 :掌握 INT 21H 中的幾個(gè)基本的輸入輸出調(diào)用。其它的掌握使用的方法即可,2020/9/7,53,二、DOS系統(tǒng)功能調(diào)用,系統(tǒng)功能調(diào)用是微機(jī)的磁盤操作系統(tǒng)DOS為用戶提供的一組例行子程序,因而又稱為DOS系統(tǒng)功能調(diào)用。 為了使用方便,系統(tǒng)已將所有子程序按順序編號(hào),稱為調(diào)用號(hào)(又稱子功能號(hào))。對(duì)于所有的功能調(diào)用,使用時(shí)一般需要經(jīng)過以下四個(gè)步驟: (1) 系統(tǒng)功能號(hào)送AH寄存器。 (2) 入口參數(shù)送指定寄存器 (3) 發(fā)出中斷請(qǐng)求:INT 21H(系統(tǒng)功能調(diào)用指令)。 (4) 根據(jù)出口參數(shù)分析功能調(diào)用執(zhí)行情況。,2020/9/7,54,1、DOS鍵盤功能調(diào)用,2020/9
36、/7,55,(1)鍵入單字符: 1號(hào)功能調(diào)用: 調(diào)用格式:MOV AH,1 INT 21H 功能:系統(tǒng)執(zhí)行該功能時(shí)將掃描鍵盤,等待鍵入。一旦有鍵按下,就將鍵值(相應(yīng)字符的ASCII碼值)讀入,先檢查是否是CtrlBreak。若是,則退出命令執(zhí)行;否則將鍵值送入AL寄存器,同時(shí)將這個(gè)字符顯示在屏幕上。,2020/9/7,56,例4-51,交互式程序中用戶按下數(shù)字鍵1,2,3,程序轉(zhuǎn)入相應(yīng)的服務(wù)子程序,若按下其它鍵就繼續(xù)等待。,KEY:MOVAH,1 INT21H CMPAL,1 JEONE CMPAL,2 JETWO CMPAL,3 JETHREE JMPKEY ONE:. TWO:.,2020
37、/9/7,57,(2)輸入字符串 0AH號(hào)功能調(diào)用 調(diào)用格式:MOV DX,數(shù)據(jù)區(qū)的首偏移地址 MOV AH,10 INT 21H 功能:從鍵盤接收的字符串送到內(nèi)存數(shù)據(jù)區(qū)。要求事先定義一個(gè)數(shù)據(jù)區(qū),數(shù)據(jù)區(qū)內(nèi)第一個(gè)字節(jié)指出數(shù)據(jù)區(qū)能容納的字符個(gè)數(shù),不能為零;第二個(gè)字節(jié)保留,以用做填寫實(shí)際輸入的字符個(gè)數(shù);從第三個(gè)字節(jié)開始存放從鍵盤上接收的字符串,直到ENTER鍵結(jié)束。實(shí)際輸入的字符數(shù)少于定義的字節(jié)數(shù),數(shù)據(jù)區(qū)內(nèi)其余字節(jié)填零;若多于定義的字節(jié)數(shù),則后來輸入的字符丟掉,且響鈴。調(diào)用時(shí),要求DS:DX指向數(shù)據(jù)區(qū)首地址。,2020/9/7,58,例如: DATASEGMENT BUFDB 50;數(shù)據(jù)區(qū)長度 DB
38、 ? ;保留,填入實(shí)際輸入的字符個(gè)數(shù) DB 50 DUP(?) ;定義50個(gè)字節(jié)存儲(chǔ)空間 DATAENDS CODESEGMENT ASSUME CS:CODE, DS:DATA START:MOVAX, DATA MOVDS,AX MOV DX,OFFSET BUF MOV AH,10 INT 21H CODE ENDS ENDSTART,2020/9/7,59,2、DOS顯示功能調(diào)用,2020/9/7,60,(1) 單字符顯示: 2號(hào)功能調(diào)用 調(diào)用格式: MOV DL,待顯示字符的ASCII碼 MOV AH,2 INT 21H 本調(diào)用執(zhí)行后,顯示器顯示其ASCII碼值放入DL中的字符。,2
39、020/9/7,61,(2) 字符串輸出:9號(hào)功能調(diào)用 調(diào)用格式: MOV 通用寄存器,帶顯示字符串的段基址 MOV DS, 通用寄存器 MOV DX,待顯示字符串首字符的偏移地址;DS:DX MOV AH,9 INT 21H,本調(diào)用執(zhí)行后,顯示器顯示待顯示的字符串。調(diào)用時(shí),要求DS:DX必須指向內(nèi)存中一個(gè)以“$”作為結(jié)束標(biāo)志的字符串。,例如: DATASEGMENT BUF DB HOW DO YOU DO?,0DH,0AH,$ DATAENDS CODE SEGMENT MOV AX,DATA MOV DS,AX MOV DX,OFFSET BUF MOV AH,9 INT 21H COD
40、E ENDS,2020/9/7,63,常用系統(tǒng)功能調(diào)用應(yīng)用舉例 例: 利用DOS系統(tǒng)功能調(diào)用實(shí)現(xiàn)人機(jī)對(duì)話。 下述程序可以在屏幕上顯示一行提示信息,然后接收用戶從鍵盤輸入的信息并將其存入內(nèi)存數(shù)據(jù)區(qū)。,DATASEGMENT PARSDB 100;定義輸入緩沖區(qū) DB ? DB 100 DUP(?) MESGDB WHAT IS YOUR NAME ? ;要顯示的提示信息 DB $ ;提示信息結(jié)束標(biāo)志 DATA ENDS,STACK SEGMENT PARA STACK STACK DB 100 DUP(?) STACK ENDS CODESEGMENT ASSUME CS:CODE,DS:DAT
41、A,SS:STACK STARTPROC FAR BEGIN: PUSHDS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX,定義堆棧段,定義代碼段,DISP:MOV DX,OFFSET MESG MOV AH,9 ;利用9號(hào)功能調(diào)用顯示提示 INT 21H KEYBD: MOV DX,OFFSET PARS MOV AH,10;利用10號(hào)功能調(diào)用接收鍵盤輸入 INT 21H RET STARTENDP CODE ENDS END BEGIN,顯示字符串,2020/9/7,66,例:通過人機(jī)對(duì)話從鍵盤輸入一字符串,存入BUFIN為首地址的內(nèi)存區(qū),并在顯示器顯示該字
42、符串。,功能號(hào)AH,MSG109H,01H,MSG2 09H,0AH,09H,4CH,Dos.asm,2020/9/7,67,DATASEGMENT STRING1DB DO YOU WANT TO INPUT DB STRING?(Y/N),0DH,0AH, STRING2DB PLEASE INPUT STRING. DB 0DH,0AH, BUFIN DB 20H,? ;20H為設(shè)置長度,?為實(shí)際輸入長度 BUFINI DB 20H DUP(?) ;實(shí)際輸入的字符串存放區(qū) DATAENDS CODESEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA STARTP
43、ROC FAR BEGIN :PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX ;定義使用DS,ES LEA DX,STRING1 MOV AH,09H INT 21H ;顯示STRING1提示 MOV AH,01H INT 21H ;從鍵盤輸入1個(gè)字符至AL,2020/9/7,68,CMP AL,Y JNE DONE LEA DX,STRING2 MOV AH,09H INT 21H ;顯示STRING2提示 LEA DX,BUFIN MOV AH,0AH INT 21H ;從鍵盤輸入字符串至BUFIN MOV AL,BUFIN
44、1 CBW ;計(jì)算BUFIN 末地址 LEA SI,BUFIN2 ADD SI,AX ;SI 指向原輸入回車位置 MOV SI, ;字符串結(jié)尾為 MOV AH,09H LEA DX,BUFIN2 INT 21H ;顯示輸入的字符串,無長度 DONE:RET STARTENDP CODEENDS END BEGIN,將保存回車符的單元用$覆蓋。以備09號(hào)功能調(diào)用的串顯示用。,返回DOS操作系統(tǒng),2020/9/7,69,三. BIOS中斷調(diào)用,BIOS是固化在ROM中的一組I/O驅(qū)動(dòng)程序,它為系統(tǒng)各主要部件提供設(shè)備級(jí)控制,還為匯編語言程序設(shè)計(jì)者提供了字符I/O操作。與DOS功能調(diào)用相比,BIOS有
45、如下特點(diǎn): 調(diào)用BIOS中斷程序雖然比調(diào)用DOS中斷程序要復(fù)雜一些,但運(yùn)行速度快,功能更強(qiáng); DOS的中斷功能只是在DOS環(huán)境下適用,而BIOS功能調(diào)用不受任何操作系統(tǒng)的約束; 某些功能只有BIOS具有。 表4-11列出了IBM PC機(jī)主要的BIOS中斷類型。,2020/9/7,70,鍵盤服務(wù)程序的中斷類型號(hào)為16H,用INT 16H調(diào)用。軟中斷INT 16H服務(wù)程序有三個(gè)功能,功能號(hào)分別為0、1、2,功能號(hào)及出口參數(shù)如表4-10所示。,表4-10 INT 16H 的功能,1. 鍵盤中斷調(diào)用,2020/9/7,71,顯示器服務(wù)程序的中斷類型號(hào)為10H,用INT 10H調(diào)用。軟中斷INT 10H
46、服務(wù)程序有16個(gè)功能,功能號(hào)為015。常用功能如表4-11所示。,2. 顯示中斷調(diào)用,2020/9/7,72,表4-11 INT 10H的功能,2020/9/7,73,3. 打印機(jī)中斷調(diào)用 打印機(jī)服務(wù)程序的中斷類型號(hào)為17H,用INT 17H調(diào)用。有三個(gè)功能,功能號(hào)為0、1、2, 0號(hào)功能:打印一字符,入口:打印字符的ASCII碼送AL,打印機(jī)號(hào)02送DX。 1號(hào)功能:初始化打印機(jī) 。入口: DX:打印機(jī)號(hào),AL:初始化命令 2號(hào)功能:讀取打印狀態(tài)信息,返回到AH,打印機(jī)號(hào)DX,2020/9/7,74,例4-61 初始化打印機(jī),鍵入字符并打印輸出 MOVAH,1 MOVDX,0 INT17H
47、MOVAH,1 INT21H MOVAH,0 INT17H 4. 時(shí)間設(shè)置和讀取 用INT 1AH調(diào)用 5. 串行通訊的功能調(diào)用 用INT 14H調(diào)用,2020/9/7,75,4-5程序設(shè)計(jì)方法,匯編源程序的設(shè)計(jì)步驟 分析問題,建立數(shù)學(xué)模型 確定最佳算法 合理分配存儲(chǔ)單元和寄存器 繪制流程圖 編寫程序 調(diào)試程序,2020/9/7,76,匯編語言程序上機(jī)調(diào)試過程,源程序的編輯 用 EDIT.COM 產(chǎn)生源程序文件如: *.ASM 目標(biāo)程序的匯編( 編譯) 用 MASM.EXE 產(chǎn)生目標(biāo)程序文件如: *.OBJ 執(zhí)行程序的連接 用 LINK.EXE 產(chǎn)生執(zhí)行程序文件如: *.EXE 程序的調(diào)試 用
48、DEBUG.EXE 測試,若有問題返回第一步。,2020/9/7,77,順序程序設(shè)計(jì) 指令指針I(yè)P值線性增加 條件程序設(shè)計(jì)(分支程序結(jié)構(gòu)) IP值受標(biāo)志位的影響而跳變 循環(huán)程序設(shè)計(jì) IP值受計(jì)數(shù)器CX中的值不為零而循環(huán) 子程序結(jié)構(gòu),三種結(jié)構(gòu)的程序,2020/9/7,78,順序結(jié)構(gòu) (直線型結(jié)構(gòu) ),例: 編程計(jì)算表達(dá)式Z = X2-Y/5的值,其中X、Y為帶符號(hào)字節(jié)整數(shù),Z為帶符號(hào)字整數(shù)。,PUSHDS SUBAX, AX PUSHAX MOVAX, DAT MOVDS, AX,MOVAL, X IMULAL MOVBX, AX,MOVAL, Y CBW MOVCL, 5 IDIVCL CBW
49、,SUBBX, AX MOVZ, BX,RET,2020/9/7,79,程 序,;- 數(shù)據(jù)段定義 - DATSEGMENT XDB10 YDB- 20 ZDW? DATENDS,2020/9/7,80,程序(續(xù)),;- 代碼段定義 - CODSEGMENT ASSUME DS: DAT, CS: COD MAINPROC FAR START:PUSH DS; 保存返回地址 SUB AX, AX PUSH AX MOV AX, DAT MOV DS, AX; 初始化DS,2020/9/7,81,;- MOVAL, X IMULAL MOVBX, AX; (BX)= X*X ;- MOVAL, Y
50、 CBW; 將被除數(shù)擴(kuò)展為字?jǐn)?shù)據(jù) MOVCL, 5 IDIVCL CBW; (AX)= Y/5 ;- SUBBX, AX MOVZ, BX; Z = (BX)(AX),程序(續(xù)),2020/9/7,82,程序(續(xù)):過程的結(jié)束,;- RET; 返回DOS MAINENDP CODENDS ENDSTART,2020/9/7,83,分支結(jié)構(gòu),例:編程實(shí)現(xiàn)下列函數(shù)的功能,其中X、Y為無符號(hào)字節(jié)數(shù),2020/9/7,84,流程圖,(AL)=(BL)?,PUSHDS SUBAX, AX PUSHAX MOVAX, DAT MOVDS, AX,CMPAL, BL JEC1 JAC2,EXT: MOV Z
51、, AL RET,MOVAL, X MOVBL, Y,C1: MOVAL, 0 JMPEXT,C2: MOVAL, 1 JMPEXT,MOV AL, -1,2020/9/7,85,程 序,;- 數(shù)據(jù)段定義 - DATSEGMENT XDB242 YDB67 ZDB? DATENDS ;- 代碼段定義 - CODSEGMENT ASSUME DS: DAT, CS: COD MAINPROCFAR PUSHDS; 保存返回地址 SUBAX, AX PUSHAX MOVAX, DAT MOVDS, AX; 初始化DS,2020/9/7,86,;- MOVAL, X MOVBL, Y CMPAL,
52、BL JEC1; (AL)(BL) 則跳轉(zhuǎn)至C1,否則繼續(xù)執(zhí)行 JAC2; (AL) (BL) 則跳轉(zhuǎn)至C2,否則繼續(xù)執(zhí)行 MOVAL, -1 EXT: MOVZ, AL RET; 返回DOS C1: MOVAL, 0 JMPEXT C2: MOVAL, 1 JMPEXT ;- MAINENDP CODENDS END,2020/9/7,87,循環(huán)結(jié)構(gòu),2020/9/7,88,例:統(tǒng)計(jì)一個(gè)字符串對(duì)應(yīng)的ASCII碼串中二進(jìn)制“1”的個(gè)數(shù)。,該程序具有雙重循環(huán)結(jié)構(gòu): 內(nèi)循環(huán)控制完成對(duì)一個(gè)字符的處理, 外循環(huán)控制完成字符串中CNT個(gè)字符的處理。,2020/9/7,89,流程圖,N,PUSHDS SU
53、BAX, AX PUSHAX MOVAX, DAT MOVDS, AX,LOP2: CMP AL, 0 JE LOP3,EXT: RET,MOV AL, 0 MOV NUM, AL MOV SI, OFFSET STR1 MOV CL, CNT,SHL AL, 1 JNC LOP2 INC NUM JMP LOP2,LOP3: DEC CL,LOP1: LODSB,JNZ LOP1,2020/9/7,90,;- 數(shù)據(jù)段定義 - DATSEGMENT STR1DBABCDEFG; 定義字符串(最長不超過32個(gè)字符) CNTEQU$ - STR1; 統(tǒng)計(jì)字符串中字符個(gè)數(shù) NUMDB?; 存放統(tǒng)計(jì)結(jié)
54、果( 1的總個(gè)數(shù)256 ) DATENDS ;- 代碼段定義 - CODSEGMENT ASSUME DS: DAT, CS: COD MAINPROCFAR START:PUSHDS; 保存返回地址 SUBAX, AX PUSHAX MOVAX, DAT MOVDS, AX; 初始化DS ;-外循環(huán)開始- MOVAL, 0; 外循環(huán)初始化 MOVNUM, AL MOVSI, OFFSET STR1 MOVCL, CNT,2020/9/7,91,;-內(nèi)循環(huán)開始- LOP1: LODSB; 內(nèi)循環(huán)初始化,取字符同時(shí)更新指針 LOP2: CMPAL, 0; 內(nèi)循環(huán)控制 JELOP3; (AL)0,
55、不滿足循環(huán)條件,退出內(nèi)循環(huán) SHLAL, 1; 內(nèi)循環(huán)體(同時(shí)修改循環(huán)控制條件) JNCLOP2; 當(dāng)前位不為“1”,進(jìn)入下一次內(nèi)循環(huán) INCNUM; 當(dāng)前位為“1”,計(jì)數(shù)值加1 JMPLOP2; 進(jìn)入下一次內(nèi)循環(huán) ;-內(nèi)循環(huán)結(jié)束- LOP3:DECCL; 外循環(huán)控制 JNZLOP1; (CL)0,滿足循環(huán)條件,進(jìn)入下一次外循環(huán) ;-外循環(huán)結(jié)束- EXT:RET MAINENDP CODENDS ENDSTART,2020/9/7,92,1) ADDR1 開始的單元中連續(xù)存放兩個(gè)雙字?jǐn)?shù)據(jù),求其和,并將和存放在 ADDR2 開始的單元(假定和不超過雙字) MOV CX,2 XOR BX,BX C
56、LC NEXT: MOV AX,ADDR1+BX ADC AX, MOV ADDR2+BX,AX INC BX NEXT,解: ADDR1+BX+4 INC BX LOOP,2020/9/7,93,(2) 在數(shù)據(jù)段 ADDR1 地址處有 200 個(gè)字節(jié)數(shù)據(jù),要傳送到數(shù)據(jù)段地址 ADDR2 處。 MOV AX, SEG ADDR1 MOV DS, AX MOV ES, MOV SI, MOV DI, OFFSET ADDR2 MOV ,200 CLD REP,解: AX OFFSET ADDR1 CX MOVSB,2020/9/7,94,(3)已知有某字串 BUF1 的首地址為 2000H, 數(shù)據(jù)段與附加段重合。欲從
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年幼兒情感發(fā)展測試題情感認(rèn)知與社交技能評(píng)估
- 2026年心理咨詢師心理治療技術(shù)實(shí)操模擬題
- 2026年高級(jí)工程師崗位晉升E4E5專業(yè)能力測試題
- 2026年?duì)I養(yǎng)學(xué)與健康飲食營養(yǎng)師考試模擬題庫
- 2026年會(huì)計(jì)專業(yè)招聘筆試專業(yè)知識(shí)測試題庫
- 城中村鄉(xiāng)村旅游開發(fā)方案
- 幕墻抗沖擊性能評(píng)估方案
- 燃?xì)庑袠I(yè)技術(shù)標(biāo)準(zhǔn)研究方案
- 市政公園景觀設(shè)計(jì)方案
- 2026年老人照護(hù)人員培訓(xùn)合同協(xié)議
- 2026年益陽醫(yī)學(xué)高等專科學(xué)校單招職業(yè)技能筆試參考題庫含答案解析
- 國家自然基金形式審查培訓(xùn)
- 2026馬年卡通特色期末評(píng)語(45條)
- NCCN臨床實(shí)踐指南:肝細(xì)胞癌(2025.v1)
- 免租使用協(xié)議書
- 2025 AHA心肺復(fù)蘇與心血管急救指南
- 2026年九江職業(yè)大學(xué)單招職業(yè)適應(yīng)性測試題庫帶答案詳解
- ?;穾靺^(qū)風(fēng)險(xiǎn)動(dòng)態(tài)評(píng)估-洞察與解讀
- 激光焊接技術(shù)規(guī)范
- 消防聯(lián)動(dòng)排煙天窗施工方案
- 二手房提前交房協(xié)議書
評(píng)論
0/150
提交評(píng)論