第3章180x86尋址方式_第1頁
第3章180x86尋址方式_第2頁
第3章180x86尋址方式_第3頁
第3章180x86尋址方式_第4頁
第3章180x86尋址方式_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章80X86指令系統(tǒng)-1--尋址方式mov

ax,12hcall

displayJmp

1234h1主要內(nèi)容:2指令系統(tǒng)的一般概念對操作數(shù)的尋址方式六大類指令的操作原理3.1

概述3指令——控制計算機完成指定操作的命令機器指令——指令的二進制代碼形式。例如:CD21H匯編指令——助記符形式的指令。例如:INT

21H

指令系統(tǒng)——CPU所有指令及其使用規(guī)則的集合80X86指令系統(tǒng):指令兼容(x86系列)應用廣泛,資料易于尋找3.1.1

指令的基本構(gòu)成4匯編語言指令要解決兩個問題:要指出進行什么操作—操作符;要指出操作數(shù)來源?操作結(jié)果放在何處?尋址方式。3.1.1

指令的基本構(gòu)成說明要執(zhí)行的是什么操作操作對象,可以有0個、1個或2個5目的源指令舉例:MOV AX,

BX操作碼操作數(shù)ADD

AX,[SI+6]INC

[BX]HLT6部分80X86常用指令7指令類型助記符數(shù)據(jù)傳送數(shù)據(jù)傳送MOV,PUSH/POP,XCHG等地址傳送LEA,LDS,LES輸入輸出IN,OUT算術(shù)運算加法ADD,ADC,INC減法SUB,SBB,DEC,NEG,CMP乘/除法MUL,IMUL,DIV,IDIV邏輯AND,OR,NOT,XOR,TEST移位SHL/SHR/SAR,ROL/ROR,RCL/RCR串操作MOVS,CMPS,SCAS,LODS,STOS控制轉(zhuǎn)移JMP,JXX,LOOP,CALL/RET,INT/IRET尋址方式—操作數(shù)的尋址方式:指出操作數(shù)的來源,一般給出操作數(shù)的地址指令地址的尋址方式:指出要執(zhí)行的下一條指令的地址83.2 80X86的尋址方式(1)操作數(shù)包含在指令中即指令的操作數(shù)字段包含操作數(shù)本身。這種操作數(shù)為立即數(shù)。例:MOV AL

,

08H(2)操作數(shù)包含在CPU內(nèi)部的一個寄存器中例:INC

CX(

3)操作數(shù)在I/O端口中93.2

操作數(shù)的來源(4)操作數(shù)在存儲器中操作數(shù)在存儲器,操作數(shù)字段包含著此操作數(shù)所在存儲單元的地址。存儲單元的物理地址=段基地址+偏移地址10段內(nèi)偏移量稱為有效地址EA(Effective

Address)

。直接尋址寄存器間接尋址寄存器相對尋址基址加變址尋址相對的基址加變址尋址比例變址尋址方式基址比例變址尋址方式相對基址比例變址尋址方式歸納:數(shù)據(jù)操作數(shù)分類111、立即數(shù)操作數(shù)2、寄存器操作數(shù)3、存儲器操作數(shù)4、I/O操作數(shù)操作數(shù)直接由指令給出此操作數(shù)為一常數(shù),稱為立即數(shù)立即尋址只能用于源操作數(shù)用途:用于給寄存器賦初值。不需要總線周期,執(zhí)行速度快例:12MOV

AX,

1C8FHMOV BYTE

PTR[2A00H],

8FH錯誤例:×

MOV2A00H,

AX

;錯誤!3.2.1

立即數(shù)尋址立即數(shù)操作碼低8位高8位存儲器MOV操作碼02H31HAH

AL代碼段代碼段立即尋址指令在存儲器中的存放形式立即數(shù)尋址例:MOV

AX,3102H ;

AX

3102H執(zhí)行后,(AH)=31H,(AL)=02H02H1331H3.2.2

寄存器尋址14(1)操作數(shù)放在某個通用寄存器中ALAH

BLBH

CLCH

DLDH;AX

BX

CXEAX

EBX

ECXDX

SI

DI

SP

BP;EDX

ESI

EDI

ESP

EBP(2)不需要總線周期,執(zhí)行速度快例:MOV

AX,

BXMOV

[3F00H],

AXMOV

CL,

ALAXSI2233H寄存器尋址例:MOV

SI,AX ;

SI

(AX)指令執(zhí)行前:(AX)=2233H指令執(zhí)行后:(AX)=2233H,(SI)=2233H15寄存器尋址16CS一般不能賦值。

對段寄存器ES

、DS、SS進行賦值,不能將立即數(shù)直接送段寄存器;要將立即數(shù)送通用寄存器,再從通用寄存器送段寄存器。通用寄存器:ALAH

BLBH

CLCH

DLDH;AXBXCXDXSIDISPBP;EAXEBXECXEDXESIEDIESPEBP寄存器長度應匹配操作數(shù)在存儲器中的尋址方式17通過不同的尋址方式求得操作數(shù)的地址-從而取得操作數(shù)。80X86內(nèi)存單元的地址:由段基址和偏移地址(有效地址∕EA)組成□

段基址由段寄存器提供□

若工作在實模式:段基址為段寄存器中的內(nèi)容乘以16的值。若工作在保護模式:段基址通過段寄存器中的段選擇子從描述符中得到。本章例中的物理地址按實模式計算。(1)基址:EA的一個基礎量,存放于基址寄存器基址寄存器:任何通用寄存器(包括32位)常用基址寄存器:BX、BP、EBX、EBP(2)變址:存放于變址寄存器變址寄存器:除ESP外的通用寄存器常用變址寄存器:SI

DI

ESI

EDI(3)比例因子:是386及后繼機型中新增尋址方式中的術(shù)語。其值可為1、2、4、8(4)位移量:是存放在指令中的一個8位、16位或32位的常數(shù)。183.2.3

直接尋址19指令中直接給出操作數(shù)所在存儲單元的偏移地址 也稱為有效地址(EA,Effective

Address)默認的段寄存器為DS,也可以顯式地指定其他段寄存器—稱為段超越前綴例:MOV AX

,

[2A00H]MOV DX

, ES:

[2A00H]偏移地址也可用符號地址來表示,如:MOV SI

,

TABLEMOV

AL,

VARTABLE

、VAR是內(nèi)存的符號地址。注:實際匯編語言源程序中所用到的直接尋址方式都是用符號表示的,只有在DEBUG環(huán)境下,才有[78H]這樣的表示。20指令操作例:MOV

AX,[3102H]AL (3102H)

,

AH

(3103H)如果(DS)=2000H,

(23012H)

=

CDH, (23013H)

=

ABH則操作數(shù)的物理地址為:20000H

H

=

23102H指令執(zhí)行后:(AX)=ABCDHMOV操作碼02H31HAH

AL23102HCDHABH存儲器代碼段21數(shù)據(jù)段.CDHABH3.2.4.寄存器間接尋址方式22操作數(shù)在存儲器中,操作數(shù)有效地址在某個寄存器中—間址寄存器16位間址寄存器基址寄存器:BX、BP變址寄存器:SI、DI對于386以上CPU,32位間址寄存器允許使用任何32位通用寄存器。44H33H60001200例:MOV

AX,[SI]若

(DS)=6000H,

(SI)=1200H, (61200H)=44H,

(61201H)=33H則指令執(zhí)行后,(AX)=3344H。DS

SI6120061200H存儲器數(shù)據(jù)段2360000+)

1200AX33H

44H默認的段寄存器241)以BP,SP,

或EBP,ESP作為基址寄存器訪問存儲器時,默認的段寄存器是SS;

2)所有其它情況下,使用DS作為默認段寄存器;注:如果對非默認段尋址:在指令中指定段寄存器名,以改變默認的段寄存器。MOV CX,

ES:[BX]3.2.5.寄存器相對尋址方式25操作數(shù)的有效地址是一個間址寄存器的內(nèi)容和指令中給定的一個位移量(disp)之和。16位寄存器相對尋址方式 EA=

(BX)+

disp EA=

(BP)

disp EA=

(SI)

disp EA=

(DI)

disp386以上允許使用任何32位通用寄存器做間址寄存器。位移量可以是一個字節(jié)、一個字、一個雙字的帶符號數(shù)。EA=(32位通用寄存器)+disp26與段寄存器的配合情況:若指令中寄存器使用BP、SP、EBP、ESP,則默認與SS段寄存器配合。MOV

AX, [BP

H];默認段寄存器為SS使用其他通用寄存器,則默認與DS段寄存器配合。MOV

AX,

[BX+8]

;

默認段寄存器為DSMOV

CX,

TABLE[SI];默認段寄存器為DS寄存器相對尋址方式指令操作例:MOV

AX,DATA[BX]若(DS)=6000H,

(BX)=1000H,

DATA=2A00H,(63A00H)=66H,

(63A01H)=55H物理地址=60000H+1000H+2A00H=63A00H指令執(zhí)行后:(AX)=5566H(見下頁圖示)27操作碼00

偏移量低2A

偏移量高6000DSBX1000+DATA2A0063A0063A00H66HAX

55H代碼段28數(shù)據(jù)段...66H55HMOV

AX,DATA[BX]寄存器相對尋址典型應用29用于存取表格或一維數(shù)組中的元素:把表格的首地址作為位移量,元素的下標值放在間址寄存器中,可以通過修改寄存器的內(nèi)容,靈活訪問表格中的某一項操作數(shù)的有效地址是一個基址寄存器和一個變址寄存器的內(nèi)容之和。1)16位間址寄存器基址寄存器BX、BP變址寄存器SI、DI2)386以上的間址寄存器:基址寄存器:任何通用寄存器,常用基址寄存器:EBX

EBP變址寄存器:除ESP以外的任何通用寄存器。常用變址寄存器ESI

EDI303.2.6

基址加變址尋址基址加變址尋址EA

=(BX)(BP)+(SI)(DI)(1)16位基址變址尋址方式組合31基址

EAXEBXECXEDXESPEBPESIEDIEA=+變址

EAXEBXECXEDXEBPESIEDI(2)80386以上32位基址變址尋址方式組合32缺省使用段寄存器的情況由基址寄存器決定:若使用BP

、SP、ESP或EBP,缺省與SS配合;若使用其他32位通用寄存器,則缺省與DS配合。 允許使用段超越前綴。例:33MOVAX,[BX]

[SI]MOVAX,[BX+SI]MOVAX,DS:

[BP]

[DI]83000操作碼80002000DSBX+

SI100083000HAX

4AH

80H代碼段數(shù)據(jù)段.34..80H4AH例:MOV

AX,[BX][SI]假定:(DS)=8000H,

(BX)=2000H,

SI=1000H則物理地址=80000H+2000H+1000H=83000H指令執(zhí)行后:(AL)=[83000H](AH)=[83001H]基址加變址尋址應用訪問數(shù)據(jù)段或堆棧段中表格或數(shù)組中的元素:表格的首地址(偏移地址)賦予基址寄存器;元素的下標值放在變址寄存器;MOV BX,

OFFSET

TABMOV SI,

1MOV

AX,

[BX+SI]TAB30H31H數(shù)據(jù)段353.2.7.相對基址變址尋址方式36操作數(shù)的有效地址是一個基址和一個變址寄存器的內(nèi)容和指令中給定的一個位移量之和。即:EA=(基址寄存器)+(變址寄存器)+disp1)16位間址寄存器基址寄存器BX、BP變址寄存器SI、DI2)386以上CPU基址寄存器:任何通用寄存器變址寄存器:除ESP以外的任何通用寄存器。位移量可以是一個字節(jié)、一個字、一個雙字的帶符號數(shù)?;?/p>

EAXEBXECXEDXESPEBPESIEDIEA=+變址

EAXEBXECXEDXEBPESIEDI80386以上32位相對基址變址尋址方式組合37+disp缺省使用段寄存器的情況由基址寄存器決定。若使用BP、SP

EBP或ESP,缺省與SS配合;若使用其他32位通用寄存器,缺省與DS配合。允許使用段超越前綴。38相對基址變址尋址方式16位相對基址-變址尋址EA

=(BX)(BP)+(SI)(DI)+8位16位位移量39例:MOV AX,BASE

[SI]

[BX]MOV

AX,[BX+BASE]

[SI]MOV

AX,[BX+SI+BASE]MOV AX,[BX]

BASE

[SI]MOV

AX,[BX+SI]

BASE例:MOV

AX,DATA[DI][BX]若(DS)=8000H,

(BX)=2000H,

(DI)=1000H,

DATA=200H指令執(zhí)行后

(AH)=[83021H],

(AL)=[83020H]8320083200HAH

AL+

DATA0200操作碼代碼段數(shù)據(jù)段...E8H39H8000402000DSBXDI100039HE8H41訪問堆棧段中的數(shù)組的元素MOV

BP,

SPMOV

SI,3MOV

AX,[BP+SI+2]相對基址-變址尋址典型應用堆棧段棧底棧頂堆棧段起始單元SPXXHXXHA(0)A(1)A(2)A(3)3.2.8.比例變址尋址方式4280386以上的微處理器才提供的尋址方式操作數(shù)的有效地址由以下幾部分相加組成:EA=(基址寄存器)+(變址寄存器)×比例因子+disp(1)基址部分(8個32位通用寄存器)

(2)變址部分(除ESP以外的32位通用寄存器)乘以比例因子

(3)位移量(disp)基址

EAXEBXECXEDXESPEBPESIEDIEA=+變址

EAXEBXECXEDXEBPESIEDI比例變址尋址方式組合+×因子1248位移8位16位32位43比例變址尋址方式44比例因子可以是1(缺省值)、2、4或8,1可用來尋址字節(jié)數(shù)組;2可用來尋址字數(shù)組;4可用來尋址雙字數(shù)組;8可用來尋址4字數(shù)組。位移量可以是一個字節(jié)、一個字、雙字的帶符號數(shù)。缺省使用段寄存器的情況由基址寄存器決定:若使用ESP或EBP,缺省與SS配合;若使用其他32位通用寄存器,缺省與DS配合。允許使用段超越前綴。(1)相對的帶比例因子的變址尋址45有效地址為:EA=變址寄存器的內(nèi)容乘以指令中指定的比例因子再加上位移量之和。例:MOV EAX,

[ESI×4+100H]使用這種尋址方式可以方便地訪問數(shù)組:1)把表格的首地址作為位移量;2)數(shù)組下標賦給變址寄存器;比例因子為元素長度。(2)基址加比例因子的變址尋址46有效地址為:EA=變址寄存器的內(nèi)容乘以指定的比例因子再加上基址寄存器的內(nèi)容之和。例:MOV

EAX,[EBX+ESI×4]或MOV

EAX,[ESI×4][EBX]或MOV

EAX,[EBX][ESI×4](3)相對的基址加比例因子的變址尋址47有效地址為:EA=變址寄存器的內(nèi)容乘以指令中指定的比例因子、加上基址寄存器的內(nèi)容,再加上位移量之和。例:MOV

EAX,[EBX+

溫馨提示

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

評論

0/150

提交評論