彙編學習 第五天

2022-01-19 09:54:06 字數 4092 閱讀 5878

程式取得所需空間有兩種方式:

1.引導程式的時候為程式分配

2.程式在執行過程中向系統申請

**

mov ax,[0

] ;debug中,會將ds:0乙個字的資料(高位和低位)傳入ax 16位暫存器

mov al,[

0] ;debug中,會將ds:0中的乙個位元組資料傳入al 8位暫存器

assume cs:code

code segment

dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h

start: mov bx,

0mov ax,

0mov cx,

8s: add ax,cs:[bx]

add bx,

2loop s

mov ax,4c00h

int21h

code ends

end start

"dw"--"define word"定義字型資料當我們使用u指令檢視程式時

前面一堆我們不知道的**,這是在程式中的**段,這個**段在這裡是由dw定義,8個字型資料,16個位元組,所以我們的彙編**應該在cs:10處

在我們debug中執行程式時,需要將ip調整為10

在上面程式中,我們在第一條彙編指令前面加上乙個標號start。

這個start在end後面出現,因此我們使用end指明程式的入口位址。你可以這樣理解:前面的start標號僅僅就是個標記,你第一次看到不能說明說明,只有你在看到下面end start時,你才知道start是程式的入口。

在程式生成時就會自動設定程式的入口位址

完成下面的程式,利用棧,將程式中定義的資料逆序存放

逆序結果

在這段中定義了乙個棧空間儲存資料 cs:010h~cs:02fh,16個字,32位元組大小

檢測點 6.1

(1)

mov cs:[bx],ax

(2)

棧在程式中,所以段位址和當前位址相同,第乙個空填cs

從cs:10h開始往後20個位元組,也就是cs:9h+20h=cs:29h,棧空間就是cs:10h~cs:29h

所以在入棧之前,sp=30h(第一次入棧時,棧頂在cs:28h)

第三個空pop cs:[bx]

實驗 5 編寫,除錯具有多個段的程式

匯程式設計序多個段,相當於獨立的,也就是位址都是0開始

因為在除錯**開始前,只有cs位址是已知的,data和stack還不知道,資料段的資料要檢視到的話

1.將**執行**執行到mov ds,ax

2.因為這三個段空間是緊密排列,先資料段,再棧段,最後**段(順序與**中的順序有關),棧段佔16位元組,資料段佔16位元組,**段開始在076c:0h,所以棧段開始在076b:0h,資料段開始在076a:0h

n / 16 不進行四捨五入的取整,這個公式實際上想說明,不滿16位元組,也佔了16位元組,也就是一行

(3)能夠正常正確執行,因為(1)(2)在程式中棧段和資料段都在**段的前面,程式的位址不是**段的位址

學習第五天

清楚測試用例是什麼 測試用例的重要性 有效性 測試用例是測試人員測試過程中的重要參考依據,準確的測試用例的計畫 執行和跟蹤是 測試的有效性的有力證明 可復用性 設計良好的測試用例可以重複執行,能節約時間,提高測試效率 易組織性 清晰詳細的測試用例能夠便於測試執行的開展 可評估性 測試用例的通過率是檢...

Java學習第五天

當類載入器需要載入某個類時,類載入器會在載入初始化後生成該類的乙個類物件 class 用於描述該類的元資料資訊等。在其後的連線過程中,會初始化該類的靜態成員 變數或靜態初始化器 靜態初始化變數和初始化器按照先後順序執行初始化。例如 static int a 10 static 這樣初始化後a 100...

C 學習第五天

c 中的is和as is可用於任何型別。例如 int a 10 a is object true object o 10 o is int true o person o is int false as右側型別必須為引用型別或可空型別。as操作如果失敗,不丟擲異常,而是返回null 結構 struc...