實驗3實驗報告

2022-08-22 12:54:11 字數 2612 閱讀 3884

遲到的實驗3實驗報告=。=

實驗結論

練習1

先用記事本編輯彙編源程式並儲存

然後進行編譯和鏈結得到可執行檔案(編譯和鏈結時結尾加分號可以跳過一些一般情況下預設的步驟,方便一次性生成目標檔案)

執行將line4和line9中暫存器dl的值分別修改為6和8

重新彙編鏈結執行,可以發現執行的結果變成了我們所修改的值

然後我們使用debug對生成的可執行檔案t1.exe進行除錯,先用r命令檢視各暫存器的值,可以發現cx的值為16h,說明可執行檔案的機器碼長度為16h;我們還發現cs=ds+10h,這裡的10h的內容就是psp(程式段字首),也就是說程式中最為核心的指令部分從cs:ip指向的記憶體單元開始(也就是下一條要執行的指令)

然後我們使用d命令檢視psp(程式段字首)的頭兩個位元組的內容,為cd 20

然後我們使用u命令對該程式進行反彙編,並將反彙編得到的結果與源程式進行對比,我們發現指令部分並沒有發生變化,但是源程式中的指令結束後又出現了幾條指令,根據目前所學習的知識我還不知道它們的作用,但是根據cx的值我們知道可執行檔案的機器碼長度為16h,可以推斷這幾條不知名的指令並不會被該程式執行

接著我們再使用t命令對該程式進行單步除錯(遇到int命令時,使用p命令除錯,int命令類似於高階語言中的函式,若仍使用t命令除錯的話相當於進入了函式內部單步除錯,過程較為繁瑣,故使用p命令將該函式視為乙個小整體單步執行下去)

執行完第乙個int 21h後可以發現,螢幕上輸出了6,也就是一開始給dl的值

執行完第二個int 21h後,螢幕上輸出了8,也就是第二次給dl的值,至此我們可以推斷add dl,30h這條指令很有可能是一條輸出指令,具體功能應該是在螢幕上輸出dl的值

執行完了源程式指令中的最後一條後螢幕上出現了「程式正常終止」,說明我們的程式已經執行完畢。可以發現,之前反彙編得到的指令的最後並沒有被執行,同時也可以確認,可執行機器碼的長度的的確確和cx的值所一致。

練習2

首先編寫源程式

然後對其進行編譯,鏈結,生成可執行檔案後用debug進行除錯

執行這個程式,有些平台在 dosbox 下執行這個程式時有些問題,如果螢幕左上方沒有 輸出結果,請執行程式t2.exe前,先輸入cls命令清空一下螢幕,然後再執行t2.exe。先用r命令檢視暫存器的值,cx的值為18h,說明該程式機器碼所佔的大小為18h,故我們再使用u命令反彙編cs:0000~cs:0017,輸入時段位址省略,根據反彙編的結果,我們發現程式實際執行到cs:0013之前就完成了,故我們再使用g命令執行到cs:0013之前,可以發現,左上角輸出了紅色的36

然後我們將源**中的line7的0433h→0432h, line10 的 0436h→0439h

然後編譯,鏈結,用debug除錯

由於剛才的除錯我們已經知道了用g命令直接執行完0013之前的內容可以得到實驗結果,所以直接用g命令除錯,因為僅僅是更改了這裡的兩個數值並不影響所生成機器碼的長度,可以看見,左上角輸出了紅色的29

然後我們將源**中line7的0433h→0333h, line10 的 0436h→0336h

然後編譯,鏈結,用debug除錯

接著還是用g命令執行到0013之前的內容,可以看到左上角輸出了藍色的36

通過這個實驗我們可以發現,0b800h:0000開始的這一段記憶體位址空間為視訊記憶體空間,這裡面的內容可以被輸出到螢幕上,

而line 7和line9就是將要輸出的具體內容存入視訊記憶體了,根據實驗結果我們可以得出,輸出的數值即使後兩位數的ascii轉碼,如33→「3」,而前兩位則是控制輸出的顏色。

實驗結論

通過這次的實驗,我熟悉了如何把彙編源程式通過編譯,鏈結後生成可執行檔案,並且掌握了通過debug工具除錯自己編寫的匯程式設計序,真正實現了自己的第乙個匯程式設計序的從無到有,收穫良多。

實驗報告 《3》

編寫基於物件的程式。資料成員包括長寬高,體積,要求用成員函式實現下面的功能 1 由鍵盤輸入3個長方柱的長 length 寬 width 高 high 2 計算長方柱的體積 volume 和表面積 areas 3 輸入這3個長方柱的體積和表面積。html view plain copy print?i...

實驗報告 高軟實驗3

jerryykt1464929958440 軟體工程 c編碼實踐篇 mooc課程作業 我學到了 1 在編碼過程中,遇到了問題 指標變數的大小如何確定的問題。記得以前用vc 6.0寫c語言的時候,指標的sizeof 大小是4 位元組 而現在用64位linux中使用gcc編譯的c程式的指標大小是8個位元...

Linux實驗報告3

linux實驗報告3 我的作業 2009 11 10 實驗地點 a605 實驗時間 2009 11月10 星期二 一 實驗目的 二 實驗步驟及結果分析 要求 將實驗獲得的結果進行描述,基本內容包括 1.開啟虛擬機器,啟動linux,知道輸入密碼進入linux 文字介面 檢視虛擬機器的ip位址,用if...