已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
實(shí)驗(yàn)一 掌握DEBUG 基本命令及其功能 【上篇】 查看CPU和內(nèi)存,用機(jī)器指令和匯編指令編程一實(shí)驗(yàn)?zāi)康模赫莆誅EBUG 的基本命令及其功能掌握win7 win8 使用DEBUG功能二實(shí)驗(yàn)內(nèi)容:1.預(yù)備知識(shí):Debug的使用(1)什么是Debug?Debug是DOS、Windows都提供的實(shí)模式(8086方式)程序的調(diào)試工具。使用它,可以查看CPU各種寄存器中的內(nèi)容、內(nèi)存的情況和在機(jī)器碼級(jí)跟蹤程序的運(yùn)行。(2)我們用到的Debug功能l 用Debug的R命令查看、改變CPU寄存器的內(nèi)容;l 用Debug的D命令查看內(nèi)存中的內(nèi)容;l 用Debug的E命令改寫內(nèi)存中的內(nèi)容;l 用Debug的U命令將內(nèi)存中的機(jī)器指令翻譯成匯編指令;l 用Debug的T命令執(zhí)行一條機(jī)器指令;l 用Debug的A命令以匯編指令的格式在內(nèi)存中寫入一條機(jī)器指令。(3)進(jìn)入DebugDebug是在DOS方式下使用的程序。我們?cè)谶M(jìn)入Debug前,應(yīng)先進(jìn)入到DOS方式。用以下方式可以進(jìn)入DOS:重新啟動(dòng)計(jì)算機(jī),進(jìn)入DOS方式,此時(shí)進(jìn)入的是實(shí)模式的DOS。在Windows中進(jìn)入DOS方式,此時(shí)進(jìn)入的是虛擬8086模式的DOS。 三.實(shí)驗(yàn)任務(wù)解決方案1. 從網(wǎng)上下載Dosbox和debug.exe(文件夾中有)。2. debug.exe放在D:根目錄,然后安裝,安裝完成以后,點(diǎn)擊快捷方式進(jìn)入Dos界面:3.輸入mount c d: 接著輸入c:Dosbox5.接著,你就可以使用Debug:debug6.備注:debug.exe放在D:根目錄下,你也可以把debug.exe放在任何一個(gè)文件夾下面。其中這個(gè)文件夾就是mount c d:所對(duì)應(yīng)的。一 .(1) 使用Debug,將下面的程序段寫入內(nèi)存,逐條執(zhí)行,觀察每條指令執(zhí)行后,CPU中相關(guān)寄存器中內(nèi)容的變化。(逐條執(zhí)行,每條指令執(zhí)行結(jié)果截圖)機(jī)器碼 匯編指令b8 20 4e mov ax,4E20H05 16 14 add ax,1416Hbb 00 20 mov bx,2000H01 d8 add ax,bx89 c3 mov bx,ax01 d8 add ax,bxb8 1a 00 mov ax,001AHbb 26 00 mov bx,0026H00 d8 add al,bl00 dc add ah,bl00 c7 add bh,alb4 00 mov ah,000 d8 add al,bl04 9c add al,9CH提示:可用E命令和A命令以兩種方式將指令寫入內(nèi)存。注意用T命令執(zhí)行時(shí),CS:IP的指向。(2)將下面3條指令寫入從2000:0開始的內(nèi)存單元中,利用這3條指令計(jì)算2的8次方。mov ax,1add ax,axjmp 2000:0003(3)查看內(nèi)存中的內(nèi)容PC機(jī)主板上的ROM中寫有一個(gè)生產(chǎn)日期,在內(nèi)存FFF00HFFFFFH的某幾個(gè)單元中,請(qǐng)找到這個(gè)生產(chǎn)日期并試圖改變它。(內(nèi)存ffff:0005ffff:000C(共8個(gè)字節(jié)單元中)處)無法改變,修改之后內(nèi)容并沒有變?!鞠缕坑脵C(jī)器指令和匯編指令編程一實(shí)驗(yàn)內(nèi)容1.預(yù)備知識(shí):Debug命令的補(bǔ)充(1)在D命令中使用段寄存器格式:“d 段寄存器:偏移地址”,以段寄存器中的數(shù)據(jù)為段地址SA,列出從SA:偏移地址開始的內(nèi)存區(qū)間中的數(shù)據(jù)。以下是4個(gè)例子:-r ds:1000-d ds:0 ;查看從1000:0開始的內(nèi)存區(qū)間中的內(nèi)容-r ds:1000-d ds:10 18 ;查看1000:101000:18中的內(nèi)容-d cs:0 ;查看當(dāng)前代碼段中的指令代碼-d ss:0 ;查看當(dāng)前棧段中的內(nèi)容(2)在E、A、U命令中使用段寄存器在E、A、U這些可以帶有內(nèi)存單元地址的命令中,也可以同D命令一樣,用段寄存器表示內(nèi)存單元的段地址。以下是3個(gè)例子:-r ds:1000-e ds:0 11 22 33 44 55 66 ;在從1000:0開始的內(nèi)存區(qū)間中寫入數(shù)據(jù)-u cs:0 ;以匯編指令的形式,顯示當(dāng)前代碼段中的代碼,0代碼的偏移地址-r ds:1000-a ds:0 ;以匯編指令的形式,向從1000:0開始的內(nèi)存單元中寫入指令(3)下一條指令執(zhí)行了嗎? 在Debug中,用A命令寫一段程序:mov ax,2000mov ss,axmov sp,10 ;安排2000:00002000:000F 為??臻g,初始化棧頂。mov ax,3123 push axmov ax,3366push ax ;在棧中壓入兩個(gè)數(shù)據(jù)。在用T命令單步執(zhí)行mov ax,2000后,顯示出當(dāng)前CPU各個(gè)寄存器的狀態(tài)和下一步要執(zhí)行的指令:mov ss,ax;在用T命令單步執(zhí)行mov ss,ax后,下一條指令應(yīng)該是mov sp,10,卻變成了mov ax,3123?注意,在用T命令單步執(zhí)行mov ss,ax 前,ax=0000,ss=0b39,sp=ffee,而執(zhí)行后 ss=2000,sp=0010。ss變?yōu)?000是正常的,這正是mov ss,ax的執(zhí)行結(jié)果。而能夠?qū)p設(shè)為0010的只有指令mov sp,10,看來,mov sp,10一定是得到了執(zhí)行。在用T命令執(zhí)行mov ss,ax的時(shí)候,它的下一條指令mov sp,10也緊接著執(zhí)行了。整理一下我們分析的結(jié)果:在用T命令執(zhí)行mov ss,ax的時(shí)候,它的下一條指令mov sp,10也緊接著執(zhí)行了。一般情況下,用T命令執(zhí)行一條指令后,會(huì)停止繼續(xù)執(zhí)行,顯示出當(dāng)前CPU各個(gè)寄存器的狀態(tài)和下一步要執(zhí)行的指令,但T命令執(zhí)行mov ss,ax的時(shí)候,沒有做到這一點(diǎn)。不單是mov ss,ax,對(duì)于如:mov ss,bx,mov ss,0,pop ss等指令都會(huì)發(fā)生上面的情況,這些指令有哪些共性呢?它們都是修改棧段寄存器SS的指令。結(jié)論:Debug的T命令在執(zhí)行修改寄存器SS的指令時(shí),下一條指令也緊接著被執(zhí)行。二實(shí)驗(yàn)任務(wù)(1)使用Debug,將上面的程序段寫入內(nèi)存,逐條執(zhí)行,根據(jù)指令執(zhí)行后的實(shí)際運(yùn)行情況填空。(逐條執(zhí)行,每條指令執(zhí)行結(jié)果截圖)mov ax,ffffmov ds,axmov ax,2200mov ss,axmov sp,0100mov ax,0 ;ax= C0EA add ax,2;ax= C0FC mov bx,4 ;bx= 30F0 add bx,6;bx= 6021 push ax ;sp= 00FE ;修改的內(nèi)存單元的地址是 2200:00FE 內(nèi)容為 C0FC push bx ;sp= 00FC ;修改的內(nèi)存單元的地址是 2200:00FC 內(nèi)容為 6021 pop ax ;sp= 00FE ;ax= 6021 pop bx ;sp= 0010 ;bx= C0FC push 4;sp= 00FE ;修改的內(nèi)存單元的地址是 2200:00FE 內(nèi)容為 30F0 push 6 ;sp= 00FC ;修改的內(nèi)存單元的地址是 2200:00FC 內(nèi)容為 2F31 (2)使用Debug,將下面的程序段寫入內(nèi)存,逐條執(zhí)行,觀察每條指令執(zhí)行后,CPU中相關(guān)寄存器中內(nèi)容的變化。(逐條執(zhí)行,每條指令執(zhí)行結(jié)果截圖) 如果有問題請(qǐng)說明原因匯編指令mov ax,1000Hmov ds,axmov ds,0add ds,axDs為段寄存器,無法用在算術(shù)運(yùn)算指令中。(3)仔細(xì)觀察下圖中的實(shí)驗(yàn)過程,然后分析:為什么2000:02000:f中的內(nèi)容會(huì)發(fā)生改變?發(fā)生改變的數(shù)據(jù)分別是SS、IP、 CS 等的值,其數(shù)據(jù)發(fā)生了改變 ,是對(duì)定義棧段時(shí)部分運(yùn)行環(huán)境變量進(jìn)行暫存。實(shí)驗(yàn)一補(bǔ)充:Masm5.0解決方案1從網(wǎng)上下載Dosbox和masm5。2先把masm5目錄放在D:中(也可以自己選擇路徑),然后安裝Dosbox,安裝完成以后,點(diǎn)擊快捷方式D
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026浙江溫州市瑞安市市政工程管理中心招聘臨時(shí)人員1人筆試備考題庫及答案解析
- 2026年春季滬教版一年級(jí)下冊(cè)小學(xué)音樂教學(xué)計(jì)劃含進(jìn)度表
- 4.7.2 免疫與免疫規(guī)劃(第一課時(shí))教學(xué)設(shè)計(jì)-2025-2026學(xué)年人教版生物(2024)八年級(jí)上冊(cè)
- 2026云南昆明巫家壩商業(yè)運(yùn)營管理有限公司校園招聘8人筆試備考試題及答案解析
- 2026湖南懷化市中方縣中方鎮(zhèn)牌樓中學(xué)公益性崗位招聘1人筆試備考題庫及答案解析
- 2026東莞農(nóng)商銀行總行崗位社會(huì)招聘筆試備考題庫及答案解析
- 2026浙江臺(tái)州灣新區(qū)招聘6人筆試備考題庫及答案解析
- 綿陽市消防救援支隊(duì)2026年(第一批)面向社會(huì)公開招錄合同制政府專職消防員(73人)筆試備考題庫及答案解析
- 2026安徽安慶迎江經(jīng)濟(jì)開發(fā)區(qū)管委會(huì)面向社會(huì)招聘人才3人筆試備考試題及答案解析
- 2026年鄭州職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)筆試模擬試題含詳細(xì)答案解析
- 2025年淄博醫(yī)院招聘考試筆試題及答案
- 藥師處方審核中的常見錯(cuò)誤及糾正
- 2025年高考化學(xué)試題(浙江卷) 含答案
- 血透室穿刺時(shí)誤穿肱動(dòng)脈處理流程
- 醫(yī)院預(yù)防保健管理辦法
- 2025年揚(yáng)州市中考數(shù)學(xué)試題卷(含答案解析)
- 制造成熟度等級(jí)及評(píng)價(jià)準(zhǔn)則(DB61-T 1222-2018)
- 斷絕父母關(guān)系協(xié)議書
- GB/T 13077-2024鋁合金無縫氣瓶定期檢驗(yàn)與評(píng)定
- 《公路工程質(zhì)量檢驗(yàn)評(píng)定標(biāo)準(zhǔn)》JTG F80∕1-2017宣貫材料
- (廣播電視藝術(shù)學(xué)專業(yè)論文)從戲劇角度解讀約瑟夫·寇德卡.pdf
評(píng)論
0/150
提交評(píng)論