X86的尋址方式和指令系統(tǒng).ppt
《X86的尋址方式和指令系統(tǒng).ppt》由會員分享,可在線閱讀,更多相關(guān)《X86的尋址方式和指令系統(tǒng).ppt(40頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第三章80X86的尋址方式和指令系統(tǒng) 主要內(nèi)容尋址方式指令系統(tǒng) 3 1概述 計算機解決問題 通過執(zhí)行指令序列完成 一條指令對應(yīng)一種基本操作 如 加 減 傳送等 每種計算機都提供一組指令集給用戶 這組指令集稱為計算機的指令系統(tǒng) 一條指令由操作碼 操作數(shù)組成 操作碼 指示計算機要執(zhí)行的操作 操作數(shù) 指出指令在執(zhí)行過程中所需要的操作數(shù) 也可是操作數(shù)的地址 指令的一般格式 操作碼 操作數(shù) 操作數(shù)字段可以有一個或兩個 稱為一地址 二地址或三地址指令 如何尋找操作數(shù)就是尋址方式 3 2尋址方式 有效地址EA和段超越有效地址EA 段超越與數(shù)據(jù)有關(guān)的尋址方式立即尋址 寄存器尋址 直接尋址 寄存器間接尋址 寄存器相對尋址基址變址尋址 相對基址變址尋址比例變址尋址 基址比例變址尋址 相對基址比例變址尋址與轉(zhuǎn)移有關(guān)的尋址方式段內(nèi)直接 間接尋址段間直接 間接尋址 3 2 1有效地址EA和段超越 1 有效地址 EA 當(dāng)操作數(shù)存在mem中 其物理地址由段地址和偏移地址組成 其中偏移地址稱EA EA由以下四部分組成 1 位移量 存在指令中的一個8位 16位 32位的數(shù) 不是立即數(shù) 是地址 2 基址 存放在基址寄存器中的內(nèi)容 3 變址 存放在變址寄存器中的內(nèi)容 4 比例因子 其值為1 2 4 8 主要用于訪問元素長度為1 2 4 8字節(jié)的數(shù)組有用 386以后機型 EA 基址 變址 比例因子 位移量 2 段超越 尋址時 由EA中基址寄存器來規(guī)定段寄存器 正常情況下 PC機有個基本約定 一般是DS寄存器的內(nèi)容作為段地址 若BP作基址 則段地址在SS中 若操作數(shù)存放在數(shù)據(jù)段以外的其他段中 允許 則應(yīng)指明 這種情況稱為段超越 例 MOVAL 2000H 物理地址為 16x DS 2000數(shù)據(jù)在DS段中MOVAL ES 2000H ES 段超越前綴物理地址為 16x ES 2000H數(shù)據(jù)在ES段 超越 注意 不允許段超越的有 堆棧操作 只能用SS 取指令 只能用CS 目的串只能用ES P39 3 2 2與數(shù)據(jù)有關(guān)的尋址1 立即尋址 操作數(shù)直接包含在指令中 緊跟在操作碼的后面 與操作碼一起放在代碼段 Ex MOVAX imAx 目的操作數(shù)im 源操作數(shù) 2 主要用來給寄存器 存儲單元賦初值ex3 1 MOVAL 5 AL 05Hex3 2 MOVAX 0B34CH AX 0B34CH AHAL OP imL imH CS段 Im 立即數(shù) 可以是8位或16位 OP 4C B3 AHAL CS段 注意 立即數(shù)以A F開頭的十六進(jìn)制數(shù) 必須在字母前加數(shù)字0 32位尋址時 ex3 3MOVEAX 12345678H EAX 12345678H 立即數(shù)尋址的功能 立即數(shù)尋址的執(zhí)行 2 寄存器尋址 速度快 1 操作數(shù)包含在CPU內(nèi)部寄存器中 寄存器可以是8位或16位 也可以是32位 16位 AX BX CX DX SI DI SP BP8位 AH AL BH BL CH CL DH DL 32位 EAX EBX ECX EDX ESI EDI ESP EBP 2 ex MOVDS AXDSAX EX3 4 a MOVAX BX執(zhí)行前 AX 3064H BX 1234H執(zhí)行后 AX 1234H BX 不變 Ex3 4 b MOVECX EDX執(zhí)行前 ECX 01237541H EDX 12345678H執(zhí)行后 ECX 12345678H EDX 不變 寄存器尋址的功能 寄存器尋址的執(zhí)行 3 直接尋址 1 操作數(shù)的EA只含位移量一部分 其值存放在CS段 Mem 中 放在OP之后 操作數(shù)一般在DS段 實模式下 其物理地址為 16x Ds EA可以進(jìn)行段超越 cs段 2 允許用符號地址代替數(shù)值EX MOVAX VALUE 或MOVAX VALUE若VALUE在ES段 則 MOVAX ES VALUE或MOVAX ES VALUE 3 用于處理單個變量 AHAL 30000H 32000H 50 30 OP 00 20 CS DS EX3 5MOVAX 2000H DS 3000HEA 2000H物理地址 30000H 2000H 32000H 32000H 3050H AX 3050H Ex3 6MOVEAX DATA 32位位移量 直接尋址的功能 直接尋址的執(zhí)行 4 寄存器間接尋址 1 操作數(shù)的EA只包含基址寄存器內(nèi)容或變址寄存器內(nèi)容 操作數(shù)在存儲器中 16位尋址 可用的寄存器是BX BP SI DI 其物理地址為 SI 16x Ds DI 16x SS BP 可以進(jìn)行段超越 BX Ex MOVAX SS BX 物理地址 16X SS BX 操作數(shù)在SS段 采用段超越 32位尋址 EAX EBX ECX EDX ESP EBP ESI EDI8個通用寄存器 ESP EBP默認(rèn)段為SS段 2 用于表格處理 AHAL 20000H 21000H A0 50 OP Ex3 7MOVAX BX 操作數(shù)在DS段DS 2000HBX 1000H物理地址 20000 1000 21000H 21000H 50A0H AX 50A0H CS DS Ex3 8MOVECX EDX 寄存器間接尋址的執(zhí)行 5 寄存器相對尋址 1 操作數(shù)的EA是基址寄存器或變址寄存器的內(nèi)容和指令中指定的位移量之和 16位尋址 操作數(shù)在存儲器中 BX BP EA SI 位移量 DI 2 物理地址為 SI 16x Ds DI 位移量16x SS BP 位移量 BX 3 允許段超越 用于表格處理 EX MOVAX ES STRING DI 物理地址 16x ES DI STRING AHAL 30000H 35000H 34 12 OP Ex3 9 MOVAX COUNT SI MOVAX SI COUNT DS 3000H SI 2000HCOUNT 3000H 符號地址 物理地址 30000 2000 3000 35000H 35000H 1234H AX 1234H CS DS 00 30 位移量 count OP 32位尋址Ex MOVEAX TABLE ESI 寄存器相對尋址的功能 寄存器相對尋址的執(zhí)行 6 基址 變址尋址 1 操作數(shù)的EA是一個基址寄存器與一個變址寄存器內(nèi)容之和 操作數(shù)在存儲器中16位尋址 其物理地址為 SI SI 16x Ds BX DI 16x SS BP DI 2 允許段超越 用于數(shù)組和表格處理EX MOVAX ES BX SI 段超越 34 12 DS 21000H 221FDH AHAL EX3 11 MOVAX BX DI 或MOVAX BX DI DS 2100H BX 0158H DI 10A5H物理地址 21000 0158 10A5 221FDH 221FDH 1234H AX 1234H 對于32位尋址方式 Ex MOVEDX EBX ESI 基址變址尋址的功能 基址變址尋址的執(zhí)行 7 相對基址 變址尋址 1 操作數(shù)的EA是一個基址寄存器 變址寄存器 指令中指定的位移量之和 操作數(shù)在存儲器中 2 16位尋址方式中 物理地址為 SI 16x Ds BX DI 位移量 SI 16x SS BP DI 位移量 3 允許段超越 用于堆棧處理 EX3 8 MOVAX MASK BX SI 或MOVAX MASK BX SI 或MOVAX MASK BX SI DS 3000H BX 2000H SI 1000HMASK 0250H物理地址 30000 2000 1000 0250 33250H 33250H 1234H AX 1234H 30000H 33250H 34 12 OP 50 02 位移量 mask cs ds AHAL 對于32位尋址方式 Ex MOVEAX ARRAY EBX ECX 相對基址變址尋址的功能 相對基址變址尋址的執(zhí)行 8 比例變址尋址方式操作數(shù)EA 變址寄存器的內(nèi)容 指令中指定的比例因子 位移量Ex3 12 MOVEAX COUNT ESI 4 9 基址比例變址尋址方式操作數(shù)EA 基址寄存器的內(nèi)容 變址寄存器的內(nèi)容 指令中指定的比例因子Ex3 13 MOVECX EAX EDX 8 10 相對基址比例變址尋址方式操作數(shù)EA 基址寄存器的內(nèi)容 變址寄存器的內(nèi)容 指令中指定的比例因子 位移量Ex3 14 MOVEAX TABLE EBP EDI 4 3 2 3與轉(zhuǎn)移地址有關(guān)的尋址方式用來確定轉(zhuǎn)移指令和CALL指令的轉(zhuǎn)向地址 有效地址存入IP 段地址在CS中 1 段內(nèi)直接尋址 1 EA 當(dāng)前的 IP 8位偏移量用EA作為新的IP16位偏移量 2 用于有條件轉(zhuǎn)移D8無條件轉(zhuǎn)移D8 128 127SHORT 或D16 32768 32767NEAR ex JMPNEARPTRPROGA無條件轉(zhuǎn)移 D16JMPSHORTQUEST D8對于386及其后繼機型 EA放入EIP 偏移量是8位或32位 8位是短轉(zhuǎn)移 128 127 32位是近轉(zhuǎn)移 2G 2 段內(nèi)間接轉(zhuǎn)移 1 EA 寄存器或存儲單元中的內(nèi)容 用EA作為新的IP 2 不能用于條件轉(zhuǎn)移ex3 15 JMPBX BX 1256HEA BX 執(zhí)行后 BX不變 IP 1256H轉(zhuǎn)至CS 1256H執(zhí)行 ex3 16 JMPTABLE BX 等價于JMPWORDPTRTABLE BX 物理地址 16X DS BX TABLE 20000 1256 20A1 232F7H 232F7H 3280H 新的IP 轉(zhuǎn)至CS 3280H ex3 17JMP BX SI 基址變址尋址 物理地址 16X DS BX SI 20000 1256 528F 264E5H 264E5H 2450H 新的IP 轉(zhuǎn)至CS 2450H對于386及其后繼機型 可允許16位或32位尋址 ex3 18 JMPECXex3 19JMPWordPtrTable ESI 3 段間直接尋址 1 指令中提供了轉(zhuǎn)向的段地址和偏移地址 用于取代CS IP的內(nèi)容 完成一個段到另一個段的轉(zhuǎn)移 2 不能用于條件轉(zhuǎn)移ex JMPFARPTRNEXTRONTfarptr 段間轉(zhuǎn)移操作符NEXTROUT 符號地址 IP CS的值跟在OP之后 OP 50 02 00 20 JMP指令 新 IP 0250H 新 CS 2000H C1段 C2段 20250H NEXTOUT 段間直接轉(zhuǎn)移 對于386及后繼機型 段間轉(zhuǎn)移后修改CS EIP的內(nèi)容 4 段間間接轉(zhuǎn)移 1 用存儲器中兩個相繼字的內(nèi)容取代IP CS的內(nèi)容 完成段間轉(zhuǎn)移 先求PA 找出四個字節(jié)作為IP和CS的內(nèi)容 轉(zhuǎn)移過去 2 不能用于條件轉(zhuǎn)移例 JMPDWORDPTRINTER BX Dwordptr 雙字操作符 段間轉(zhuǎn)移 386及其后繼機型可采用32位尋址 LessonP1073 43 53 8- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- X86 尋址 方式 指令系統(tǒng)
鏈接地址:http://www.szxfmmzy.com/p-6575266.html