第三章指令系統及其尋址方式_第1頁
第三章指令系統及其尋址方式_第2頁
第三章指令系統及其尋址方式_第3頁
第三章指令系統及其尋址方式_第4頁
已閱讀5頁,還剩133頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第三章 80 x86尋址方式和指令系統第三章第三章 指令系統及其尋址方式指令系統及其尋址方式3.13.1 尋址方式尋址方式3.23.2 指令格式指令格式3.33.3 指令系統指令系統 第三章 80 x86尋址方式和指令系統3.1 3.1 尋址方式尋址方式 3.1.1 .1.1 指令的書寫格式指令的書寫格式指令有兩種書寫格式:指令有兩種書寫格式: * 機器指令:由一串二進制數描述;機器指令:由一串二進制數描述;* 符號指令:用英文字母縮寫詞描述。符號指令:用英文字母縮寫詞描述。符號指令的書寫格式如下:符號指令的書寫格式如下:標號:標號: 操作助記符操作助記符 目的操作數目的操作數,源操作數,源操

2、作數;注釋;注釋 第三章 80 x86尋址方式和指令系統幾點說明:幾點說明: 標號標號表示某一條指令所在存儲單元的首址。表示某一條指令所在存儲單元的首址。 標號應由字母打頭,后跟字母、數字及特殊標號應由字母打頭,后跟字母、數字及特殊字符均可,但不能用字符均可,但不能用關鍵字。關鍵字。 標號的用法:標號的用法: 1、 標號標號一般放在子程序(子過程)的第一條一般放在子程序(子過程)的第一條指令的開頭;指令的開頭; 2、標號標號一般放在轉移指令要轉去的目的地的一般放在轉移指令要轉去的目的地的 第一條指令的開頭。第一條指令的開頭。 3、標號標號一般放在其他符號定義的前面。一般放在其他符號定義的前面。

3、第三章 80 x86尋址方式和指令系統 指令助記符指令助記符(操作助記符):(操作助記符):MOV;ADD;SUB;END。操作數操作數 有有源源操作數和操作數和目的目的操作數,他們之操作數,他們之 間用間用“,” 分隔。分隔。 操作數也可有可無。操作數也可有可無。第三章 80 x86尋址方式和指令系統 3.1.2 數據尋址方式數據尋址方式一般在指令中包含有操作碼和操作數,一般在指令中包含有操作碼和操作數,怎樣找到指令中的操作數和操作數所在的地怎樣找到指令中的操作數和操作數所在的地址,這就是尋址方式。址,這就是尋址方式。 在微機中的操作數有三種存放方式:在微機中的操作數有三種存放方式: (1)

4、立即數)立即數包含在本條指令中,即:包含在本條指令中,即: 存放在代碼段中;存放在代碼段中; (2) 操作數存放在操作數存放在CPU的某個寄存器中;的某個寄存器中; (3) 操作數存放在存儲器的數據段或堆棧操作數存放在存儲器的數據段或堆棧段或附加數據段中。段或附加數據段中。第三章 80 x86尋址方式和指令系統 所以,總的來說,數據尋址方式分為三所以,總的來說,數據尋址方式分為三種:種: 立即尋址立即尋址 寄存器尋址寄存器尋址 存儲器尋址存儲器尋址第三章 80 x86尋址方式和指令系統一、立即尋址一、立即尋址 操作數操作數直接包含在直接包含在代碼段的指令代碼段的指令中。中。 如:如: MOV

5、EAXMOV EAX,80800000000000H00H MOV BX MOV BX,6688H6688H MOV AX MOV AX,1234H1234H 立即數只能作為源操作數立即數只能作為源操作數 立即尋址主要用來給通用寄存器或存儲器立即尋址主要用來給通用寄存器或存儲器賦值賦值 不允許給段寄存器直接賦值不允許給段寄存器直接賦值第三章 80 x86尋址方式和指令系統例例3.1 立即尋址立即尋址第三章 80 x86尋址方式和指令系統立即尋址過程示意立即尋址過程示意第三章 80 x86尋址方式和指令系統立即尋址動態示意立即尋址動態示意第三章 80 x86尋址方式和指令系統二、寄存器尋址二、寄

6、存器尋址 操作數操作數在在寄存器寄存器中。中。 3232位寄存器:位寄存器:EAXEAX、EBXEBX、ECXECX、EDXEDX、 ESPESP、EBPEBP、 ESIESI、EDIEDI 16 16位寄存器:位寄存器:AXAX、BXBX、CXCX、DXDX、SPSP、BPBP、SISI、 DIDI、CSCS、DSDS、SSSS、ESES、FSFS、GSGS 8 8 位寄存器:位寄存器:AHAH、ALAL、BHBH、BLBL、 CHCH、CLCL、DHDH、DLDL 如:如: MOV AXMOV AX,BXBX MOV EDI MOV EDI,ESIESI MOV AL MOV AL,CLC

7、L第三章 80 x86尋址方式和指令系統例例3.2 寄存器尋址寄存器尋址第三章 80 x86尋址方式和指令系統三、存儲器尋址三、存儲器尋址 操作數操作數在在存儲器存儲器中,其地址由指令以某種中,其地址由指令以某種方式指出。方式指出。(一)一)1616位指令模式下:位指令模式下: 物理地址物理地址= =段基址段基址 10H 10H 有效地址有效地址EAEA(二)(二)3232位指令模式下:位指令模式下: 物理地址物理地址= =段基址段基址 有效地址有效地址EAEA EA EA的計算方法根據采用的尋址方式不同而不的計算方法根據采用的尋址方式不同而不同。同。第三章 80 x86尋址方式和指令系統(一

8、)一)1616位指令模式下的存儲器尋址位指令模式下的存儲器尋址 1616位指令模式尋址結構位指令模式尋址結構由由4 4部分組成:部分組成:段基址段基址10H10H基址變址偏移量基址變址偏移量 基址:基址:BXBX、BPBP , 變址:變址:SISI、DIDI , 偏移量:偏移量:8 8位或位或1616位位 如果有效地址在如果有效地址在BXBX,SISI或或DIDI中,中, 則以則以DSDS寄存器內容為寄存器內容為段基址段基址; 如果有效地址在如果有效地址在BPBP中,則以中,則以SSSS段寄存器段寄存器的的內容為內容為段基址段基址。第三章 80 x86尋址方式和指令系統 如果使用如果使用段超越

9、段超越(CS:ES:DS:SS:),:),前綴操作數可以放在冒號前指定的段。前綴操作數可以放在冒號前指定的段。例如:例如:MOVES:DI,AL MOVES:2000H, AL 其中其中ES為為前綴前綴字節,產生目標碼時,它將字節,產生目標碼時,它將放在放在MOV指令的前面,指令的前面, 即:即: 26ES: 8805 MOVDI,AL亦即:亦即:268805 MOVES:DI,AL第三章 80 x86尋址方式和指令系統1 1、直接尋址、直接尋址操作數在存儲器單元中。操作數在存儲器單元中。操作數所在的操作數所在的有效地址有效地址EAEA直接由指令指出直接由指令指出。 例例1 MOV AX1 M

10、OV AX,3000H3000H 例例2 MOV BL2 MOV BL,BLOCKBLOCK 例例3 MOV BX3 MOV BX,DATA1DATA1 16位指令模式尋址方式位指令模式尋址方式: 直接尋址直接尋址 寄存器間接尋址寄存器間接尋址 寄存器相對尋址寄存器相對尋址 基址變址尋址基址變址尋址 相對基址變址尋址相對基址變址尋址 第三章 80 x86尋址方式和指令系統例例3.3 直接尋址直接尋址第三章 80 x86尋址方式和指令系統直接尋址過程示意直接尋址過程示意第三章 80 x86尋址方式和指令系統直接尋址動態示意直接尋址動態示意第三章 80 x86尋址方式和指令系統2 2、寄存器間接尋

11、址、寄存器間接尋址 操作數的操作數的有效地址在有效地址在BXBX、BPBP或或SISI、DIDI中中,EAEA可表示為可表示為 例例1 MOV AX1 MOV AX,BXBX 例例2 MOV DL2 MOV DL,SISI( ( B B X X ) ) ( ( B B P P ) ) ( ( S S I I ) ) ( ( D D I I ) ) E E A A = = 第三章 80 x86尋址方式和指令系統例例3.4 寄存器間接尋址寄存器間接尋址第三章 80 x86尋址方式和指令系統寄存器間接尋址過程示意寄存器間接尋址過程示意第三章 80 x86尋址方式和指令系統寄存器間接尋址動態示意寄存器

12、間接尋址動態示意第三章 80 x86尋址方式和指令系統3 3、寄存器相對尋址、寄存器相對尋址操作數在存儲單元中,其操作數在存儲單元中,其有效地址有效地址EAEA可表示為可表示為 例例1 : MOV AL1 : MOV AL,BXBX4000H4000H亦可寫成:亦可寫成: MOV ALMOV AL,4000HBX4000HBX 例例2 : MOV AX2 : MOV AX,BP+2000HBP+2000H( (B BX X) ) ( (B BP P) ) 8 8 位偏移量 ( (S SI I) ) 1 16 6 位偏移量 ( (D DI I) ) E EA A= = 第三章 80 x86尋址方

13、式和指令系統例例3.6 寄存器相對尋址寄存器相對尋址第三章 80 x86尋址方式和指令系統寄存器相對尋址過程示意寄存器相對尋址過程示意第三章 80 x86尋址方式和指令系統寄存器相對尋址動態示意寄存器相對尋址動態示意第三章 80 x86尋址方式和指令系統4 4、基址變址尋址、基址變址尋址操作數在存儲單元中,其有效地址操作數在存儲單元中,其有效地址EAEA可表示為可表示為 例例1 MOV AX1 MOV AX,BXBXSI SI 或寫成:或寫成: MOV AXMOV AX,BXSIBXSI 例例2 MOV AX2 MOV AX,BX+DIBX+DI 例例3 MOV AX3 MOV AX,BP+S

14、IBP+SI 例例4 MOV AX4 MOV AX,BP+DIBP+DI (BX) (SI) (BP) (DI) EA= 第三章 80 x86尋址方式和指令系統例例3.7 基址變址尋址基址變址尋址第三章 80 x86尋址方式和指令系統基址變址尋址過程示意基址變址尋址過程示意第三章 80 x86尋址方式和指令系統基址變址尋址動態示意基址變址尋址動態示意第三章 80 x86尋址方式和指令系統5 5、相對基址變址尋址、相對基址變址尋址操作數在存儲單元中,其操作數在存儲單元中,其有效地址有效地址EAEA可表示為可表示為 例例1: MOV AX1: MOV AX,BXBXSISI1500H1500H或寫

15、成或寫成 : : MOV AXMOV AX,1500BXSI1500BXSI 例例2 : MOV AX2 : MOV AX,BP+DI+1000HBP+DI+1000H (BX) (SI) 8 位偏移量 (BP) (DI) 16 位偏移量 EA= 第三章 80 x86尋址方式和指令系統例例3.8 相對基址變址尋址相對基址變址尋址第三章 80 x86尋址方式和指令系統相對基址變址尋址過程示意相對基址變址尋址過程示意第三章 80 x86尋址方式和指令系統相對基址變址尋址動態示意相對基址變址尋址動態示意第三章 80 x86尋址方式和指令系統(二)二) 3232位指令模式下的存儲器尋址位指令模式下的存

16、儲器尋址 3232位指令模式尋址結構由位指令模式尋址結構由5 5部分組成部分組成:段址段址基址變址比例因子偏移量基址變址比例因子偏移量 其中基址寄存器或變址寄存器可以是除其中基址寄存器或變址寄存器可以是除ESPESP以外的任何以外的任何3232位通用寄存器。當基址寄存器為位通用寄存器。當基址寄存器為EBPEBP時,默認段寄存器時,默認段寄存器SSSS存放段選擇符,否則,存放段選擇符,否則,默認默認DSDS存放段選擇符。也可使用段超越前綴來存放段選擇符。也可使用段超越前綴來指定。指定。 比例因子為比例因子為1 1,2 2,4 4,8 8。偏移量為。偏移量為8 8位位或或3232位。位。 第三章

17、80 x86尋址方式和指令系統當偏移量為當偏移量為32位時,段內可尋址范圍為:位時,段內可尋址范圍為:2312311字節空間。字節空間。32位尋址方式如下圖:位尋址方式如下圖:物理基址段限訪問權限CSSSDSESFSGS描述符描述符基址寄存器變址寄存器偏移量+比例因子比例因子1,2,4,8線性線性地址地址選擇符選擇符第三章 80 x86尋址方式和指令系統 (1)、指令中直接寫出操作數所在存儲單元)、指令中直接寫出操作數所在存儲單元的的32位有效地址(位有效地址(EA),注意:段超越前綴不),注意:段超越前綴不能省略,否則,會出現尋址錯誤。能省略,否則,會出現尋址錯誤。 如:如:MOVEAX,D

18、S:11224488H1、直接尋址直接尋址有兩種書寫格式有兩種書寫格式(2)、用)、用變量名變量名代表存儲單元的有效地址代表存儲單元的有效地址 如:如:把數據段中以把數據段中以BUF命名的雙字單元的命名的雙字單元的內容送到內容送到EAX。MOVEAX,DS:BUF MOVEAX,BUF第三章 80 x86尋址方式和指令系統2、寄存器間接尋址寄存器間接尋址,操作數的有效地址,操作數的有效地址由由EA(EAX、EBX、ECX、EDX、ESI、EDI、EBP)指定。)指定。 如:如:MOVEBX,UBF MOV EAX,EBX3、相對基址尋址相對基址尋址,操作數的有效地址由,操作數的有效地址由EA(

19、EAX、EBX、ECX、EDX、ESI、EDI、EBP)+ 偏移量(偏移量(8、32)指定。)指定。 如:如:MOVEAX,NUM ;NBM有效地址有效地址 MOV EDX,EAX+80H第三章 80 x86尋址方式和指令系統 1、有比例因子的變址尋址、有比例因子的變址尋址 如:如:MOV EBX,ESI4+80H 5、基址加變址尋址基址加變址尋址,有兩種格式,有兩種格式 (1)、有比例因子)、有比例因子的基址加變址尋址的基址加變址尋址 如:如:MOV EAX,EBP+ESI4+80H4、變址尋址變址尋址,有兩種格式,有兩種格式2、無比例因子的變址尋址、無比例因子的變址尋址 MOV EBX,E

20、SI+80H第三章 80 x86尋址方式和指令系統(2)、無比例因子的基址加變址尋址)、無比例因子的基址加變址尋址如:如:MOV EAX,EBP+ESI+80H第三章 80 x86尋址方式和指令系統3.1.2 3.1.2 程序地址尋址方式程序地址尋址方式 一、相對尋址一、相對尋址 相對尋址為段內尋址,指令中給出相對尋址為段內尋址,指令中給出帶符號的相對偏移量,程序目標地址為當帶符號的相對偏移量,程序目標地址為當前前IPIP值加上相對偏移量作為偏移地址。值加上相對偏移量作為偏移地址。 類類 型型 指指 令令相對偏移量相對偏移量 轉移范圍轉移范圍 SHORT JMP 1128127NEAR(16位

21、)位) JMP/CALL 23276832767NEAR(32位)位) JMP/CALL 421474836482147483647第三章 80 x86尋址方式和指令系統 例如:例如: 地址地址 機器碼機器碼助記符助記符1D24:0100 8BF7 MOV DI,SI1D24:0102 EB02 JMP SHORT NEXT1D24:0104 8ACA MOVCL,DL1D24:0106 8AC3 NEXT: MOVAL,BL第三章 80 x86尋址方式和指令系統 二、二、 直接尋址直接尋址 直接尋址是指指令中直接給出轉移指令的目標直接尋址是指指令中直接給出轉移指令的目標地址。在段間轉移中,指

22、令中給出目標段地址或代碼地址。在段間轉移中,指令中給出目標段地址或代碼段的段描述符。段的段描述符。 例如:例如: COD CODE1 ;代碼段定義;代碼段定義 地址地址 機器碼機器碼 助記符助記符1D24:0010 8BF7 MOVDI,SI1D24:0012 EA0A00251D JMP FAR PTR NEXT CODE CODE2 ;代碼段定義;代碼段定義1D25:000A 8ACA NEXT:MOVCL,DL第三章 80 x86尋址方式和指令系統 三、間接尋址三、間接尋址 間接尋址間接尋址 分段內和段間間接尋址,指令中以分段內和段間間接尋址,指令中以間接方式給出轉移指令的目標地址,通常

23、存放在間接方式給出轉移指令的目標地址,通常存放在數據段。采用數據段。采用(E)BP尋址,指令目標地址放在尋址,指令目標地址放在堆棧段。使用段超越前綴,也可以存放在其他段。堆棧段。使用段超越前綴,也可以存放在其他段。下面的例子為段間間接轉移下面的例子為段間間接轉移 指令。指令。 BX中存放的是符號地址中存放的是符號地址BUF的偏移地址的偏移地址 BUF雙字類型。在雙字類型。在BUF所指的存儲單元中存所指的存儲單元中存放著放著CODE2段中標號段中標號NEXT的段基址和偏移地址的段基址和偏移地址(1D25:0008)。)。第三章 80 x86尋址方式和指令系統 地址地址 操作數操作數 DATA1D

24、26:0000 0800251D BUF DD NEXTCODE CODE1 地址地址 機器碼機器碼 1D24:0010 BB0000 MOV BX,OFFSET DATA1 1D24:0013 FF2F JNP FAR PTR BX ;CODE CODE2 1D25:0008 8ACA NEXT:MOVCL,DL EXIT第三章 80 x86尋址方式和指令系統IP:0010 CS:1D24 DX:00001D24:0010DS:1D26 MOV BX,OFFSET DATA1JMP FAR PTR BX MOV CL,DL1D25:0008 BB0000FF2F8ACA0800251DNEX

25、T偏移地址偏移地址NEXT段地址段地址數據段數據段1D26:0000CS:1D25 IP:0008 第三章 80 x86尋址方式和指令系統3.1.3 3.1.3 堆棧地址尋址方式堆棧地址尋址方式字字數據數據進棧進棧步驟步驟: : 1 1、(、(E E)SPSP11(E E)SPSP 2 2、 高高8 8位位堆棧堆棧 3 3、(、(E E)SPSP11(E E)SPSP 4 4、低、低8 8位位堆棧堆棧用途:暫存數據,自動保護中斷斷點、調用過程用途:暫存數據,自動保護中斷斷點、調用過程 斷點等,堆棧的存取方式是:斷點等,堆棧的存取方式是: 采用采用先進后出先進后出規則。規則。 使用使用PUSH

26、指令將數據壓入堆棧,指令將數據壓入堆棧, 使用使用POP指令數據彈出堆棧。指令數據彈出堆棧。第三章 80 x86尋址方式和指令系統字數據字數據出棧出棧步驟步驟:1、棧頂內容、棧頂內容目標寄存器或目標單元的低目標寄存器或目標單元的低8位位2、(、(E)SP1(E)SP3、棧頂內容、棧頂內容目標寄存器或目標單元的高目標寄存器或目標單元的高8位位4、(、(E)SP1(E)SP第三章 80 x86尋址方式和指令系統堆棧操作示意堆棧操作示意第三章 80 x86尋址方式和指令系統思考題思考題 1、 設DS=2000H,SS=3000H,BP=0200H,SI=4000H,BUF=1000H,EAX=000

27、01000H,EBX=00002000H,假設按16位實模式操作,確定下列每條指令訪問內存的物理地址,并且指出源操作數及目的操作數的尋址方式。(1)MOV AL,1234H (2)MOV EDX,BX(3)MOV CL,BX100H (4)MOV SI,EBX(5)MOV AH,BUFBXSI (6)MOV EAX,BP1234H 第三章 80 x86尋址方式和指令系統3.2 80X863.2 80X86指令格式指令格式 指令基本格式:指令基本格式: 標號:標號: 助記符助記符 目的目的操作數操作數,源,源操作數;注釋操作數;注釋 標號可有可無;標號可有可無; 助記符必有,如:助記符必有,如:

28、ADD ADD ,MOVMOV,ININ,OUTOUT。 操作數:操作數: 源操作數源操作數目的操作數目的操作數可有可無。可有可無。第三章 80 x86尋址方式和指令系統操作數:操作數:寄存器寄存器存儲器存儲器立即數立即數1、 通通 用用 寄存器:寄存器:8位:位:AH,AL,BH,BL,CH,CL,DH,DL16位:位:AX,BX,CX,DX,SI,DI,SP,BP32位:位:EAX,EBX,ECX,EDX,ESI,EDI, ESP,EBP2、存儲器操作數:、存儲器操作數:需要通過寄存器間接尋址,需要通過寄存器間接尋址, 來到操作數所在存儲單元的來到操作數所在存儲單元的 地址。地址。 第三章

29、 80 x86尋址方式和指令系統16位間接尋址的寄存器有:位間接尋址的寄存器有:BX,BP,SI,DI;32位間接尋址的寄存器有:位間接尋址的寄存器有:EAX,EBX,ECX, EDX,ESI,EDI, EBP。3、存儲器操作數缺省數據類型:存儲器操作數缺省數據類型:8位指令操作為:字節類型;位指令操作為:字節類型;16位指令操作為:字類型;位指令操作為:字類型;32位指令操作為:雙字型,位指令操作為:雙字型,第三章 80 x86尋址方式和指令系統在使用中如要改變地址表達式的類型,可在使用中如要改變地址表達式的類型,可使用使用PTR偽指令來定義。偽指令來定義。如:如:字節型字節型BYTEPTR

30、 Reg字字 型型WORDPTR Reg雙字型雙字型DWORD PTR Reg 如:如: INC WORD PTR BX 4、 段寄存器操作數段寄存器操作數(Seg),為,為16位的段寄存位的段寄存器:器: CS,DS,ES,SS,FS,GS。第三章 80 x86尋址方式和指令系統 5、立即數(、立即數(imm):只能作為源操作數,其:只能作為源操作數,其數據類型由目的操作數來決定。如果采用十六進數據類型由目的操作數來決定。如果采用十六進制表示立即數,當大于制表示立即數,當大于9時,時,AF的數必須在前的數必須在前面加面加“0”,后面加,后面加“H”。 對指令的分析應注意以下對指令的分析應注意

31、以下4點:點:(1)、指令的功能;)、指令的功能;(2)、適用于指令的尋址方式;)、適用于指令的尋址方式;(3)、指令對標志位的影響;)、指令對標志位的影響;(4)、指令長度和執行時間。)、指令長度和執行時間。 第三章 80 x86尋址方式和指令系統3.3 80X863.3 80X86指令系統指令系統按功能分類:按功能分類: 數據傳送指令數據傳送指令 算術運算指令算術運算指令 邏輯運算指令邏輯運算指令 控制轉移類指令控制轉移類指令 串操作指令串操作指令 輸入輸入/輸出指令輸出指令 處理器控制指令處理器控制指令 中斷指令與中斷指令與DOS功能調用功能調用第三章 80 x86尋址方式和指令系統3.

32、3.1 3.3.1 數據傳送指令數據傳送指令 通用數據傳送指令通用數據傳送指令 堆棧操作指令堆棧操作指令 地址傳送指令地址傳送指令 標志寄存器傳送指令標志寄存器傳送指令 查表指令查表指令 符號擴展指令符號擴展指令 數據傳送指令包括通用數據傳送、地址傳送數據傳送指令包括通用數據傳送、地址傳送指令、標志寄存器傳送指令、符號擴展指令和指令、標志寄存器傳送指令、符號擴展指令和擴展傳送指令等。擴展傳送指令等。第三章 80 x86尋址方式和指令系統一、通用數據傳送指令一、通用數據傳送指令 1、傳送指令格式:、傳送指令格式: MOVDest, Source 數據傳送的路徑方向于圖示:數據傳送的路徑方向于圖示

33、:立即數立即數存儲器存儲器CS 、DS、ES、SS通用通用寄存器寄存器第三章 80 x86尋址方式和指令系統、MOVREG ,REG;寄存器到寄存器;寄存器到寄存器、 MOVREG ,IMM;立即數到寄存器;立即數到寄存器、 MOVMEM,IMM;立即數到存儲器;立即數到存儲器、 MOVMEM,REG;寄存器到存儲器;寄存器到存儲器、 MOVREG ,MEM;存儲器到寄存器;存儲器到寄存器、 MOVSEGREG,REG;(;( CS除外)除外)、 MOVREG, SEGREG;(;( 含含CS)、 MOVSEGREG,MEM; (CS除外)除外)、 MOVMEM, SEGREG;(;( 含含C

34、S)第三章 80 x86尋址方式和指令系統如:如:MOV AL,CL MOV BX,SI MOV EAX,EBX MOVAX,0D56BHMOVEAX,EBX+ESI第三章 80 x86尋址方式和指令系統2、交換指令、交換指令 交換操作數的數據類型:字節型、字型、雙字交換操作數的數據類型:字節型、字型、雙字型。允許通用寄存器之間,通用寄存器與存儲型。允許通用寄存器之間,通用寄存器與存儲器之間交換數據。器之間交換數據。 格式:格式: XCHG DEST,SRC 如:如:XCHG EAX,EBX;32位交換位交換 XCHG AX,SI;存儲器與寄存器交換;存儲器與寄存器交換 XCHG AL,DL;

35、8位交換位交換 兩操作數中不允許出現立即數兩操作數中不允許出現立即數 兩操作數不允許同時為存儲器操作數兩操作數不允許同時為存儲器操作數 兩操作數數據類型必須一致兩操作數數據類型必須一致第三章 80 x86尋址方式和指令系統3、字節交換指令、字節交換指令格式:格式: BSWAP32位寄存器位寄存器功能:將功能:將 位位31 位位24 與與 位位7 位位0 交換,交換, 位位23 位位 16 與位與位15 位位8交換交換4、 查表指令查表指令格式:格式: XLAT 表頭變量名表頭變量名功能:取出功能:取出 DS:BX+ AL 中的中的1個字節送給個字節送給 AL ,或者取出,或者取出DS:EBX+

36、AL中的中的1個個 字節送給字節送給AL。 第三章 80 x86尋址方式和指令系統例如:字形編碼:例如:字形編碼:0F,對應的表頭為:,對應的表頭為:TABDB3FH,06H,5BH,4FH,66H,6DH,7DH,DB 07H,7FH,6FH,77H,7CH,39H,5EH,DB 79H,71HNUM DBX X ;0 15 中的任一數所在表中的地址中的任一數所在表中的地址MOVDS, 數據段基址數據段基址 MOVBX, OFFSET TAB MOVAL, NUM XLATTAB第三章 80 x86尋址方式和指令系統 3、擴展傳送指令、擴展傳送指令 MOVSX DEST,SRC MOVZX

37、DEST,SRC如如 : MOV BL,80H MOVSX AX,BL ; AX=FF80H MOVZX AX,BL ;AX=0080H* 目的操作數為通用寄存器(目的操作數為通用寄存器(16位或位或32位)位)* 源操作數長度必須小于目的操作數長度,為通源操作數長度必須小于目的操作數長度,為通用寄存器或存儲器操作數(用寄存器或存儲器操作數(8位或位或16位)位)第三章 80 x86尋址方式和指令系統使用使用MOV指令應注意:指令應注意: 立即數不允許直接送立即數不允許直接送段段寄存器,且立即數不寄存器,且立即數不能做目的操作數能做目的操作數 源操作數和目的操作數不允許同時為存儲器源操作數和目

38、的操作數不允許同時為存儲器操作數操作數 源操作數和目的操作數不允許同時為段寄存源操作數和目的操作數不允許同時為段寄存器器 兩操作數的數據類型要一致兩操作數的數據類型要一致 傳送操作不影響標志位傳送操作不影響標志位 不允許對不允許對CS、(、(E)IP傳送數據傳送數據第三章 80 x86尋址方式和指令系統二、堆棧操作指令二、堆棧操作指令堆棧是人為定義的一塊內存空間,用來暫存堆棧是人為定義的一塊內存空間,用來暫存數據的。堆棧能自動保護中斷斷點和現場以及調數據的。堆棧能自動保護中斷斷點和現場以及調用子過程的斷點和現場等。對數據的存取按照用子過程的斷點和現場等。對數據的存取按照“先進后出先進后出”的規

39、則進行。的規則進行。 堆棧的棧底在高端地址單元,棧頂為低端地堆棧的棧底在高端地址單元,棧頂為低端地址。址。當數據進棧后,棧頂向低端地址下浮;當數據進棧后,棧頂向低端地址下??;當數據出棧后,棧頂向高端地址上浮。當數據出棧后,棧頂向高端地址上浮。第三章 80 x86尋址方式和指令系統 一個一個16位或位或32位數據進棧的規律是:位數據進棧的規律是: 高位字節壓入高地址單元,低位字節壓入低高位字節壓入高地址單元,低位字節壓入低地址單元。地址單元。 一個一個16位或位或32位數據出棧的規律是:位數據出棧的規律是: 低位字節彈到目標操作數低位,高位字節低位字節彈到目標操作數低位,高位字節彈到目標操作數高

40、位。彈到目標操作數高位。棧頂位置由棧頂位置由SP/ESP指出。指出。第三章 80 x86尋址方式和指令系統 1、壓棧指令、壓棧指令 : PUSH SRC如:如: PUSH AL PUSH AX PUSH EAX PUSH DS PUSH SI PUSH DWORD PTR SI PUSH 1234H PUSH 80H 第三章 80 x86尋址方式和指令系統如:如: POP 80H POP 1234H POP DWORD PTR DI POP DI POP DS POP EAX POP AX POP AL2、出棧指令:、出棧指令: POP DEST第三章 80 x86尋址方式和指令系統(3)、1

41、6位標志寄存器進棧位標志寄存器進棧/出棧指令出棧指令 PUSHF ;先;先PS1SP,16位標志壓入位標志壓入SS:SP POPF ;先彈出;先彈出16位標志到位標志到FLAGS,SP+2 SP(4)、)、32位標志寄存器進棧位標志寄存器進棧/出棧出棧 PUSHFD;先;先ESP 4ESP,32位標志壓入位標志壓入SS:ESPPOPFD; 先彈出先彈出4字節標志到字節標志到EFALGS,ESP+4 ESP(5)、)、8個個16位通用寄存器進棧位通用寄存器進棧/出棧指令出棧指令FUSHA ;先;先SP 16 SP, 然后把然后把AX,BX,CX, DX,SP,BP,SI,DI的內容依次壓棧,的內

42、容依次壓棧, 進棧的進棧的SP值是調整前的值。值是調整前的值。 第三章 80 x86尋址方式和指令系統(6)、)、8個個32位通用寄存器進棧出棧指令位通用寄存器進棧出棧指令PUSHAD ; 先先ESP32ESP,把,把EAX,EBX, ECX,EDX,ESP,EBP,ESI,EDI 依次壓入堆棧,依次壓入堆棧, 進棧的進棧的ESP值是調整值是調整 前的值。前的值。 POPAD ;先從堆棧彈出;先從堆棧彈出32字節(字節( EDI ,ESI , EBP ,ESP ,EDX, ECX, EBX, EAX)。)。 然后然后 ,ESP+ 32ESP。第三章 80 x86尋址方式和指令系統三、地址傳送指

43、令三、地址傳送指令格式:格式: LEA DEST,SRC *DEST為為16位或位或32位通用寄存器位通用寄存器 *SRC為為16位或位或32位存儲器操作數位存儲器操作數例例1:LEA BX,SI+1005H 若若SI=1000H 則則BX=?例例2:LEA DI,BLOCK MOV DI,BLOCK 有何區別?有何區別?第三章 80 x86尋址方式和指令系統四、標志寄存器傳送指令四、標志寄存器傳送指令格式格式1:LAHF SAHF格式格式2:PUSHF POPF格式格式3: PUSHFD POPFD*SAHF、POPF、POPFD影響標志位影響標志位第三章 80 x86尋址方式和指令系統五、

44、查表指令五、查表指令格式:格式: XLAT指令規定:表格存于數據段中指令規定:表格存于數據段中 表首偏移地址表首偏移地址BX 表內偏移量表內偏移量AL 查找結果查找結果AL所找單元的物理地址所找單元的物理地址: (DS)10H+(BX)+(AL)第三章 80 x86尋址方式和指令系統查表指令應用舉例查表指令應用舉例 3FH 06H 5BH 4FH 66H 6DH BLOCK LEA BX,BLOCK MOV AL, 3 XLAT結果:結果:AL內容為內容為4FH例:試編程將內存中以例:試編程將內存中以BLOCK為起始地址的編碼表中為起始地址的編碼表中順序號為順序號為3的編碼送的編碼送AL寄存器

45、。寄存器。 第三章 80 x86尋址方式和指令系統六、符號擴展指令六、符號擴展指令針對帶符號數,按帶符號數擴展。針對帶符號數,按帶符號數擴展。1、CBW 功能:功能:AL(8位)位)AX(16位)位)2、CWD 功能:功能:AX(16位)位)DX:AX(32位)位)3、CWDE 功能:功能:AX(16位)位)EAX(32位)位)4、CDQ 功能:功能:EAX(32位)位)EDX:EAX(64位)位)第三章 80 x86尋址方式和指令系統3.3.2 3.3.2 算術運算指令算術運算指令 加法指令加法指令 減法指令減法指令 加加1減減1指令指令 比較指令比較指令 乘法指令乘法指令 除法指令除法指令

46、 BCD算術運算指令算術運算指令第三章 80 x86尋址方式和指令系統算術運算類指令特點算術運算類指令特點 影響標志位影響標志位 操作數不允許為段寄存器操作數不允許為段寄存器 不允許兩個操作數同為存儲器操作數不允許兩個操作數同為存儲器操作數 若無特別規定,操作數類型必須一致若無特別規定,操作數類型必須一致 目的操作數不允許為立即數目的操作數不允許為立即數 當操作數類型不明確時必須使用當操作數類型不明確時必須使用PTR偽指令偽指令第三章 80 x86尋址方式和指令系統一、加法指令一、加法指令格式(格式(1) ADD DEST,SRC功能:源操作數功能:源操作數+目的操作數目的操作數目的操作數目的

47、操作數格式(格式(2) ADC DEST,SRC功能:源操作數功能:源操作數+目的操作數目的操作數+CF目的操作數目的操作數例:例:32F2H+A020H=?MOV AX,32F2H 或或 MOV AX,32F2HMOV BX,0A020H MOV BX,0A020HADD AX,BX ADD AL,BL ADC AH,BH第三章 80 x86尋址方式和指令系統二、減法指令二、減法指令格式(格式(1) SUB DEST,SRC功能:目的操作數源操作數功能:目的操作數源操作數目的操作數目的操作數格式(格式(2) SBB DEST,SRC功能:目的操作數源操作數功能:目的操作數源操作數CF目的操作

48、數目的操作數*SUB、SBB指令與指令與ADD、ADC一樣,影響標志位一樣,影響標志位OF、SF、ZF、AF,PF,CF第三章 80 x86尋址方式和指令系統三、加三、加1減減1指令指令加加1指令指令 INC DEST功能:目的操作數功能:目的操作數1目的操作數目的操作數減減1指令指令 DEC DEST功能:目的操作數功能:目的操作數1目的操作數目的操作數*不影響不影響CF,影響,影響OF、SF、ZF、AF、PF例:例:INC BX INC BYTE PTR BX DEC EAX DEC WORD PTRSI 第三章 80 x86尋址方式和指令系統四、比較指令四、比較指令格式格式 CMP DE

49、ST,SRC功能:目的操作數源操作數功能:目的操作數源操作數(1)若目、源為無符號數)若目、源為無符號數 CF=0 則目則目源源 (若(若ZF=1,則目,則目=源)源) CF=1 則目源則目源(2)若目、源為帶符號數)若目、源為帶符號數 若目、源為同號數(若目、源為同號數(OF=0) 若均為正,若均為正,SF=0 則目則目源(若源(若ZF=1,則目,則目=源)源) SF=1 則目源則目源 若均為負若均為負 ,SF=0 則目則目源(若源(若ZF=1,則目,則目=源)源) SF=1 則目源則目源 第三章 80 x86尋址方式和指令系統若目、源為異號數(若目、源為異號數(OF=0或或1) 若目為正,

50、源為負若目為正,源為負 則目源則目源 若此時若此時 SF=0 則則OF=0 若此時若此時 SF=1 則則OF=1 若目為負,源為正若目為負,源為正 則目源則目源 若此時若此時 SF=1 則則OF=0 若此時若此時 SF=0 則則OF=1綜合起來,若目、源為帶符號數綜合起來,若目、源為帶符號數 OF SF=0 則目則目源源 OF SF=1 則目源則目源 第三章 80 x86尋址方式和指令系統五、交換相加指令五、交換相加指令格式格式 XADD DEST,SRC功能:目的操作數源操作數功能:目的操作數源操作數目的操作數目的操作數 且原目的操作數且原目的操作數源操作數源操作數影響標志位影響標志位OF、

51、SF、ZF、AF、PF、CF六、求補指令六、求補指令格式格式 NEG DEST功能:求目的操作數的相反數的補碼功能:求目的操作數的相反數的補碼影響標志位影響標志位OF、SF、ZF、AF、PF、CF第三章 80 x86尋址方式和指令系統七、乘法指令七、乘法指令格式格式 MUL SRC (針對無符號數)(針對無符號數) IMUL SRC (針對帶符號數)(針對帶符號數)隱含規定:隱含規定: SRCSRC為一乘數因子,可為為一乘數因子,可為 8 8位位/ / 1616位位 / /3232位位寄存器或存儲器寄存器或存儲器 另一乘數因子在累加器中(另一乘數因子在累加器中(ALAL/ / AX AX /

52、/ EAXEAX) 結果為乘積,乘積隱含在(結果為乘積,乘積隱含在(AXAX/ /DXDX:AXAX/ /EDXEDX:EAXEAX) 字節乘字節乘 字乘字乘 雙字乘雙字乘* *若乘積高位為若乘積高位為0 0,則,則CF=0CF=0,OF=0OF=0 若乘積高位含有效數據若乘積高位含有效數據,則,則CF=1CF=1,OF=1OF=1 對其它標志位無定義對其它標志位無定義 第三章 80 x86尋址方式和指令系統例:計算存于下列內存中的兩個無符號數的乘積例:計算存于下列內存中的兩個無符號數的乘積 1234H2345H=?結果放?結果放RESULT單元單元LEA BX,BLOCKMOV AX,BXM

53、UL WORD PTR BX+4MOV RESULT,AXMOV RESULT+2,DX結果為結果為02820404HCF=1,OF=1 34H 12H 10H 28H 45H 23H 04H 04H 82H 02H BLOCK RESULT 第三章 80 x86尋址方式和指令系統八、除法指令八、除法指令格式格式 DIV SRC (針對無符號數)(針對無符號數) IDIV SRC (針對帶符號數)(針對帶符號數)隱含規定:隱含規定: SRC為除數,為為除數,為 8 8位位/ / 1616位位 / /3232位位寄存器或存儲器寄存器或存儲器 被除數隱含在被除數隱含在 ( AXAX/ /DXDX:

54、AXAX/ / EDXEDX:EAXEAX) 商隱含在商隱含在 ( ALAL/ / AX AX / / EAXEAX) 余數隱含在余數隱含在 ( AHAH/ / DX DX / / EDXEDX) 字節除字節除 字除字除 雙字除雙字除* *當除數為當除數為0 0或商溢出時會產生中斷或商溢出時會產生中斷* *被除數必須是除數的雙倍長度,否則,需要進行高位擴展被除數必須是除數的雙倍長度,否則,需要進行高位擴展 無符號數高位擴展為全無符號數高位擴展為全0 0,帶符號數按符號擴展指令擴展,帶符號數按符號擴展指令擴展第三章 80 x86尋址方式和指令系統九、組合型九、組合型BCD算術運算指令算術運算指令

55、 組合組合BCD碼也稱壓縮格式的碼也稱壓縮格式的BCD碼,碼,用一個字節用一個字節存儲存儲2位位BCD碼碼。 如十進制數如十進制數12的組合的組合BCD碼為碼為 00010010B 35的組合的組合BCD碼為碼為 00110101B該類指令使用場合:該類指令使用場合: 當參與運算的十進制數以其組合當參與運算的十進制數以其組合BCD碼形式存放,加減碼形式存放,加減時,計算機會當作二進制數來運算,其結果一定不是理想要時,計算機會當作二進制數來運算,其結果一定不是理想要得的組合型得的組合型BCD碼結果,這時,必須用組合型碼結果,這時,必須用組合型BCD算術運算算術運算指令加以調整,即將二進制結果調整

56、為指令加以調整,即將二進制結果調整為BCD碼表示形式。碼表示形式。 加法調整指令一般緊跟在加法調整指令一般緊跟在ADD或或ADC之后,減法調整指之后,減法調整指令一般緊跟在令一般緊跟在SUB或或SBB之后。之后。第三章 80 x86尋址方式和指令系統1、組合型、組合型BCD加法調整指令加法調整指令格式格式 DAA功能:功能:AL(二進制和)(二進制和)組合組合BCD碼碼例:例:26+68=? 分析:用組合分析:用組合BCD碼存放時,兩個數應分別為碼存放時,兩個數應分別為26H和和68H,理想結果應該為,理想結果應該為94H。編程如下:。編程如下:MOV AL,26HMOV BL,68HADD

57、AL,BL ;AL=8EHDAA ;AL=94H第三章 80 x86尋址方式和指令系統2、組合型、組合型BCD減法調整指令減法調整指令格式格式 DAS功能:功能:AL(二進制差)(二進制差)組合組合BCD碼碼例:例:6556=? MOV AL,65H MOV BL,56H SUB AL,BL ;AL=0FH DAS ;AL=09H 第三章 80 x86尋址方式和指令系統十、非組合型十、非組合型BCD算術運算指令算術運算指令 非非 組合組合BCD碼也稱非壓縮格式的碼也稱非壓縮格式的BCD碼,碼,用一個用一個字節存儲字節存儲1位位BCD碼,高碼,高4位無意義位無意義。 如非組合如非組合BCD碼碼

58、00010010B表示的數為表示的數為2 非組合非組合BCD碼碼 00110101B表示的數為表示的數為5 3635H即即0011011000110101B表示的數是表示的數是65由于由于09的的ASCII碼為碼為30H39H,機器采用一個字節存放一,機器采用一個字節存放一位位ASCII碼,所以,碼,所以,ASCII碼是一種非組合型碼是一種非組合型BCD碼。碼。 非組合型非組合型BCD調整指令有加、減、乘、除四種調整調整指令有加、減、乘、除四種調整指令。指令。第三章 80 x86尋址方式和指令系統1、非組合型、非組合型BCD加法調整指令加法調整指令格式格式 AAA功能:功能:AL(二進制和)(

59、二進制和)非組合非組合BCD碼碼例:例:5+9=? 分析:用非組合分析:用非組合BCD碼存放時,兩個數應分別為碼存放時,兩個數應分別為05H和和09H,理想結果應該為,理想結果應該為0104H。編程如下:。編程如下:MOV AL,05HMOV BL,09HADD AL,BL ;AL=0EHAAA ;AX=0104H第三章 80 x86尋址方式和指令系統2、非組合型、非組合型BCD減法調整指令減法調整指令格式格式 AAS功能:功能:AL(二進制差)(二進制差)非組合非組合BCD碼碼 3、非組合型、非組合型BCD乘法調整指令乘法調整指令格式格式 AAM功能:功能:AL(二進制乘積)(二進制乘積)非

60、組合非組合BCD碼碼 4、非組合型、非組合型BCD除法調整指令除法調整指令格式格式 AAD功能:功能:AX(兩位非組合(兩位非組合BCD碼)碼)二進制數二進制數*AAD指令必須放在除法指令之前進行。指令必須放在除法指令之前進行。 其他調整指令都是先運算后調整。其他調整指令都是先運算后調整。第三章 80 x86尋址方式和指令系統思考題思考題判斷下列指令是否正確,若有錯誤,請指出原因,并改正。判斷下列指令是否正確,若有錯誤,請指出原因,并改正。(1 1)MOV BLMOV BL,OFFSET BLOCK OFFSET BLOCK (2 2)LEA DILEA DI,BXBXSISI(3 3)PUS

溫馨提示

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

評論

0/150

提交評論