亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

匯編語(yǔ)言?masm5與debug命令使用方法小結(jié)

 更新時(shí)間:2023年08月02日 13:19:54   作者:奶酪博士  
本文總結(jié)了匯編程序的基本框架及規(guī)范、masm5工具的基本使用方法、debug命令的基本使用方法

前言

在學(xué)習(xí)完王爽老師《匯編語(yǔ)言》(第四版)第六章之后,我決定整理一下masm5.0與debug命令的使用方法,方便之后回顧。(我使用的環(huán)境是DosBox。)

一、匯編程序的代碼框架

以下是匯編程序基本規(guī)范。其中也包含了一些小知識(shí)點(diǎn)。注釋符號(hào)我借用了java語(yǔ)言中的“//”。

assume cs:code ? ? //開(kāi)頭使用關(guān)鍵字assume,并且要將段寄存器與段名關(guān)聯(lián)
? a segment ? ? ? //數(shù)據(jù)、代碼、棧 要分段存放,段用“段名 segment”開(kāi)頭,用“段名 ends”結(jié)尾
? db 1,2,3,4,5,6,7,8 ? ?//db 為8字節(jié)型數(shù)據(jù)申請(qǐng)空間(byte),或理解為定義了8個(gè)字節(jié)型數(shù)據(jù)
? a ends ? ? ? ? ? ?//不足16字節(jié)的,系統(tǒng)會(huì)分配16字節(jié)的空間來(lái)存放
? b segment
? dw 0123H,0456H,0789H,0abcH ? ?//匯編中數(shù)據(jù)不能以字母開(kāi)頭,如“a234H”就要寫成“0a234H”
? b ends
? c segment ? ?//棧段 要開(kāi)辟一定的空間作為棧使用
? dw 0,0,0,0,0,0,0,0 ? ?//dw 開(kāi)辟4個(gè)字型數(shù)據(jù)的空間(word),或理解為定義了4個(gè)字型數(shù)據(jù)
? c ends
? code segment ? ? //代碼段,code是標(biāo)識(shí)符,不是關(guān)鍵字
? start: ? ? ? ? ? //start是標(biāo)識(shí)符,上下呼應(yīng),標(biāo)識(shí)程序入口,即cs:ip指向處
? ? ? mov ax,11H ? ? //H標(biāo)識(shí)十六進(jìn)制,也可以用十進(jìn)制
? ? ? mov cx,8 ? ?//通常在循環(huán)之前,用cx保存循環(huán)次數(shù)
? ? ? s: ? ? ? ? ? ? ?//s是標(biāo)號(hào),標(biāo)識(shí)一段循環(huán)體,上下呼應(yīng)
? ? ? ? ? add ax,10H
? ? ? loop s ? ? ? ? ? ? //CPU執(zhí)行cx-1后若≠0,則跳到標(biāo)號(hào)s所在處執(zhí)行,否則繼續(xù)向下執(zhí)行
? ? ? mov ax,4c00H ? ?//這兩行作用是 程序返回 ,這是匯編程序的規(guī)范
? ? ? int 21H
? code ends ? ?//代碼段結(jié)束
end start ? ? ?//end是程序結(jié)束。 ?start是標(biāo)識(shí)符,標(biāo)識(shí)程序入口

二、使用masm生成exe文件

1.編譯

將寫好代碼的源程序保存為 文件名.asm文件,然后在DosBox中編譯。

編譯最簡(jiǎn)單的方法就是在DosBox中輸入  masm 文件名 ; 回車。如下。

masm 1;

如果不加分號(hào),那么連續(xù)回車就可以,中間步驟生成的中間文件,現(xiàn)在不必去管它。

這一步是在當(dāng)前文件夾下生成.obj文件。

沒(méi)有指明路徑是因?yàn)樵闯绦?.asm與masm5.0放在同一文件夾下。如果源程序放在別處,就要指明路徑。

2.連接

最簡(jiǎn)單的方法就是在DosBox中輸入 link 文件名 ; 回車。如下。

link 1;

如果不加分號(hào),就要多回車幾次。中間生成的中間文件,現(xiàn)在不必去管它。

這一步是在當(dāng)前文件夾下生成.exe文件。

同理,沒(méi)有指明路徑是因?yàn)?.obj與link.exe放在同一文件夾下,否則要指明路徑。

三、使用debug調(diào)試程序

在DosBox中可以直接運(yùn)行exe程序,如下。

1.exe

但更多時(shí)候需要使用debug進(jìn)行分步調(diào)試。調(diào)試方法是,在DosBox中輸入 debug 文件名.exe 回車。如下。

debug 1.exe

四、debug命令小結(jié)

1.R命令  查看、修改寄存器內(nèi)容

(1)查看CPU寄存器的內(nèi)容

R  回車

(2)改變CPU寄存器的內(nèi)容

例如將段寄存器DS的值改為2000H:   

R DS 回車,  2000 回車(輸入目標(biāo)值)

2.D命令  用于查看內(nèi)存內(nèi)容(從數(shù)據(jù)角度)

(1)D回車,查看默認(rèn)地址的內(nèi)容

(2)D 段地址:偏移地址 回車,查看指定地址的內(nèi)容,如 D 2000:0   。

(3)段地址可以使用段寄存器名,如  D ds:0002  。

(4)可以指定查看范圍,D 段地址:起始偏移地址 結(jié)尾偏移地址 ,如 D 1000:0 f   。

3.E命令  用于改寫內(nèi)存內(nèi)容(從數(shù)據(jù)角度)

(1)E 段地址:起始偏移地址 數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù) ...    ,用空格分隔數(shù)據(jù),用回車來(lái)退出修改。

(2)用提問(wèn)的方式一個(gè)字節(jié)一個(gè)字節(jié)地改寫。E 段地址:偏移地址 回車,(屏幕顯示原有數(shù)據(jù))然后輸入新數(shù)據(jù),回車。

(3)用第一種方式還可以寫入字符或字符串。注意定界符,字符如'a',字符串如"Hello"。

4.U命令  用于查看內(nèi)存內(nèi)容(從指令角度)

即查看內(nèi)存內(nèi)容對(duì)應(yīng)的匯編指令。

與D命令相同的使用方式,只不過(guò)查看角度不同而已。

如 U ds:0 回車,查看 ds:0000處開(kāi)始的匯編指令。

5.A命令  用于改寫內(nèi)存內(nèi)容(從指令角度)

即方便地輸入?yún)R編指令存儲(chǔ)在內(nèi)存中。

注意,指令必須一行一行地輸入。輸入一條指令之后要回車。最后以回車結(jié)束輸入。

(1)a 回車,從默認(rèn)地址開(kāi)始輸入指令。

(2)a 段地址:偏移地址 回車,從指定地址開(kāi)始輸入指令。

6.T命令  執(zhí)行指令

用于執(zhí)行cs:ip當(dāng)前指向的那條指令。(IP寄存器將自動(dòng)改寫。)

7.P命令

(1)遇到程序返回語(yǔ)句 int 21H 時(shí),要用P命令而不是T命令執(zhí)行。

(2)遇到loop循環(huán)語(yǔ)句時(shí),使用P命令可以自動(dòng)執(zhí)行完整個(gè)loop(也就是執(zhí)行到cx=0),而不用一步步執(zhí)行。

8.G命令  跳轉(zhuǎn)到某條指令

用于跳到某一條指令處,例如 G 0012 回車,即表示設(shè)置IP=0012H。

9.其它

alt+Enter可以全屏/恢復(fù) 窗口大小。

總結(jié)

本文總結(jié)了匯編程序的基本框架及規(guī)范、masm5工具的基本使用方法、debug命令的基本使用方法。

相關(guān)文章

  • 匯編語(yǔ)言之寄存器(詳細(xì)介紹)

    匯編語(yǔ)言之寄存器(詳細(xì)介紹)

    這篇文章主要介紹了匯編語(yǔ)言之寄存器(詳細(xì)介紹),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • 匯編語(yǔ)言環(huán)境搭建軟件與教程

    匯編語(yǔ)言環(huán)境搭建軟件與教程

    這篇文章主要介紹了匯編語(yǔ)言環(huán)境搭建軟件與教程,需要的朋友可以參考下
    2020-01-01
  • 從匯編代碼開(kāi)始全面解析synchronized還原最真實(shí)的偏向鎖

    從匯編代碼開(kāi)始全面解析synchronized還原最真實(shí)的偏向鎖

    這篇文章主要為大家介紹了從模板解釋器匯編源碼開(kāi)始分析還原最真實(shí)的偏向鎖實(shí)現(xiàn),解釋monitorenter字節(jié)碼命令的方法開(kāi)始,從匯編代碼開(kāi)始全面解析synchronized
    2022-02-02
  • 匯編程序成績(jī)排序的實(shí)現(xiàn)

    匯編程序成績(jī)排序的實(shí)現(xiàn)

    這篇文章主要介紹了匯編程序成績(jī)排序的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 匯編語(yǔ)言實(shí)現(xiàn)在指定字符串中搜索字符''A''的方法

    匯編語(yǔ)言實(shí)現(xiàn)在指定字符串中搜索字符''A''的方法

    這篇文章主要介紹了匯編語(yǔ)言實(shí)現(xiàn)在指定字符串中搜索字符'A'的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 匯編語(yǔ)言中的segment

    匯編語(yǔ)言中的segment

    segment是段的意思,是段定義偽指令,一個(gè)正常的應(yīng)用程序被由若干個(gè) segment組成,接下來(lái)通過(guò)本文給大家介紹匯編語(yǔ)言中的segment,需要的朋友可以參考下
    2020-01-01
  • 匯編語(yǔ)言系列之匯編實(shí)現(xiàn)各種碼制的轉(zhuǎn)換(思路詳解)

    匯編語(yǔ)言系列之匯編實(shí)現(xiàn)各種碼制的轉(zhuǎn)換(思路詳解)

    本文列出了十六進(jìn)制轉(zhuǎn)二進(jìn)制、十進(jìn)制、ASCII碼及大小寫字母轉(zhuǎn)換的代碼,對(duì)匯編語(yǔ)言系列之實(shí)現(xiàn)各種碼制的轉(zhuǎn)換問(wèn)題感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • 匯編指令:JO、JNO、JB..的使用方法

    匯編指令:JO、JNO、JB..的使用方法

    這篇文章主要介紹了匯編指令:JO、JNO、JB..的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • UEFI開(kāi)發(fā)基礎(chǔ)匯編代碼的使用

    UEFI開(kāi)發(fā)基礎(chǔ)匯編代碼的使用

    這篇文章主要為大家介紹了UEFI開(kāi)發(fā)基礎(chǔ)匯編代碼使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 匯編語(yǔ)言loop命令的具體使用

    匯編語(yǔ)言loop命令的具體使用

    LOOP指令是根據(jù)ECX計(jì)數(shù)器循環(huán),將語(yǔ)句塊重復(fù)執(zhí)行特定次數(shù),本文主要介紹了匯編語(yǔ)言loop命令的具體使用,感興趣的可以了解一下
    2024-03-03

最新評(píng)論