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

匯編語言?masm5與debug命令使用方法小結

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

前言

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

一、匯編程序的代碼框架

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

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

二、使用masm生成exe文件

1.編譯

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

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

masm 1;

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

這一步是在當前文件夾下生成.obj文件。

沒有指明路徑是因為源程序1.asm與masm5.0放在同一文件夾下。如果源程序放在別處,就要指明路徑。

2.連接

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

link 1;

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

這一步是在當前文件夾下生成.exe文件。

同理,沒有指明路徑是因為1.obj與link.exe放在同一文件夾下,否則要指明路徑。

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

在DosBox中可以直接運行exe程序,如下。

1.exe

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

debug 1.exe

四、debug命令小結

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

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

R  回車

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

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

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

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

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

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

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

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

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

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

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

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

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

即查看內(nèi)存內(nèi)容對應的匯編指令。

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

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

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

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

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

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

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

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

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

7.P命令

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

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

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

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

9.其它

alt+Enter可以全屏/恢復 窗口大小。

總結

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

相關文章

最新評論

定陶县| 昭觉县| 安西县| 饶平县| 嘉义市| 华亭县| 呼和浩特市| 江津市| 苍山县| 萨迦县| 沾益县| 永寿县| 蓝田县| 西安市| 邹城市| 祁门县| 泰来县| 汽车| 云南省| 五指山市| 伊吾县| 曲麻莱县| 商洛市| 柳州市| 湟源县| 吉水县| 苏尼特右旗| 雷波县| 应用必备| 东安县| 长海县| 遵义县| 酒泉市| 香河县| 丽水市| 德昌县| 玉屏| 松江区| 红安县| 中山市| 万宁市|