匯編語言教程 第3章 80x86指令系統(tǒng)和尋址方式_第1頁
匯編語言教程 第3章 80x86指令系統(tǒng)和尋址方式_第2頁
匯編語言教程 第3章 80x86指令系統(tǒng)和尋址方式_第3頁
匯編語言教程 第3章 80x86指令系統(tǒng)和尋址方式_第4頁
匯編語言教程 第3章 80x86指令系統(tǒng)和尋址方式_第5頁
已閱讀5頁,還剩141頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言第第3章章 80 x86指令系統(tǒng)和尋址方式指令系統(tǒng)和尋址方式教學要求:教學要求:1. 掌握指令系統(tǒng)的基本概念:指令格式、尋址方掌握指令系統(tǒng)的基本概念:指令格式、尋址方式、指令類型;掌握式、指令類型;掌握8086/8088指令系統(tǒng)中,各指指令系統(tǒng)中,各指令的格式、功能和注意事項。令的格式、功能和注意事項。2. 了解其他的尋址方式和指令類型。了解其他的尋址方式和指令類型。 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言 相關概念相關概念一、什么是指令系統(tǒng)?

2、一、什么是指令系統(tǒng)? 計算機的指令系統(tǒng)就是指該計算機能夠執(zhí)行計算機的指令系統(tǒng)就是指該計算機能夠執(zhí)行的全部指令的集合。的全部指令的集合。 每種計算機都有它支持的指令集合。每種計算機都有它支持的指令集合。 16位位8086指令系統(tǒng)是整個指令系統(tǒng)是整個Intel 80 x86 系列微處系列微處理器指令系統(tǒng)的基礎。理器指令系統(tǒng)的基礎。 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言 指令由操作碼和操作數兩部分組成。指令由操作碼和操作數兩部分組成。 說明計算機要執(zhí)行哪種操作,如傳送、運算、說明計算機要執(zhí)行哪種操作,如傳送、運算、移位、跳轉等操作,它是指令中

3、不可缺少的組成部分。移位、跳轉等操作,它是指令中不可缺少的組成部分。 是指令執(zhí)行的參與者,即各種操作的對象。是指令執(zhí)行的參與者,即各種操作的對象。 有些指令不需要操作數,通常的指令都有一個或兩個有些指令不需要操作數,通常的指令都有一個或兩個操作數,也有個別指令有操作數,也有個別指令有3個甚至個甚至4個操作數,通常成為一個操作數,通常成為一地址指令、二地址指令、三地址指令、二地址指令、三操作碼操作碼操作數操作數 操作數操作數 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言三、學習指令的注意事項三、學習指令的注意事項 該指令能夠實現(xiàn)何種操作。通常指令

4、助該指令能夠實現(xiàn)何種操作。通常指令助記符就是指令功能的英文單詞或其縮寫形式。記符就是指令功能的英文單詞或其縮寫形式。 該指令中的操作數可以采用何該指令中的操作數可以采用何種尋址方式。種尋址方式。 該指令執(zhí)行后是否對各個標志位該指令執(zhí)行后是否對各個標志位有影響,以及如何影響。有影響,以及如何影響。 該指令其他需要特別注意的地方,如指令該指令其他需要特別注意的地方,如指令執(zhí)行時的約定設置、執(zhí)行時的約定設置、等。等。 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言3.1 80 x86尋址方式尋址方式尋址、尋址方式的概念尋址、尋址方式的概念 指令中操作數

5、字段實質上是指出操作數存放于何處。一指令中操作數字段實質上是指出操作數存放于何處。一般來說,般來說,稱為,稱為立即數立即數;,稱為,稱為寄存器操作寄存器操作數數。,稱為,稱為存儲器操作存儲器操作數數。指令指定操作數的位置,即給出地址信息,在執(zhí)行時需。指令指定操作數的位置,即給出地址信息,在執(zhí)行時需要根據這個地址信息找到需要的操作數。這種要根據這個地址信息找到需要的操作數。這種稱為稱為尋址尋址,而尋找操作數的方法稱為,而尋找操作數的方法稱為尋址方式尋址方式。 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言指令的助記符格式:指令的助記符格式: 指令助

6、憶符指令助憶符 操作數操作數1 , 操作數操作數2 , 操作數操作數3 ;注釋注釋 指令助憶符體現(xiàn)該指令的功能,它指令助憶符體現(xiàn)該指令的功能,它。指令的操作數個數由該指令確定,。指令的操作數個數由該指令確定,絕大多數指令的操作數要顯式的寫出絕大多數指令的操作數要顯式的寫出來,但也有指令的操作數是隱含的,不需要在指令中寫出。來,但也有指令的操作數是隱含的,不需要在指令中寫出。注:注:當指令含有操作數,則在書寫時必須遵守:當指令含有操作數,則在書寫時必須遵守:v v 。 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言3.1.1 與數據有關的尋址方式與

7、數據有關的尋址方式以以 MOV 指令為例:指令為例:立即尋址立即尋址 MOV AX , 3069H寄存器尋址寄存器尋址 MOV AL , BH直接尋址直接尋址 MOV AX , 2000H 寄存器間接尋址寄存器間接尋址 MOV AX , BX 寄存器相對尋址寄存器相對尋址 MOV AX , COUNT SI 基址變址尋址基址變址尋址 MOV AX , BP DI 相對基址變址尋址相對基址變址尋址 MOV AX , MASK BX SI 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言1. 立即尋址方式立即尋址方式 定義:定義:操作數作為指令的一部分

8、而直接寫在指令中,操作數作為指令的一部分而直接寫在指令中,這種操作數稱為立即數,這種尋址方式也就稱為這種操作數稱為立即數,這種尋址方式也就稱為尋址方式。尋址方式。 匯編格式:匯編格式:n n(n n為立即操作數,是為立即操作數,是)功能:功能:操作數存放在存儲器,指令下一單元的內容為立操作數存放在存儲器,指令下一單元的內容為立即操作數即操作數n n。圖形表示:圖形表示:操作數操作數 n指令指令 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言【例【例3.1】MOV AX, 4576H 執(zhí)行后(執(zhí)行后(AX)=? 該例中源操作數為立即尋址方式,立即數

9、為該例中源操作數為立即尋址方式,立即數為4576H,存放,存放在指令的下一單元。在指令的下一單元。 執(zhí)行:執(zhí)行:4576HAX 執(zhí)行后:(執(zhí)行后:(AX)=4576H 76HOP45H DSMOV AX,4576H指令的存儲形式指令的存儲形式45 76 AX 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言2. 寄存器尋址方式寄存器尋址方式定義:定義:。把在指令中指出所使用寄存器(即:。把在指令中指出所使用寄存器(即:寄存器的助記符)的尋址方式稱為寄存器尋址方式。寄存器的助記符)的尋址方式稱為寄存器尋址方式。 匯編格式:匯編格式:R R 其中其中R

10、 R表示寄存器名。表示寄存器名。功能:功能:操作數直接存放在寄存器操作數直接存放在寄存器R R中。中。圖形表示:圖形表示:寄存器寄存器 R指令指令操作數操作數寄存器寄存器 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言指令中可以引用的寄存器及其符號名稱如下:指令中可以引用的寄存器及其符號名稱如下: 8位寄存器有:位寄存器有:等;等; 16位寄存器:位寄存器:等;等; v 源操作數是寄存器尋址方式源操作數是寄存器尋址方式 如:如:ADD VARW, AXMOV VARB, BH等。等。 其中:其中:VARW和和VARB是字和字節(jié)類型的內存變量。是字

11、和字節(jié)類型的內存變量。v目的操作數是寄存器尋址方式目的操作數是寄存器尋址方式 如:如:ADD BH, 78hADD AX, 1234hv源和目的操作數都是寄存器尋址方式源和目的操作數都是寄存器尋址方式 如:如: MOV , MOV , 等。等。 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言注:注:。通常情況下,。通常情況下,提倡在編寫提倡在編寫編語言程序時,應盡可能地使用寄存編語言程序時,應盡可能地使用寄存器尋址方式,但也不要把它絕對化。器尋址方式,但也不要把它絕對化。 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬

12、兆 匯編語言匯編語言【例【例3.2】下列程序執(zhí)行后,(】下列程序執(zhí)行后,(AX)=?,(?,(BX)=? MOV AX,1234H MOV BX,5678H ADD AX,BX解釋:該程序中解釋:該程序中MOV指令為數據傳送指令操作符,指令為數據傳送指令操作符,ADD指指令為加法指令操作符,三條指令皆為雙操作數指令。第一、令為加法指令操作符,三條指令皆為雙操作數指令。第一、二條指令二條指令AX、BX皆為目的操作數地址,為寄存器尋址方式。皆為目的操作數地址,為寄存器尋址方式。第三條指令中,第三條指令中,AX為目的操作數地址,為目的操作數地址,BX為源操作數地址。為源操作數地址。源地址和目的地址皆

13、為寄存器尋址方式。源地址和目的地址皆為寄存器尋址方式。執(zhí)行:執(zhí)行:1234HAX 5678HBX (AX)+(BX)AX執(zhí)行后:(執(zhí)行后:(AX)=68ACH,(,(BX)=5678H 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言3. 直接尋址方式直接尋址方式定義:定義:,這種尋址方式為直接尋址方式。,這種尋址方式為直接尋址方式。 匯編格式:匯編格式:。功能:功能:指令下一字單元的內容是操作數的偏移地址指令下一字單元的內容是操作數的偏移地址EA。圖形表示:圖形表示:EA指令指令操作數操作數存儲器存儲器段基地址段基地址 安徽理工大學安徽理工大學

14、計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言【例【例3.3】執(zhí)行指令:】執(zhí)行指令:MOV BX ,1234H 設(設(DS)=2000H。執(zhí)行后:(執(zhí)行后:(AX)=?圖示:圖示:執(zhí)行:(執(zhí)行:(21234H)BX執(zhí)行后:(執(zhí)行后:(BX)=5312H 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言 在通常情況下,操作數存放在數據段中,所以,在通常情況下,操作數存放在數據段中,所以,但,但如果使用段超越前綴,那么,操作數可存放在其它段。如果使用段超越前綴,那么,操作數可存放在其它段。 例如:例如:MOVMOVESES:10

15、00H:1000H, AX AX 注意:注意:,直接尋,直接尋址的地址要寫在括號址的地址要寫在括號“”,“”內。在程序中,內。在程序中,如:,如:MOV BX, VARWMOV BX, VARW,其中,其中,VARWVARW是內存字變量。是內存字變量。 試比較下列指令中源操作數的尋址方式(試比較下列指令中源操作數的尋址方式(VARWVARW是內存字是內存字變量):變量): MOVAX, 1234H MOVAX, 1234H 前者是立即尋址,后者是直接尋址前者是立即尋址,后者是直接尋址 MOVAX, VARW MOVAX, VARW 兩者是等效的,均為直接尋址兩者是等效的,均為直接尋址 安徽理工

16、大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言4. 寄存器間接尋址方式寄存器間接尋址方式定定 義:義:,操作數的有效地址操作數的有效地址用用SI、DI、BX和和BP等四個寄存器之一來指定,稱這種尋址方式為寄存等四個寄存器之一來指定,稱這種尋址方式為寄存器間接尋址方式。器間接尋址方式。 匯編格式:匯編格式:R功功 能:能:操作數存放在存儲器,寄存器操作數存放在存儲器,寄存器R存放操作數的偏移存放操作數的偏移地址地址EA。圖形表示:圖形表示:EA寄存器寄存器操作數操作數存儲器存儲器段基地址段基地址基址或變址寄存器基址或變址寄存器指令指令 安徽理工大學安徽理工

17、大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言【例【例3.4】假設有指令:】假設有指令:MOV BX, DI,在執(zhí)行時,(,在執(zhí)行時,(DS)=1000H,(,(DI)=2345H,存儲單元,存儲單元12345H的內容是的內容是4354H。問。問執(zhí)行指令后,執(zhí)行指令后,BX的值是什么?的值是什么?解:寄存器解:寄存器DI的值不是操作數,而是操作數的地址。的值不是操作數,而是操作數的地址。該操作數的物理地址應由該操作數的物理地址應由DS和和DI的值形成,即:的值形成,即: 所以,該指令的執(zhí)行效果是:所以,該指令的執(zhí)行效果是:把從物理地址為把從物理地址為12345H開始

18、的開始的一個字的值傳送給一個字的值傳送給BX。 OP CS DS54H43H 10000H 12345H DS:1000HDI:2345H 12345H43 54 BX 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言在不使用段超越前綴的情況下,有下列規(guī)定:在不使用段超越前綴的情況下,有下列規(guī)定: v若有效地址用若有效地址用SI、DI和和BX等之一來指定,則其缺省的段寄存等之一來指定,則其缺省的段寄存器為器為DS;v若有效地址用若有效地址用BP來指定,則其缺省的段寄存器為來指定,則其缺省的段寄存器為SS(即:堆(即:堆棧段)。棧段)。該尋址方式物理

19、地址的計算方法如下:該尋址方式物理地址的計算方法如下: 或或 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言5. 寄存器相對尋址方式寄存器相對尋址方式定定 義:義:操作數在存儲器中,其有效地址是一個基址寄存器操作數在存儲器中,其有效地址是一個基址寄存器(BX、BP)或變址寄存器或變址寄存器(SI、DI)的內容和指令中的的內容和指令中的8位位/16位偏移量之和。位偏移量之和。 匯編格式:匯編格式:XR(X表示位移量,是表示位移量,是8位或位或16位二進制補碼表示位二進制補碼表示的有符號數)的有符號數)功功 能:能:操作數存放在存儲器,寄存器操作數存

20、放在存儲器,寄存器R的內容加位移量的內容加位移量X為為操作數的偏移地址操作數的偏移地址EA。圖形表示如下:圖形表示如下:地址地址寄存器寄存器操作數操作數存儲器存儲器段基地址段基地址基址或變址寄存器基址或變址寄存器 位移量位移量指令指令EA 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言【例【例3.5】假設指令:】假設指令:MOV BX, SI+100H,在執(zhí)行它時,(,在執(zhí)行它時,(DS)=1000H,(,(SI)=2345H,內存單元,內存單元12445H的內容為的內容為2715H,問該指,問該指令執(zhí)行后,令執(zhí)行后,BX的值是什么?的值是什么?

21、解:解:EA=(SI)+100H=2345H+100H=2445H PA=(DS)*16+EA=1000H*16+2445H=12445H。所以,該指令的執(zhí)行效果是:所以,該指令的執(zhí)行效果是:把從物理地址為把從物理地址為12445H開始開始的一個字的值傳送給的一個字的值傳送給BX。OP CS DS15H27H 10000H 12445H SI:2345H 100H EA:2445H DS:1000H 12445H27 15 BX 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言6. 基址變址尋址方式基址變址尋址方式定定 義:義:操作數在存儲器中,其

22、有效地址是一個基址寄存器操作數在存儲器中,其有效地址是一個基址寄存器(BX、BP)和一個變址寄存器和一個變址寄存器(SI、DI)的內容之和。的內容之和。 匯編格式:匯編格式: BR+IR功功 能:能:操作數存放在存儲器,操作數存放在存儲器,BR的內容加的內容加IR的內容是操作數的偏移地的內容是操作數的偏移地址址EA。圖形表示:圖形表示:操作數操作數 存儲器存儲器段基地址段基地址基址寄存器基址寄存器 變址寄存器變址寄存器指令指令基址值基址值基址寄存器基址寄存器變址值變址值變址寄存器變址寄存器EA 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言【例【

23、例3.6】假設指令:】假設指令:MOV BX, BX+SI,在執(zhí)行時,(,在執(zhí)行時,(DS)=1000H,(,(BX)=2100H,(,(SI)=0011H,內存單元,內存單元12111H的內容為的內容為1234H。問該指令執(zhí)行后,。問該指令執(zhí)行后,BX的值是什么?的值是什么? 解:操作數的物理地址解:操作數的物理地址PA為:為: PA=(DS)*16+ (BX)+(SI) =1000H*16+ 2100H+0011H =12111H所以,該指令的執(zhí)行效果是:所以,該指令的執(zhí)行效果是:把從物理地址為把從物理地址為12111H開始開始的一個字的值傳送給的一個字的值傳送給BX。 OP CS DS3

24、4H12H 10000H 12111H BX:2100H SI:0011H EA:2111H DS:1000H 12111H12 34 BX 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言7. 相對基址變址尋址方式相對基址變址尋址方式定定 義:義:操作數在存儲器中,其有效地址是一個基址寄存器操作數在存儲器中,其有效地址是一個基址寄存器(BX、BP)的的值、一個變址寄存器值、一個變址寄存器(SI、DI)的值和指令中的的值和指令中的8位位/16位偏移量之和。位偏移量之和。 匯編格式:匯編格式:X BR+IR功功 能:能:操作數存放在存儲器,操作數存放

25、在存儲器,BR內容加內容加IR內容加位移量內容加位移量X是操作數的偏是操作數的偏移地址移地址EA。圖形表示:圖形表示:存儲器存儲器基址值基址值基址寄存器基址寄存器操作數操作數段基地址段基地址基址寄存器基址寄存器 變址寄存器變址寄存器 位移量位移量指令指令變址值變址值變址寄存器變址寄存器EA 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言【例【例3.7】假設指令:】假設指令:MOV AX, BX+SI+200H,在執(zhí)行時,(,在執(zhí)行時,(DS)=1000H,(,(BX)=2100H,(,(SI)=0010H,內存單元,內存單元12310H的內容的內

26、容為為1234H。問該指令執(zhí)行后,。問該指令執(zhí)行后,AX的值是什么?的值是什么? 解:該操作數的物理地址應由解:該操作數的物理地址應由DS和和EA的值形成,即:的值形成,即:PA=12310H所以,該指令的執(zhí)行效果是:所以,該指令的執(zhí)行效果是:把從物理地址為把從物理地址為12310H開始開始的一個字的值傳送給的一個字的值傳送給AX。 OP CS DS34H12H 10000H 12310H BX:2100H SI:0010H 0200H EA:2310H DS:1000H 12310H12 34 AX 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語

27、言v跨段越問題跨段越問題 凡是使用寄存器為凡是使用寄存器為BX、SI、DI時,其默認段為時,其默認段為DS,使用,使用BP時,默認段時,默認段為為SS。該規(guī)定為系統(tǒng)默認狀態(tài)。當要否定默認狀態(tài),到非約定段尋找操作數。該規(guī)定為系統(tǒng)默認狀態(tài)。當要否定默認狀態(tài),到非約定段尋找操作數時,必須用跨段前綴指明操作數的段寄存器名。時,必須用跨段前綴指明操作數的段寄存器名。匯編格式:匯編格式:功能:功能:冒號冒號“:”之前的段寄存器名指明操作數所在的段。之前的段寄存器名指明操作數所在的段。【例【例3.8】 MOV AX,DS:BP MOV CX,SS:SI 該例中,該例中,DS:,:,SS:均為跨段前綴,此時默

28、認狀態(tài)無效,操作數的物:均為跨段前綴,此時默認狀態(tài)無效,操作數的物理地址理地址PA由段寄存器內容左移由段寄存器內容左移4位加偏移位加偏移EA形成。上述形成。上述2條指令的源操作數條指令的源操作數物理地址分別為:物理地址分別為: PA1 =(DS)左移)左移4位位+BP PA2 =(SS)左移)左移4位位+ SI 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言3.1.2 與轉移地址有關的尋址方式與轉移地址有關的尋址方式 用來確定轉移指令及轉子(用來確定轉移指令及轉子(call)指令的轉向地址。轉移)指令的轉向地址。轉移地址是由各種尋址方式得到的有效

29、地址和段地址相加而成的,地址是由各種尋址方式得到的有效地址和段地址相加而成的,有效地址存入有效地址存入IP寄存器中,段地址指定為寄存器中,段地址指定為CS段寄存器內容。段寄存器內容。 段內尋址段內尋址 段內直接尋址段內直接尋址 段內間接尋址段內間接尋址 段間尋址段間尋址 段間直接尋址段間直接尋址 段間間接尋址段間間接尋址 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言(1) 段內直接尋址段內直接尋址轉向的有效地址轉向的有效地址 = 當前(當前(IP) + 位移量(位移量(8bit/16bit) 位移量位移量IP寄存器寄存器EA 安徽理工大學安徽理

30、工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言【例例3.8】 (1)JMP SHORT QUEST 其中其中QUEST表示轉移的符號地址,操作符表示轉移的符號地址,操作符SHORT表示是個表示是個8位帶符號數,數的范圍是位帶符號數,數的范圍是80H 7FH,即,即 -128 +127。它只能。它只能相對于當前相對于當前IP(轉移指令的下一條指令的首地址)所指的位置作(轉移指令的下一條指令的首地址)所指的位置作-128 +127范圍內跳轉,所以稱為范圍內跳轉,所以稱為。(2)JMP NEAR PTR PROGA 其中其中PROGA表示轉移的符號地址,操作符表示轉移的

31、符號地址,操作符NEAR PRT表示表示是個是個16位帶符號數,數的范圍是位帶符號數,數的范圍是8000H 7FFFH,即,即 -32768 +32767。它只能相對于當前。它只能相對于當前IP所指的位置作所指的位置作-32768 +32767范圍范圍內跳轉,所以稱為內跳轉,所以稱為近跳轉近跳轉。 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言(2) 段內間接尋址段內間接尋址 轉向的有效地址是一個寄存器或存儲單元的內容??捎棉D向的有效地址是一個寄存器或存儲單元的內容??捎贸⒓磾狄酝獾娜魏我环N數據尋址方式得到,所得到的轉向除立即數以外的任何一種數

32、據尋址方式得到,所得到的轉向的有效地址取代的有效地址取代IP寄存器的內容。寄存器的內容。轉向的有效地址轉向的有效地址指令指令數據尋址方式數據尋址方式或或根據數據尋址根據數據尋址方式計算出方式計算出EA值值轉向的有效地址轉向的有效地址存儲單元存儲單元 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言 【例【例3.9】 已知已知 TABLE=20A2H ,(,(BX)=1256H ,(,(SI)=528EH,(DS)=2000H ,(,(232F8H)= 3280H ,(,(264E4H)=2450H JMP BX ; (IP)=1256H JMP W

33、ORD PTR TABLEBX ; (IP)=3280H JMP WORD PTR BXSI ; (IP)=2450H 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言(3) 段間直接尋址段間直接尋址用指令中提供的轉向段地址和偏移地址取代用指令中提供的轉向段地址和偏移地址取代CS 和和 IP。指令指令偏移地址偏移地址IP寄存器寄存器段地址段地址CS寄存器寄存器 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言【例【例3.9】JMPFAR PTR NEXTROUNT32EA01001010CS=0000H

34、 CS0000002000 IPIP=2000H CSCS=1000HNEXTROUNTIP=0132H1013210000新新IP新新CS 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言(4) 段間間接尋址段間間接尋址用存儲器中的兩個相繼字的內容取代用存儲器中的兩個相繼字的內容取代CS 和和 IP,存儲,存儲單元的地址可用存儲器尋址方式得到。單元的地址可用存儲器尋址方式得到。 指令指令數據尋址方式數據尋址方式根據數據尋址根據數據尋址方式計算出方式計算出EA值值轉向的有效地址轉向的有效地址轉向的有效地址轉向的有效地址存儲器中的兩個相繼字存儲器中的

35、兩個相繼字IPCS 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言【例【例3.10】 JMPDWORD PTR INTERS+BX 如如DS=3000H,BX=1200H,INTERS=0020H, 則存儲單元的物理地址則存儲單元的物理地址PA=30000+0020+1200=31200H 指令執(zhí)行前,指令執(zhí)行前,CS=0000H,IP=1000H,(,(31220H)=40H, (31221)=01H,(,(31222H)=00H,(,(31223)=10H。 指令執(zhí)行后,指令執(zhí)行后,CS=1000H,IP=0140H,(,(31220H)=4

36、0H, (31221)=01H,(,(31222H)=00H,(,(31223)=10H。 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言指令存儲和執(zhí)行情況:指令存儲和執(zhí)行情況:JMPDWORDPTRINTERBXCS=0000H CS0000001000 IPIP=1000H CSCS=1000H IPIP=0140H1014010000代碼段代碼段01400010DS=3000H DS3000031220INTER+BX數據段數據段新新IP新新CS312213122231223 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系

37、李敬兆李敬兆 匯編語言匯編語言3.2 程序占有的空間和執(zhí)行時間程序占有的空間和執(zhí)行時間 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言3. 80 x86的指令系統(tǒng)的指令系統(tǒng)80X86指令系統(tǒng)分為以下指令系統(tǒng)分為以下6組:組: 在學習匯編指令時,指令的功能是我們學習和掌握的重點,但在學習匯編指令時,指令的功能是我們學習和掌握的重點,但要準確、有效地運用這些指令,我們還要熟悉系統(tǒng)對每條指令的一要準確、有效地運用這些指令,我們還要熟悉系統(tǒng)對每條指令的一些規(guī)定或約束。因此,對指令要掌握以下幾個方面內容:些規(guī)定或約束。因此,對指令要掌握以下幾個方面內容:

38、安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言 數據傳送指令數據傳送指令。它相對于高級語言里的賦值語句。它相對于高級語言里的賦值語句。 :MOV PUSH POP : IN OUT XLAT: LEA LDS LES: LAHF SAHF PUSHF POPF:CBW CWD 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言vMOV 傳送指令傳送指令格格 式:式: 其中:其中:RegRegister(寄存器),(寄存器),MemMemory(存儲器),(存儲器),ImmImmediate(立即數),它

39、們(立即數),它們可以是可以是8位、位、16位。位。 功功 能:能:指令的功能是指令的功能是把源操作數(第二操作數)的值傳給目把源操作數(第二操作數)的值傳給目的操作數(第一操作數)。的操作數(第一操作數)。指令執(zhí)行后,目的操作數的值被改變,指令執(zhí)行后,目的操作數的值被改變,而源操作數的值不變。在存儲單元是該指令的一個操作數時,該而源操作數的值不變。在存儲單元是該指令的一個操作數時,該操作數的尋址方式可以是任意一種存儲單元尋址方式。操作數的尋址方式可以是任意一種存儲單元尋址方式。 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言段寄存器段寄存器CS

40、、DS、SS、ES通用寄存器通用寄存器8位或者位或者16位位存儲器存儲器立即數立即數8位或者位或者16位位 在匯編語言中,主要的數據傳送方式如下圖所在匯編語言中,主要的數據傳送方式如下圖所示。雖然一條示。雖然一條MOV指令能實現(xiàn)其中大多數的數據傳指令能實現(xiàn)其中大多數的數據傳送方式,但也存在送方式,但也存在MOV指令不能實現(xiàn)的傳送方式。指令不能實現(xiàn)的傳送方式。 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言 對對MOV指令有以下幾條具體規(guī)定,其中有些規(guī)定對其它指令指令有以下幾條具體規(guī)定,其中有些規(guī)定對其它指令也同樣有效。也同樣有效。 (1),要同為

41、,要同為8位、位、16位,位, 如:如:MOV BL,AX等是不正確的;等是不正確的; (2),如:,如:MOV ES,DS等;等; (3), 如:指令如:指令MOV CS, AX等不正確,但指令等不正確,但指令MOV AX,CS等等是正確的;是正確的; (4), 如:如:MOV DS,100H等;等; (5),如:,如:MOV 100H,AX等;等; (6); (7), 如:如:MOV VARA,VARB等,其中等,其中VARA和和VARB是同數據是同數據類型的內存變量。類型的內存變量。 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言vPUSH

42、進棧指令進棧指令 堆棧是一個重要的數據結構,它具有堆棧是一個重要的數據結構,它具有“先進后出先進后出”的特點,的特點,通常用來保存程序的返回地址通常用來保存程序的返回地址。它主要有兩。它主要有兩大類操作:大類操作:進棧操作和出棧操作進棧操作和出棧操作。 指令格式:指令格式: 一個字進棧,系統(tǒng)自動完成兩步操作:一個字進棧,系統(tǒng)自動完成兩步操作: SPSP-2,(,(SP)操作數操作數; 功功 能:能:將寄存器、段寄存器或存儲器中的一將寄存器、段寄存器或存儲器中的一個字數據壓入堆棧,堆棧指針減個字數據壓入堆棧,堆棧指針減2。 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李

43、敬兆 匯編語言匯編語言【例】【例】PUSH AX2816A7SS=5000H SS50000堆棧段堆棧段525005250152502SP=2500H SP31 25AX283116A7SS=5000H SS50000堆棧段堆棧段525005250152502SP=24FEH SP2531 25AX525FF525FE(1)執(zhí)行前)執(zhí)行前(2)執(zhí)行后)執(zhí)行后 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言vPOP進棧指令進棧指令: 彈出一個字,系統(tǒng)自動完成兩步操作:彈出一個字,系統(tǒng)自動完成兩步操作: ; :將棧頂元素彈出送至某一寄存器、段寄將棧頂

44、元素彈出送至某一寄存器、段寄存器(除存器(除CS外)或存儲器,堆棧指針加外)或存儲器,堆棧指針加2。 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言【例】【例】POP BX(1)執(zhí)行前)執(zhí)行前(2)執(zhí)行后)執(zhí)行后486B9A28 SS50000堆棧段堆棧段510015100251003SP=1000H SP75 C1BX51000486B9A28 SS50000堆棧段堆棧段510015100251003SP=1002H SP48 6BBX51000 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言vI

45、N輸入指令輸入指令 輸入指令用來輸入指令用來。它有幾種形式:。它有幾種形式: 長格式:長格式: 執(zhí)行操作:(執(zhí)行操作:(AL) (PORT) (字節(jié))(字節(jié)) (AX) (PORT+1, PORT)(字)(字) 短格式:短格式: 執(zhí)行操作:(執(zhí)行操作:(AL)(DX) (字節(jié))(字節(jié)) (AX)(DX)+1,(DX)(字)(字) 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言 注意:注意:該指令的作用是從端口中讀入一個字節(jié)該指令的作用是從端口中讀入一個字節(jié)或字,并保存在寄存器或字,并保存在寄存器AL或或AX中。中。DX中,然后在指令中由中,然后在

46、指令中由DX來來給出其端口地址。給出其端口地址。 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言例如:例如: ;從端口;從端口60H讀入一個字節(jié)到讀入一個字節(jié)到AL中中;把端口;把端口20H、21H按按“高高低低高高低低”組成組成的的 字讀入字讀入AX;從端口;從端口2F8H讀入一個字節(jié)到讀入一個字節(jié)到AL中中;把端口;把端口2F8H、2F9H按按“高高低低高高低低”組組成成 的字讀入的字讀入AX 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言vOUT輸出指令輸出指令 輸出指令用來輸出指令用來,它有

47、幾,它有幾種形式:種形式:v長格式:長格式: (字節(jié))(字節(jié)) (字)(字) 執(zhí)行操作:執(zhí)行操作: (字節(jié))(字節(jié)) 字)字)v短格式:短格式: (字節(jié))(字節(jié)) (字)(字) 執(zhí)行操作:執(zhí)行操作: (字節(jié))(字節(jié)) 字)字) 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言注意:注意:該指令的作用是把寄存器該指令的作用是把寄存器AL或或AX的內容輸出到指定端口。的內容輸出到指定端口。如果某輸出設備的端口地址在如果某輸出設備的端口地址在0255范圍之內,那么,可在指令范圍之內,那么,可在指令OUT中直接給出,否則,要把該端口地址先存入寄存器中直接給

48、出,否則,要把該端口地址先存入寄存器DX中,中,然后在指令中由然后在指令中由DX來給出其端口地址。來給出其端口地址。例如:例如:;把;把AL的內容輸出到端口的內容輸出到端口61H中中;把;把AX的內容輸出到端口的內容輸出到端口20H、21H中中;把;把AL的內容輸出到端口的內容輸出到端口3C0H中中;把;把AX的內容輸出到端口的內容輸出到端口3C0H、3C1H中中 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言vXLAT 換碼指令換碼指令轉換指令有轉換指令有BX和和AL。: 或或 : :其功能是:其功能是把把BX的值作為內存字節(jié)數的值作為內存字節(jié)

49、數組首地址、下標為組首地址、下標為AL的數組元素的值傳送給的數組元素的值傳送給AL。 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言n例:例: ; (BX)=0040H 指令執(zhí)行后指令執(zhí)行后 (AL)=33H32H31H33HDS=F000H DS數據段數據段F0040F0041 (AL)=3table30H (BX)F0042F0043把把BX的值作為內存字的值作為內存字節(jié)數組首地址、下標節(jié)數組首地址、下標為為AL的數組元素的值的數組元素的值傳送給傳送給AL。 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語

50、言匯編語言v地址傳送指令地址傳送指令取有效地址指令取有效地址指令LEA: 指令指令LEA是是。其指令格式如下:。其指令格式如下: 該指令該指令通常用來對通常用來對指針或變址寄存器指針或變址寄存器BX、DI或或SI等置初值之用等置初值之用。 取取段寄存器指令:段寄存器指令: 該組指令的功能是該組指令的功能是。其指令格式如下:。其指令格式如下: 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言例:例: 40 H00 H00 H30 H TABLE 3000H:1000H 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編

51、語言匯編語言v標志寄存器傳送指令標志寄存器傳送指令標志送標志送AH指令:指令: LAHF 執(zhí)行操作:(執(zhí)行操作:(AH)(FLAGS的低字節(jié))的低字節(jié)) AH送標志寄存器指令:送標志寄存器指令:SAHF執(zhí)行操作:執(zhí)行操作: (FLAGS的低字節(jié))的低字節(jié))(AH) 標志進棧指令:標志進棧指令:PUSHF 執(zhí)行操作:執(zhí)行操作: (SP)(SP) - 2 (SP)+1, (SP)(FLAGS)標志出棧標志出棧指令:指令:POPF執(zhí)行操作:執(zhí)行操作: (FLAGS)(SP)+1,(SP) (SP)(SP)+ 2 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯

52、編語言v類型轉換指令指令類型轉換指令指令 CBW AL AX 執(zhí)行操作:執(zhí)行操作: CWD AX (DX,AX) 執(zhí)行操作:執(zhí)行操作: 例例: CBW ; (AX)=0045H CWD ; (DX)=0FFFFH (AX)=0BA45H 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言3.算術指令算術指令 算術運算指令是反映算術運算指令是反映CPU計算能力的一組指令,也是編程時常計算能力的一組指令,也是編程時常使用的一組指令。它包括:加、減、乘、除及其相關的輔助指令。使用的一組指令。它包括:加、減、乘、除及其相關的輔助指令。 該組指令的操作數可以是

53、該組指令的操作數可以是8位、位、16位。當存儲單元是該類指令的操位。當存儲單元是該類指令的操作數時,作數時,。v 加法指令加法指令 ADD、ADC、INCv 減法指令減法指令 SUB、SBB、DEC、NEG、CMPv 乘法指令乘法指令 MUL、IMUL v 除法指令除法指令 DIV、IDIVv 十進制調整指令十進制調整指令 DAA、DAS、 AAA、AAS、AAM、AAD 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言1. .加法指令加法指令 v 加法指令:加法指令: ADD DST,SRC功能:將目的操作數與源操作數相加,結果存入目的地址中,源

54、地功能:將目的操作數與源操作數相加,結果存入目的地址中,源地址的內容不改變。址的內容不改變。執(zhí)行操作:執(zhí)行操作:(DST) (SRC)+(DST)v 帶進位加法指令:帶進位加法指令: ADC DST,SRC 功能:將目的操作數加源操作數再加低位進位,結果送目的地址。功能:將目的操作數加源操作數再加低位進位,結果送目的地址。執(zhí)行操作:執(zhí)行操作:(DST) (SRC)+(DST)+ CFv 加加1指令:指令: INC OPR 功能:將目的操作數加功能:將目的操作數加1,結果送目的地址。,結果送目的地址。執(zhí)行操作:執(zhí)行操作: (OPR) (OPR)+ 1注意注意: 除除INC指令不影響指令不影響CF

55、標志外,均對條件標志位有影響。標志外,均對條件標志位有影響。 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言v 標志寄存器標志寄存器FLAGS的介紹的介紹指令的執(zhí)行與標志有很大關系。指令的執(zhí)行與標志有很大關系。標志分成兩類:標志分成兩類:n 狀態(tài)標志狀態(tài)標志用來記錄程序運行結果的狀態(tài)信息,許多指令的用來記錄程序運行結果的狀態(tài)信息,許多指令的執(zhí)行都將相應地設置它。它們分別是:執(zhí)行都將相應地設置它。它們分別是: CF ZF SF PF OF AFn 控制標志控制標志可由程序根據需要用指令設置,用于控制處理器可由程序根據需要用指令設置,用于控制處理器執(zhí)

56、行指令的方式。它們分別是:執(zhí)行指令的方式。它們分別是: DF IF TF 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0OF DF IF TF SF ZF AF PF CF 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言 當運算結果的最高有效位有進位(加法)或借位當運算結果的最高有效位有進位(加法)或借位(減法)時,進位標志置(減法)時,進位標志置1,即,即CF = 1;否則;否則CF = 0。 例如:例如: 3AH + 7CHB6H,沒有進位:,沒有進位:CF = 0 AAH + 7CH(1)26H,有進位:,有進位

57、:CF = 1 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言若運算結果為若運算結果為0,則,則ZF = 1,否則,否則ZF = 0。例如:例如: 3AH + 7CHB6H,結果不是零:,結果不是零:ZF = 0 86H + 7CH(1)00H,結果是零:,結果是零:ZF = 1注意:注意:ZF為為1表示的結果是表示的結果是0。 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言 運算結果最高位為運算結果最高位為1,則,則SF = 1;否則;否則SF = 0。例如:例如: 3AH + 7CHB6H,最高

58、位,最高位D71:SF = 1 86H + 7CH(1)00H,最高位,最高位D70:SF = 0注意:有符號數據利用最高有效位表示數據的符號。所注意:有符號數據利用最高有效位表示數據的符號。所以,最高有效位就是符號標志的狀態(tài)。以,最高有效位就是符號標志的狀態(tài)。 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言 當運算結果最低字節(jié)中當運算結果最低字節(jié)中“1”的個數為零或偶數時,的個數為零或偶數時,PF = 1;否則;否則PF = 0。例如:例如: 3AH + 7CHB6H10110110B, 結果中有結果中有5個個1,是奇數:,是奇數:PF = 0

59、注意:注意:PF標志僅反映最低標志僅反映最低8位中位中“1”的個數是偶或奇,即的個數是偶或奇,即使是進行使是進行16位字操作。位字操作。 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言 運算時運算時D3位(低半字節(jié))有進位或借位時,位(低半字節(jié))有進位或借位時,AF = 1;否則否則AF = 0。 例如:例如: 3AH + 7CHB6H,D3有進位:有進位:AF = 1 注意:這個標志主要由處理器內部使用,用于十進制算術注意:這個標志主要由處理器內部使用,用于十進制算術運算指令中,用戶一般不必關心。運算指令中,用戶一般不必關心。 安徽理工大學安徽

60、理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言 若算術運算的結果有溢出,則若算術運算的結果有溢出,則OF=1;否則;否則 OF0。例如:例如: 3AH + 7CHB6H,產生溢出:,產生溢出:OF = 1 AAH + 7CH(1)26H,沒有溢出:,沒有溢出:OF = 0問題:問題:什么是溢出?什么是溢出?溢出和進位有什么區(qū)別?溢出和進位有什么區(qū)別?如何判斷是否溢出?如何判斷是否溢出? 安徽理工大學安徽理工大學 計算機科學與技術系計算機科學與技術系 李敬兆李敬兆 匯編語言匯編語言舉例舉例: n=8 bit 帶符號數(帶符號數(-128127) , 無符號數(無符

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論