版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(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命令改寫(xiě)內(nèi)存中的內(nèi)容;l 用Debug的U命令
2、將內(nèi)存中的機(jī)器指令翻譯成匯編指令;l 用Debug的T命令執(zhí)行一條機(jī)器指令;l 用Debug的A命令以匯編指令的格式在內(nèi)存中寫(xiě)入一條機(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
3、 c d: 接著輸入c:Dosbox5.接著,你就可以使用Debug:debug6.備注:debug.exe放在D:根目錄下,你也可以把debug.exe放在任何一個(gè)文件夾下面。其中這個(gè)文件夾就是mount c d:所對(duì)應(yīng)的。一 .(1) 使用Debug,將下面的程序段寫(xiě)入內(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 a
4、x,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命令以兩種方式將指令寫(xiě)入內(nèi)存。注意用T命令執(zhí)行時(shí),CS:IP的指向。(2)將下面3條指令寫(xiě)入從2000:0開(kāi)始的內(nèi)存單元中,利用這3條指令計(jì)算2的8次方。mov ax,1add ax,axjmp 2000:0003(3)查看內(nèi)存中的內(nèi)容PC機(jī)主板上的ROM中寫(xiě)有一個(gè)生產(chǎn)日期,在內(nèi)存FFF00HFFFFFH的
5、某幾個(gè)單元中,請(qǐng)找到這個(gè)生產(chǎn)日期并試圖改變它。(內(nèi)存ffff:0005ffff:000C(共8個(gè)字節(jié)單元中)處)無(wú)法改變,修改之后內(nèi)容并沒(méi)有變?!鞠缕坑脵C(jī)器指令和匯編指令編程一實(shí)驗(yàn)內(nèi)容1.預(yù)備知識(shí):Debug命令的補(bǔ)充(1)在D命令中使用段寄存器格式:“d 段寄存器:偏移地址”,以段寄存器中的數(shù)據(jù)為段地址SA,列出從SA:偏移地址開(kāi)始的內(nèi)存區(qū)間中的數(shù)據(jù)。以下是4個(gè)例子:-r ds:1000-d ds:0 ;查看從1000:0開(kāi)始的內(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 ;
6、查看當(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開(kāi)始的內(nèi)存區(qū)間中寫(xiě)入數(shù)據(jù)-u cs:0 ;以匯編指令的形式,顯示當(dāng)前代碼段中的代碼,0代碼的偏移地址-r ds:1000-a ds:0 ;以匯編指令的形式,向從1000:0開(kāi)始的內(nèi)存單元中寫(xiě)入指令(3)下一條指令執(zhí)行了嗎? 在Debug中,用A命令寫(xiě)一段程序:mov ax,2000mov ss,axmov sp,10 ;安排2000:00
7、002000: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的只有
8、指令mov sp,10,看來(lái),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í)候,沒(méi)有做到這一點(diǎn)。不單是mov ss,ax,對(duì)于如:mov ss,bx,mov ss,0,pop ss等指令都會(huì)發(fā)生上面的情況,這些指令有哪些共性呢?它們都是修改棧段寄存器SS的指令。結(jié)論:D
9、ebug的T命令在執(zhí)行修改寄存器SS的指令時(shí),下一條指令也緊接著被執(zhí)行。二實(shí)驗(yàn)任務(wù)(1)使用Debug,將上面的程序段寫(xiě)入內(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 ;修改的
10、內(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,將下面的程序段寫(xiě)入內(nèi)存,逐條執(zhí)行,觀察每條指令執(zhí)行后,CPU中相關(guān)寄存器中內(nèi)容的變化。(逐條執(zhí)行,每條指令執(zhí)行結(jié)果截圖) 如果有問(wèn)題請(qǐng)說(shuō)明原因匯編指令mov ax,1000Hmov ds,axmov ds,0add ds,axDs為段寄存器,無(wú)法用在算術(shù)運(yùn)算指令中。(3)仔細(xì)觀察下圖中的實(shí)驗(yàn)過(guò)程,然后分析:為什么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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川雅安市政務(wù)服務(wù)中心直屬事業(yè)單位2025年公招擬聘用人員歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 二零二五年度生態(tài)別墅木工分包安裝服務(wù)合同3篇
- 四川成都市青白江區(qū)機(jī)關(guān)事業(yè)單位招聘5人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 四川樂(lè)山夾江縣鄉(xiāng)鎮(zhèn)事業(yè)單位從“大學(xué)生志愿服務(wù)西部”人員中招聘2人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 南寧鐵路局招聘2025年高校畢業(yè)生133人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 南京市鼓樓區(qū)事業(yè)單位2025年上半年公開(kāi)招聘歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 華能榆社電廠招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 北京語(yǔ)言大學(xué)語(yǔ)言資源高精尖創(chuàng)新中心招考聘用高頻重點(diǎn)提升(共500題)附帶答案詳解
- 北京市2025科學(xué)技術(shù)進(jìn)修學(xué)院公開(kāi)招考事業(yè)單位工作人員高頻重點(diǎn)提升(共500題)附帶答案詳解
- 北京農(nóng)學(xué)院幼兒園招考聘用高頻重點(diǎn)提升(共500題)附帶答案詳解
- 三年級(jí)數(shù)學(xué)寒假作業(yè)每日一練30天
- 二年級(jí)數(shù)學(xué)上冊(cè)100道口算題大全 (每日一套共26套)
- 物流無(wú)人機(jī)垂直起降場(chǎng)選址與建設(shè)規(guī)范
- 高中體育與健康人教版全一冊(cè) 6.2田徑—短跑 課件(共11張PPT)
- 蔬菜供貨服務(wù)保障方案
- WordA4信紙(A4橫條直接打印版)
- 吹塑成型技術(shù)
- 線路巡視試題
- 藥品庫(kù)存清單(2015年)
- 上海市臨床營(yíng)養(yǎng)質(zhì)控手冊(cè)范本
- 中學(xué)生核心素養(yǎng)中學(xué)生天文科技素養(yǎng)調(diào)查研究報(bào)告
評(píng)論
0/150
提交評(píng)論