<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      匯編調(diào)試命令debug的詳細(xì)用法

      ??在學(xué)習(xí)16位匯編時(shí),debug是常用的調(diào)試工具,但很多基本用法,幫助中并未提及。本文中的基本概念是指命令語(yǔ)法中需要提供給命令的參數(shù),在命令幫助中并未提供任何提示。經(jīng)查資料和試驗(yàn),特記錄如下:

      ??一、基本概念:

      ??DOS5.0之前debug是com格式,從5.0之后就改為exe格式了,本文是指的是DOS6.22中的debug.exe格式。debug可加載exe或com文件,并顯示內(nèi)存中內(nèi)容或變量值,還可以顯示cpu的寄存器值。可以顯示可執(zhí)行文件的機(jī)器碼(匯編的方式),只支持8086/8088(8087)指令,并且可以通過(guò)單步執(zhí)行匯編代碼,檢測(cè)程序的邏輯錯(cuò)誤,并可修改匯編代碼或內(nèi)存數(shù)據(jù)。

      ??如果想更多支持,可使用DR-DOS7.0自帶的debug,可支持到pentium指令級(jí),更多選擇:Microsoft的CodeView、Borland的TurboDebug或Debug32等。

      ??1、命令語(yǔ)法:

      ??dos下輸入:debug 可執(zhí)行文件名稱,然后進(jìn)入命令提示符界面(橫線-),輸入:命令 參數(shù)。

      ??例如:

      ??c:\>debug hello.exe(回車)

      ??-?(回車)  顯示幫助

      ??-r(回車)   顯示cpu寄存器值

      ??

      ??2、參數(shù)分隔符

      ??debug中參數(shù)之間的分隔符可用“空格”或“逗號(hào)”,效果一致,如:

      ??-u 100 110等于-u 100,110

      ??-d 0100:0000 0010等于-d 0100:0000,0010

      ??3、value的表示

      ??無(wú)論是debug的參數(shù)中含有的地址,立即數(shù)或匯編代碼中的數(shù)字,都是十六進(jìn)制,無(wú)需加前綴或后綴,范圍只能是0~4位。

      ??字符需要引號(hào),如:'a'

      ??4、debug命令和代碼不區(qū)分大小寫。

      ??5、地址(address)表示

      ??1)完全地址形式(段地址segment:偏移地址offset):段地址可通過(guò)段寄存器名稱和立即地址表示,如地址可通過(guò)DS:0010和0100:0010兩種方式表示。

      ??2)默認(rèn)段地址形式(偏移地址offset):-d 0100(默認(rèn)段地址是DS)。

      ??3)部分指令,參數(shù)中地址的形式是:=address,這是因?yàn)閰?shù)中可添加多個(gè)數(shù)值參數(shù),為了區(qū)分,其中一個(gè)用=address的方式。如:-g =0003 0008(0003代表開始地址,0008代表斷點(diǎn)偏移地址)

      ??6、range的寫法

      ??參數(shù)range有2種寫法:

      ??1)開始地址和結(jié)束地址,如:

      ??-d 0100:0000 0010(開始地址與結(jié)束地址位于同一個(gè)段,不能跨段)

      ??-d 0000 0010 (起始都是默認(rèn)段地址DS)

      ??2)開始地址和長(zhǎng)度,如:

      ??-d 0100:0000 L 0080(開始地址和長(zhǎng)度,字母L大小寫均可)

      ??7、list的寫法

      ??用分隔符把各項(xiàng)羅列出來(lái),如-f 0100:0110 1f 2f 3f ff(用數(shù)值列表輪流填充)

      ??8、string的表示

      ??'string'或"string"都行,表示一串字符,實(shí)質(zhì)相當(dāng)于字符list

      ??9、路徑path規(guī)范

      ??文件的路徑可寫成完整路徑,如當(dāng)前目錄,可省略路徑

      ??10、加載匯編代碼

      ??可通過(guò)debug < hello.asm的方式加載命令行代碼,就相當(dāng)于手動(dòng)輸入每一行(最后必須有Q命令)。當(dāng)然,debug < hello.asm > output.txt,也可將輸出的信息發(fā)送到文件output.txt。

      ;hello.asm文件
      a 100
      mov ax,5
      mov bx,10
      add ax,bx
      int 20
      (blank line)
      Q

      ??11、Debug初始狀態(tài)

      ??Debug加載時(shí),Dos位于內(nèi)存的最低地址(640K)端,緊接著是Debug,最后是debug載入的程序;

      ??所有段寄存器都設(shè)置成可用內(nèi)存的最低段地址處;

      ??IP設(shè)置成0100h(為psp留空間);

      ??當(dāng)前段的最后256字節(jié)留給棧;

      ??BX:CX的值代表載入程序的長(zhǎng)度(BX代表高字節(jié),CX代表低字節(jié));

      ??Flag寄存器值:NV UP EI PL NZ NA PO NC

      ??二、命令用法:

      ??首先Q命令,-q(回車),退出debug命令。

      ??1、N(指定文件名稱)

      ??語(yǔ)法:n [pathname] [arglist]

      ??pathname指定寫出(W)或載入(L)的文件名稱(包括路徑和文件名),如載入hello.exe。

      ??arglist相當(dāng)于執(zhí)行上述hello執(zhí)行時(shí)需要的參數(shù)(本例沒(méi)有),如dir c:\中c:\就是arglist。debug是需要將程序載入后模擬執(zhí)行的,所以如果執(zhí)行程序所需參數(shù)也要加上。

      ??-N c:\c\hello.exe
      ??-L

      ??也可直接通過(guò)debug c:\c\hello.exe載入。

      ??2、R(寄存器操作)

      ??語(yǔ)法:r [register](r和reg之間的空格可以省略)

      ??R顯示所有寄存器的值,R reg顯示置頂寄存器得值,并可修改其值。reg指16位寄存AX、CS、F(flag寄存器)等,不能操作al,ah非16位寄存器。

      -r(顯示所有寄存器的值)
      -r ax(顯示ax的值,并在冒號(hào):處提示輸入新值,直接回車則表示不修改)
      ax 0000
      :
      -r f(顯示標(biāo)志寄存器的值,并在斷線-處提示輸入新值,直接回車則表示不修改)
      NV UP EI PL NZ NA PO NC  -ZR AC(新值是表示每個(gè)標(biāo)志位的值,順序不限,值個(gè)數(shù)不限)

      ??標(biāo)志位的值對(duì)應(yīng)的代碼如下:

                  標(biāo)志位            設(shè)置1            設(shè)置0
       ---------------          --------------- -------------------
             Overflow   of  =    OV (OVerflow)   NV [No oVerflow]
      
            Direction   df  =    DN (decrement)  UP (increment)
      
            Interrupt   if  =    EI  (enabled)   DI (disabled)
      
                 Sign   sf  =    NG (negative)   PL (positive)
      
                 Zero   zf  =    ZR   [zero]     NZ  [ Not zero]
      
      Auxiliary Carry   af  =    AC              NA  [ No AC ]
      
               Parity   pf  =    PE  (even)      PO  (odd)
      
                Carry   cf  =    CY  [Carry]     NC  [ No Carry]

      ??3、D(顯示塊數(shù)據(jù))

      ??語(yǔ)法:d [range]

      ??不指定range,默認(rèn)當(dāng)前位置開始(一開始是DS:0000),顯示128個(gè)字節(jié)的數(shù)據(jù);可指定range,range語(yǔ)法參考文章開頭。

      -d 0100:0000 0010(結(jié)束地址段地址與開始相同,不能跨段)
      -d 0000 0010 (起始都是默認(rèn)段地址)
      -d 0100:0000 L 0080(開始地址和長(zhǎng)度)

      ??4、E(修改塊數(shù)據(jù))

      ??語(yǔ)法:d address [list]

      ??默認(rèn)段為DS。

      ??如果不指定list就根據(jù)提示(提示顯示的是當(dāng)前地址的原數(shù)據(jù),原點(diǎn)后輸入新數(shù)據(jù)),從指定地址address開始,逐字節(jié)輸入數(shù)據(jù),每輸入一個(gè)字節(jié)按一次空格進(jìn)行下一次輸入。要停止輸入時(shí)直接按回車。

      ??或通過(guò)list,直接指定數(shù)據(jù)(用空格隔開)或字符串(單引號(hào)或雙引號(hào))。

      -d 0(從偏移地址0處,手動(dòng)輸入,原數(shù)據(jù)是0e,圓點(diǎn).后輸入新數(shù)據(jù))
      4dc5:0000 0e.
      -d 0 "hello"(從偏移地址0處,依次數(shù)據(jù)為字符h e l l o)
      -d 0 12 34 56 ef

      ??5、U(反編譯)

      ??語(yǔ)法:d [range]

      ??默認(rèn)段為CS。從指定地址處開始將機(jī)器碼轉(zhuǎn)換成匯編代碼,地址必須是合理的地址(因機(jī)器碼可以看成數(shù)據(jù),也可以看成代碼)。

      4ddd:0000 B8DC4D mov ax,4DDC
      4ddd:0003 8ed8   mov ds,ax
      4ddd:0005 B440   mov ax,40

      ??如上代碼,此處就不能從0002處開始反匯編,雖然也能解析成代碼,但后面的代碼都沒(méi)有意義。

      ??如果range中通過(guò)L指定反編譯的范圍,L后面的數(shù)值是大概指字節(jié)數(shù),為什么是“大概”,因?yàn)橹付ㄩL(zhǎng)度的位置的代碼可能沒(méi)有完全顯示當(dāng)前的指令,需要在向后顯示幾個(gè)字節(jié)。

      ??如上代碼:u 0000 L 4就需要再向后一個(gè)字節(jié),因?yàn)樵撎幍拇a沒(méi)顯示完。

      ??6、A(輸入?yún)R編代碼)

      ??語(yǔ)法:a [address]

      ??默認(rèn)段為CS。

      ??從指定地址address處寫匯編代碼,只支持8086/8088(8087)指令,也支持db,dw兩個(gè)偽指令,最后一行直接回車結(jié)束匯編代碼輸入模式。

      -a 100
      4ddd:1000  mov ax,4ddc
      4ddd:1003  mov ds,ax
      4ddd:1005 (直接回車結(jié)束編輯)
      -
      
      -a 110
      -4ddd:0110 db "hello" (定義數(shù)據(jù))

      ??7、G(輸入?yún)R編代碼)

      ??語(yǔ)法:g [=address]  [addresses]

      ??默認(rèn)段為CS,不指定參數(shù)=address則表示從當(dāng)前位置,不指定參數(shù)addresses則表示執(zhí)行到程序最后。

      ??=address位起點(diǎn)地址,起點(diǎn)位置要是有效的位置(原因如同u指令);addresses為斷點(diǎn)位置,可以指定10個(gè),多個(gè)斷點(diǎn)間用空格分割。不指定斷點(diǎn)則執(zhí)行到程序最后。

      ??因?yàn)?個(gè)都是地址,為了區(qū)分,前一個(gè)加等號(hào)=。

      ??斷點(diǎn)只一次有效,為什么要指定多個(gè)斷點(diǎn)呢,因?yàn)榭赡懿淮_定程序的執(zhí)行方向,多設(shè)置幾個(gè)斷點(diǎn)。

      ??程序執(zhí)行完畢后,再g則退出debug。

      -g =0002 0008 0011
      從0002處執(zhí)行,可在0008或0011處中斷,先執(zhí)行到哪就在哪停止,執(zhí)行完畢后清除斷點(diǎn),下一次g指令時(shí),這些斷點(diǎn)無(wú)效。

      ??8、P(單步或指定步數(shù))

      ??語(yǔ)法:p [=address]  [number]

      ??默認(rèn)段為CS,不指定參數(shù)=address則表示從當(dāng)前位置,不指定參數(shù)number則表示執(zhí)行1步。

      ??=address位起點(diǎn)地址,起點(diǎn)位置要是有效的位置(原因如同u指令);

      ??number是運(yùn)行指令的條數(shù),不指定,默認(rèn)是1條。

      ??p指令遇到子程序或中斷程序,直接運(yùn)行子程序和中斷程序,不進(jìn)入子程序或中斷程序內(nèi)部單步執(zhí)行,相當(dāng)于調(diào)試高級(jí)程序中的Step Over

      ??9、T(單步或指定步數(shù)

      ??語(yǔ)法:t [=address]  [number]

      ??默認(rèn)段為CS,不指定參數(shù)=address則表示從當(dāng)前位置,不指定參數(shù)number則表示執(zhí)行1步

      ??=address位起點(diǎn)地址,起點(diǎn)位置要是有效的位置(原因如同u指令);

      ??number是運(yùn)行指令的條數(shù),不指定,默認(rèn)是1條。

      ??p指令遇到子程序或中斷程序,要單步進(jìn)入子程序和中斷程序內(nèi)部,相當(dāng)于調(diào)試高級(jí)程序中的Step Into

      ??10、M(復(fù)制數(shù)據(jù)塊

      ??語(yǔ)法:m range  address

      ??默認(rèn)段為DS。

      ??復(fù)制range的數(shù)據(jù)到起始點(diǎn)位address的內(nèi)存處。如果range用了段前綴,address的段前綴也需指定,否則range和address可能不在一個(gè)段。

      -m 4ddc:0000 3 5
      這里的range所在段是4ddc,adress所在段為ds。
      -m 4ddc:0000 0003 4ddc:0005
      range和adress在同一個(gè)段

      ??11、S(搜索數(shù)據(jù)塊

      ??語(yǔ)法:s range list

      ??默認(rèn)段為DS。

      ??搜索到了,顯示搜索到的地址,多處顯示多處地址。

      兩種range的寫法:
      -s fe00:0 L ffff "BIOS"
      -s fe00:0 ffff "BIOS"
      FE00:0021
      FE00:006F
      
      數(shù)據(jù)區(qū)域
      -d fe00:0
      FE00:0000 41 77 61 72 64 20 53 6F-66 74 77 61 72 65 49 42  Award SoftwareIB
      FE00:0010 4D 20 43 4F 4D 50 41 54-49 42 4C 45 20 34 38 36  M COMPATIBLE 486
      FE00:0020 20 42 49 4F 53 20 43 4F-50 59 52 49 47 48 54 20   BIOS COPYRIGHT
      FE00:0030 41 77 61 72 64 20 53 6F-66 74 77 61 72 65 20 49  Award Software I
      FE00:0040 6E 63 2E 6F 66 74 77 61-72 65 20 49 6E 63 2E 20  nc.oftware Inc.
      FE00:0050 41 77 03 0C 04 01 01 6F-66 74 77 E9 12 14 20 43  Aw.....oftw... C
      FE00:0060 1B 41 77 61 72 64 20 4D-6F 64 75 6C 61 72 20 42  .Award Modular B
      FE00:0070 49 4F 53 20 76 34 2E 35-31 50 47 00 DB 32 EC 33  IOS v4.51PG..2.3

      ??12、C(比較數(shù)據(jù)塊)

      ??語(yǔ)法:c range list

      ??默認(rèn)段為DS。

      ??比較兩個(gè)數(shù)據(jù)塊的數(shù)據(jù)是否一致,將不一致的地址和各自的數(shù)據(jù)顯示出來(lái)。

      ??

      ??13、F(填充數(shù)據(jù)塊)

      ??語(yǔ)法:f range list

      ??默認(rèn)段為DS。

      ??用list數(shù)據(jù)填充區(qū)域range,如果list的長(zhǎng)度小于range的長(zhǎng)度,則重復(fù)填充。跟MASM中的db 100 dup("ha")方式一致,就是填充50個(gè)"ha"。

      ??

      ??14、I和O(端口讀寫)

      ??語(yǔ)法:?i port 

      ??????o port byte(byte的值是16位整數(shù))

      ??對(duì)端口進(jìn)行讀寫(端口的定義請(qǐng)查閱其他博文),如讀取CMOS芯片的小時(shí):

      -o 70 04
      -i 71
      08(當(dāng)前小時(shí)是8)
      -

      ??15、H(16位整數(shù)的加減)

      ??語(yǔ)法:?h value1  value2

      ??計(jì)算value1+value2和value1-value2,2個(gè)結(jié)果同時(shí)顯示,對(duì)標(biāo)志位不影響。

      -h aaa 531   
      0FDB  0579(前一個(gè)是和,后一個(gè)是差)
      -         

      ??16、L(加載數(shù)據(jù))

      ??語(yǔ)法:L [address] [drive] [firstsector] [number]

      ??如程序執(zhí)行完畢,可通過(guò)L可再次加載程序,如g指令后可通過(guò)L重新開始。

      ??加載有3種形式,BX和CX共同表示文件長(zhǎng)度,如文件長(zhǎng)123456H字節(jié),BX=0012H,CX=3456H。

      ??L(直接加載N指定的文件到CS:0100)

      ??L DS:200(加載N指定的文件到DS:0200

      ??L 100 2 A 5(從C盤0Ah邏輯扇區(qū)開始加載5個(gè)扇區(qū)到CS:0100,L address drvie firstSector number,drive從0開始表示A盤,1=B、2=C以此類推,每個(gè)扇區(qū)521Byte)

      ??MBR儲(chǔ)存在C盤0扇區(qū),可加載查看(MBR最后2個(gè)字節(jié)是55AA,地址為0100+01FF)

      ??

      ??17、W(向磁盤寫數(shù)據(jù))

      ??語(yǔ)法:w [address] [drive] [firstsector] [number]

      ??使用方法基本同L。

      ??BX和CX共同表示文件長(zhǎng)度,如文件長(zhǎng)123456H字節(jié),BX=0012H,CX=3456H;執(zhí)行W時(shí)需通過(guò)R指令設(shè)置BX、CX數(shù)值。

      ??R BX 0(設(shè)置文件長(zhǎng)度)

      ??R CX 20(設(shè)置文件長(zhǎng)度)

      ??W(從CS:0100開始,寫20H字節(jié)到文件)

      ??W 0(從CS:0000開始,寫20H字節(jié)到文件)

      ??W DS:200(從DS:0200開始,寫20H字節(jié)到文件

      ??W 100 2 0 1(從CS:0100開始,寫1個(gè)扇區(qū)數(shù)據(jù),到C盤0邏輯扇區(qū)。可以用來(lái)寫MBR程序到磁盤或軟盤

      ??18、XA、XD、XM、XS(內(nèi)存操作)

      ??語(yǔ)法: 

      ??未完待續(xù)...?

      posted @ 2023-08-28 23:02  美洲象  閱讀(2234)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 大厂| 日本一卡二卡不卡视频查询| 无码加勒比一区二区三区四区| 国产一区二区三区黄色片| 精精国产xxxx视频在线| 四虎永久在线精品免费看| 亚洲成人av一区免费看| 免费无码黄动漫在线观看| 久久精品夜色国产亚洲av| 色九月亚洲综合网| 国产精品剧情亚洲二区| 国产成人精品1024免费下载 | 精品中文人妻中文字幕| 中文字幕日韩精品国产| 亚洲精品久久久久久无码色欲四季| 国产亚洲人成网站观看| 激情综合网激情五月激情| 日韩人妻无码精品无码中文字幕| 日韩国产成人精品视频| 亚洲精品午夜精品| 成在线人免费视频| 少妇久久久被弄到高潮| 国产乱码精品一区二区三| 中日韩中文字幕一区二区| 艳妇乳肉豪妇荡乳av| 国产高清吹潮免费视频| 日本高清视频色欧WWW| 久女女热精品视频在线观看| 无码天堂亚洲国产av麻豆| 久久婷婷综合色丁香五月| 少妇粗大进出白浆嘿嘿视频| 亚洲色最新高清AV网站| 2021国产精品视频网站| 亚洲国产中文字幕精品| 无码人妻av免费一区二区三区| 青春草公开在线视频日韩| 久久av色欲av久久蜜桃网| 国产黄色av一区二区三区| 美女黄网站人色视频免费国产 | 骚虎视频在线观看| 国产一二三五区不在卡|