[006][匯編語言]實驗1-debug使用 查看谭梗、修改寄存器(CPU)和內(nèi)存,用機器指令和匯編指令編程

準備工作

  • 64位CPU安裝DOSBOX以及debug.exe
    (點我查看教程)
  • 打開DOSBOX宛蚓,輸入mount命令激捏,輸入C:,輸入debug(每一次都按下回車確認)
mount C E:\assembly-learn
C:
debug
準備就緒凄吏,可以輸入各種 debug 命令

debug 命令

R 寄存器  查看远舅、修改
D 內(nèi)存 查看

E 內(nèi)存 (數(shù)據(jù)闰蛔、機器碼)寫指令
U 內(nèi)存 翻譯成匯編指令

T 執(zhí)行CS:IP 指向的內(nèi)存單元的指令
A 內(nèi)存 匯編形式寫指令

內(nèi)存和寄存器不是一回事

  • 寄存器在cpu內(nèi)部,是cpu內(nèi)部的其中一個部件图柏。
  • 內(nèi)存 是和 cpu 同一個層次的兩個獨立的部件序六,通過總線(地址總線和數(shù)據(jù)總線等)傳遞數(shù)據(jù)。
  • 內(nèi)存和寄存器都可以存儲數(shù)據(jù)蚤吹,但是內(nèi)存中的數(shù)據(jù)只有被讀成指令并且執(zhí)行之后例诀,才可以改變寄存器中的內(nèi)容,沒有說內(nèi)存一變寄存器就變了裁着,反之余佃,寄存器一變內(nèi)存未必也跟著變,要清楚它們都是獨立的跨算。

———————————————————————————————————

寄存器(CPU)

r 命令

r命令 查看寄存器 的內(nèi)容

r命令 查看 寄存器 的內(nèi)容

r命令 修改 寄存器 的內(nèi)容

r ax 修改 寄存器ax 的內(nèi)容
  • 輸入r ax 會出現(xiàn)提示符:,冒號之后輸入新的數(shù)據(jù)椭懊,按下回車確認

———————————————————————————————————

內(nèi)存

d命令

d 命令 查看 內(nèi)存中的內(nèi)容

d 命令查看內(nèi)存中的內(nèi)容
-d 段地址:偏移地址
  • 比如 2B 本質(zhì)是 2BH(十六進制形式 16進制里一位用 2進制里四位 表示)诸蚕,0010 1011(二進制形式 有8位),二進制很容易數(shù)出來是8bit(位)氧猬,8bit(位)一個B(Byte字節(jié))
  • 1個內(nèi)存單元可以存一個Byte(字節(jié))
  • d 1000:0查看內(nèi)存單元10000H處開始的內(nèi)容背犯,將列出從10000H開始的128個內(nèi)存單元的內(nèi)容, 16個內(nèi)存單元一行盅抚,一共有8
  • 左邊的列漠魏,是本行的起始內(nèi)存地址,每一行有16個內(nèi)存單元妄均,以1000:0060舉例柱锹,這一行是1000:00601000:006F
  • 中間列的小橫杠只是視覺上表示前后,前半是1000:0060 ~ 1000:0067丰包,后半是1000:0068 ~ 1000:006F
  • 右邊的列禁熏,是可顯示的ASCII碼字符,與中間列一 一對應

d命令 查看 限定范圍的內(nèi)存的內(nèi)容

查看1000:0~1000:9 內(nèi)存單元中的內(nèi)容
d 1000:0 9
  • 查看1000:0~1000:9 內(nèi)存單元中的內(nèi)容

d 073F:011C 011C 查看單個內(nèi)容單元的內(nèi)容

d 073F:011C 011C 查看單個內(nèi)容單元的內(nèi)容
段地址:偏移地址 偏移地址
d 1000:0 0
d 0fff:10 10
d 0100:f000 f000
計算出來得到的物理地址都是 10000H
  • 段地址:偏移地址邑彪,計算得出的 物理地址 是一樣的話瞧毙,就是查看同一個內(nèi)存單元的內(nèi)容
  • 后面重復寫一次偏移地址,就會給單個內(nèi)存單元的內(nèi)容
  • 如果不寫寄症,就是從這個物理地址開始之后的內(nèi)存單元內(nèi)容

e 命令

e 命令改寫內(nèi)存中的內(nèi)容

e 命令改寫內(nèi)存中的內(nèi)容
  • d 顯示單獨的一行
d 1000:0 F
顯示的是1000:0000 ~ 1000:000F

d 1000:0010 1F
顯示的是1000:0000 ~ 1000:001F
  • e 修改內(nèi)容
一口氣全部改寫:

e 1000:0 0 1 2 3 4 5 6 7 8 9 
直接修改了從1000:0開始的10個單元的內(nèi)容


一個一個地改寫:

e 1000:0010
只給一個起始的地址宙彪,這里是第二行的起始地址
命令行窗口會出現(xiàn) 00. ,后面有一個閃爍的圖標

如果想要改寫內(nèi)容
  輸入你想要寫的內(nèi)容 按下【空格鍵space】確認輸入
  注意是有巧,鍵盤上長長的那個【空格鍵 space】释漆,而不是【回車鍵 enter】

如果不想改寫內(nèi)容
  直接按下【空格鍵space】,就會跳到下一個閃爍的位置了

想做的修改都做完了剪决,按【回車鍵 enter】結(jié)束本次 e 命令的全部操作

  • e 命令可以寫 數(shù)值 灵汪、字符檀训、字符串
    e 命令可以寫 數(shù)值 、字符享言、字符串
e 1000:0 F 1 2 3 'h' 'e' 'l' 'l' 'o' "world"

字符  單引號 ' '
字符串  雙引號 " "

———————————————————————————————————

E 寫 U看 T執(zhí)行 (內(nèi)存中的機器碼)

  • 要用到的 機器碼 和 對應的 匯編指令
機器碼    對應的匯編指令     指令含義
b80100    mov ax,0001      將數(shù)據(jù) 0001 放入寄存器 ax
b90200    mov cx,0002      將數(shù)據(jù) 0002 放入寄存器 cx    
01c8      add ax,cx        ax = ax + cx
  • E 命令將機器碼寫入 內(nèi)存 內(nèi)存 內(nèi)存
  • U 命令將從1000:0H開始的內(nèi)存單元中的內(nèi)容翻譯成匯編指令
    E命令寫機器碼到內(nèi)存 U命令翻譯機器碼成匯編指令
  • R 命令查看當前寄存器的內(nèi)容峻凫,會看到當前的CS:IP是073F:0100

  • R 命令改寫寄存器 寄存器 寄存器的內(nèi)容

  • 使得 CS = 1000H,讓IP = 0000H览露,最后CS:IP指向10000H

    R 命令 修改 寄存器 CS:IP

  • T 命令執(zhí)行 從CS:IP開始的內(nèi)存單元中的指令

  • CS:IP 指向 1000:0內(nèi)存單元荧琼,從該內(nèi)存單元開始,機器碼b8 01 00差牛,對應的匯編指令為mov ax,0001 命锄,AX寄存器的值成為0001H

  • 該指令使用 3個 內(nèi)存單元, IP寄存器的值自動增加變成 0003H 偏化,CS:IP隨之改變成為1000:0003H

    T 命令執(zhí)行從CS:IP 開始的內(nèi)存單元中的指令

  • 繼續(xù)執(zhí)行 T 命令脐恩,從CS:IP 1000:0003H 開始 ,并且執(zhí)行匯編指令 mov cx,0002

  • 繼續(xù)執(zhí)行 T 命令侦讨,從CS:IP 1000:0006H 開始 驶冒,并且執(zhí)行匯編指令 add ax,cx

  • 最終,寄存器 AX 的內(nèi)容成為0003H

    繼續(xù)執(zhí)行 T 命令 看IP寄存器自動增加 看AX CX寄存器內(nèi)容變化

A 命令 匯編指令形式 在 內(nèi)存 中寫指令

  • a 1000:0 光標在 給出的起始地址 之后閃爍韵卤,代表可以輸入匯編指令

    A 命令 匯編指令形式 在 內(nèi)存 中寫指令

  • 要用到的 機器碼 和 對應的 匯編指令

機器碼    對應的匯編指令     指令含義
b80100    mov ax,0001      將數(shù)據(jù) 0001 放入寄存器 ax
b90200    mov cx,0002      將數(shù)據(jù) 0002 放入寄存器 cx    
01c8      add ax,cx        ax = ax + cx
  • 輸入?yún)R編指令骗污,再按【回車鍵 enter】 表示 匯編指令 輸入的結(jié)束,進入下一條指令的輸入
  • 直接按 【回車鍵 enter】 表示 A命令操作結(jié)束
  • 現(xiàn)在沈条,只是把 匯編指令 放到了 **內(nèi)存 ** 之中需忿,內(nèi)存有東西了,寄存器還沒有【蜡歹!】
  • 因此屋厘,使用R命令寄存器 內(nèi)容是沒有變化的
  • 這時候要用D命令內(nèi)存 就可以看到,內(nèi)存里有我們自己寫的東西了
A命令用匯編形式 改寫 內(nèi)存內(nèi)容
  • 只需,R CS 以及 R IP 修改 CS:IP 成1000:0 H
  • 再用T命令月而,就可以執(zhí)行上面的匯編指令了
    先用R命令修改CS:IP 再用T命令執(zhí)行即可

debug.exe 命令小結(jié)

  • 關于 寄存器 的命令就一個 R命令擅这,查看、修改
  • 關于 內(nèi)存 的命令有 D命令(查看)景鼠、E命令(寫數(shù)據(jù))仲翎、U命令(翻譯成匯編)、T(執(zhí)行CS:IP指向的指令)铛漓、A命令(以匯編形式寫數(shù)據(jù))

思考

  • 我們學習C語言的時候溯香,比學習輸出hello worldC語言語法要更優(yōu)先的事情是,搞一個可以編譯運行C語言開發(fā)環(huán)境IDE浓恶,可以是簡單小巧的Dev-C++玫坛,也可以是功能齊全的Visual studio,然后就是掌握一系列基于IDE編譯包晰、運行快捷鍵湿镀,最后才是在IDE里面輸入合法的代碼開始炕吸,看輸出效果學習語法和知識。
  • 基于此種學習路徑勉痴,實驗1的目的就很清晰了赫模,通過實驗1,我們知道了是通過A命令直接寫匯編指令蒸矛,是通過T命令執(zhí)行匯編指令瀑罗,現(xiàn)在我們手上有可以 輸入、執(zhí)行匯編語言指令的 "IDE" 了雏掠。
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末斩祭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子乡话,更是在濱河造成了極大的恐慌摧玫,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绑青,死亡現(xiàn)場離奇詭異席赂,居然都是意外死亡,警方通過查閱死者的電腦和手機时迫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谓晌,“玉大人掠拳,你說我怎么就攤上這事≈饺猓” “怎么了溺欧?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長柏肪。 經(jīng)常有香客問我姐刁,道長,這世上最難降的妖魔是什么烦味? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任聂使,我火速辦了婚禮,結(jié)果婚禮上谬俄,老公的妹妹穿的比我還像新娘柏靶。我一直安慰自己,他們只是感情好溃论,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布屎蜓。 她就那樣靜靜地躺著,像睡著了一般钥勋。 火紅的嫁衣襯著肌膚如雪炬转。 梳的紋絲不亂的頭發(fā)上辆苔,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機與錄音扼劈,去河邊找鬼驻啤。 笑死,一個胖子當著我的面吹牛测僵,可吹牛的內(nèi)容都是我干的街佑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼捍靠,長吁一口氣:“原來是場噩夢啊……” “哼沐旨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起榨婆,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤磁携,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后良风,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谊迄,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年烟央,在試婚紗的時候發(fā)現(xiàn)自己被綠了统诺。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡疑俭,死狀恐怖粮呢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情钞艇,我是刑警寧澤啄寡,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站哩照,受9級特大地震影響挺物,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜飘弧,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一识藤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧次伶,春花似錦蹋岩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春扣囊,著一層夾襖步出監(jiān)牢的瞬間乎折,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工侵歇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留骂澄,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓惕虑,卻偏偏與公主長得像坟冲,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子溃蔫,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354