




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、實驗一 掌握DEBUG 基本命令及其功能 實驗作業(yè)截止日 2015年3月14日(星期六)23:59:59 【上篇】 查看CPU和內存,用機器指令和匯編指令編程一實驗目的:掌握DEBUG 的基本命令及其功能掌握win7 win8 使用DEBUG功能二實驗內容:1.預備知識:Debug的使用(1)什么是Debug?Debug是DOS、Windows都提供的實模式(8086方式)程序的調試工具。使用它,可以查看CPU各種寄存器中的內容、內存的情況和在機器碼級跟蹤程序的運行。(2)我們用到的Debug功能l 用Debug的R命令查看、改變CPU寄存器的內容;l 用Debug的D命令查看內存中的內容;l
2、 用Debug的E命令改寫內存中的內容;l 用Debug的U命令將內存中的機器指令翻譯成匯編指令;l 用Debug的T命令執(zhí)行一條機器指令;l 用Debug的A命令以匯編指令的格式在內存中寫入一條機器指令。(3) 進入DebugDebug是在DOS方式下使用的程序。我們在進入Debug前,應先進入到DOS方式。用以下方式可以進入DOS:重新啟動計算機,進入DOS方式,此時進入的是實模式的DOS。在Windows中進入DOS方式,此時進入的是虛擬8086模式的DOS。 (4)用R命令查看、改變CPU寄存器的內容1)顯示CPU內部所有寄存器內容和標志位狀態(tài);格式為:-R2)顯示和修改某個指定寄存器
3、內容,格式為:-R 寄存器名若要修改一個寄存器中的值,比如AX中的值,可用R命令后加寄存器名來進行,輸入“r ax”后按Enter鍵,將出現“:”作為輸入提示,在后面輸入要寫入的數據后按Enter鍵,即完成了對AX中內容的修改。若想看一下修改的結果,可再用R命令查看(5)用Debug的D命令查看內存中的內容1)格式:-d 段地址:偏移地址,Debug將列出從指定內存單元開始的128個內存單元的內容。使用D命令,Debug將輸出3部分內容,如圖2.34所示。中間是部分從指定地址開始的128個內存單元的內容,用十六進制的格式輸出,每行的輸出從16的整數倍的地址開始,最多輸出16個單元的內容。左邊是
4、每行的起始地址。右邊是每個內存單元中的數據對應的可顯示的ASCII碼字符。2)格式:-d 段地址:起始偏移地址 結尾偏移地址,Debug將列出指定范圍的內存單元的內容。(6) 用Debug的E命令改寫內存中的內容,有兩種格式:1)格式:-e 起始地址 數據 數據 數據,如要將1000:0開始的10個內存單元修改為09,可以用”-e 1000:0 0 1 2 3 4 5 6 7 8 9”2)格式:-e起始地址,逐個單元相繼地修改。如:-e 1000:10 1000:0010 6D.0 61.1 72.2 6B.1c輸入e 1000:10 ,Debug 顯示起始地址1000:0010,和1000:
5、0010單元的原始內容:6D,然后光標停在“.”的后面提示輸入想要寫入數據,輸入數據0,然后按空格鍵,即用輸入的數據0改寫了當前的內存單元。當前單元處理完成后,Debug將接著顯示下一個內存單元的原始內容,并提示讀者進行修改,可以用同樣的方法處理。改寫完畢后,按Enter鍵,E命令操作結束??梢杂肊命令向內存中寫入字符,比如:用E命令從內存1000:0開始寫入:數值1、字符“a”,數值2,字符“b”,數值3,字符“c”,可以用:“-e 1000:0 1 a 2 b 3 c”修改的結果是,向1000:0、1000:2、1000:4單元中寫入數值1、2、3,向1000:1、1000:3、1000:
6、 5單元中寫入字符“a”、“b”、“c”的ASCII碼值:61H、62H、63H。也可以用E命令向內存中寫入字符串,比如:用E命令從內存1000:0開始寫入:數值1、字符串“a+b”、數值2、字符串“c+”、字符3、字符串“IBM”。 可以用:-e 1000:0 1 “a+b” 2 “c+” 3 “IBM” 。可以用E命令向內存中寫入機器碼比如要從內存1000:0單元開始寫入這樣一段機器碼:機器碼 對應的匯編指令b80100 mov ax,0001b90200 mov cx,000201c8 add ax, cx可用:”-e 1000:0 b8 01 00 b9 02 00 01 c8”(7)
7、 用U命令查看寫入的或內存中原有的機器碼所對應的匯編指令1)-U 段地址:偏移地址該命令從指定地址開始,反匯編32個字節(jié),若地址省略,則從上一個U命令的最后一條指令的下一個單元開始顯示32個字節(jié)。2)-U地址范圍該命令對指定范圍的內存單元進行反匯編 (8) 使用T命令,可以執(zhí)行CS:IP指向的指令,格式:-t,指令執(zhí)行后,Debug顯示輸出CPU中寄存器的狀態(tài)。(9)用Debug的A命令以匯編指令的形式在內存中寫入機器指令。格式:-A 段地址:偏移地址該命令從指定地址開始允許輸入匯編語句,把它們匯編成機器代碼相繼存放在從指定地址開始的存儲器中。三.實驗任務(1)使用Debug,將下面的程序段寫
8、入內存,逐條執(zhí)行,觀察每條指令執(zhí)行后,CPU中相關寄存器中內容的變化。(逐條執(zhí)行,每條指令執(zhí)行結果截圖)機器碼 匯編指令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
9、提示:可用E命令和A命令以兩種方式將指令寫入內存。注意用T命令執(zhí)行時,CS:IP的指向。(2) 將下面3條指令寫入從2000:0開始的內存單元中,利用這3條指令計算2的8次方。mov ax,1add ax,axjmp 2000:0003(3)查看內存中的內容PC機主板上的ROM中寫有一個生產日期,在內存FFF00HFFFFFH的某幾個單元中,請找到這個生產日期并試圖改變它。(內存ffff:0005ffff:000C(共8個字節(jié)單元中)處)【下篇】用機器指令和匯編指令編程一實驗內容1.預備知識:Debug命令的補充(1)在D命令中使用段寄存器格式:“d 段寄存器:偏移地址”,以段寄存器中的數據為
10、段地址SA,列出從SA:偏移地址開始的內存區(qū)間中的數據。以下是4個例子:-r ds:1000-d ds:0 ;查看從1000:0開始的內存區(qū)間中的內容-r ds:1000-d ds:10 18 ;查看1000:101000:18中的內容-d cs:0 ;查看當前代碼段中的指令代碼-d ss:0 ;查看當前棧段中的內容(2)在E、A、U命令中使用段寄存器在E、A、U這些可以帶有內存單元地址的命令中,也可以同D命令一樣,用段寄存器表示內存單元的段地址。以下是3個例子:-r ds:1000-e ds:0 11 22 33 44 55 66 ;在從1000:0開始的內存區(qū)間中寫入數據-u cs:0 ;
11、以匯編指令的形式,顯示當前代碼段中的代碼,0代碼的偏移地址-r ds:1000-a ds:0 ;以匯編指令的形式,向從1000:0開始的內存單元中寫入指令(3)下一條指令執(zhí)行了嗎? 在Debug中,用A命令寫一段程序:mov ax,2000mov ss,axmov sp,10 ;安排2000:00002000:000F 為??臻g,初始化棧頂。mov ax,3123 push axmov ax,3366push ax ;在棧中壓入兩個數據。在用T命令單步執(zhí)行mov ax,2000后,顯示出當前CPU各個寄存器的狀態(tài)和下一步要執(zhí)行的指令:mov ss,ax;在用T命令單步執(zhí)行mov ss,ax后,
12、下一條指令應該是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í)行結果。而能夠將sp設為0010的只有指令mov sp,10,看來,mov sp,10一定是得到了執(zhí)行。在用T命令執(zhí)行mov ss,ax的時候,它的下一條指令mov sp,10也緊接著執(zhí)行了。整理一下我們分析的結果:在用T命令執(zhí)行mov ss,ax的時候,它的下一條指令mov sp,10也緊接著執(zhí)行了。一般情況下,用T命令執(zhí)行一條指令后,
13、會停止繼續(xù)執(zhí)行,顯示出當前CPU各個寄存器的狀態(tài)和下一步要執(zhí)行的指令,但T命令執(zhí)行mov ss,ax的時候,沒有做到這一點。不單是mov ss,ax,對于如:mov ss,bx,mov ss,0,pop ss等指令都會發(fā)生上面的情況,這些指令有哪些共性呢?它們都是修改棧段寄存器SS的指令。結論:Debug的T命令在執(zhí)行修改寄存器SS的指令時,下一條指令也緊接著被執(zhí)行。二實驗任務(1)使用Debug,將上面的程序段寫入內存,逐條執(zhí)行,根據指令執(zhí)行后的實際運行情況填空。(逐條執(zhí)行,每條指令執(zhí)行結果截圖)mov ax,ffffmov ds,axmov ax,2200mov ss,axmov sp,0
14、100mov ax,0 ;ax= c0ea add ax,2;ax= c0fc mov bx,4 ;bx= 30f0 add bx,6;bx= 6021 push ax ;sp= 00fe ;修改的內存單元的地址是 2200:00fe 內容為 c0fc push bx ;sp= 00fc ;修改的內存單元的地址是 2200:00fc 內容為 6021 pop ax ;sp= 00fe ;ax= 6021 pop bx ;sp= 0100 ;bx= c0fc push 4;sp= 00fe ;修改的內存單元的地址是 ffff:0100 內容為 6021 push 6 ;sp= 00fc ;修改的內存單元的地址是 ffff:0110 內容為 c0fc (2)使用Debug,將下面的程序段寫入內存,逐條執(zhí)行,觀察每條指令執(zhí)行后,CPU中相關寄存器中內容的變化。(逐條執(zhí)行,每條指令執(zhí)行結果截圖) 如果有問題請說明原因匯編指令mov ax,1000Hmov ds,axmov ds,0add ds,axadd不可以對段寄存器進行
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 體育部筆試題及答案
- 中醫(yī)編制考試試題及答案
- 2025年商務英語考試指南試題及答案
- 醫(yī)學財務面試題及答案
- 公平與效率在創(chuàng)業(yè)扶持政策中的體現試題及答案
- 2025年互助學習土木考試試題及答案
- 中國蜂蠟行業(yè)發(fā)展趨勢與投資戰(zhàn)略研究報告2025-2028版
- 土木工程師考試復習指南2025年試題及答案
- 2025年家具行業(yè)的用戶體驗趨勢考核試題及答案
- 中國窗簾窗飾行業(yè)市場發(fā)展現狀及前景趨勢與投資分析研究報告2025-2028版
- 2024年四川省公務員錄用考試《行測》真題及答案解析
- 2025年湖北省高考數學模擬試卷(附答案解析)
- 電商平臺合規(guī)管理制度分析
- 2024-2025學年六年級上冊數學人教版期中考試試題(1-4單元)(含答案)
- 浙江省寧波市鎮(zhèn)海中學高三下學期適應性測試數學試卷2
- 數智化轉型背景下國企財務管理體系的優(yōu)化分析
- 中級會計實務《速記手冊》
- Unit 7單元話題寫作“中國傳統節(jié)日”五年級下冊譯林版三起
- 憲法與法律學習通超星期末考試答案章節(jié)答案2024年
- 2024年丟失物品索償協議書模板
- 部門級安全培訓試題及答案可打印
評論
0/150
提交評論