導航:首頁 > 程序命令 > 匯編語言debugg命令

匯編語言debugg命令

發布時間:2024-10-24 03:03:08

Ⅰ 請問在DOS環境下編譯程序時,即執行debug命令的程序編譯時,輸入錯誤了,應該如何撤銷不再提示error

DEBUG是常用的匯編語言級調試工具,為匯編語言程序員提供了分析指令、跟蹤程序的有效手段

如何進入Debug程序?
答:在命令提示符下輸入「debug」回車即可

懂得匯編的朋友,相信看懂下面命令是沒多大問題的。

常用命令:
-A 匯編 格式:A 起始地址
例如:輸入「A」,回車,然後輸入「MOV AX,10」回車。再按一次回車,則退出匯編狀態。

-U 反匯編 格式:U 起始地址 結束地址
例如:接上面,輸入「U」,回車,即可看到結果。

以下不再舉例,類似上面,有待自己研究,這樣記得更牢。謝謝!

-T 單步執行 格式:T 起始地址 運行指令數
-G 斷點執行 格式:G 起始地址 斷點地址 結束地址
-D 數據顯示 格式: D 起始地址 結束地址
-R 顯示修改寄存器
格式:R 寄存器名
-P 單步執行,不進入中斷
格式:T 起始地址 運行指令數
-F 連續填入內存內容
格式:起始地址 結束地址 要填入的數值系列
-E 單個修改內存內容
格式: E 地址 填入內容
-Q 退出debug狀態
格式: Q 回車

不常用命令:
-M 內存搬家指令:
格式:M 起始地址 結束地址 目的地址
-H 16進制加法:
格式:H 操作數1 操作數2
結果顯示:加法結果 減法結果

Ⅱ 匯編語言中,p命令和t命令有什麼區別

在匯編語言程序調試的DEBUG環境中,有三個執行指令的命令:
.
T命令:單步執行,每次只執行一條代碼語句,遇到子程序後進入子程序逐條執行指令;
.
P命令:類似T命令,若有子程序,直接執行完子程序全部指令而不是逐條執行指令,在遇到循環指令時,會直接執行至CX遞減至0;
.
G命令:多步執行,可以跟地址和斷點,即格式為 G[=address] [breakpoints],運行到[breakpoints]指定位置的指令後暫停,若不加參數則從當前IP運行到程序結束。

Ⅲ debug命令有什麼作用如何使用

DEBUG是為匯編語言設計的一種高度工具,它通過單步、設置斷點等方式為匯編語言程序員提供了非常有效的調試手段。x0dx0a一、DEBUG程序的調用x0dx0a 在DOS的提示符下,可鍵入命令:x0dx0a C:\DEBUG [D:][PATH][FILENAME[.EXT]][PARM1][PARM2]x0dx0a 其中,文件名是被調試文件的名字。如用戶鍵入文件,則DEBUG將指定的文件裝入存儲器中,用戶可對其進行調試。如果未鍵入文件名,則用戶可以用當前存儲器的內容工作,或者用DEBUG命令N和L把需要的文件裝入存儲器後再進行調試。命令中的D指定驅動器PATH為路徑,PARM1和PARM2則為運行被調試文件時所需要的命令參數。x0dx0a 在DEBUG程序調入後,將出現提示符,此時就可用DEBUG命令來調試程序。x0dx0a二、DEBUG的主要命令x0dx0a 1、顯示存儲單元的命令D(DUMP),格式為:x0dx0a _D[address]或_D[range]x0dx0a 例如,按指定范圍顯示存儲單元內容的方法為:x0dx0a -d100 120x0dx0a18E4:0100 c7 06 04 02 38 01 c7 06-06 02 00 02 c7 06 08 02 G...8.G.....G...x0dx0a18E$:0110 02 02 bb 04 02 e8 02 00-CD 20 50 51 56 57 8B 37 ..;..h..M PQVW.x0dx0a 7x0dx0a18E4:0120 8Bx0dx0a 其中0100至0120是DEBUG顯示的單元內容,左邊用十六進製表示每個位元組,右邊用ASCII字元表示每個位元組,·表示不可顯示的字元。這里沒有指定段地址,D命令自動顯示DS段的內容。如果只指定首地址,則顯示從首地址開始的80個位元組的內容。如果完全沒有指定地址,則顯示上一個D命令顯示的最後一個單元後的內容。x0dx0a2、修改存儲單元內容的命令有兩種。x0dx0a ·輸入命令E(ENTER),有兩種格式如下:第一種格式可以用給定的內容表來替代指定范圍的存儲單元內容。命令格式為:x0dx0a -E address[list]x0dx0a例如,-E DS:100 F3'XYZƎDx0dx0a 其中F3,'X','Y','Z'和各佔一個位元組,該命令可以用這五個位元組來替代存儲單元DS:0100到0104的原先的內容。x0dx0a 第二種格式則是採用逐個單元相繼修改的方法。命令格式為:x0dx0a -E addressx0dx0a例如,-E DS:100x0dx0a 則可能顯示為:x0dx0a 18E4:0100 89.-x0dx0a 如果需要把該單元的內容修改為78,則用戶可以直接鍵入78,再按「空格」鍵可接著顯示下一個單元的內容,如下:x0dx0a 18E4:0100 89.78 1B.-x0dx0a 這樣,用戶可以不斷修改相繼單元的內容,直到用ENTER鍵結束該命令為止。x0dx0a ·填寫命令F(FILL),其格式為:x0dx0a -F range listx0dx0a例如:-F 4BA:0100 5 F3'XYZƎDx0dx0a 使04BA:0100~0104單元包含指定的五個位元組的內容。如果list中的位元組數超過指定的范圍,則忽略超過的項;如果list的位元組數小於指定的范圍,則重復使用list填入,直到填滿指定的所有單元為止。x0dx0a3)檢查和修改寄存器內容的命令R(register),它有三種格式如下:x0dx0a ·顯示CPU內所有寄存器內容和標志位狀態,其格式為:x0dx0a -Rx0dx0a例如,-rx0dx0a AX=0000 BX=0000 CX=010A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000x0dx0a DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PO NCx0dx0a 18E4:0100 C70604023801 MOV WORD PTR [0204],0138 DS:0204=0000x0dx0a ·顯示和修改某個寄存器內容,其格式為:x0dx0a -R register namex0dx0a例如,鍵入x0dx0a -R AXx0dx0a 系統將響應如下:x0dx0a AX F1F4x0dx0a :x0dx0a即AX寄存器的當前內容為F1F4,如不修改則按ENTER鍵,否則,可鍵入欲修改的內容,如:x0dx0ax0dx0a -R bxx0dx0a BX 0369x0dx0a :059Fx0dx0a則把BX寄存器的內容修改為059F。x0dx0a ·顯示和修改標志位狀態,命令格式為:x0dx0a -RF系統將響應,如:x0dx0a OV DN EI NG ZR AC PE CY-x0dx0a 此時,如不修改其內容可按ENTER鍵,否則,可鍵入欲修改的內容,如:x0dx0a OV DN EI NG ZR AC PE CY-PONZDINVx0dx0a 即可,可見鍵入的順序可以是任意的。x0dx0a4)運行命令G,其格式為:x0dx0a -G[=address1][address2[address3?]]x0dx0a 其中,地址1指定了運行的起始地址,如不指定則從當前的CS:IP開始運行。後面的地址均為斷點地址,當指令執行到斷點時,就停止執行並顯示當前所有寄存器及標志位的內容,和下一條將要執行的指令。x0dx0a5)跟蹤命令T(Trace),有兩種格式:x0dx0a ·逐條指令跟蹤x0dx0a -T [=address]x0dx0a 從指定地址起執行一條指令後停下來,顯示所有寄存器內容及標志位的值。如未指定地址則從當前的CS:IP開始執行。x0dx0a ·多條指令跟蹤x0dx0a -T [=address][value]x0dx0a 從指定地址起執行n條指令後停下來,n由value指定。x0dx0a6)匯編命令A(Assemble),其格式為:x0dx0a -A[address]x0dx0a 該命令允許鍵入匯編語言語句,並能把它們匯編成機器代碼,相繼地存放在從指定地址開始的存儲區中。必須注意:DEBUG把鍵入的數字均看成十六進制數,所以如要鍵入十進制數,則其後應加以說明,如100D。x0dx0a7)反匯編命令U(Unassemble)有兩種格式。x0dx0a ·從指定地址開始,反匯編32個位元組,其格式為:x0dx0a -U[address]x0dx0a例如:x0dx0a -u100x0dx0a 18E4:0100 C70604023801 MOV WORD PTR[0204],0138x0dx0a 18E4:0106 C70606020002 MOV WORD PTR[0206],0200x0dx0a 18E4:010C C70606020202 MOV WORD PTR[0208],0202x0dx0a 18E4:0112 BBO4O2 MOV BX,0204x0dx0a 18E4:0115 E80200 CALL 011Ax0dx0a 18E4:0118 CD20 INT 20x0dx0a 18E4:011A 50 PUSH AXx0dx0a 18E4:011B 51 PUSH CXx0dx0a 18E4:011C 56 PUSH SIx0dx0a 18E4:011D 57 PUSH DIx0dx0a 18E4:011E 8B37 MOV SI,[BX]x0dx0a如果地址被省略,則從上一個U命令的最後一條指令的下一個單元開始顯示32個位元組。x0dx0a ·對指定范圍內的存儲單元進行反匯編,格式為:x0dx0a -U[range]x0dx0a例如:x0dx0a -u100 10cx0dx0a 18E4:0100 C70604023801 MOV WORD PTR[0204],0138x0dx0a 18E4:0106 C70606020002 MOV WORD PTR[0206],0200x0dx0a 18E4:010C C70606020202 MOV WORD PTR[0208],0202x0dx0a或x0dx0a -u100 112 x0dx0a 18E4:0100 C70604023801 MOV WORD PTR[0204],0138x0dx0a 18E4:0106 C70606020002 MOV WORD PTR[0206],0200x0dx0a 18E4:010C C70606020202 MOV WORD PTR[0208],0202x0dx0ax0dx0a 可見這兩種格式是等效的。x0dx0a8)命名命令N(Name),其格式為:x0dx0a -N filespecs [filespecs]x0dx0a命令把兩個文件標識符格式化在CS:5CH和CS:6CH的兩個文件控制塊中,以便在其後用L或W命令把文件裝入存檔。filespecs的格式可以是:x0dx0a[d:][path] filename[.ext]x0dx0a例如,x0dx0a -N myprogx0dx0a -Lx0dx0a -x0dx0a可把文件myprog裝入存儲器。x0dx0a9)裝入命令(Load),有兩種功能。x0dx0a ·把磁碟上指定扇區范圍的內容裝入到存儲器從指定地址開始的區域中。其格式為:x0dx0a -L[address[drive sector sector]x0dx0a ·裝入指定文件,其格式為:x0dx0a -L[address]x0dx0a此命令裝入已在CS:5CH中格式化了文件控制塊所指定的文件。如未指定地址,則裝入CS:0100開始的存儲區中。x0dx0a10)寫命令W(Write),有兩種功能。x0dx0a ·把數據寫入磁碟的指定扇區。其格式為:x0dx0a -W address drive sector sectorx0dx0a ·把數據寫入指定的文件中。其格式為:x0dx0a -W[address]x0dx0a此命令把指定的存儲區中的數據寫入由CS:5CH處的文件控制塊所指定的文件中。如未指定地址則數據從CS:0100開始。要寫入文件的位元組數應先放入BX和CX中。x0dx0a11)退出DEBUG命令Q(Quit),其格式為:x0dx0a -Qx0dx0a它退出DEBUG,返回DOS。本命令並無存檔功能,如需存檔應先使用W命令。

Ⅳ 簡述DEBUG中A.R.D.Q.G命令的功能。thanks

* A[地址] 匯編命令
功能: 將指令直接匯編成機器碼輸入到內存中。
說明: 用於小段程序的匯編及修改目標程序,所有輸入的數字均採用十六進制, 用戶裝入內存的匯編語句是連續存放的,若沒有指定地址,並且前面沒有使用匯編命令,該語句被匯編到 CS:0100區域。
例A:>DEBUG
-a 0100
08F1:0100 MOV AH,09
08F1:0102 MOV DX,109
08F1:0105 INT 21H;
08F1:0107 INT 21H;<-XP下運行cmd debug時,應該是INT 20H,21H會出遇無效指令錯誤
08F1:0109 db 'May I help you $'
08F1:0115←離開a狀態
-g ←運行
May I help you 運行結果
Program terminated normally表示運行正常

* D[地址] 或D[起始地址][目的地址] 轉儲命令
功能: 以內存映象方式顯示內存中的信息。
說明: 轉儲用左右兩部分顯示內存映象內容,左邊以十六進制,右邊以ASCⅡ字元顯示,所有不可列印字元用句號(。)表示。每行顯示16個位元組的內容,在第八和第九個位元組之間有一個連字元 - 此命令隱含的段地址為DS的值。若未指定起始地址,則D命令從顯示的最後一個單元的下一個單元開始顯示,若以前沒有使用給D命令, 則從初使化的段寄存器的內容,加上地址偏移量 0100H 開始顯示。
例:-d10,4f即為顯示DS:4f的內容在D命令中如不指出段地址,則其默認為DS段。
如指明段地址,則從指明的段地址列出指定的范圍
如:-dfff:00:0f
我們也可以指定長度來列出所需要內存內容
如:-d 100 L20即為顯示由DS:100-DS:11F的內容,共20H個位元組:

* G[=起始地址] [[斷點]……] 執行命令
功能: 執行正在調試的程序,當達到斷點時停止執行, 並且顯示寄存器標志和下一條要執行的命令。
說明: 如果沒有指定起始地址,那麼當前指令地址由CS,IP寄存器的內容來決定,如果用戶指定起始地址就從指定的起始地址開始執行。如果指定斷點,當指令到達指令地址時停止執行,並顯示各寄存器標志位的內容和下一條要執行的命令,最多允許用戶設定10個斷點。
例:A:\>debug tan.exe
-u:反編譯成匯編語言程碼
…………
. .
-g 100 指定中斷點
Program terminated normally:
另外:我們在DEBUG下可運行一個文件.EXE
如:A:\>debug tan.exe
-g
即可開始運行此程序,和在DOS下完全一樣:
* H[數值][數值] 十六進制算術運算命令
功能: 分別顯示兩個十六進制數相加的和以及第一個數減去第二個數的差。
說明: 替用戶完成簡單的十六進制數的運算。
例:-h4538 5623
9B5B EF15

* Q 退出命令。
* R[寄存器] 寄存器命令
功能: 一,顯示單個寄存器的內容,並提供修改功能。二,顯示所有寄存器內容, 再加上字母標志位狀態以及要執行的下一條指令。三,顯示8個標志位狀態, 並提供修改功能。若不想改變則回車即可。
例:-r bx
bx 0050
:51
-r
AX=0000 BX=0051 CX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0003 ES=0CD3 SS=0CD3 IP=0100 NV UP EI PL NZ NA PO NC
0CD3:0100 0F DB OF
若想改變標志寄存器,用-RF回車,則DEBUG會將標志內容顯示出來,若想改變任一標志,只要輸入該標志的名稱即可。
標志名稱 設置 未設置 標志名稱 設置 未設置
滋出 OV(溢出) NV(未溢出) 零位 ZR NZ(不等於零)
方向 DN(減少) UP(增加) 輔助進位 AC NA(無進位)
中斷 EI(許可) DI(禁止) 奇偶標志 PE(偶) PO(奇)
符號 NG(負) PL(正) 進位 CY NC(清除進位)
例:-Rf
NV UP EI PL NZ NA PO NC :-OV DI← 輸入值

參考:http://ke..com/link?url=_IbV9ya-Y

Ⅳ 匯編語言中G(空格)5B代表什麼

在debug中調試程序時,g命令是程序運行命令。空格後面跟的數是斷點地址,程序運行到斷點停止。

因此,G 5B 命令作用是: 從當前IP起運行,斷點為005BH

Ⅵ 匯編語言debug 中 G命令怎麼用

1、點擊桌面左下角的【開始】;在搜索欄目中,輸入cmd;在彈出的菜單中,選中cmd,回車。

閱讀全文

與匯編語言debugg命令相關的資料

熱點內容
java的隊列類 瀏覽:357
榮耀手機帶方舟編譯器 瀏覽:496
表達式最小值演算法 瀏覽:601
指南針多空資金源碼 瀏覽:894
菜單上有灰色的命令 瀏覽:120
如何區分原神伺服器 瀏覽:453
php多ip 瀏覽:583
易語言編譯後打開需要dll 瀏覽:301
eos對稱加密技術 瀏覽:16
程序員老公生活 瀏覽:814
mq語言編譯器打不開 瀏覽:378
微信圖片怎麼查看文件夾 瀏覽:764
魔性解壓游戲冒險王者 瀏覽:546
多級壓縮氣體功耗 瀏覽:151
德國大眾空調壓縮機價格 瀏覽:647
伺服器怎麼解決停電問題 瀏覽:673
安卓抖音如何看好友是否在線 瀏覽:443
中國銀行選擇編譯環境 瀏覽:61
3dmax教程pdf 瀏覽:501
手機寫易語言代碼不用編譯 瀏覽:736