組合語言 實驗五

2022-06-03 23:36:27 字數 1906 閱讀 2787

一:對要求的程式進行編譯,連線,用debug載入,跟蹤,然後回答問題。

1) 在程式返回前,我們用d命令查詢data資料 發現其中的值並沒有發生改變

2)在程式返回前我們可以發現,cs=076c ,ss=076b,ds=075a

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

code對應cs   data對應ds    stack對應ss

二:對要求的程式進行編譯,連線,用debug載入,跟蹤,然後回答問題。

1)在程式返回前,我們用d命令查詢data資料 發現其中的值並沒有發生改變

2)在程式返回前我們可以發現,cs=076c ,ss=076b,ds=076a

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

4)對於如下定義的段:

name segment

name ends

如果段中的資料佔n個位元組,那麼程式載入之後,該段的實際占有的空間為(n/16+1)*16

因為我們在分配空間時使用16個位元組為單位的,所以不足16的時候仍然是分配16個位元組來使用。

三:對要求的程式進行編譯,連線,用debug載入,跟蹤,然後回答問題。

上面的準備工作都完成以後:

1)在程式返回前,我們用d命令查詢data資料 發現其中的值並沒有發生改變

2))在程式返回前我們可以發現,cs=076a,ss=076e,ds=076d

3)該程式載入後,code段的段位址為x,則data段的段位址為x+3,stack段的段位址為x+4

四:如果將1,2,3題中的最後一條偽指令「end start」改為end(也就是說不指明程式的入口),則那個程式可以執行 ,說明理由。

第3個可以執行。因為第三個程式入口處便是執行指令,而前兩個則是把資料段放在了前面,所以沒有辦法可以正確的執行。

五:程式如下,編寫code段中的**,將a段和b段中的資料依次相加,將結果存到c段中:

之後我們可以檢視到我們想要的相加結果。

六:程式如下,編寫code段中的**,用push指令將a段中的前8個字型資料逆序儲存到b段之中。

我們可以得到我們想要的結果。

實驗總結:

1 在本次實驗中收穫了關於資料段方面的知識,學習到了不少。

2 此次實驗可以讓我們加深了段位址以及各種語言的運用 收穫不少。

組合語言 實驗五

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

《組合語言》實驗 實驗

注意 db定義位元組型別變數,乙個位元組資料百佔1個位元組單度元,讀完乙個,偏移量加1 dw定義字型別變問量,乙個字資料佔2個位元組單元,讀完乙個,權偏移量加2 dd定義雙字型別變數版,乙個雙字資料佔4個位元組單元,讀完乙個,權偏移量加4 一開始用了乙個暫存器表示所有項,但是後來發現四個資料佔的位元...

組合語言實驗1 2

小寫字母變為大寫字母 data segment notic db please input the word 0ah,0dh data ends code segment assume cs code,ds data start mov ax,data mov ds,ax 填入ds mov cx,1...