最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

匯編語(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 ? ? //開頭使用關(guān)鍵字assume,并且要將段寄存器與段名關(guān)聯(lián)
? a segment ? ? ? //數(shù)據(jù)、代碼、棧 要分段存放,段用“段名 segment”開頭,用“段名 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ù)不能以字母開頭,如“a234H”就要寫成“0a234H”
? b ends
? c segment ? ?//棧段 要開辟一定的空間作為棧使用
? dw 0,0,0,0,0,0,0,0 ? ?//dw 開辟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文件。

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

2.連接

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

link 1;

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

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

同理,沒有指明路徑是因?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)用提問的方式一個(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處開始的匯編指令。

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

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

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

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

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

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)文章

最新評(píng)論

长岛县| 闽清县| 依安县| 交口县| 穆棱市| 浑源县| 双辽市| 调兵山市| 大港区| 怀宁县| 全南县| 广安市| 桦南县| 区。| 栖霞市| 平湖市| 濮阳市| 布尔津县| 泸西县| 阿克苏市| 泽库县| 木里| 饶河县| 托克逊县| 桐柏县| 卢氏县| 金川县| 淅川县| 承德市| 潜山县| 弥勒县| 镇坪县| 通化县| 南城县| 贵州省| 霍林郭勒市| 旬邑县| 南城县| 平武县| 鹤岗市| 上犹县|