最新計算機(jī)語言程序設(shè)計_第1頁
最新計算機(jī)語言程序設(shè)計_第2頁
最新計算機(jī)語言程序設(shè)計_第3頁
最新計算機(jī)語言程序設(shè)計_第4頁
最新計算機(jī)語言程序設(shè)計_第5頁
已閱讀5頁,還剩215頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日最新計算機(jī) 匯編語言程序設(shè)計 微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日第第4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計 l本章要點 4.1 匯編語言與匯編程序匯編語言與匯編程序 4.2 偽指令及其應(yīng)用偽指令及其應(yīng)用 4.3 匯編語言屬性操作符匯編語言屬性操作符 4.4基本結(jié)構(gòu)的程序設(shè)計基本結(jié)構(gòu)的程序設(shè)計 4.5宏指令宏指令 4.6 32 位匯編語言與位匯編語言與C+語言混合編程語言混合編程 微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4

2、月24日4.1 匯編語言與匯編程序l程序員用各種編程語言編寫指令以指揮計算機(jī)工作。計算機(jī)程序由一系列指程序員用各種編程語言編寫指令以指揮計算機(jī)工作。計算機(jī)程序由一系列指令序列組成。計算機(jī)通過對每條指令的譯碼和執(zhí)行來完成相應(yīng)的操作。指令令序列組成。計算機(jī)通過對每條指令的譯碼和執(zhí)行來完成相應(yīng)的操作。指令必須以二進(jìn)制代碼的形式存放在內(nèi)存中,才能夠被計算機(jī)所識別和理解,并必須以二進(jìn)制代碼的形式存放在內(nèi)存中,才能夠被計算機(jī)所識別和理解,并加以執(zhí)行。由二進(jìn)制代碼表示的指令稱為機(jī)器指令,相應(yīng)的程序稱為機(jī)器語加以執(zhí)行。由二進(jìn)制代碼表示的指令稱為機(jī)器指令,相應(yīng)的程序稱為機(jī)器語言程序。言程序。l任何計算機(jī)所能直接

3、理解的語言只有其本身的機(jī)器語言任何計算機(jī)所能直接理解的語言只有其本身的機(jī)器語言(Machine Language)。機(jī)器語言是特定計算機(jī)的自然語言,由計算機(jī)的硬件設(shè)計定義。機(jī)器語言是特定計算機(jī)的自然語言,由計算機(jī)的硬件設(shè)計定義。機(jī)器語言通常由一系列數(shù)字組成機(jī)器語言通常由一系列數(shù)字組成(最終簡化最終簡化0和和1),讓計算機(jī)一次一個地執(zhí)行,讓計算機(jī)一次一個地執(zhí)行最基本的操作。機(jī)器語言程序由最基本的操作。機(jī)器語言程序由0、1二進(jìn)制代碼組成,非常繁瑣、難于編程二進(jìn)制代碼組成,非常繁瑣、難于編程和記憶。隨著計算機(jī)越來越普及,機(jī)器語言編程對大多數(shù)程序員顯然太慢、和記憶。隨著計算機(jī)越來越普及,機(jī)器語言編程對

4、大多數(shù)程序員顯然太慢、太繁瑣。程序員不用計算機(jī)直接理解的一系列數(shù)字,而是用類似英文縮寫的太繁瑣。程序員不用計算機(jī)直接理解的一系列數(shù)字,而是用類似英文縮寫的助記符助記符(Memoni)來表示計算機(jī)的基本操作,這些助記符構(gòu)成了匯編語言來表示計算機(jī)的基本操作,這些助記符構(gòu)成了匯編語言(Assembly Language)。使用匯編語言編寫的程序,機(jī)器不能直接識別,稱。使用匯編語言編寫的程序,機(jī)器不能直接識別,稱為匯編器為匯編器/匯編程序匯編程序(assembler)的翻譯程序?qū)R編語言程序轉(zhuǎn)換為機(jī)器語言。的翻譯程序?qū)R編語言程序轉(zhuǎn)換為機(jī)器語言。由此產(chǎn)生了用指令助記符表示的匯編語言指令,對應(yīng)的程序稱為

5、匯編語言程由此產(chǎn)生了用指令助記符表示的匯編語言指令,對應(yīng)的程序稱為匯編語言程序。匯編程序把匯編語言翻譯成機(jī)器語言的過程稱為匯編。序。匯編程序把匯編語言翻譯成機(jī)器語言的過程稱為匯編。 微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.1 匯編語言與匯編程序l【例【例4-1】【例】【例4-28】均在】均在MASM6.11的環(huán)境中編譯。的環(huán)境中編譯。l【例【例4-1】將】將4位二進(jìn)制數(shù)對應(yīng)的位二進(jìn)制數(shù)對應(yīng)的16進(jìn)制數(shù)轉(zhuǎn)換為進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼字符并在屏幕上顯示出來。當(dāng)數(shù)在碼字符并在屏幕上顯示出來。當(dāng)數(shù)在0000B-1001B時,對應(yīng)的時,對應(yīng)的ASCII碼

6、為碼為0-9(30H-39H);當(dāng)數(shù)在);當(dāng)數(shù)在1010B-1111B時,對應(yīng)的時,對應(yīng)的ASCII碼為碼為A-F(41H-46H)。l步驟如下:步驟如下:l(1)在)在Windows系統(tǒng)中的【記事本】(系統(tǒng)中的【記事本】(%SystemRoot%system32notepad.exe)中輸入如下的匯編語言程序并另存為)中輸入如下的匯編語言程序并另存為C:MASM611BINE4-1.ASM:lDATAS SEGMENT ;此處輸入數(shù)據(jù)段代碼此處輸入數(shù)據(jù)段代碼l x DB 10lDATAS ENDSlCODES SEGMENT;此處輸入代碼段代碼此處輸入代碼段代碼l ASSUME CS:COD

7、ES,DS:DATASlSTART:l MOV AX,DATASl MOV DS,AXl MOV AL,xl AND AL,0FHl CMP AL,0AHl JB NUM; JB:jump when belowl ADD AL,07HlNUM: ADD AL,30Hl MOV DL,AL ;DOS2號功能調(diào)用,顯示號功能調(diào)用,顯示DL中中ASCII碼對應(yīng)的字符碼對應(yīng)的字符l MOV AH,2l INT 21Hl MOV AH,4CH ;帶返回碼結(jié)束帶返回碼結(jié)束l INT 21HlCODES ENDSl END START微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013

8、年4月24日4.1 匯編語言與匯編程序l(2)單擊)單擊【開始開始】【】【程序程序】【】【運行運行】,在,在【打開打開】框框中輸入中輸入cmd,再單擊,再單擊【確定確定】。l在彈出的在彈出的DOS命令提示符窗口中輸入如下帶下劃線的命令:命令提示符窗口中輸入如下帶下劃線的命令:lC:Documents and SettingsCD C:masm611binl此命令將當(dāng)前目錄切換到此命令將當(dāng)前目錄切換到C:MASM611BIN。lC:MASM611BINMASM E4-1.asml上述命令將匯編語言源程序上述命令將匯編語言源程序E4-1.asm翻譯成二進(jìn)制代碼翻譯成二進(jìn)制代碼的機(jī)器語言程序(即目標(biāo)

9、代碼),在的機(jī)器語言程序(即目標(biāo)代碼),在C:masm611bin目目錄里會看到新生成的目標(biāo)代碼文件錄里會看到新生成的目標(biāo)代碼文件E4-1.obj。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.1 匯編語言與匯編程序l(3)C:MASM611BINLink E4-1.obj ( 不用附加名不用附加名OBJ也可),如圖也可),如圖4-1所示。所示。lMicrosoft (R) Segmented Executable Linker Version 5.31.009 Jul 13 1992lCopyright (C) Microsoft Corp 198

10、4-1992. All rights reserved.lRun File e4-1.exe: 是否改動輸出是否改動輸出EXE文件名,如不改就文件名,如不改就ENTERlList File nul.map: 是否需要列表文件(是否需要列表文件(MAP),不需要則),不需要則ENTERlLibraries .lib: 是否需要庫文件,要就鍵入文件名,不要則是否需要庫文件,要就鍵入文件名,不要則ENTERlDefinitions File nul.def:lLINK : warning L4021: no stack segment由于由于COM文件不使用堆棧段,所文件不使用堆棧段,所以錯誤信息,

11、以錯誤信息,no stack segment并不影響程序正常執(zhí)行至此已經(jīng)生成并不影響程序正常執(zhí)行至此已經(jīng)生成EXE文件。文件。l連接程序連接程序Link.exe將目標(biāo)文件將目標(biāo)文件E4-1.obj與其他目標(biāo)文件及系統(tǒng)提供的一些庫與其他目標(biāo)文件及系統(tǒng)提供的一些庫文件連接在一起,生成以文件連接在一起,生成以EXE或或COM為擴(kuò)展名的可執(zhí)行文件。為擴(kuò)展名的可執(zhí)行文件。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.1 匯編語言與匯編程序(4)運行如圖所示,鍵入E4-1.exe,可看到輸出的結(jié)果A,A是10的十六進(jìn)制表示。 微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)

12、 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.1 匯編語言與匯編程序l(5)調(diào)試和查看匯編代碼的機(jī)器碼)調(diào)試和查看匯編代碼的機(jī)器碼l在在CodeView(安裝安裝MASM6.11后,是默認(rèn)安裝路徑的后,是默認(rèn)安裝路徑的C:MASM611BINCV.EXE文件文件)中打開中打開E4-1.exe文件,即可看到如下圖圖文件,即可看到如下圖圖4-2所示的窗口。所示的窗口。 微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.1 匯編語言與匯編程序l畫面的左上窗口是調(diào)試器的主窗口,其顯示被調(diào)畫面的左上窗口是調(diào)試器的主窗口,其顯示被調(diào)試的源程序或執(zhí)行代碼,左下

13、窗口是命令窗口,試的源程序或執(zhí)行代碼,左下窗口是命令窗口,用戶可輸入各種用戶可輸入各種DEBUG命令,右窗口是顯示寄命令,右窗口是顯示寄存器窗口,它可顯示存器窗口,它可顯示16位寄存器的內(nèi)容。在主窗位寄存器的內(nèi)容。在主窗口口3中,分為中,分為3列顯示,第列顯示,第1列顯示的是代碼所在列顯示的是代碼所在內(nèi)存單元的段地址和段內(nèi)偏移地址,請注意右側(cè)內(nèi)存單元的段地址和段內(nèi)偏移地址,請注意右側(cè)寄存器寄存器reg窗口的窗口的CS寄存器和寄存器和IP寄存器的值,它寄存器的值,它們和當(dāng)前要執(zhí)行的指令的段地址和偏移地址是一們和當(dāng)前要執(zhí)行的指令的段地址和偏移地址是一致的。第致的。第2列顯示的是第列顯示的是第3列匯

14、編指令的相應(yīng)的列匯編指令的相應(yīng)的16進(jìn)制表示的機(jī)器指令。按快捷鍵進(jìn)制表示的機(jī)器指令。按快捷鍵F10可以進(jìn)行單可以進(jìn)行單步運行代碼,以逐語句觀察運行結(jié)果。步運行代碼,以逐語句觀察運行結(jié)果。 微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.1.2 匯編與連接匯編與連接l1匯編程序匯編程序l匯編是把匯編語言程序翻譯成機(jī)器語言描述的目標(biāo)程序的過程。匯編是把匯編語言程序翻譯成機(jī)器語言描述的目標(biāo)程序的過程。l匯編程序是完成匯編任務(wù)的程序。匯編程序是完成匯編任務(wù)的程序。l2連接程序連接程序l連接程序的主要功能是實現(xiàn)多個目標(biāo)文件及庫文件的連接,并完成浮連接程序的主要功

15、能是實現(xiàn)多個目標(biāo)文件及庫文件的連接,并完成浮動地址的重定位。動地址的重定位。l從匯編語言源程序到可執(zhí)行程序的生成過程如圖所示。從匯編語言源程序到可執(zhí)行程序的生成過程如圖所示。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.1.3 匯編語言與高級語言匯編語言與高級語言l匯編語言程序的基本單位仍然是機(jī)器指令,只是采用助記符表示,便匯編語言程序的基本單位仍然是機(jī)器指令,只是采用助記符表示,便于人們記憶。匯編語言是一種依賴于計算機(jī)微處理器的語言,每種機(jī)于人們記憶。匯編語言是一種依賴于計算機(jī)微處理器的語言,每種機(jī)器都有它專用的匯編語言器都有它專用的匯編語言(如如

16、8086CPU與與8031單片機(jī)的匯編語言即不單片機(jī)的匯編語言即不相同相同),匯編語言一般不具有通用性和可移植性。由于進(jìn)行匯編語言,匯編語言一般不具有通用性和可移植性。由于進(jìn)行匯編語言程序設(shè)計必須熟悉機(jī)器的硬件資源和軟件資源,因此具有較大的難度程序設(shè)計必須熟悉機(jī)器的硬件資源和軟件資源,因此具有較大的難度和復(fù)雜性。為了加速編程過程,人們開發(fā)了高級語言和復(fù)雜性。為了加速編程過程,人們開發(fā)了高級語言(high-level language),用一條語句完成大量任務(wù)。稱為編譯器,用一條語句完成大量任務(wù)。稱為編譯器(compiler)的翻的翻譯程序?qū)⒏呒壵Z言程序變?yōu)橄鄳?yīng)的機(jī)器語言。高級語言使程序員能夠譯

17、程序?qū)⒏呒壵Z言程序變?yōu)橄鄳?yīng)的機(jī)器語言。高級語言使程序員能夠編寫更像英語的指令,可以包含常用的數(shù)學(xué)符號。從程序員角度看,編寫更像英語的指令,可以包含常用的數(shù)學(xué)符號。從程序員角度看,高級語言比機(jī)器語言和匯編語言都要強得多。高級語言比機(jī)器語言和匯編語言都要強得多。C、C+、C#、VB和和Java等等是目前最強大最廣泛使用的高級語言。將高級語言程序編等等是目前最強大最廣泛使用的高級語言。將高級語言程序編譯為相應(yīng)的機(jī)器語言的過程可能需要大量時間。解釋器譯為相應(yīng)的機(jī)器語言的過程可能需要大量時間。解釋器(interpreter)程序可以直接執(zhí)行高級語言程序,而不必先將這些程序編譯成相應(yīng)的程序可以直接執(zhí)行高級

18、語言程序,而不必先將這些程序編譯成相應(yīng)的機(jī)器語言。盡管編譯程序的執(zhí)行速度比解釋程序更快,但解釋器在程機(jī)器語言。盡管編譯程序的執(zhí)行速度比解釋程序更快,但解釋器在程序開發(fā)環(huán)境中更常用,因為增加新特性和糾正錯誤時經(jīng)常需要重新編序開發(fā)環(huán)境中更常用,因為增加新特性和糾正錯誤時經(jīng)常需要重新編譯程序。一旦程序開發(fā)完成,編譯版本的運行最有效。譯程序。一旦程序開發(fā)完成,編譯版本的運行最有效。 微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.1.3 匯編語言與高級語言匯編語言與高級語言l高級語言高級語言(Computer-independent Language),如,如

19、BASIC,FORTRAN,C語言語言等是面向過程的語言,不依賴于機(jī)器,因等是面向過程的語言,不依賴于機(jī)器,因而具有很好的通用性和可移植性,并且具而具有很好的通用性和可移植性,并且具有很高的程序設(shè)計效率,便于開發(fā)復(fù)雜龐有很高的程序設(shè)計效率,便于開發(fā)復(fù)雜龐大的軟件系統(tǒng)。大的軟件系統(tǒng)。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.1.3 匯編語言與高級語言匯編語言與高級語言l既然高級語言有很多優(yōu)點,為什么還要學(xué)習(xí)匯編語言呢?理既然高級語言有很多優(yōu)點,為什么還要學(xué)習(xí)匯編語言呢?理由如下:由如下:l 匯編語言仍然是各種系統(tǒng)軟件(如操作系統(tǒng))設(shè)計的基匯編語言仍

20、然是各種系統(tǒng)軟件(如操作系統(tǒng))設(shè)計的基本語言。利用匯編語言可以設(shè)計出效率極高的核心底層程序,本語言。利用匯編語言可以設(shè)計出效率極高的核心底層程序,如設(shè)備驅(qū)動程序。迄今在許多高級應(yīng)用編程中,如設(shè)備驅(qū)動程序。迄今在許多高級應(yīng)用編程中,32位匯編語位匯編語言編程仍然占有較大的市場。言編程仍然占有較大的市場。l 用匯編語言編寫的程序一般比用高級語言編寫的程序執(zhí)用匯編語言編寫的程序一般比用高級語言編寫的程序執(zhí)行速度快,且占內(nèi)存較少。行速度快,且占內(nèi)存較少。l 匯編語言程序能夠直接有效地利用機(jī)器硬件資源,在一匯編語言程序能夠直接有效地利用機(jī)器硬件資源,在一些實時控制系統(tǒng)中更是不可代替。些實時控制系統(tǒng)中更是

21、不可代替。l 學(xué)習(xí)匯編語言對于理解和掌握計算機(jī)硬件組成及工作原學(xué)習(xí)匯編語言對于理解和掌握計算機(jī)硬件組成及工作原理十分重要,也是進(jìn)行計算機(jī)應(yīng)用系統(tǒng)設(shè)計的基礎(chǔ)。理十分重要,也是進(jìn)行計算機(jī)應(yīng)用系統(tǒng)設(shè)計的基礎(chǔ)。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.1.4 匯編語言源程序的結(jié)構(gòu)匯編語言源程序的結(jié)構(gòu)(Program Structure)l一個匯編語言源程序由若干個代碼段、數(shù)一個匯編語言源程序由若干個代碼段、數(shù)據(jù)段、附加段或堆棧段組成,先看下面的據(jù)段、附加段或堆棧段組成,先看下面的例子。例子。l【例【例4-2】將一個】將一個8位二進(jìn)制數(shù)分成高位二進(jìn)制數(shù)分成

22、高4位和位和低低4位分別轉(zhuǎn)換為兩個位分別轉(zhuǎn)換為兩個ASCII字符。設(shè)待轉(zhuǎn)字符。設(shè)待轉(zhuǎn)換的數(shù)據(jù)及轉(zhuǎn)換好的換的數(shù)據(jù)及轉(zhuǎn)換好的ASCII字符均存放在數(shù)字符均存放在數(shù)據(jù)段中。完整的匯編語言源程序如下:據(jù)段中。完整的匯編語言源程序如下:微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日l1 NAME BIN2ASCIIl2 l3 DATA SEGMENT ; 數(shù)據(jù)段定義開始數(shù)據(jù)段定義開始l4 BIN DB 10101011Bl5 ASC DB 2 DUP(?)l6 DATA ENDS ; 數(shù)據(jù)段定義結(jié)束數(shù)據(jù)段定義結(jié)束l7l8 STACK SEGMENT ; 堆棧段定義

23、開始堆棧段定義開始l9 DB 256 DUP(S)l10 TOP EQU $-STACKl11 STACK ENDS ; 堆棧段定義結(jié)束堆棧段定義結(jié)束l12l13 EXTRA SEGMENT ; 定義附加段定義附加段l14 data1 DW ? l15 data2 DW ?l16 data3 DW ?l17 EXTRA ENDS ; 附加段定義結(jié)束附加段定義結(jié)束l18微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日l19 CODE SEGMENT ; 代碼段定義開始代碼段定義開始l20 ASSUME CS:CODE, DS:DATA, SS:STACKl2

24、1 ;.l22 START: MOV AX, DATA ; 主程序開始主程序開始l23 MOV DS, AXl24 MOV AX, STACKl25 MOV SS, AXl26 MOV SP, TOPl27 MOV BX, OFFSET ASCl28 MOV AL, BINl29 MOV AH, ALl30 MOV CL, 4l31 SHR AL, CLl32 CALL NEAR PTR CONVERTl33 MOV BX,ALl34 l35 INC BXl36 MOV AL, AH微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日l37 CALL NEAR

25、 PTR CONVERTl38 MOV BX,ALl39 INC BXl40 MOV BX, $;加字符串結(jié)束標(biāo)記加字符串結(jié)束標(biāo)記l41 l42LEA DX,ASCl43MOV AH,9l44INT 21Hl45 l46MOV AH,4CHl47INT 21Hl48HLT ; 主程序結(jié)束主程序結(jié)束 l49;.l50CONVERT PROC ; 過程過程(子程序子程序)定義開始定義開始l51 AND AL,0FHl52 CMP AL,10l53 JB NUMl54 ADD AL,7l55NUM: ADD AL, 0l56 RETl57CONVERT ENDP ; 過程過程(子程序子程序)定義結(jié)束

26、定義結(jié)束l58;.l59CODE ENDS ; 代碼段定義結(jié)束代碼段定義結(jié)束l60l61 END START ; 程序結(jié)束程序結(jié)束微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日 從例從例4-2中可以看出,一個匯編語言源程序由若干個代碼段、中可以看出,一個匯編語言源程序由若干個代碼段、數(shù)據(jù)段、附加段和堆棧段組成,即程序由段結(jié)構(gòu)組成。它們數(shù)據(jù)段、附加段和堆棧段組成,即程序由段結(jié)構(gòu)組成。它們由段定義開始語句由段定義開始語句“SEGMENT”和段定義結(jié)束語句和段定義結(jié)束語句“ENDS”來定義一個段。每個段都有一個段名,段名可自來定義一個段。每個段都有一個段名,段

27、名可自行命名,如數(shù)據(jù)段的段名為行命名,如數(shù)據(jù)段的段名為“DATA”,堆棧段的段名為堆棧段的段名為“STACK”,代碼段的段名為代碼段的段名為“CODE”。 數(shù)據(jù)段和附加段用于存放變量、數(shù)據(jù)和結(jié)果,堆棧段用于數(shù)據(jù)段和附加段用于存放變量、數(shù)據(jù)和結(jié)果,堆棧段用于執(zhí)行壓棧和出棧操作,以及子程序調(diào)用和參數(shù)傳遞,代碼段執(zhí)行壓棧和出棧操作,以及子程序調(diào)用和參數(shù)傳遞,代碼段則是所編制的執(zhí)行程序或常數(shù)表格。各個段都由一系列語句則是所編制的執(zhí)行程序或常數(shù)表格。各個段都由一系列語句組成。語句包括指令語句和偽指令語句。指令語句組成。語句包括指令語句和偽指令語句。指令語句(Instruction Statements)

28、產(chǎn)生對應(yīng)的機(jī)器代碼,指定產(chǎn)生對應(yīng)的機(jī)器代碼,指定CPU做什么操作,而偽指令語句做什么操作,而偽指令語句(Directive Statements)并不產(chǎn)并不產(chǎn)生機(jī)器代碼,僅僅起控制匯編過程的作用,它指定匯編器生機(jī)器代碼,僅僅起控制匯編過程的作用,它指定匯編器(Assembler)作何種操作。)作何種操作。 匯編器是專門把匯編語言源程序匯編成機(jī)器語言的工具軟匯編器是專門把匯編語言源程序匯編成機(jī)器語言的工具軟件。它通過偽指令來了解諸如件。它通過偽指令來了解諸如“變量名列表變量名列表”、“變量所在變量所在位置位置”、“過程名過程名”等信息。在例等信息。在例4-2中,中,NAME,SEGMENT/EN

29、DS,DB,EQU,ORG,ASSUME,PTR,PROC/ENDP,END等都是偽指令,它們是匯編語言源程序的等都是偽指令,它們是匯編語言源程序的重要組成部分。重要組成部分。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.1.5 匯編語言的語句格式匯編語言的語句格式(Statement Formats)l匯編語言程序的每行語句由匯編語言程序的每行語句由14個部分組成。指令語句和個部分組成。指令語句和偽指令語句的格式稍有區(qū)別,指令語句的標(biāo)號后有冒號偽指令語句的格式稍有區(qū)別,指令語句的標(biāo)號后有冒號“:”,偽指令語句的標(biāo)號后沒有冒號。,偽指令語句的標(biāo)號后沒

30、有冒號。l指令語句的格式為指令語句的格式為lLABEL: OPERATION OPERAND ;COMMENTl標(biāo)號域標(biāo)號域 指令助記符域指令助記符域 操作數(shù)域操作數(shù)域 注釋域注釋域l偽指令語句的格式為偽指令語句的格式為lLABEL OPERATION OPERAND ;COMMENTl標(biāo)號域標(biāo)號域 偽指令助記符域偽指令助記符域 操作數(shù)域操作數(shù)域 注釋域注釋域微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日l語句格式中用方括號括起來的部分,是可選項,可以有也可以沒有。每語句格式中用方括號括起來的部分,是可選項,可以有也可以沒有。每部分之間用空格部分之間用空

31、格(至少一個至少一個)分開,一行最多可有分開,一行最多可有132個字符。個字符。lLABEL:標(biāo)號域,表示段名、變量名、過程名或指令符號地址等。:標(biāo)號域,表示段名、變量名、過程名或指令符號地址等。lOPERATION:助記符域,為指令或偽指令的助記符。:助記符域,為指令或偽指令的助記符。lOPERAND:操作數(shù)域,表示操作的對象,由一個或多個表達(dá)式組成,:操作數(shù)域,表示操作的對象,由一個或多個表達(dá)式組成,表達(dá)式與表達(dá)式之間必須用逗號表達(dá)式與表達(dá)式之間必須用逗號“,”分開。分開。lCOMMENT:注釋域,用來說明語句的功能,以:注釋域,用來說明語句的功能,以“;”開始。匯編程序開始。匯編程序?qū)?/p>

32、“;”以后的部分不予匯編。以后的部分不予匯編。l指令助記符前面還可以有指令助記符前面還可以有前綴前綴。匯編程序語句中的四個域,均可以用。匯編程序語句中的四個域,均可以用大寫、小寫或大小寫混合編寫。大寫、小寫或大小寫混合編寫。l標(biāo)號標(biāo)號(Label)是一個自行設(shè)計的標(biāo)識符或名稱,最多可由是一個自行設(shè)計的標(biāo)識符或名稱,最多可由31個字母、數(shù)字個字母、數(shù)字和特別字符和特別字符(?、?、_、$)等組成。但不能用數(shù)字開頭等組成。但不能用數(shù)字開頭,中間不能有空格,中間不能有空格,也不能為匯編語言的保留字。也不能為匯編語言的保留字。l注:保留字指有專門用途的字符或字符串,如注:保留字指有專門用途的字符或字符

33、串,如CPU的寄存器名、指令助的寄存器名、指令助記符、偽指令助記符等。記符、偽指令助記符等。l標(biāo)號一般表示變量名、段名、過程名或指令符號地址。變量名、段名和標(biāo)號一般表示變量名、段名、過程名或指令符號地址。變量名、段名和過程名由專門的偽指令語句定義,而指令符號地址則根據(jù)需要在標(biāo)號域過程名由專門的偽指令語句定義,而指令符號地址則根據(jù)需要在標(biāo)號域中寫上,后面跟一個中寫上,后面跟一個“:”。l在同一個匯編單位(以在同一個匯編單位(以END結(jié)束的程序模塊)中,標(biāo)號域中的標(biāo)號不能結(jié)束的程序模塊)中,標(biāo)號域中的標(biāo)號不能相同。相同。l操作數(shù)操作數(shù)(Operand)可以是常數(shù)、常量、變量、標(biāo)號、寄存器名或表達(dá)式

34、??梢允浅?shù)、常量、變量、標(biāo)號、寄存器名或表達(dá)式。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日l1. 常數(shù)、常量常數(shù)、常量l編程時已經(jīng)確定其值,程序運行期間不會改變其值的數(shù)據(jù)對象稱為常數(shù)。編程時已經(jīng)確定其值,程序運行期間不會改變其值的數(shù)據(jù)對象稱為常數(shù)。l8086/8088CPU允許定義四種形式的常數(shù):允許定義四種形式的常數(shù): 整數(shù)、字符串、整數(shù)、字符串、“組合組合BCD碼數(shù)碼數(shù)”和實數(shù)和實數(shù)(浮點數(shù)浮點數(shù)),但只能處理整數(shù)、字符串、,但只能處理整數(shù)、字符串、“組合組合BCD碼數(shù)碼數(shù)”,不能處理實數(shù)不能處理實數(shù)(浮點數(shù)浮點數(shù))。l常數(shù)表達(dá)式的名字稱為常量

35、。常數(shù)表達(dá)式的名字稱為常量。 (程序員給出的一個名或助記名作為一(程序員給出的一個名或助記名作為一個確定值的標(biāo)識,個確定值的標(biāo)識, 其值在程序執(zhí)行過程中保持不變。)常量可用偽指其值在程序執(zhí)行過程中保持不變。)常量可用偽指令說明符令說明符“EQU”或或“=”定義。定義。l例如,例如,A EQU 7或或 A = 7都可將常量都可將常量A的值定義為常數(shù)的值定義為常數(shù)7。l注意:偽指令說明符注意:偽指令說明符EQU左邊的符號名不允許重復(fù)定義,而左邊的符號名不允許重復(fù)定義,而“=”左邊的左邊的符號名可以重復(fù)定義。即:符號名可以重復(fù)定義。即:A EQU 7可以:A=7A EQU 8 (不允許)可以:A=8

36、微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.1.5 匯編語言的語句格式匯編語言的語句格式(Statement Formats)l匯編語言語句中出現(xiàn)的常數(shù)一般有匯編語言語句中出現(xiàn)的常數(shù)一般有5種:種:l(1) 二進(jìn)制數(shù)(二進(jìn)制數(shù)(binary) 后跟字母后跟字母B,如,如10101011B。l(2) 八進(jìn)制數(shù)(八進(jìn)制數(shù)(octal) 后跟字母后跟字母Q,如,如367Q。l(3) 十進(jìn)制數(shù)(十進(jìn)制數(shù)(decimal) 后跟字母后跟字母D或不跟字母,如或不跟字母,如9D或或9。l(4) 十六進(jìn)制數(shù)(十六進(jìn)制數(shù)(hexadecimal) 后跟字母后跟字母H

37、,如,如0FH,3AH。注意,。注意,當(dāng)數(shù)字的第一個字符是當(dāng)數(shù)字的第一個字符是AF時,在字符前應(yīng)添加一個數(shù)字時,在字符前應(yīng)添加一個數(shù)字0,以示和,以示和變量或保留字的區(qū)別。如變量或保留字的區(qū)別。如0AH表示十六進(jìn)制數(shù),而表示十六進(jìn)制數(shù),而AH則表示則表示8086CPU中的中的8位寄存器。位寄存器。l(5) 字符和字符串字符和字符串 字符或字符串的值是取其對應(yīng)的字符或字符串的值是取其對應(yīng)的ASCII碼碼,并用一對并用一對單引號單引號 括起來。如字符括起來。如字符0,其對應(yīng)的其對應(yīng)的ASCII碼為碼為30H。字符。字符串串MASM以以ASCII碼碼4DH 、41H、53H和和4DH存放。存放。微機(jī)

38、原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日l2. 變量、標(biāo)號和寄存器名變量、標(biāo)號和寄存器名l例如,指令例如,指令MOV AL, BIN中,中,AL為寄存器名,表示目的操為寄存器名,表示目的操作數(shù),作數(shù),BIN為變量名,表示源操作數(shù)。為變量名,表示源操作數(shù)。l標(biāo)號就是指令地址的名字,也稱為指令的符號地址。標(biāo)號定標(biāo)號就是指令地址的名字,也稱為指令的符號地址。標(biāo)號定義在指令的前面義在指令的前面(通常是左邊通常是左邊),用冒號作為分隔符。標(biāo)號只,用冒號作為分隔符。標(biāo)號只能定義在代碼段能定義在代碼段(CS)中,它代表其后第一條指令的第一個字中,它代表其后第一條指令

39、的第一個字節(jié)的存儲單元地址,用于說明指令在存儲器中的存儲位置。節(jié)的存儲單元地址,用于說明指令在存儲器中的存儲位置。例如例如, 在例在例4-2的指令序列中,的指令序列中,lSTART: MOV AX, DATA ; 主程序開始主程序開始l這里,這里,START就是標(biāo)號就是標(biāo)號.l標(biāo)號有如下的屬性:標(biāo)號有如下的屬性:l(1) 段基值屬性:段基值屬性: 指標(biāo)號后面第一條指令所在的代碼段的段指標(biāo)號后面第一條指令所在的代碼段的段基值;基值;l(2) 偏移地址屬性:偏移地址屬性: 指標(biāo)號后面第一條指令首字節(jié)的段內(nèi)偏指標(biāo)號后面第一條指令首字節(jié)的段內(nèi)偏移地址;移地址;l(3) 類型屬性:類型屬性: 也稱距離屬

40、性,是指標(biāo)號與引用該標(biāo)號的指也稱距離屬性,是指標(biāo)號與引用該標(biāo)號的指令之間允許距離的遠(yuǎn)、近。令之間允許距離的遠(yuǎn)、近。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.1.5 匯編語言的語句格式匯編語言的語句格式(Statement Formats)l3. 表達(dá)式表達(dá)式l由運算符連接起來的式子叫表達(dá)式,匯編由運算符連接起來的式子叫表達(dá)式,匯編程序在對其匯編時,按一定的規(guī)則對表達(dá)程序在對其匯編時,按一定的規(guī)則對表達(dá)式進(jìn)行運算后得到一個數(shù)值或一個地址。式進(jìn)行運算后得到一個數(shù)值或一個地址。l表達(dá)式可分算術(shù)表達(dá)式、邏輯表達(dá)式、關(guān)表達(dá)式可分算術(shù)表達(dá)式、邏輯表達(dá)式、關(guān)系

41、運算表達(dá)式、分析運算表達(dá)式和合成運系運算表達(dá)式、分析運算表達(dá)式和合成運算表達(dá)式。算表達(dá)式。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.1.5 匯編語言的語句格式匯編語言的語句格式(Statement Formats)l(1) 算術(shù)表達(dá)式算術(shù)表達(dá)式l算術(shù)運算符有算術(shù)運算符有l(wèi)加(加(+)、減()、減(-)、乘()、乘(*)、除()、除(/)、求余)、求余(MOD)l算術(shù)運算表達(dá)式的最后結(jié)果仍為一個數(shù)。例如算術(shù)運算表達(dá)式的最后結(jié)果仍為一個數(shù)。例如l5*8+20, 127/100,5 MOD 3l等算術(shù)表達(dá)式,其結(jié)果分別為等算術(shù)表達(dá)式,其結(jié)果分別為60,

42、1和和2。 微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.1.5 匯編語言的語句格式匯編語言的語句格式(Statement Formats)l(2) 邏輯表達(dá)式邏輯表達(dá)式l邏輯運算符有邏輯運算符有AND(邏輯與邏輯與)、OR(邏輯或)、(邏輯或)、XOR(邏(邏輯異或)和輯異或)和NOT(邏輯非)。(邏輯非)。l邏輯表達(dá)式的結(jié)果視情況不同而可能為邏輯表達(dá)式的結(jié)果視情況不同而可能為8位或位或16位二進(jìn)制位二進(jìn)制數(shù)。數(shù)。l邏輯運算符與邏輯運算指令的區(qū)別在于,前者在匯編時完邏輯運算符與邏輯運算指令的區(qū)別在于,前者在匯編時完成邏輯運算,而后者在指令執(zhí)行時完成

43、邏輯運算。例如成邏輯運算,而后者在指令執(zhí)行時完成邏輯運算。例如lAND AL, 10101011B AND 0FHl10101011B AND 0FH 為邏輯表達(dá)式,其結(jié)果在匯編時即為邏輯表達(dá)式,其結(jié)果在匯編時即已確定,為已確定,為00001011B,故上述指令等價于故上述指令等價于lAND AL, 00001011B微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.1.5 匯編語言的語句格式匯編語言的語句格式(Statement Formats)l(3) 關(guān)系表達(dá)式關(guān)系表達(dá)式l關(guān)系運算符有關(guān)系運算符有EQ(Equal,等于)、,等于)、NE(Not E

44、qual,不等于)、,不等于)、LT(Less Than,小于)、,小于)、LE(Less Than or Equal,小于或等,小于或等于)、于)、GT(Greater Than,大于,大于)和和GE(Greater Than or Equal,大于或等于)共六種。大于或等于)共六種。l關(guān)系運算符的兩個操作數(shù)必須都是數(shù)字或同一段內(nèi)的兩個存儲單元的關(guān)系運算符的兩個操作數(shù)必須都是數(shù)字或同一段內(nèi)的兩個存儲單元的地址。計算的結(jié)果為邏輯值,結(jié)果為真,表示為地址。計算的結(jié)果為邏輯值,結(jié)果為真,表示為0FFFFH;結(jié)果為假,;結(jié)果為假,表示為表示為0000H。例如指令。例如指令lMOV BX, 5 GT

45、3l其中其中, 5 GT 3為關(guān)系表達(dá)式為關(guān)系表達(dá)式,該關(guān)系成立該關(guān)系成立,結(jié)果為結(jié)果為0FFFFH。故指令等價。故指令等價于于lMOV BX, 0FFFFH微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.1.5 匯編語言的語句格式匯編語言的語句格式(Statement Formats)l (4) 分析運算表達(dá)式和合成運算表達(dá)式分析運算表達(dá)式和合成運算表達(dá)式l分析運算表達(dá)式和合成運算表達(dá)式的操作對象都為存儲器操作數(shù)。存分析運算表達(dá)式和合成運算表達(dá)式的操作對象都為存儲器操作數(shù)。存儲器操作數(shù)表示變量、符號地址、存儲單元等。分析運算表達(dá)式把存儲器操作數(shù)表示變

46、量、符號地址、存儲單元等。分析運算表達(dá)式把存儲器操作數(shù)分解為幾個部分,如分解出段值、偏移量、類型等;而合儲器操作數(shù)分解為幾個部分,如分解出段值、偏移量、類型等;而合成運算表達(dá)式則把這些組成部分綜合為存儲器操作數(shù)。成運算表達(dá)式則把這些組成部分綜合為存儲器操作數(shù)。l例如,例例如,例4-2中的指令中的指令lMOV BX, OFFSET ASClOFFSET ASC即為分析運算表達(dá)式,它的作用為取存儲器操作數(shù)即為分析運算表達(dá)式,它的作用為取存儲器操作數(shù)(變量)(變量)ASC的地址偏移量,由于在例的地址偏移量,由于在例4-2中,中,ASC的偏移地址為的偏移地址為0001H,即,即OFFSET ASC=0

47、001H。故該指令等價于。故該指令等價于lMOV BX, 0001H微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.2 偽指令及其應(yīng)用l偽指令語句只是用來指示、引導(dǎo)匯編程序在匯編時做一些偽指令語句只是用來指示、引導(dǎo)匯編程序在匯編時做一些操作,它不產(chǎn)生機(jī)器代碼,本身也不占用存儲單元。操作,它不產(chǎn)生機(jī)器代碼,本身也不占用存儲單元。l偽指令主要分為下列幾類:偽指令主要分為下列幾類: 程序分段及存儲器分配程序分段及存儲器分配 變量定義及存儲器申請變量定義及存儲器申請 過程定義過程定義 符號定義符號定義 程序模塊定義與通信程序模塊定義與通信 宏定義及宏調(diào)用宏定義

48、及宏調(diào)用 條件匯編條件匯編 格式控制,列表及其他功能格式控制,列表及其他功能微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.2.1 段定義偽指令段定義偽指令SEGMENT/ENDSlSEGMENT和和ENDS為程序分段的定義,其為程序分段的定義,其格式如下:格式如下:l段名段名 SEGMENT 定位方式定位方式 組合方式組合方式 類別名類別名l 指令語句或偽指令語句指令語句或偽指令語句l段名段名 ENDS微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.2.1 段定義偽指令段定義偽指令SEGMENT/ENDSl1

49、段名段名 段名是賦予該段的一個名稱,它位于段名是賦予該段的一個名稱,它位于SEGMENT與與ENDS偽指令之前,成對出現(xiàn),且前后必須一致。段名偽指令之前,成對出現(xiàn),且前后必須一致。段名的取法與標(biāo)號、變量名等相同。在同一個模塊中,不的取法與標(biāo)號、變量名等相同。在同一個模塊中,不同段的段名不能相同。同段的段名不能相同。 段名代表該段的段地址。例如,例段名代表該段的段地址。例如,例4-2中的指令:中的指令: MOV AX, DATA MOV DS, AX 表示取數(shù)據(jù)段的段地址表示取數(shù)據(jù)段的段地址(用段名表示用段名表示)送送AX,然后再將然后再將AX(段地址段地址)送數(shù)據(jù)段寄存器送數(shù)據(jù)段寄存器DS。微

50、機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.2.1 段定義偽指令段定義偽指令SEGMENT/ENDSl2定位方式定位方式 程序的段必須連續(xù)放置在內(nèi)存單元的某個區(qū)域,并占據(jù)一定的存程序的段必須連續(xù)放置在內(nèi)存單元的某個區(qū)域,并占據(jù)一定的存儲空間。為了對程序的段進(jìn)行合理的管理,需要對段放置的起始儲空間。為了對程序的段進(jìn)行合理的管理,需要對段放置的起始地址進(jìn)行規(guī)定,這就是定位方式的作用。有地址進(jìn)行規(guī)定,這就是定位方式的作用。有4種定位類型:種定位類型:BYTE、WORD、PARA、PAGE。起始地址分別為(。起始地址分別為(X表示可為表示可為0或或1):):

51、 BYTE XXXX XXXX XXXX XXXX XXXX B WORD XXXX XXXX XXXX XXXX XXX0 B PARA XXXX XXXX XXXX XXXX 0000 B PAGE XXXX XXXX XXXX 0000 0000 B 分別表示以字節(jié)、字、節(jié)、頁的邊界為起始地址。如果缺省定位分別表示以字節(jié)、字、節(jié)、頁的邊界為起始地址。如果缺省定位方式,則以節(jié)(方式,則以節(jié)(PARA)的邊界為起始地址。一節(jié)包含)的邊界為起始地址。一節(jié)包含16個連續(xù)個連續(xù)的字節(jié)單元,一頁包含的字節(jié)單元,一頁包含256個連續(xù)的字節(jié)單元。個連續(xù)的字節(jié)單元。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清

52、華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.2.1 段定義偽指令段定義偽指令SEGMENT/ENDSl3組合方式組合方式 對于規(guī)模較大的程序,常將程序分割為多個模塊。在不同的模塊中,段名可對于規(guī)模較大的程序,常將程序分割為多個模塊。在不同的模塊中,段名可以相同,組合方式的作用是指示連接程序,把同名的段按照指定的方式組合以相同,組合方式的作用是指示連接程序,把同名的段按照指定的方式組合起來形成一個新的段。組合方式共有起來形成一個新的段。組合方式共有6種。種。 (1) NONE:表示該段與其他模塊的段沒有任何關(guān)系,每段都有自己的基:表示該段與其他模塊的段沒有任何關(guān)系,每段都有自己的基址。這是

53、缺省方式。址。這是缺省方式。 (2) PUBLIC:表示該段與其它模塊中說明為:表示該段與其它模塊中說明為PUBLIC方式的同名段互相方式的同名段互相組合成一個邏輯段,邏輯段的長度為各段長度之和。組合成一個邏輯段,邏輯段的長度為各段長度之和。 (3) STACK:表示此段為堆棧段,連接時把所有:表示此段為堆棧段,連接時把所有STACK方式的同名段連方式的同名段連接成一個段,由接成一個段,由SS指向該段的起始地址。指向該段的起始地址。 (4) COMMON:表示該段與其它模塊中所有已說明為:表示該段與其它模塊中所有已說明為COMMON的同名段的同名段共享相同的存儲區(qū)域,共享的長度為模塊同名段中最

54、大長度,各共享段具有共享相同的存儲區(qū)域,共享的長度為模塊同名段中最大長度,各共享段具有相同的段起始地址。相同的段起始地址。 (5) MEMORY方式:表示該段應(yīng)定位在所有其他段的上面。若有多個段方式:表示該段應(yīng)定位在所有其他段的上面。若有多個段選用選用MEMORY,則除第一個之外,其余段均作為,則除第一個之外,其余段均作為COMMON處理。處理。 (6) AT:表示該段按絕對地址定位,其段地址即為其后表達(dá)式的值,位移:表示該段按絕對地址定位,其段地址即為其后表達(dá)式的值,位移量為量為0。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.2.1 段定義偽指令

55、段定義偽指令SEGMENT/ENDSl4類別名類別名 類別名必須用單引號括起來。連接程序把類別類別名必須用單引號括起來。連接程序把類別名相同的所有段放在連續(xù)的存儲區(qū)域內(nèi),先出名相同的所有段放在連續(xù)的存儲區(qū)域內(nèi),先出現(xiàn)的段放前現(xiàn)的段放前,后出現(xiàn)的在后,但對各段不進(jìn)行重后出現(xiàn)的在后,但對各段不進(jìn)行重新組合。一般總是定義堆棧段的類別名為新組合。一般總是定義堆棧段的類別名為STACK,例如,例,例如,例4-2中中,堆棧段可定義如下堆棧段可定義如下: STACK SEGMENT PARA STACK STACK 表示堆棧段從節(jié)的起始地址開始存放表示堆棧段從節(jié)的起始地址開始存放,組合方式組合方式為為STA

56、CK, 類別名為類別名為STACK。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日l5指定段內(nèi)的偏移地址指定段內(nèi)的偏移地址 常用的有常用的有ORG和和EVEN兩種說明符,是指定下一個要用的存儲單元的偏移地兩種說明符,是指定下一個要用的存儲單元的偏移地址。址。 (1) 格式:格式: ORG 常數(shù)表達(dá)式常數(shù)表達(dá)式 指定當(dāng)前可用的存儲單元的偏移地址為常數(shù)表達(dá)式的值,就是將常數(shù)表達(dá)式指定當(dāng)前可用的存儲單元的偏移地址為常數(shù)表達(dá)式的值,就是將常數(shù)表達(dá)式的值送入的值送入$。 (2) 格式:格式: EVEN 將當(dāng)前可用的存儲單元的偏移地址調(diào)整為最近的偶數(shù)值,就是將當(dāng)前可

57、用的將當(dāng)前可用的存儲單元的偏移地址調(diào)整為最近的偶數(shù)值,就是將當(dāng)前可用的最小偶數(shù)偏移地址值送入最小偶數(shù)偏移地址值送入$。例如,在下述偽指令語句序列中,例如,在下述偽指令語句序列中,l ORG 1000Hl A DB 47H, 12H, 45Hl EVENl B DB 47Hl這里,指令這里,指令 ORG 1000H 將將A的偏移地址部分指定為的偏移地址部分指定為1000H,從,從A開始存放開始存放3個個字節(jié)變量,占用地址字節(jié)變量,占用地址1000H、1001H和和1002H,B的偏移地址部分本應(yīng)是的偏移地址部分本應(yīng)是1003H,但但EVEN指令會將指令會將B的偏移地址部分調(diào)整為偶數(shù)地址的偏移地址

58、部分調(diào)整為偶數(shù)地址1004H。l對于字?jǐn)?shù)組,為保證其從偶地址開始,可在它前面用對于字?jǐn)?shù)組,為保證其從偶地址開始,可在它前面用EVEN 偽操作來達(dá)到這一偽操作來達(dá)到這一目的,形如:目的,形如:lDATA-SEG SEGMENTl EVENl WORD-ARRAY DW 100 DUP(?)lDATA-SEG ENDS微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.2.1 段定義偽指令段定義偽指令SEGMENT/ENDSl6GROUP偽指令偽指令l前述的組合方式是把同名的段按照指定的方式組合起來形前述的組合方式是把同名的段按照指定的方式組合起來形成一個新的

59、段,而成一個新的段,而GROUP偽指令則用來把模塊中若干不偽指令則用來把模塊中若干不同名的段集合成一個組,使其裝入同一個物理段中,組內(nèi)同名的段集合成一個組,使其裝入同一個物理段中,組內(nèi)各段之間的跳轉(zhuǎn)可視為段內(nèi)跳轉(zhuǎn)。格式如下:各段之間的跳轉(zhuǎn)可視為段內(nèi)跳轉(zhuǎn)。格式如下:l組名組名 GROUP 段名段名 ,l注:組名與段名是一樣的取名規(guī)則,是代表該組的段地址,注:組名與段名是一樣的取名規(guī)則,是代表該組的段地址,格式中的段名也可用表達(dá)式格式中的段名也可用表達(dá)式SEG 變量變量或或 SEG 標(biāo)號標(biāo)號來來代替,其中代替,其中“SEG”運算符表示取變量或標(biāo)號的段地址運算符表示取變量或標(biāo)號的段地址 。微機(jī)原理與

60、接口技術(shù)微機(jī)原理與接口技術(shù) 清華大學(xué)出版社清華大學(xué)出版社2013年4月24日4.2.2 偏移地址計數(shù)器偏移地址計數(shù)器$和定位偽指令和定位偽指令ORGl1偏移地址計數(shù)器偏移地址計數(shù)器$l匯編程序在對源程序進(jìn)行匯編的過程中,用偏移地址計數(shù)器匯編程序在對源程序進(jìn)行匯編的過程中,用偏移地址計數(shù)器$來保存當(dāng)前正在匯來保存當(dāng)前正在匯編的指令的偏移地址或偽指令語句中變量的偏移地址。編的指令的偏移地址或偽指令語句中變量的偏移地址。l用戶可將用戶可將$用于自己編寫的源程序中。用于自己編寫的源程序中。l在每個段開始匯編時,匯編程序在每個段開始匯編時,匯編程序( 匯編器)都將匯編器)都將$清為清為0,以后,每處理一

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論