第八次匯編試驗_第1頁
第八次匯編試驗_第2頁
第八次匯編試驗_第3頁
第八次匯編試驗_第4頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

匯匯 編編 語語 言言 實實 驗驗 報報 告告 Assembly Language Programming Lab Reports 班級 班級 2133621336 姓名 姓名 韋濤韋濤 學號 學號 21336202133620 實驗日期 實驗日期 2015 05 30 2015 05 30 學院 學院 計算機與通信工程學院計算機與通信工程學院 專業(yè) 專業(yè) 計算機科學與技術計算機科學與技術 實驗順序 實驗順序 原創(chuàng) 原創(chuàng) 實驗名稱 實驗名稱 1616 位和位和 3232 位的差別位的差別 實驗分數(shù) 實驗分數(shù) 考評日期考評日期 指導教師 指導教師 張旭張旭 1 1 實驗目的實驗目的 1 掌握簡化段定義 2 理解實模式和保護模式 3 學會在保護模式下編譯調(diào)試匯編程序 2 2 實驗環(huán)境實驗環(huán)境 操作系統(tǒng) windows xp 編譯程序 Visual C 6 0 3 3 實驗原理實驗原理 1 定義工作模式 model 內(nèi)存模式 調(diào)用規(guī)則 其他模式 2 選擇指令集 3 option 語句 4 includelib 語句 5 invoke 語句 6 函數(shù)聲明語句 函數(shù)名稱 PROTO 調(diào)用規(guī)則 第一個參數(shù)類型 后續(xù)參數(shù)類型 4 4 實驗步驟及結果分析實驗步驟及結果分析 1 分析實模式與保護模式之間的區(qū)別 實模式 又叫實地址模式 CPU 完全按照 8086 的實際尋址方法訪問從 00000h FFFFFh 1MB 大小 的地址范圍的內(nèi)存 在這種模式下 CPU 只能 做單任務運行 尋址公式為 物理地址 左移 4 位的段地址 偏移地址 即 物理地址是由 16 位的段地址和 16 位的段內(nèi)偏移地址組成的 保護模式 又叫內(nèi)存保護模式 尋址采用 32 位段和偏移量 最大尋址 空間 4GB 在這種模式下 系統(tǒng)運行于多任務 設計這種模式的原因和好處 是 保護模式增加了尋址空間 增加了對多任務的支持 增加了段頁式尋址 機制的內(nèi)存管理 分段機制使得段具有訪問權限和特權級 各應用程序和操 作系統(tǒng)的代碼和核心是被保護的 這也是多任務支持的實現(xiàn)關鍵和保護這個 名字的由來 尋址過程為 物理地址 由段地址查詢?nèi)置枋龇碇薪o出 的段基址 偏移地址 即 物理地址由影像寄存器中的基址加上 16 位或者 32 位的偏移組成 實模式將整個物理內(nèi)存看成分段的區(qū)域 程序代碼和數(shù)據(jù)位于不同區(qū)域 系統(tǒng)程序和用戶程序沒有區(qū)別對待 而且每一個指針都是指向 實在 的物理 地址 這樣一來 用戶程序的一個指針如果指向了系統(tǒng)程序區(qū)域或其他用戶 程序區(qū)域 并改變了值 那么對于這個被修改的系統(tǒng)程序或用戶程序 其后 果就很可能是災難性的 為了克服這種低劣的內(nèi)存管理方式 處理器廠商開 發(fā)出保護模式 這樣 物理內(nèi)存地址不能直接被程序訪問 程序內(nèi)部的地址 虛擬地址 要由操作系統(tǒng)轉化為物理地址去訪問 程序對此一無所知 至 此 進程 這時我們可以稱程序為進程了 有了嚴格的邊界 任何其他進程 根本沒有辦法訪問不屬于自己的物理內(nèi)存區(qū)域 甚至在自己的虛擬地址范圍 內(nèi)也不是可以任意訪問的 因為有一些虛擬區(qū)域已經(jīng)被放進一些公共系統(tǒng)運 行庫 這些區(qū)域也不能隨便修改 若修改就會提示出現(xiàn)錯誤 CPU 啟動環(huán)境為 16 位實模式 之后可以切換到保護模式 但從保護模 式無法切換回實模式 2 在保護模式下用 Visual C 編譯調(diào)試匯編程序 輸出 hello world 1 建立工程 1 啟動 VC 后 從菜單中選擇 File New 2 在打開的 New 對話框頂部 單擊 Projects 再選中 Win32 Console Application 在 Location 編輯框中輸入 c asm 再在 Project name 中輸入 test 輸入 test 時 它自動地添加到 Location 編輯框中 c asm 的后面 3 單擊 OK 鍵后 出現(xiàn)一個新的對話框 單擊 Finish 4 接下來 VC 的窗口的左邊顯示出 test classes 下面有 ClassView 和 FileView 兩種視圖 5 這時 可將 hello asm 或其他的一個 asm 源程序文件 復制到 c asm test 中 并改名為 test asm 也可以將其他的匯編程序源文件復 制到 c asm test test asm 6 接下來 再從菜單中選擇 Project Add to Projects Files 在該對話框中的文件名處輸入 c asm test test asm 7 在 VC 窗口左邊的視圖中 展開 FileView 中的 Source Files 顯示 出 test asm 在 test asm 上 單擊鼠標右鍵 出現(xiàn)菜單 8 在菜單中選擇 Setting 彈出另一個對話框 在 Commands 編輯框中 輸入 ml c coff Zi test asm 在 Outputs 編輯框中輸入 test obj 再單擊 OK 9 最后 再將 ML EXE 和 ML ERR 兩個文件復制到 c windows 如 果 Windows 安裝到其他目錄 則需要把這兩個文件復制到相應的目錄 可 用 set windir 命令顯示出 Windows 的安裝目錄 10 最后 驗證是否能在 VC 中編譯 test asm 在 VC 中按 F7 鍵 應該自動編 譯生成 test exe 如果源程序中有錯誤 編譯后將錯誤信息顯示在 Output 的 Build 視圖中 點擊該錯誤信息 光標自動定位到出現(xiàn)錯 誤的程序行 也可以按 F4 鍵定位到錯誤的程序行 11 為了使 VC 適合于匯編語言的調(diào)試 從 Tools 菜單中選擇 Options 再選擇 Debug 頁 選中 Disassembly window 中的 Code bytes 12 在 Memory window 中 選中 Fixed width 在后面填入數(shù)字 16 13 在 General 中 選中 Hexdecimal display 14 不選 View floating point registers 2 hello asm 386 model flat stdcall option casemap none includelib msvcrt lib printf proto c ptr sbyte vararg data szMsg byte Hello world 0ah 0 code start invoke printf offset szMsg ret end start 3 相關說明 386 定義使用 386 指令集 model flat stdcall 定義內(nèi)存模式為 flat 即可執(zhí)行文件最大可以用 4 GB 內(nèi)存 定義調(diào)用規(guī)則為 stdcall option casemap none 定義程序中的變量和子程序名對大小寫敏 感 includelib msvcrt lib 則調(diào)用 msvcrt lib 庫文件 printf proto c ptr sbyte vararg 定義 printf 函數(shù)使用 C 調(diào)用規(guī)則 第一個參 數(shù)是字符串指針 后面的參數(shù)數(shù)量及類型不定 invoke 用于調(diào)用函數(shù) 4 調(diào)試程序 在 invoke printf offset szMsg 處設置斷點 然后調(diào)出 Registers Watch 和 Disassmebly 窗口 如果某一個寄存器或內(nèi)存單元的值被 改變 則它的值用紅色顯示出來 按 F10 鍵可一步一步地執(zhí)行程序 執(zhí)行過程 中 可以在內(nèi)存窗口中觀察變量的變化 在寄存器窗口中可以看到寄存器的變 化 更加方便的是 可以把鼠標移動到編輯窗口中的寄存器或變量上 停留幾 秒鐘后 VC 會自動地顯示它們的值 可以看到 szMsg 的偏移地址為 00404000 在內(nèi)存窗口中查看該地址 可 以看到該數(shù)據(jù)段保存了一個字符串 Hello world 之后 invoke printf 則跳轉到 printf 函數(shù)

溫馨提示

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

評論

0/150

提交評論