彙編實驗五

2022-05-24 06:00:12 字數 2410 閱讀 3613

1.用d命令檢視後發現data段中的資料不變。

2.cpu執行程式,程式返回前,cs=076c,ss=076b,ds=076a。

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

1.用d命令檢視後發現data段中的資料不變。

2.cpu執行程式,程式返回前,cs=076c,ss=076b,ds=076a。

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

4.對如下定義的段:

name segment

name ends

如果段中資料佔n個位元組,則程式載入後,該段實際占有的空間為 [(n+15)/16]*16。(結合實驗1,2可知資料段都是以16個位元組對齊,不足16位元組按16位元組算)

1.用d命令檢視後發現data段中的資料不變。

2.cpu執行程式,程式返回前,cs=076a,ss=076e,ds=076d。

3.設程式載入後,code段的段位址為x,則data段的段位址為x+3,stack段的段位址為x+4。

(1)和(2)不能正確執行,因為如果不是end start就會預設以ip=0執行,而不是從start開始執行。而(3)的data和stack都在code之後,所以ip本來就為0,可以正確執行。

執行前我檢視了很多次,一直是這樣,我也不知道問題出在哪!!

執行後可以看出存入正確。

1

assume cs:code

2a1 segment

3 dw 1,2,3,4,5,6,7,8,9

,0ah,0bh,0ch,0dh,0eh,0fh,0ffh

4a1 ends

5b1 segment

6 dw 8 dup(0)7

b1 ends

8code segment

9start:

10mov ax,a1

11mov ds,ax

12mov ax,b1

13mov ss,ax

14 mov sp,16

15 mov cx,8

16 mov bx,0

17s:push [bx]

18 add bx,2

19loop s

20mov ax,4c00h

21int

21h22

code ends

23 end start

執行前還是向上一題那樣,就不截圖了。

執行後如下:

發現成功逆序儲存。

通過這次實驗我理解和掌握將資料、**、棧放入不同段的程式的編寫和除錯,也理解具有多個段的彙編源程式對應的目標程式執行時,記憶體分配方式。

不過在實驗中我也遇到很多問題,希望在接下來的學習中能改進吧。

彙編實驗五

實驗內容 描述編寫code段 將a段和b段中的資料依次相加,將結果儲存在c段中 assume cs code 編寫code段 將a段和b段中的資料一次相加,將結果儲存在c段中 a segment db 1,2,3,4,5,6,7,8 a ends b segment db 1,2,3,4,5,6,7...

彙編實驗五

1.任務一 1 cpu執行程式,程式返回前,data段中的資料如上圖所示,保持不變 2 cpu執行程式,程式返回前,cs 0772h,ss 0771h,ds 0770h 3 設程式載入後,code段的位址為x,則data段的段位址為x 2h,stack段的段位址為x 1h 2.任務二 1 cpu執行...

王爽彙編實驗 五)

將下面的程式編譯 連線,用debug載入 跟蹤,然後回答問題。assume cs code,ds data,ss stack data segment dw 0123h,0456h,0789h,0abch,0def,0fedh,0cbah,0987h data ends stack segment ...