国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
調試程序DEBUG

調試程序DEBUG的特點:

在受控環(huán)境中測試程序;
       裝入,顯示或修改任何文件;
       執(zhí)行DOS程序;
       完成磁盤實際讀/寫操作;
       建立或匯編匯編語言程序。
DEBUG的命令格式:
[drive:][path] DEBUG [d:][p][filename][.ext][param...]

其中:

drive: 是指定DEBUG文件的磁盤驅動器標識符,DEBUG是外部DOS命令,所以必須把它從磁盤讀入內存。若未指定,DOS將使用當前默認磁盤驅動器。
path: 是DOS查找DEBUG文件的一個子目錄串表示的路徑。若未指定,DOS將使用當前工作目錄。

d: 是DEBUG將要調試的文件所在的磁盤驅動器。

p: 是查找DEBUG將要調試的文件所需的子目錄路徑,若未指定,DOS使用當前目錄。

filename[.ext] 是DEBUG將要調試的文件名。

param 是將被調試的程序(或文件)的命令行參數。

附:

    DEBUG所完成的初始化動作,假定文件名沒有,啟動DEBUG:

段寄存器CS、DS、ES和SS置為DEBUG程序后的第一個段。
指令指針寄存器IP置為100H(程序段前綴PSP后的第一個語句)。
堆棧指針SP置為段末或COMMAND.COM暫駐部分的結束地址(其中較小的那個地址)。
其余通用寄存器均置為0,標志寄存器置為下述狀態(tài)。
    NV    UP    EI    PL    NE    NA    PO    NC
    如果DEBUG命令行含有文件名,段寄存器DS和ES指向PSP。寄存器BX和CX含有程序長度。

DEBUG使用單字符命令:
命令 格式 命令 格式
匯編 A [地址] 命名 N [設備:][路徑]文件名[.擴展名]
比較 C [范圍] 輸出 O 口地址
轉出 D [范圍]或[地址] 繼續(xù)執(zhí)行 P [=地址][值]
鍵入 E 地址[表] 退出 Q
填入 F 范圍表 寄存器 R [寄存器]
執(zhí)行 G [=地址][地址[地址...]] 搜索 S 范圍表
十六進制 H 值 值 跟蹤 T [=地址]或[范圍]
輸入 I 口地址 反匯編 U [地址]或[范圍]
裝入 L [地址][設備扇區(qū),扇區(qū)]] 寫 W [地址[設備扇區(qū),扇區(qū)]]
移動 M 范圍 地址    

這些DEBUG命令主要參考清華大學計算機系列教材《IBM-C匯編語言程序設計》一書。

☆ 顯示存儲單元的命令D(DEBUG),格式為:

      - D[address]或
      - D[range]


例如,按指定范圍顯示存儲單元內容的方法為:     -D 100 120
    067C:0100 C7 D7 0D 0A 32 33 33 34 - D5 C5 B4 C6 30 10 42 0C    ....2334....0.B.
    067C:0110 03 41 42 43 44 45 46 47 - 48 49 4A 4B 4C 4D 4E 4F    .ABCDEFGHIJKLMNO
    067C:0120 8B

    其中0100至0120是DEBUG顯示的單元內容。 左邊用十六進制表示每個字節(jié),右邊用ASCII字符表示每個字節(jié),“.”表示不可顯示的字符。這里沒有指定段地址, D命令自動顯示DS段的內容。如果只指定首地址,則顯示從首地址開始的80個字節(jié)的內容。如果完全沒有指定地址,則顯示上一個D命令的最后一個單元的內容。
    這里順便提一下存儲器及其地址的分段。

    計算機存儲信息的基本單位是一個二進制位,一位可存儲一個二進制數:0或1。每8位組成一個字節(jié),位編號如下所示:

7 6 5 4 3 2 1 0


    正當MS-DOS盛行的時候,PC機的字長為16位,由2個字節(jié)組成,位編號如下所示:

字 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
                               
字節(jié) 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
高位字節(jié) MSB 低位字節(jié) LSB

    在存儲器里以字節(jié)為單位存儲信息。為了正確地存放或取得信息,每一個字節(jié)單元給以一個存儲器地址。地址從0開始編號,順序地每次加1。在機器里,地址也是用二進制數來表示的。它是無符號整數,書寫格式為十六進制。

    16位二進制可以表示2的16次方個字節(jié)單元的地址,它可表示的地址范圍應該是0-65535。為方便,存儲器的容量以2的10次方=1024為基本單位,稱為1K。這樣,65536個字節(jié)單元的存儲容量就是64K,其地址編號的范圍用16進制數表示為0-FFFFH。如下所示。

0000,0001,0002,……,……,……0009,000A,000B,000C,000D,000E,000F,
0010,0011,0012,……,……,……0019,001A,001B,001C,001D,001E,001F,
0020,0021,0022,……,……,……0029,002A,002B,002C,002D,002E,002F,
……

……

FFE0,FFE1,FFE2,……,……,……FFE9,FFEA,FFEB,FFEC,FFED,FFEE,FFEF,
FFF0,FFF1,FFF2,……,……,……FFF9,FFFA,FFFB,FFFC,FFFD,FFFE,FFFF。


    一個字存入存儲器要占有相繼的二個字節(jié),存放時,低位字節(jié)存入低地址,高位字節(jié)存入高地址,以相反的次序存入的。

    存儲器的特點:它的內容是取之不盡的。從某個單元取出其內容后,該單元仍然保存著原來的內容不變,可以重復取出,只有存入新的信息之后,原來保存的內容自動丟失。

存儲器地址的分段:

    前面已經提到16位字長的機器可以訪問最大存儲空間為64K字節(jié),而PC機的最大存儲容量為1M(原MS-DOS操作系統(tǒng)下)。要訪問1M字節(jié)空間的存儲器必須有20位地址,用16進制數表示1M字節(jié)的地址范圍應該為00000-FFFFF。

    在1M字節(jié)的存儲器里,每一個存儲單元都有一個唯一的20位地址,稱為該存儲單元的物理地址。CPU訪問存儲器時,必須先確定所要訪問的存儲單元的物理地址才能取得(或存入)該單元的內容。20位物理地址由16位段地址和16位偏移地址組成,段地址是指每一段的起始地址,由于它必須是小段的首地址,所以其低4位一定是0,這樣就可以規(guī)定段地址只取段起始地址的高16位值。偏移地址則是指在段內相對于段起始地址的偏移值。這樣,物理地址的計算方法如下:

    把段地址左移4位再加上偏移地址值就形成物理地址。或寫成: 16dX段地址+偏移地址=物理地址

    每個存儲單元只有唯一的物理地址,但它卻可由不同的段地址和不同的偏移地址組成。

    在PC機中,有四個專門存放段地址的寄存器,稱為段寄存器。它們是代碼段CS(Code Segment)、數據段DS(Data Segment)、堆棧段SS(Stack Segment)和附加段ES(Extra Segment)寄存器。每個段寄存器可以確定一個段的起始地址,而這些段則各有各的用途。代碼段是存放當前正在運行的程序。數據段存放當前運行程序所用的數據,如果程序中使用了串處理指令,則其源操作數也存放在數據段中。堆棧段定義了堆棧的所在區(qū)域,堆棧是一種數據結構,它是一個比較特殊的數據段。附加段是附加的數據段,它是一個輔助的數據區(qū),也是串處理指令的目的操作數存放區(qū)。還有四個通用數據寄存器AX、BX、CX、DX;四個指針及變址寄存器SP、BP、SI、DI;控制寄存器包括IP(指令指針寄存器)和PSW程序狀態(tài)字寄存器。這些將專門開辟一頁詳加介紹。

☆   修改存儲單元內容的命令有兩種

輸入命令E(Enter),有兩種格式如下:
    第一種格式可以用給定的內容表來替代指定范圍的存儲單元內容。命令格式為:

    -E address [list]

    例如,-E DS:100   F3‘XYZ‘8D

    其中F3,‘X’,‘Y’,‘Z’和8D各占一個字節(jié),該命令可以用這五個字節(jié)來替代存儲單元DS:0100到0104的原先的內容。

    第二種格式則是采用逐個單元相繼修改的方法。命令格式為:

    -E address

    例如,-E CS:100

    則可能顯示為:

    18E4:0100   89. -

    如果需要把該單元的內容修改為78,則可以直接鍵入78,再按空格鍵可接著顯示下一個單元的內容,這樣可以不斷修改相繼單元的內容,直到Enter鍵結束該命令為止。

填寫命令F(Fill),其格式為:
    -F range   list

    例如,-F 4BA:0100   5 F3‘XYZ‘8D

    使04BA:0100-0104單元包含指定的五個字節(jié)的內容。如果list中的字節(jié)數超過指定的范圍,則忽略超過的項;如果list的字節(jié)數小于指定范圍,則重復使用list填入,直到填滿指定的所有單元為止。

☆   檢查和修改寄存器內容的命令R(Register),它有三種格式如下:

顯示CPU內所有寄存器內容和標志位狀態(tài),其格式為:
    -R

    例如,

    -r

    AX=0000 BX=0000 CX=010A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
    DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100     NV UP DI PL NZ NA PO NC
    18E4:0100 C70604023801    MOV    WORD PTR[0204],0138    DS:0204=0000

    其中標志位狀態(tài)的含義可見下表:

標 志 名 標志為1 標志為0
OF

DF

IF

SF

ZF

AF

PF

CF
溢出(是/否)
方向(減量/增量)

中斷(允許/關閉)

符號(負/正)

零(是/否)

輔助進位(是/否)

奇偶(偶/奇)

進位(是/否
OV
DN

EI

NG

ZR

AC

PE

CY
NV
UP

DI

PL

NZ

NA

PO

NC

顯示和修改某個寄存器內容,其格式為:
    -R register name

    例如,鍵入

    -r ax

    系統(tǒng)將響應如下:

    AX F1F4
   :

    即AX寄存器的當前內容為F1F4,如不修改則按Enter鍵,否則,鍵入欲修改的內容如:

    -r bx
    BX 0369
    :059F

    則把BX寄存器的當前內容修改為059F。

顯示和修改標志位狀態(tài),命令格式為:
    -RF

    系統(tǒng)將響應,如:

    OV DN EI NG ZR AC PE CY -

    此時如不修改其內容可按Enter鍵,否則,建入欲修改的內容,如:

    OV DN EI NG ZR AC PE CY - PONZDINV

    即可,鍵入的順序是任意的。

☆   運行命令G(Go),其格式為:

    -G [=address1][address2[address3 ...]]

    其中,地址1指定了運行的起始地址,如不指定則從當前的CS:IP開始運行。后面的地址均為斷點地址,當指令執(zhí)行到斷點時,就停止執(zhí)行并顯示當前所有寄存器及標志位的內容,和下一條將要執(zhí)行的指令。

☆   跟蹤命令T(Trace),有兩種格式:

逐條指令跟蹤
    -T[=address]

    從指定地址起執(zhí)行一條指令后停下來,顯示所有寄存器內空及標志位的值。如未指定則從當前的CS:IP開始執(zhí)行。

多要指令跟蹤
    -T[=address][value]

    從指定地址起執(zhí)行n條指令后停下來,n由value指定。

☆   匯編命令A(Assemble),其格式為:

    -A [address]

    該命令允許鍵入匯編語言語句,并能把它們匯編成機器代碼,相繼地存放在從指定地址開始的存儲區(qū)中。必須注意:DEBUG把鍵入的數字均看成十六進制數,所以如要鍵入十進制數,則其后應加以說明,如100D。

☆   反匯編命令U(Unassemble),有兩種格式:

從指定地址開始,反匯編32個字節(jié),其格式為:
    -U[range]

    例如:

    -u 100

    18E4:0100   C70604023801    MOV    WORD PTR[0204],0138
    18E4:0106   C70606020002    MOV    WORD PTR[0206],0200
    18E4:010C   C70608020202    MOV    WORD PTR[0208],0202
    18E4:0112   BB0402          MOV    BX,0204
    18E4:0115   E80200          CALL    011A
    18E4:0118   CD20            INT    20
    18E4:011A   50              PUSH    AX
    18E4:011B   51              PUSH    CX
    18E4:011C   56              PUSH    SI
    18E4:011D   57              PUSH    DI
    18E4:011E   8B37            MOV    SI,[BX]

    如果地址被省略則從上一個U命令的最后一條指令的下一個單元開始顯示32個字節(jié)。

對指定范圍內的存儲單元進行反匯編,格式為:
    -U[range]

例如:

    -u 100 10C

    18E4:0100   C70604023801    MOV    WORD PTR[0204],0138
    18E4:0106   C70606020002    MOV    WORD PTR[0206],0200
    18E4:010C   C70608020202    MOV    WORD PTR[0208],0202

    -u 100 112

    18E4:0100   C70604023801    MOV    WORD PTR[0204],0138
    18E4:0106   C70606020002    MOV    WORD PTR[0206],0200
    18E4:010C   C70608020202    MOV    WORD PTR[0208],0202

這兩種格式是等效的。

☆   命名命令N(Name),其格式為:

    -N filespecs [filespecs]

    命令把兩個文件標識符格式化在CS:5CH和CS:6CH的兩個文件控制塊中,以便在其后用L或W命令把文件裝入或存盤。filespecs的格式可以是:

    [d:][path] filename[.ext]

例如:

    -N myprog

    -L

    -

    可把文件myprog裝入存儲器。

☆   裝入命令L(Load),有兩種功能:

把磁盤上指定扇區(qū)范圍的內容裝入到存儲器從指定地址開始的區(qū)域中。其格式為:
-L[address [drive sector sector]]

裝入指定文件,其格式為:
-L[address]

    此命令裝入已在CS:5CH中格式化了的文件控制塊所指定的文件。如未指定地址,則裝入CS:0100開始的存儲區(qū)中。

☆   寫命令W(Write),有兩種功能:

把數據寫入磁盤的指定扇區(qū)。其格式為:
-W address drive sector sector

把數據寫入指定的文件中。其格式為:
-W [address]

    此命令把指定的存儲區(qū)中的數據寫入由CS:5CH處的文件控制塊所指定的文件中。如未指定地址則數據從CS:0100開始。要寫入文件的字節(jié)數應先放入BX和CX中。

☆   退出DEBUG命令Q(Quit),其格式為:

-Q

它退出DEBUG,返回DOS。本命令無存盤功能,如需存盤應先使用W命令。

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
系統(tǒng)集10
MASM調試程序使用步驟 及 DEBUG及其常用命令
Debug的使用
計算機原理學習(3)--內存工作原理
8086CPU常見匯編指令、debug命令
debug命令
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服