Win32匯編語言-匯編語言程序設(shè)計基礎(chǔ)-體系結(jié)構(gòu).ppt
《Win32匯編語言-匯編語言程序設(shè)計基礎(chǔ)-體系結(jié)構(gòu).ppt》由會員分享,可在線閱讀,更多相關(guān)《Win32匯編語言-匯編語言程序設(shè)計基礎(chǔ)-體系結(jié)構(gòu).ppt(30頁珍藏版)》請在裝配圖網(wǎng)上搜索。
2020 2 29 1 Windows32位匯編語言程序設(shè)計體系結(jié)構(gòu) 第二節(jié) 宋軍計算機學院信息安全系songjun 2 2020 2 29 主要內(nèi)容 IA 32處理器體系結(jié)構(gòu)IA 32CPU的工作模式IA 32CPU寄存器組IA 32存儲器管理實模式保護模式 3 2020 2 29 微機系統(tǒng) 硬件 軟件 匯編程序主要使用寄存器 匯編程序員關(guān)心存儲器地址 匯編程序?qū)Χ丝谶M行操作 4 2020 2 29 存儲器地址 存儲器地址是存儲單元的編號每個存儲單元存放一個字節(jié)量的數(shù)據(jù)一個字節(jié)B Byte 包含8個二進制位b bit 存儲容量指存儲器所具有的存儲單元個數(shù)基本單位是字節(jié)B 更大的容量單位有KB 千字節(jié) MB 兆字節(jié) GB 千兆字節(jié) TB 兆兆字節(jié) 5 2020 2 29 微處理器 CPU 微處理器是微機的硬件核心主要包含指令執(zhí)行的運算和控制部件 還有多種寄存器對匯編程序員來說 微處理器抽象為以名稱存取的寄存器課程以Intel32位微處理器為主體學習32位匯編語言程序設(shè)計 6 2020 2 29 Intel微處理器發(fā)展 80386 80486 奔騰 奔騰II 奔騰4 80286 奔騰III 4004 摩爾定律 Moore sLaw 摩爾定律是指IC上可容納的晶體管數(shù)目 約每隔18個月將會增加一倍 性能也將提升一倍 IA 32 8086 IA 64 安騰 7 2020 2 29 Intel微處理器發(fā)展 4位微處理器 40048位微處理器 8008 8080 808516位微處理器 8086 8088 80186 8028632位微處理器 IA 32CPU80386 80486 Pentium MMXPentium P6 Pentium464位微處理器 Xeon PentiumM CoreDuo 8 2020 2 29 IA 32CPU工作模式 實地址模式 Real addressMode 實現(xiàn)8086處理器的程序設(shè)計環(huán)境所有的Intel處理器都是從實地址模式引導的保護模式 ProtectedMode 處理器的主要狀態(tài)虛擬8086模式 Virtual 8086Mode 系統(tǒng)管理模式 SystemManagementMode 電源管理 系統(tǒng)安全等自定義特定系統(tǒng)啟動過程 環(huán)境 保護模式下的Windows操作系統(tǒng) 9 2020 2 29 IA 32基本執(zhí)行環(huán)境 地址空間保護模式 4GB內(nèi)存尋址 0 232 1 虛擬8086模式 每個程序獨立1MB內(nèi)存實地址模式 1MB內(nèi)存寄存器組寄存器是CPU內(nèi)部的高速存儲單元基本寄存器 8個通用寄存器 6個段寄存器 一個標志寄存器 EFLAGS 1個指令指針 EIP 浮點單元 FPU 8個浮點寄存器系統(tǒng)寄存器 內(nèi)存管理 控制 中斷 測試其它寄存器 MMX 10 2020 2 29 常用寄存器組 匯編語言程序員 CPU是可編程的寄存器組 11 2020 2 29 基本寄存器 通用寄存器4個數(shù)據(jù)寄存器 EAX EBX ECX EDX 2個變址寄存器 ESI EDI 2個指針寄存器 ESP EBP 1個指令指針寄存器 EIP 1個標志寄存器 EFlags 6個段寄存器 ES CS SS DS FS GS 12 2020 2 29 通用寄存器 AHALBHBLCHCLDHDLSPBPDISI 累加器基址變址計數(shù)數(shù)據(jù)堆棧指針基址指針目的變址源變址 32位 16位 AXBXCXDXSPBPDISI 16位名稱 EAXEBXECXEDXESPEBPEDIESI 32位名稱 高16位擴展 AX BX CX DX SP BP DI SI分別是EAX EBX ECX EDX ESP EBP EDI ESI的低16位AL BL CL DL分別是AX BX CX DX的低八位AH BH CH DH分別是AX BX CX DX的高八位 13 2020 2 29 通用寄存器 關(guān)系每一個32位寄存器的低字是相應的16位寄存器 對其中某16位的操作 并不影響另外對應16位的數(shù)據(jù) 前4個16位寄存器又分成高8位和低8位兩個獨立的寄存器 對其中某8位的操作 不影響另外對應8位的數(shù)據(jù)用途可以用來傳送和暫存數(shù)據(jù) 參與算術(shù)邏輯運算 保存運算結(jié)果32位和16位的通用寄存器也可以保存存儲器地址每個寄存器又有它們各自的專用目的 14 2020 2 29 數(shù)據(jù)寄存器 EAX EBX ECX EDX 數(shù)據(jù)寄存器主要用來保存操作數(shù)和運算結(jié)果等信息 從而節(jié)省讀取操作數(shù)所需占用總線和訪問存儲器的時間 EAX累加器 存放操作數(shù)和結(jié)果 乘除運算 I O指令中用于寄存器與外部設(shè)備傳送信息EBX基址寄存器 查表和間接尋址時存放基址ECX計數(shù)寄存器 串操作和循環(huán)中做計數(shù) 隱含 EDX數(shù)據(jù)寄存器 乘除運算 I O指令中特指端口地址 15 2020 2 29 數(shù)據(jù)寄存器EAX和EDX的乘 除運算 乘法運算除法運算 16 2020 2 29 17 2020 2 29 變址寄存器 ESI EDI 變址寄存器常用于存儲器尋址時提供地址ESI源變址寄存器EDI目的變址寄存器變址寄存器不可分割成8位寄存器 SI和DI是ESI和EDI的低16位 作為通用寄存器 也可存儲算術(shù)邏輯運算的操作數(shù)和運算結(jié)果串操作類指令中 ESI和EDI具有特定功能 SI ESI與DS DI EDI與ES聯(lián)用 18 2020 2 29 指針寄存器 ESP EBP 指針寄存器用于尋址內(nèi)存堆棧內(nèi)的數(shù)據(jù)ESP為堆棧指針寄存器 指示棧頂?shù)钠频刂?ESP不能再用于其他目的 具有專用目的EBP為基址指針寄存器 表示數(shù)據(jù)在堆棧段中的基地址 棧頂 堆棧段寄存器SS和指針寄存器ESP或EBP共同指示堆棧的存儲空間注意 指針寄存器不可再分割成8位寄存器 SP和BP分別是ESP和EBP的低16位 19 2020 2 29 堆棧示例 下面是按調(diào)用約定 stdcall調(diào)用函數(shù)test intp1 intp2 的匯編代碼 假設(shè)執(zhí)行函數(shù)前堆棧指針ESP為NNpushp2 參數(shù)2入棧 ESP 4h ESP NN 4hpushp1 參數(shù)1入棧 ESP 4h ESP NN 8hcalltest 壓入返回地址ESP 4h ESP NN 0Ch 進入函數(shù)內(nèi) pushebp 保護先前EBP指針 EBP入棧 ESP 4h ESP NN 10hmovebp esp 設(shè)置EBP指針指向棧頂NN 10hmoveax dwordptr ebp 0ch ebp 0ch為NN 4h 即參數(shù)2的位置movebx dwordptr ebp 08h ebp 08h為NN 8h 即參數(shù)1的位置subesp 8 局部變量所占空間ESP 8 ESP NN 18h addesp 8 釋放局部變量 ESP 8 ESP NN 10hpopebp 出棧 恢復EBP ESP 4 ESP NN 0Chret8 ret返回 彈出返回地址 ESP 4 ESP NN 08h 后面加操作數(shù)8為平衡堆棧 ESP 8 ESP NN 恢復進入函數(shù)前的堆棧 20 2020 2 29 指令指針 EIP 指令指針寄存器EIP 指示代碼段中指令的偏移地址存放下次將要執(zhí)行的指令在代碼段的偏移量通過CS EIP寄存器來控制指令序列的執(zhí)行流程 21 2020 2 29 堆棧 Stack 堆棧是主存中一個特殊的區(qū)域它采用先進后出FILO FirstInLastOut 或后進先出LIFO LastInFirstOut 的原則進行存取操作 而不是隨機存取操作方式 堆棧通常由處理器自動維持 在IA 32中 由堆棧段寄存器SS和堆棧指針寄存器ESP共同指示 22 2020 2 29 通用寄存器的特殊用法 某些通用寄存器有些特殊的用法 EAX在乘法和除法指令中校自動使用 通常稱之為擴展累加寄存器 CPU自動使用ECX作為循環(huán)計數(shù)器 ESP尋址堆棧 一種系統(tǒng)內(nèi)存結(jié)構(gòu) 上的數(shù)據(jù) ESP寄存器一般不用于算術(shù)運算和數(shù)據(jù)傳送 通常稱之為擴展堆棧指針寄存器 ESI和EDI通常用于內(nèi)存數(shù)據(jù)的高速傳送 通常稱之為擴展源指針和擴展目的指針寄存器 EBP由高級語言用來引用堆棧上的函數(shù)參數(shù)和局部變量 除非用于高級程序設(shè)計技巧中 EBP一般不在算術(shù)運算和數(shù)據(jù)傳送中使用 通常稱之為擴展幀指針寄存器 23 2020 2 29 段寄存器 IA 32CPU有6個16位段寄存器CS 代碼段 指明代碼段的起始地址SS 堆棧段 指明堆棧段的起始地址DS 數(shù)據(jù)段 指明數(shù)據(jù)段的起始地址ES 附加段 指明附加段的起始地址FS 數(shù)據(jù)段 指明數(shù)據(jù)段的起始地址GS 數(shù)據(jù)段 指明數(shù)據(jù)段的起始地址每個段寄存器用來確定一個邏輯段的起始地址 每種邏輯段均有各自的用途 24 2020 2 29 段寄存器 在16位CPU系統(tǒng)中 它只有4個段寄存器 程序在任何時刻至多有4個正在使用的段可直接訪問在32位微機系統(tǒng)中 它有6個段寄存器 所以 在此環(huán)境下開發(fā)的程序最多可同時訪問6個段 32位CPU有兩個不同的工作方式 實方式和保護方式 在每種方式下 段寄存器的作用不同實方式 前4個段寄存器CS DS ES和SS與先前CPU中的所對應的段寄存器的含義完全一致 內(nèi)存單元的邏輯地址仍為 段值 偏移量 的形式 為訪問某內(nèi)存段內(nèi)的數(shù)據(jù) 必須使用該段寄存器和存儲單元的偏移量 保護方式 在此方式下 情況要復雜得多 裝入段寄存器的不再是段值 而是稱為 選擇子 Selector 的某個值 25 2020 2 29 標志寄存器 EFlags 控制CPU的操作或反映CPU某此運算的結(jié)果的獨立二進制位構(gòu)成 控制標志 控制CPU的操作狀態(tài)標志 反映CPU運算的結(jié)果系統(tǒng)標志 反映CPU運行狀態(tài) 26 2020 2 29 EFLAGS示意圖 27 2020 2 29 浮點單元 FPU 高速浮點運算8個浮點數(shù)據(jù)寄存器ST0 7控制寄存器指針寄存器 28 2020 2 29 寄存器與存儲器的比較 29 2020 2 29 小結(jié) 數(shù)據(jù)寄存器 EAX EBX ECX EDX的一般用途和特點變址寄存器 ESI EDI的一般用途指針寄存器 ESP EBP的一般用途指令指針 EIP的一般用途堆棧段寄存器 CS DS ES SS FS GS標志寄存器 EFlags 30 2020 2 29 例題 在80 x86微機的輸入 輸出指令中 I O端口號通常是由DX寄存器提供的 但有時也可以在指令中直接指定00 FFH的端口號 試問可直接由指令指定的I O端口數(shù) 下列操作可使用哪些寄存器1 加法和減法2 循環(huán)計數(shù)3 乘法和除法4 保存段地址5 表示運算結(jié)果為06 將要執(zhí)行的指令地址7 將要從堆棧取出數(shù)據(jù)的地址- 1.請仔細閱讀文檔,確保文檔完整性,對于不預覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- Win32 匯編語言 匯編 語言程序設(shè)計 基礎(chǔ) 體系結(jié)構(gòu)
鏈接地址:http://www.820124.com/p-6567499.html