




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口 第三章第三章 匯編語言程序設(shè)計匯編語言程序設(shè)計Assembly Language Programming 格式格式# 偽指令偽指令# DOS/BIOSDOS/BIOS調(diào)用調(diào)用 (簡單了解)簡單了解) 重點(diǎn):重點(diǎn):數(shù)據(jù)結(jié)構(gòu)表示數(shù)據(jù)結(jié)構(gòu)表示 變量、指針變量、指針 程序結(jié)構(gòu)程序結(jié)構(gòu) 程序流控制(條件、分支、循環(huán))程序流控制(條件、分支、循環(huán)) 程序設(shè)計方法程序設(shè)計方法1微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口程序設(shè)計語言與匯編語言程序設(shè)計語言與匯編語言計算機(jī)計算機(jī)程序程序設(shè)計語言設(shè)計語言高級語言(高級語言(High Level Language): 通用,一般不要通用,一般不要求了
2、解結(jié)構(gòu)原理。易讀,易編寫,調(diào)試,簡潔求了解結(jié)構(gòu)原理。易讀,易編寫,調(diào)試,簡潔BASIC,.,VC(+)/VB/DELPHI,JAVA,C#,HTML =機(jī)器語言(執(zhí)行)機(jī)器語言(執(zhí)行)-翻譯翻譯/編譯編譯 解釋程序(解釋程序(Interpreter)/編譯程序(編譯程序(Compiler)(編譯原理)(編譯原理)C+編譯編譯真實(shí)指令真實(shí)指令 JAVA編譯編譯 Java bytecode中間代碼中間代碼虛擬機(jī)指令虛擬機(jī)指令JAVA解釋器解釋器機(jī)器語言、匯編語言和高級語言機(jī)器語言、匯編語言和高級語言2微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口程序設(shè)計語言與匯編語言程序設(shè)計語言與匯編語言(2)匯編語言匯編語言(A
3、ssembly Language)-面向具體機(jī)器(面向具體機(jī)器(CPU)語言)語言 ,最最接近于機(jī)器語言的低級語言。借助于助記符編程,地址數(shù)據(jù)可符號化接近于機(jī)器語言的低級語言。借助于助記符編程,地址數(shù)據(jù)可符號化(可讀性提高),編寫、修改較方便。完整的語法,不易出錯。例:(可讀性提高),編寫、修改較方便。完整的語法,不易出錯。例: ADD AX,100 (05 64 00) JMP 1000:2000 (EA 00 20 00 10)特點(diǎn):特點(diǎn):匯編語言程序與機(jī)器代碼匯編語言程序與機(jī)器代碼一一對應(yīng)一一對應(yīng),程序流可控,速度快程序流可控,速度快,用,用于編制系統(tǒng)程序、實(shí)時通信于編制系統(tǒng)程序、實(shí)時通
4、信/控制控制/處理。處理。-面向具體機(jī)器(面向具體機(jī)器(CPU)語)語言,移植性差,不通用。言,移植性差,不通用。匯編(匯編(Assemble)源程序代碼源程序代碼機(jī)器語言代碼(目標(biāo)程序)的過程。機(jī)器語言代碼(目標(biāo)程序)的過程。功能:功能:語法檢查、翻譯。匯編程序語法檢查、翻譯。匯編程序Assembler機(jī)器匯編(機(jī)器匯編(人工人工匯編)。交叉匯編匯編)。交叉匯編借助其它機(jī)器(如借助其它機(jī)器(如PC)匯編。匯編。 反匯編(反匯編(Dis-Assemble) 機(jī)器語言代碼機(jī)器語言代碼指令指令代碼(源程序代碼(源程序) ,逆逆向工程向工程Reverse Engineering)機(jī)器語言機(jī)器語言 二
5、進(jìn)制表示的指令和數(shù)據(jù)序列二進(jìn)制表示的指令和數(shù)據(jù)序列/目標(biāo)代碼目標(biāo)代碼3微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口程序設(shè)計語言與匯編語言程序設(shè)計語言與匯編語言(3)匯編程序獲取匯編程序獲取 (1)機(jī)器碼機(jī)器碼Disassemble Sourcer /debuger (2)C ASM CL /Fa開關(guān)開關(guān); TCC -B; VS-C+Listing File (3)ASM 編程編程 (高級語言嵌入小匯編程序模塊高級語言嵌入小匯編程序模塊) MASM TASM ASM;匯編程序(匯編程序(MS-MASM 4.0/5.0 6.11/6.14/6.15)ASM86(小,無宏小,無宏MICRO支持支持)TASM(2.0
6、/3.0/3.1/4.1) MS/DOS版,版,Winddows版版匯編程序用途匯編程序用途 EXE, DLL, PE; PO, OO; 4微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口匯編語言源程序結(jié)構(gòu)特點(diǎn)匯編語言源程序結(jié)構(gòu)特點(diǎn)1.分段結(jié)構(gòu):分段結(jié)構(gòu):由若干邏輯段組成,有段名,用段由若干邏輯段組成,有段名,用段定義偽指令來定義。定義偽指令來定義。 (SS/CS/DS/ES) (開(開頭頭SEGMENT-結(jié)尾結(jié)尾ENDS)2. 代碼段起始處,用代碼段起始處,用ASSUME偽指令說明各段偽指令說明各段寄存器與邏輯段的關(guān)系,建立這些邏輯段的可寄存器與邏輯段的關(guān)系,建立這些邏輯段的可尋址性。尋址性。3. 整個源程序必
7、須以整個源程序必須以END結(jié)尾,通知匯編程序停結(jié)尾,通知匯編程序停止匯編。止匯編。4. 代碼段必須含有返回到代碼段必須含有返回到DOS系統(tǒng)的指令,保系統(tǒng)的指令,保證程序執(zhí)行完后自動回到證程序執(zhí)行完后自動回到DOS。5微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口匯編語言源程序格式匯編語言源程序格式(例(例1P137)DATA SEGMENT ;定義數(shù)據(jù)段定義數(shù)據(jù)段 DATA1 DB 0F8H,60H, 0ACH,74H,3BH;被加數(shù)被加數(shù) DATA2 DB 0C1H,36H,9EH,0D5H,20H;加數(shù)加數(shù) DATA ENDS;數(shù)據(jù)段結(jié)束數(shù)據(jù)段結(jié)束 CODE SEGMENT;定義代碼段定義代碼段 ASSUM
8、E CS:CODE,DS:DATA;告訴匯編程序段范圍告訴匯編程序段范圍 START: MOV AX,DATA MOV DS,AX ;初始化初始化DS MOV CX,5 ;循環(huán)次數(shù)送循環(huán)次數(shù)送CX段名段名段說明偽指令段說明偽指令標(biāo)號標(biāo)號6微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口 匯編語言源程序格式(例匯編語言源程序格式(例1續(xù))續(xù)) MOV SI,0 ;置置SI初值為零初值為零 CLC ; 清清CF標(biāo)志標(biāo)志LOOPER:MOV AL,DATA2SI;取一個字節(jié)加數(shù)取一個字節(jié)加數(shù) ADC DATA1SI,AL;與被加數(shù)相加與被加數(shù)相加 INC SI ;SI加加1指向下一字節(jié)指向下一字節(jié) DEC CX;計數(shù)器
9、計數(shù)器CX減減1 JNZ LOOPER;不等于零,轉(zhuǎn)不等于零,轉(zhuǎn)LOOPER (HLT) ;停止停止-實(shí)際?實(shí)際?(INT21H) CODE ENDS ;代碼段結(jié)束代碼段結(jié)束 END START;源程序結(jié)束,指定起始地址標(biāo)號源程序結(jié)束,指定起始地址標(biāo)號7微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口匯編語言源程序格式(例匯編語言源程序格式(例2)(PC臺式計算機(jī)在臺式計算機(jī)在MS-DOS環(huán)境下的標(biāo)準(zhǔn)程序格式)環(huán)境下的標(biāo)準(zhǔn)程序格式)MAIN PROC FAR ;MS-DOS 模板語句模板語句 PUSH DS XOR AX,AX ;=MOV AX,0 PUSH AX ;保存返回指針保存返回指針START: MOV
10、AX, DATA MOV DS, AX : RET ;返回原返回原DS:0000HMS-DOSMAIN ENDP8微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口匯編語言源程序匯編語言源程序語句的種類語句的種類(1)指令語句)指令語句(指令性語句)(指令性語句)可執(zhí)行,匯編程序產(chǎn)生機(jī)器目標(biāo)代碼可執(zhí)行,匯編程序產(chǎn)生機(jī)器目標(biāo)代碼MOV DS,AX(2)偽指令語句)偽指令語句(指示性語句(指示性語句)CPU不執(zhí)行,不產(chǎn)生目標(biāo)代碼,不執(zhí)行,不產(chǎn)生目標(biāo)代碼,匯編輔助信息匯編輔助信息DATA SEGMENT(3)宏指令語句)宏指令語句匯編時,有宏指令的地方都將用相應(yīng)的指令序列的目匯編時,有宏指令的地方都將用相應(yīng)的指令序列的目
11、標(biāo)代碼插入。標(biāo)代碼插入。9微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口匯編語言源程序匯編語言源程序語句的格式語句的格式語句構(gòu)成:語句構(gòu)成:標(biāo)號:標(biāo)號: 指令助記符指令助記符 操作數(shù)操作數(shù) ;注釋;注釋line1: MOV DS, AX ;comments名字名字 偽指令定義符偽指令定義符 操作數(shù)操作數(shù) ;注釋;注釋 DATA SEGMENT構(gòu)成元素:構(gòu)成元素:標(biāo)號和名字;標(biāo)號和名字;助記符和偽操作;操作數(shù);注釋(分號助記符和偽操作;操作數(shù);注釋(分號后)后) ;界符(空格)界符(空格) 10微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口語句的構(gòu)成元素語句的構(gòu)成元素p標(biāo)號和名字標(biāo)號和名字:以字母開頭,包含字母,數(shù)字,特殊符號等,
12、 32個,個,不能是匯編語言中的特殊保留字。標(biāo)號標(biāo)號(Label)指令的符號地址(可浮動),指令的符號地址(可浮動),這個地址一定在代碼段中!這個地址一定在代碼段中!三屬性:三屬性:段段(SEGMENT)、偏移量偏移量(OFFSET)、類型類型(TYPE即轉(zhuǎn)移遠(yuǎn)近即轉(zhuǎn)移遠(yuǎn)近(NEAR段內(nèi)轉(zhuǎn)移段內(nèi)轉(zhuǎn)移/FAR段間轉(zhuǎn)移段間轉(zhuǎn)移) )line1: MOV DS, AX ;comments JMP line111微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口語句的構(gòu)成元素語句的構(gòu)成元素名字名字(Name) 變量名變量名/段名段名/過程名過程名-指示性語句(可浮動)指示性語句(可浮動) 無冒號無冒號; 三屬性:三屬性:段
13、段(SEGMENT)、偏移量偏移量(OFFSET)、類類型型(TYPE即數(shù)據(jù)類型即數(shù)據(jù)類型(BYTE字節(jié)字節(jié)/WORD字字/DWORD雙字雙字 /QWORD四字四字 /TBYTE十字節(jié)十字節(jié)) )段段過程過程變量變量標(biāo)記標(biāo)記名稱名稱12微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口語句的構(gòu)成元素語句的構(gòu)成元素p助記符和偽操作助記符和偽操作 (Mnemonic & Pseudo Operation) 指令助記符指令助記符 MOV,ADD,. 指示性操作指示性操作 DB,DW,SEGMENT,ENDS,ASSUME,ENDp操作數(shù)操作數(shù)(Operand)單)單/雙雙/無,逗號隔開無,逗號隔開 包括:常數(shù)包括
14、:常數(shù)/寄存器寄存器/存儲器存儲器/表達(dá)式表達(dá)式 (1)常數(shù):常數(shù):xxxxD/B/H/O(Q),),ASCII(A01) 十進(jìn)制十進(jìn)制D可以缺省,十六進(jìn)制可以缺省,十六進(jìn)制ABH必須寫成必須寫成0ABH13微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口語句的構(gòu)成元素語句的構(gòu)成元素 操作數(shù)(操作數(shù)(1)(2)寄存器操作數(shù)寄存器操作數(shù) 8位位: AL/AH, BH/BL, CH,CL,DH,DL 16位位:AX/BX/CX/DX,SI/DI/BP/SP/ D/ES/CS(3)存儲器操作數(shù)存儲器操作數(shù) 標(biāo)號標(biāo)號 (少用絕對地址,多用標(biāo)號(少用絕對地址,多用標(biāo)號-維護(hù),移植維護(hù),移植) 變量變量 內(nèi)存數(shù)據(jù)區(qū)名內(nèi)存數(shù)據(jù)
15、區(qū)名, 存在該單元中的值存在該單元中的值, 類型類型 B/W/DW/QW/TB(4)表達(dá)式表達(dá)式 (預(yù)編譯(預(yù)編譯/匯編處理)匯編處理) (a)數(shù)值表達(dá)式:數(shù)值表達(dá)式:由數(shù)值常量、字符串常量或符號由數(shù)值常量、字符串常量或符號常量與常量與算數(shù)、邏輯、關(guān)系等運(yùn)算符算數(shù)、邏輯、關(guān)系等運(yùn)算符連接而成,在連接而成,在匯編時產(chǎn)生一個數(shù)值匯編時產(chǎn)生一個數(shù)值,僅有大小而沒有其它屬性,僅有大小而沒有其它屬性(段段/偏移量偏移量/類型類型),作為一種立即數(shù)。,作為一種立即數(shù)。14微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口語句的構(gòu)成元素語句的構(gòu)成元素 操作數(shù)(操作數(shù)(1)(4)表達(dá)式表達(dá)式 (b)地址表達(dá)式:地址表達(dá)式:由常量、
16、標(biāo)號、寄存器的內(nèi)容及由常量、標(biāo)號、寄存器的內(nèi)容及其其一些運(yùn)算符一些運(yùn)算符組成,其值表示存儲器地址,具有組成,其值表示存儲器地址,具有三大屬性(段三大屬性(段/偏移量偏移量/類型)。類型)。表達(dá)式中的運(yùn)算符:表達(dá)式中的運(yùn)算符: 算術(shù)運(yùn)算符算術(shù)運(yùn)算符 + - * / MOD (變量地址(變量地址+/-) PLACE+2*3,是,是PLACE單元后單元后6個單元的地址個單元的地址 (標(biāo)號的偏移量改變,而段基標(biāo)號的偏移量改變,而段基/類型不變類型不變) 邏輯運(yùn)算符邏輯運(yùn)算符 (位)(位)AND/OR/XOR/NOT AND AL,100001B AND AL,100001B AND 1111101B
17、區(qū)別于區(qū)別于邏輯運(yùn)算指令邏輯運(yùn)算指令15微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口語句的構(gòu)成元素語句的構(gòu)成元素 操作數(shù)(操作數(shù)(2)(5)表達(dá)式(續(xù))表達(dá)式(續(xù))關(guān)系運(yùn)算符關(guān)系運(yùn)算符 關(guān)系運(yùn)算符有:關(guān)系運(yùn)算符有:EQ(等于),(等于),NE(不等),(不等),LT(小于),(小于),GT(大于),(大于),LE(小于或等于),(小于或等于),GE(大于或等于)等。(大于或等于)等。 參與關(guān)系運(yùn)算的必須是兩個數(shù)值,或同一段中的兩參與關(guān)系運(yùn)算的必須是兩個數(shù)值,或同一段中的兩個存儲單元地址,但運(yùn)算結(jié)果只可能是兩個特定的個存儲單元地址,但運(yùn)算結(jié)果只可能是兩個特定的數(shù)值之一:當(dāng)關(guān)系不成立(假)時,數(shù)值之一:當(dāng)關(guān)系不成
18、立(假)時,結(jié)果為結(jié)果為0;當(dāng);當(dāng)關(guān)系成立(真)時,關(guān)系成立(真)時,結(jié)果為結(jié)果為0FFFFH。例如,。例如,MOV AX,4 EQ 3;關(guān)系不成立,故(;關(guān)系不成立,故(AX)0 MOV AX,4 NE 3;關(guān)系成立,故(;關(guān)系成立,故(AX)0FFFFH16微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口語句的構(gòu)成元素語句的構(gòu)成元素 操作數(shù)(操作數(shù)(3) 分析運(yùn)算符和合成運(yùn)算符分析運(yùn)算符和合成運(yùn)算符 分析運(yùn)算符分析運(yùn)算符 用以分析提取一個用以分析提取一個存儲器操作數(shù)存儲器操作數(shù)的的屬性屬性,如段、偏移量或類型等。,如段、偏移量或類型等。OFFSET 可以得到一個可以得到一個標(biāo)號或變量標(biāo)號或變量的偏移地址的偏移
19、地址 MOV SI,OFFSET DATA1 LEA SI, DATAl LEA SI, DATA1BX+100 SEG 可以得到一個標(biāo)號或變量的段值可以得到一個標(biāo)號或變量的段值 MOV AX,SEG ARRAY MOV DS,AXTYPE 結(jié)果結(jié)果=類型數(shù)值(與存儲器操作數(shù)類型屬性的類型數(shù)值(與存儲器操作數(shù)類型屬性的對應(yīng))對應(yīng)) B-1;W-2/DW-4/NEAR-(-1)/FAR(-2)17微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口語句的構(gòu)成元素語句的構(gòu)成元素 操作數(shù)(操作數(shù)(4)分析運(yùn)算符分析運(yùn)算符 TYPEVAR DW ?;?;變量變量VAR的類型為字的類型為字 2ARRAY DD 10 DUP(?
20、);(?); 變量變量ARRAY的類型為雙字的類型為雙字:type ARRAY= 4STR DB This is a test;變量變量STR的類型為字節(jié)的類型為字節(jié) 1 : MOV AX, TYPE VAR;(AX)2 MOV BX, TYPE ARRAY;(BX)4 MOV CX, TYPE STR ; (CX) 118微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口語句的構(gòu)成元素語句的構(gòu)成元素 操作數(shù)(操作數(shù)(5)分析運(yùn)算符分析運(yùn)算符 LENGTH/ SIZELENGTH 一個變量按一個變量按DUP定義的變量總數(shù)定義的變量總數(shù) 非非DUP則則=1 (LENGTH ARRAY=10)SIZE 一個變量第一個一
21、個變量第一個DUP定義的字節(jié)總數(shù)定義的字節(jié)總數(shù) (變量(變量TYPE*LENGTH) 非非DUP則則=TYPE 例例 V1 DB 20 DUP(?)(?),20,100H DUP(A) V2 DD 4000H SIZE V120 SIZE V2=419微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口語句的構(gòu)成元素語句的構(gòu)成元素 操作數(shù)(操作數(shù)(6) 分析運(yùn)算符和合成運(yùn)算符分析運(yùn)算符和合成運(yùn)算符合成運(yùn)算符合成運(yùn)算符 可規(guī)定存儲器操作數(shù)的某個屬性,例如可規(guī)定存儲器操作數(shù)的某個屬性,例如類型。類型。 PTR/THIS/HIGH/LOW/$ (類似類(類似類型強(qiáng)制轉(zhuǎn)換)型強(qiáng)制轉(zhuǎn)換)例:例: INC WORD PTR BX
22、 ADD BYTE PTR1000H, 38H20微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口語句的構(gòu)成元素語句的構(gòu)成元素 操作數(shù)(操作數(shù)(7)PTR (強(qiáng)制)指定存儲器操作數(shù)類型屬性,而段(強(qiáng)制)指定存儲器操作數(shù)類型屬性,而段/偏移地址偏移地址屬性保留。屬性保留。 MOV AX,BX INC WORD PTR BXTHIS(同(同C中中UNION聯(lián)合體)聯(lián)合體) 同一變量區(qū)同一變量區(qū),可按不同類型訪問(,可按不同類型訪問(BYTE/WORD/DWORD) V1WEQUTHIS WORDV1BDB 10 DUP(?)(?)MOV AX,WORD PTR V1B ;強(qiáng)制轉(zhuǎn)換;強(qiáng)制轉(zhuǎn)換 MOV AX, V1WSH
23、ORT 128/+127 短標(biāo)號短標(biāo)號 JMP SHORT SLABLE21微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口語句的構(gòu)成元素語句的構(gòu)成元素 操作數(shù)(操作數(shù)(8)(5)表達(dá)式(續(xù))表達(dá)式(續(xù)) 其它運(yùn)算符其它運(yùn)算符段超越段超越“:” CS:/ES/ SS:/DS:HIGH xxxxLOW xxxx $(當(dāng)前指令地址當(dāng)前指令地址)運(yùn)算關(guān)系順序運(yùn)算關(guān)系順序 P127 表表3.2 先合成先合成-分析運(yùn)算分析運(yùn)算(1)LENGTH,SIZE,WIDTH,MASK,(), (2)(結(jié)構(gòu)成員)(結(jié)構(gòu)成員)(3) (段超越)(段超越)(4)PTR,OFFSET,SEG,TYPE,THIS(5)HIGH,LOW-(6
24、)+,-(7)*/MOD,(8)SHL,SHR (9)EQ,NE,LT,LE,GT,GE(10)NOT(11)AND(12)OR,XOR(13) SHORT (最低最低) (不用硬記,多用括號)不用硬記,多用括號)優(yōu)先順序優(yōu)先順序22微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口源程序格式源程序格式 偽指令偽指令以上是操作數(shù)中的運(yùn)算符:運(yùn)算符:算數(shù)、邏輯、關(guān)系、分析、合成算數(shù)、邏輯、關(guān)系、分析、合成下面介紹偽指令: (分析合成分析合成運(yùn)算符也是運(yùn)算符也是偽指令偽指令)CPU指令指令一種操作一種操作偽指令偽指令指示性的語句指示性的語句23微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口偽指令(一)偽指令(一)符號定位偽指令符號定位偽
25、指令名字名字 EQU 表達(dá)式表達(dá)式(全局,唯一,不可換)(全局,唯一,不可換) COUNT EQU 2000名字名字 = 表達(dá)式表達(dá)式 COUNT=2000 (可換改)可換改) 名字名字 LABEL 類型類型(Byte,Word,Double Word, STRUC,RECORD,NEAR,F(xiàn)AR) THIS 定義標(biāo)號或變量類型定義標(biāo)號或變量類型(下一下一CPU指令或指令或DB偽偽指令指令)例:例:V1W EQU THIS WORD ;同同V1W LABLE WORD24微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口偽指令(二)偽指令(二)數(shù)據(jù)定義數(shù)據(jù)定義定義變量,指定其類型和名稱,并分配存儲單元定義變量,指定
26、其類型和名稱,并分配存儲單元DB(字節(jié))(字節(jié)) DW(字)(字) DD(雙字)(雙字) DQ (4字字/8字節(jié))字節(jié))DT (十字節(jié))(十字節(jié))DB 30,20H,111110B, 3 DUP(xx/?);DB ?,?DW ?,?,?, LABEL(偏移量偏移量)DD LABEL ;四字節(jié);四字節(jié) DT 十字節(jié)十字節(jié)HEX經(jīng)過定義的變量名都有三屬性:經(jīng)過定義的變量名都有三屬性: 段基地址段基地址(用用SEG獲得獲得) 偏移量偏移量(用用OFFSET獲得獲得) 類型類型(用用TYPE獲得獲得)25微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口偽指令(二)偽指令(二)數(shù)據(jù)定義數(shù)據(jù)定義STRUC 自定義多字段組成的
27、數(shù)據(jù)類型。自定義多字段組成的數(shù)據(jù)類型。(同同C中中struct) -定義結(jié)構(gòu)類型定義結(jié)構(gòu)類型 變量名變量名 結(jié)構(gòu)名結(jié)構(gòu)名 定義結(jié)構(gòu)變量定義結(jié)構(gòu)變量 VS1 S1; VS2 S1 20 DUP(); VS3 S1 30 dup) 結(jié)構(gòu)變量名結(jié)構(gòu)變量名.字段名(成員名)字段名(成員名)-引用引用 |BX.字段名,字段名,VS1. 字段名字段名(SIZE 等仍可用等仍可用)VS1.V1, BX.V2, BX.V1+100結(jié)構(gòu)名結(jié)構(gòu)名 STRUC: : 結(jié)構(gòu)名結(jié)構(gòu)名 ENDS例例 S1 STRUC V1 DB ? V2 DW ? S1 ENDS26微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口偽指令(三)偽指令(三)段
28、定義段定義SEGMENT / ENDS 邏輯段存儲定位關(guān)系邏輯段存儲定位關(guān)系 SEGMENT 定位類型定位類型,組合類型,組合類型,類別類別. PARA (段的起始位置必須是段的起始位置必須是XXXX0H) BYTE (任意)(任意) WORD (偶數(shù)地址)(偶數(shù)地址) PAGE (頁(頁256,XXX00H)四種定位類型四種定位類型:匯編程序?qū)υ闯绦騾R編得到匯編程序?qū)υ闯绦騾R編得到OBJ,其中,其中各段地址和偏移量都未最終確定,還需要用鏈接程各段地址和偏移量都未最終確定,還需要用鏈接程序序LINK把各個模塊連起來。定位類型告訴把各個模塊連起來。定位類型告訴LINK程程序連接時本段首地址的邊界
29、定位方式。)序連接時本段首地址的邊界定位方式。)段1段2段327微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口偽指令(三)偽指令(三)段定義段定義SEGMENT / ENDS SNAME SEGMENT 定位類型定位類型,組合類型組合類型,類別類別. NONE 不組合不組合 PUBLIC 多個模塊中的相同段名裝配合一多個模塊中的相同段名裝配合一 STACK 同同Public( 相同段名裝配合一相同段名裝配合一),作為堆棧段,作為堆棧段 COMMON 公用,各模塊中由此方式說明的同名段公用,各模塊中由此方式說明的同名段重疊覆蓋,有著相同的起始地址。重疊覆蓋,有著相同的起始地址。 MEMORY 把本段置于被鏈接到一
30、起的其他所有段把本段置于被鏈接到一起的其他所有段的最后,多個時取首先遇到的作為的最后,多個時取首先遇到的作為MEMORY,其,其余作為余作為COMMON28微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口偽指令(三)偽指令(三)段定義段定義SEGMENT / ENDS SEGMENT 定位類型定位類型,組合類型,組合類型,類別類別. AT 表達(dá)式表達(dá)式 定位在指定段基位置定位在指定段基位置 AT 2000H 起始物理地址起始物理地址20000H; 類別類別(名稱名稱 )鏈接時,相同類別)鏈接時,相同類別連續(xù)連續(xù)裝入成一塊裝入成一塊(段段) ENDS -段結(jié)束段結(jié)束 簡化的段定義簡化的段定義 MASM5.0.COD
31、E .DATA .STACK 29微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口偽指令(三)偽指令(三)段定義段定義ORG 強(qiáng)行指定地址計數(shù)器(記載正在匯編的數(shù)據(jù)或指令代碼存放強(qiáng)行指定地址計數(shù)器(記載正在匯編的數(shù)據(jù)或指令代碼存放在當(dāng)前段內(nèi)的偏移量),以改變在它以后的數(shù)據(jù)或代碼存放在當(dāng)前段內(nèi)的偏移量),以改變在它以后的數(shù)據(jù)或代碼存放的偏移地址。的偏移地址。 DATA SEGMENT ORG 10H;強(qiáng)行改變強(qiáng)行改變起始偏移地址起始偏移地址 X DB 20H,30H ORG $+5 Y DB 40H,50H30微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口偽指令(四)偽指令(四)段寄存器說明段寄存器說明ASSUME SR:段名:段名
32、,SR:段名:段名, - 邏 輯 段 與 物 理 段 之 間 的 關(guān) 系邏 輯 段 與 物 理 段 之 間 的 關(guān) 系 ( 段 寄 存 器段 寄 存 器=CS/DS/ES/SS) 匯編時確定變量匯編時確定變量(直接直接MEM訪問訪問)屬于哪一個段范圍屬于哪一個段范圍計算偏移量,計算偏移量,必要時自動加段超越前綴。不改變段必要時自動加段超越前綴。不改變段寄存器內(nèi)容!寄存器內(nèi)容! MOV AX, WORDMEM 匯編匯編 CS/ES/SS: MOV AX,3002例例ASSUME CS:CODE, DS:DATA, SS:STACK未注明未注明error A2068:Cannot address
33、with segement register.31微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口偽指令(五)偽指令(五)過程定義過程定義過程名過程名 PROC (NEAR)/FAR: RET;(自動(自動RETF/RET)例:例: 過程名過程名 ENDP ; 程序塊定義程序塊定義 子程序(子程序(SUBROUTINE) 引用:引用:CALL 過程名過程名,(堆棧使用)堆棧使用) 轉(zhuǎn)移轉(zhuǎn)移, 順序執(zhí)行順序執(zhí)行MYPROC PROC : RETMYPROC ENDPCALL MYPROC;32微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口偽指令(五)偽指令(五)過程定義過程定義縮短源程序代碼總長度縮短源程序代碼總長度:一處定義一處定
34、義, 多處調(diào)用多處調(diào)用(CALL)利于實(shí)現(xiàn)模塊化的程序設(shè)計利于實(shí)現(xiàn)模塊化的程序設(shè)計,便于編制、調(diào)試和維護(hù)便于編制、調(diào)試和維護(hù)PRINTCHS PROC : RETPRINTCHS ENDPPUSH S1CALL PRINTCHS:PUSH S2CALL PRINTCHS:PUSH S3 CALL PRINTCHS實(shí)現(xiàn)實(shí)現(xiàn): 利用堆棧來傳遞參數(shù)、利用堆棧來傳遞參數(shù)、保存斷點(diǎn)、過程的定義保存斷點(diǎn)、過程的定義和調(diào)用均可嵌套、返回和調(diào)用均可嵌套、返回33微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口偽指令(六)偽指令(六)模塊與鏈接定義模塊與鏈接定義NAME NAME 給匯編后的目標(biāo)程序指定模塊名給匯編后的目標(biāo)程序指定
35、模塊名 ENDEND 起始入口標(biāo)號起始入口標(biāo)號 源程序到此結(jié)束源程序到此結(jié)束PUBLICPUBLIC 符號符號 , 模塊中的某些符號是公共的模塊中的某些符號是公共的( (本模塊定義)本模塊定義)EXTRNEXTRN 名字:類型名字:類型 , 模塊中的某些符號是公共的模塊中的某些符號是公共的( (他模塊定他模塊定義)義) ( (匯編匯編) )源程序文件源程序文件 匯編工具匯編工具M(jìn)ASM.EXE MASM.EXE 浮動目標(biāo)程序浮動目標(biāo)程序 xxx.ASM xxx.ASM xxx.OBJ xxx.OBJ 浮動目標(biāo)浮動目標(biāo)程序程序 鏈接程序鏈接程序link.exe link.exe 可執(zhí)行目標(biāo)程序可執(zhí)行目標(biāo)程序 xxx.OBJ xxx.OBJ xxx.exe xxx.exe 各自生成各自生成OBJOBJ,但通過鏈接成為一個整體,但通過鏈接成為一個整體exeexe,一個模,一個模塊中定義的符號可以被另一個模塊引用。塊中定義的符號可以被另一個模塊引用。單單模模塊塊34微機(jī)系統(tǒng)與接口微機(jī)系統(tǒng)與接口偽指令(六)偽指令(六)多模塊與鏈接多模塊與鏈接 ( (匯編匯編) )源程序文件源程序文件 匯編工具匯編工具M(jìn)ASM.EXE MASM.EXE 浮動目標(biāo)程序浮動目標(biāo)程序 A.ASM A.ASM
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 南通大學(xué)杏林學(xué)院《中學(xué)美術(shù)課程標(biāo)準(zhǔn)與教材研究》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧師范大學(xué)《急診醫(yī)學(xué)Ⅰ》2023-2024學(xué)年第二學(xué)期期末試卷
- 漳州職業(yè)技術(shù)學(xué)院《化學(xué)課堂教學(xué)技能訓(xùn)練》2023-2024學(xué)年第二學(xué)期期末試卷
- 江西冶金職業(yè)技術(shù)學(xué)院《建筑快題設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 沈陽理工大學(xué)《固體廢物處理與處置工程》2023-2024學(xué)年第二學(xué)期期末試卷
- 長春光華學(xué)院《人工智能程序設(shè)計實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 茂名職業(yè)技術(shù)學(xué)院《臨床流行病學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 昌吉學(xué)院《武術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 天津外國語大學(xué)《機(jī)械制圖(二)》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙大寧波理工學(xué)院《數(shù)字電視中心技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 【MOOC】大學(xué)英語視聽導(dǎo)學(xué)-湖南大學(xué) 中國大學(xué)慕課MOOC答案
- 2024年高考真題-化學(xué)(天津卷) 含解析
- 2024年可行性研究報告投資估算及財務(wù)分析全套計算表格(含附表-帶只更改標(biāo)紅部分-操作簡單)
- 國開2024年《機(jī)械設(shè)計基礎(chǔ)》形考任務(wù)1-4答案
- Creo-7.0基礎(chǔ)教程-配套課件
- 危險化學(xué)品企業(yè)安全標(biāo)準(zhǔn)化規(guī)范課件
- 客戶退貨處理流程圖
- 中國民主同盟入盟申請表(樣表)
- 畢業(yè)設(shè)計(論文)-軸向柱塞泵設(shè)計(含全套CAD圖紙)
- 公安機(jī)關(guān)通用告知書模板
- 山東省初中學(xué)業(yè)水平考試信息技術(shù)學(xué)科命題要求
評論
0/150
提交評論