彙編語言DosBox下在64位上運行實現編譯(masm)與調試即debug命令。

首相運行dosbox,可以通過點擊exe文件或者使用cmd(Windows +r,可以調出運行框,然後就是輸入cmd就可以),下面進入正題:

據我所知有兩種方法實現masm:

找到asm文件右擊選擇默認打開方式,然後將方式改爲dosbox就可以了:接下來就是:
masm    ****.asm(無錯誤提示的話,連續按三個回車)

link ****.obj

*****.exe

這樣就可以了。

第二種方法有點麻煩:

首先得通過mount命令將你源文件所在位置轉化爲c盤;


然後masm(同上):

DEBUG.EXE程序是專門爲分析、研製和開發彙編語言程序而設計的一種調試工具,具有跟蹤程序執行、觀察中間運行結果、顯示和修改寄存器或存儲單元內容等多種功能。它能使程序設計人員或用戶觸及到機器內部,因此可以說它是80X86CPU的心靈窗口,也是我們學習彙編語言必須掌握的調試工具。初學者可以直接在DEBUG環境下執行彙編指令。

2.1  DEBUG程序使用

在DOS提示符下鍵入命令:

   C>DEBUG [盤符:][路徑][文件名.EXE][參數1][參數2]

     這時屏幕上出現DEBUG的提示符“-”,表示系統在DEBUG管理之下,此時可以用DEBUG進行程序調試。若所有選項省略,僅把DEBUG裝入內存,可對當前內存中的內容進行調試,或者再用N和L命令,從指定盤上裝入要調試的程序;若命令行中有文件名,則DOS把DEBUG程序調入內存後,再由DEBUG將指定的文件名裝入內存。

       每條命令以單個字母的命令符開頭,然後是命令的操作參數,操作參數與操作參數之間,用空格或逗號隔開,操作參數與命令符之間用空格隔開,命令的結束符是回車鍵。DEBUG中所用數均爲十六進制數,所以後面不用加H。

2.2  DEBUG的常用命令

1彙編命令 A

格式:A[起始地址]

功能:將輸入源程序的指令彙編成目標代碼並從指定地址單元開始存放。若缺省起始地址,則從當前CS:100地址開始存放。A命令按行彙編,主要是用於小段程序的彙編或對目標程序的修改。

例如:

-A 100

18E4:0100    mov ax,1234

 18E4:0103  add ax,5

      18e4:0105 (回車)

   2 反彙編命令 U

   格式1:U[起始地址]

   格式2:U[起始地址][結束地址|字節數]

   功能:格式1從指定起始地址處開始將32個字節的目標代碼轉換成彙編指令形式,缺省起始地址,則從當前地址CS:IP開始。

   格式2將指定範圍的內存單元中的目標代碼轉換成彙編指令。

例如:

-u100

             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] 

3顯示、修改寄存器命令 R

格式:R[寄存器名]

功能:若給出寄存器名,則顯示該寄存器的內容並可進行修改。缺省寄存器名,則按以下格式顯示所有寄存器的內容及當前值(不能修改)。

         AX=0000  BX=0004 CX=0020  DX=0000  SP=0080 BP=0000  SI=0000

         DI=0000  DS=3000  ES=23A0  CS=138E IP=0000

         NV UP DI PL NZ NA PO NC

         138E:0000 MOV AX,1234

     -R AX        ;輸入命令

      AX 0014          ;顯示AX的內容

         :              ;供修改,不修改按回車。


      若對標誌寄存器進行修改,輸入:-RF

    屏幕顯示如下信息,分別表示OF、DF、IF、SF、ZF、AF、PF、CF的狀態。

        NV UP DI PL NZ NA PONC

不修改按回車鍵。要修改需個別輸入一個或多個此標誌的相反值,再按回車鍵。R命令只能顯示、修改16位寄存器。

4顯示存儲單元命令 D

格式1:D[起始地址]

    格式2:D[起始地址][結束地址|字節數]

    功能:格式1從起始地址開始按十六進制顯示80H個單元的內容,每行16個單元,共8行,每行右邊顯示16個單元的ASCII碼,不可顯示的ASCII碼則顯示“·”。格式2顯示指定範圍內存儲單元的內容,其他顯示方式與格式1一樣。如果缺省起始地址或地址範圍,則從當前的地址開始按格式1顯示。

例如,按指定範圍顯示存儲單元內容的方法爲:

       -D 100 120
        067C:0100  C7 D7 0D 0A 32 33 33 34 - D5 C5 B4 C630 10 42 0C    ....2334....0.B.
          067C:0110  03 41 4243 44 45 46 47 - 48 49 4A 4B 4C 4D 4E 4F    .ABCDEFGHIJKLMNO
          067C:0120  8B

其中0100至0120是DEBUG顯示的單元內容。 左邊用十六進制表示每個字節,右邊用ASCII字符表示每個字節,“.”表示不可顯示的字符。這裏沒有指定段地址, D命令自動顯示DS段的內容。如果只指定首地址,則顯示從首地址開始的80個字節的內容。如果完全沒有指定地址,則顯示上一個D命令的最後一個單元的內容。    

說明:在DEBUG中,地址表示方式有如下形式:

段寄存器名:相對地址,如:DS:100

段基值:偏移地址(相對地址),如:23A0:1500

5 修改存儲單元命令 E

格式1:E[起始地址] [內容表]

    格式2:E[地址]

    功能:格式1按內容表的內容修改從起始地址開始的多個存儲單元內容,即用內容表指定的內容來代替存儲單元當前內容。

                     例如:-E   DS:0100  'VAR'  12  34

                     表示從DS:0100 爲起始單元的連續五個字節單元內容依次被修改爲

                     'V'、'A'、'R'、12H、34H。

格式2是逐個修改指定地址單元的當前內容。

                     如:-E DS:0010

                         156F:0010 41.5F

其中156F:0010單元原來的值是41H,5FH爲輸入的修改值。若只修改一個單元的內容,這時按回車鍵即可;若還想繼續修改下一個單元內容,此時應按空格鍵,就顯示下一個單元的內容,需修改就鍵入新的內容,不修改再按空格跳過,如此重複直到修改完畢,按回車鍵返回DEBUG“-”提示符。如果在修改過程中,將空格鍵換成按“-”鍵,則表示可以修改前一個單元的內容。

6 運行命令 G

格式:G[=起始地址][第一斷點地址[第二斷點地址……]]

功能:CPU從指定起始地址開始執行,依次在第一、第二等斷點處中斷。若缺省起始地址,則從當前CS:IP指示地址開始執行一條指令。最多可設置10個斷點。

7 跟蹤命令 T

格式:T[=起始地址][正整數]

功能:從指定地址開始執行‘正整數’條指令,若缺省‘正整數’,表示執行一條指令,若兩項都缺省,表示從當前CS:IP指示地址開始執行一條指令。

8跟蹤命令 P

格式:-P[=地址]

從指定地址起執行一條指令後停下來,顯示所有寄存器內容、標誌位的值和下一條要執行的指令地址和指令內容。如未指定地址則從當前的CS:IP開始執行。

9 指定文件命令 N

    格式:N<文件名或擴展名>

功能:指定即將調入內存或從內存寫入磁盤的文件名。該命令應該用在L命令和W命令之前。

10 裝入命令 L

    格式1:L[起始地址][盤符號][扇區號][扇區數]

    格式2:L[起始地址]

    功能:格式1根據盤符號,將指定扇區的內容裝入到指定起始地址的存儲區中。

格式2將N命令指出的文件裝入到指定起始地址的存儲區中,若省略起始地址,則裝入到CS:100處或按原來文件定位約定裝入到相應位置。

11 寫磁盤命令 W

格式1:W<起始地址>[驅動器號]<起始扇區><扇區數>

格式2:W[起始地址]

    功能:格式1把指定地址開始的內容數據寫到磁盤上指定的扇區中。

格式2將起始地址的BX×10000H+CX個字節內容存放到由N命令指定的文件中。在格式2的W命令之前,除用N命令指定存盤的文件名外,還必須將要寫的字節數用R命令送入BX和CX中。

12 退出命令 Q

    格式:Q

    功能:退出DEBUG,返回到操作系統。

下面再來說說debug命令:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章