實驗報告 實驗五

2022-08-21 09:30:17 字數 3086 閱讀 5517

實驗內容:

1.將老師給的程式框架編譯、連線後利用反彙編u檢視**長度,利用g命令將程式執行至在mov ax,4c00h結束語句前。

(1)發現data中的資料被改為**中指定的資料。

(2)程式返回前,cs=076c、ss=076b、ds=076a。

(3)程式執行後,設code段位址為x,則data段位址為x-2,stack段的段位址為x-1。

2.將ex5-2編譯連線用debug除錯後

(1)發現data中的資料為改為了指定的資料。

(2)程式返回前,cs=076c,ss=076b,ds=076a。

(3)設程式載入後,code段的段位址為x,則data段的段位址為x-2,stack的段位址為x-1。

(4)若段中資料佔n個位元組,程式載入後,該段實際占有的空間為。。

這題其實一開始我還挺沒頭緒的,因為我只看出了三個段位址間的差為1,且存入16,4個位元組後的段位址並沒有改變,但是我經過上網的查閱發現:因為每個段都是以16位元組來對齊的,但是最大不能超過64kb 。這也就是說,如果你的段資料在16位元組內,一樣會被當做乙個位元組段來算,就是16位元組。 要是大於16位元組呢,那麼如果多出就算是1個位元組,因為已經超過乙個16位元組,多出來的1個位元組 也得有乙個位元組段的容量來儲存它,所以這時得佔兩個位元組段,就是32位元組,以此類推。

所以答案為((n+15)/16)*16(該式意思是滿十六後多出的部分都按16計算)

3.編譯連線執行後

(1)data中的資料與設定的資料一致。

(2)cs=076a,ss=076e,ds=076d。

(3)設code段的段位址為x,則data段的段位址為x+3,stack段位址為x+4。

這裡有乙個疑問,**段的長度如圖為32個位元組,在我看來,應該只要+2就夠了啊,可能是系統多預留了16位元組的空間嗎?

4.將三個**中的start分別刪去,再編譯連線執行。

實驗一無法執行

實驗二也無法執行

實驗三反彙編的**一致,且結果也一致。

因為將start去掉後,程式會從ip=0的位置開始執行,而三個程式中只有第三個程式**段的位置是ip=0時的位置,所以第三個程式可以被執行。

5.**如下:

1

assume cs:code

2a segment

3 db 1,2,3,4,5,6,7,8

4a ends56

b segment

7 db 1,2,3,4,5,6,7,8

8b ends910

c1 segment ; 在整合軟體環境中,請將此處的段名稱由c→改為c1或其它名稱

11 db 8 dup(0)12

c1 ends ; 改的時候要成對一起修改

如上圖,相加前邏輯段c的值為0.

如圖,實現資料相加後的邏輯段c的8個位元組的值為前16個位元組資料對應的和。

6.

assume cs:code

a segment

dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh

a ends

b segment

dw 8 dup(0)

b ends

code segment

start:

mov ax,a

mov ds,ax

mov bx,0

mov cx,8

mov ax,b

mov ss,ax

mov sp,10h

s: push [bx]

add bx,2

loop s

mov ax,4c00h

int 21h

code ends

end start

如上圖,對比前後邏輯段c中的資料,發現存放正確。

實驗感想:

對於分段**的順序即部分的操作要點有了更深的理解,逐漸開始可以自己編寫或者補全部分簡單的**,實驗過程中遇到了許多的疑問,但是通過上網查閱,對於資料的儲存,棧的定義有了更深的理解。

實驗五實驗報告

系統架構圖 首先我在我的電腦裡建立了有名稱要求的資料夾,然後開啟android studio clone了我們的小組專案。此處因為已經clone過了,所以無法再把這個專案clone進去 進行編譯,執行,測試均正常 我在遊戲主介面載入了乙個toast,點選可以短暫地顯示我的學號資訊 首先在封面檔案裡我...

MySQL實驗報告五 實驗報告五資料庫

實驗報告 資料庫原理應用及應用 實驗報告 題目 實驗五 1 表的更新 2 檢視的建立 查詢及更新 日期2014 04 08 班級學號 2 姓名 成績實驗環境 在已安裝的安全的 0 sql server 2000 上 實驗內容與完成情況 一 表的更新 1 插入 insert into values 或...

實驗六實驗報告

實驗結論 part1 結構體型別及程式設計應用 1.補足程式 include const int n 5 定義結構體型別struct student,並定義stu為其別名 typedef struct student stu 函式宣告 void input stu s,int n int findm...