實驗一:
代碼如下:


從中發現,在CPU和程序執行前,data中的值保持不變,并且cs=076c,ss=0769,ds=075A。
設程序加載后,code段的段地址為X,則data段的段地址為:X-2,stack的段地址為:X-1
實驗二:
代碼如下:


CPU執行程序,程序返回前,data段中的數據不變
如果段中數據占N個字節,加載后,該段實際占有的空間有 [(N+15)/16]*16。
實驗三:
代碼如下:


從中發現,CPU執行程序,程序返回前,data段中的數據不變,CPU執行程序,程序返回前,cs=076a,ss=076e,ds=076d。設程序加載后,code段的段地址為X,則data段的段地址為:X+3,stack的段地址為:X+4
實驗四:
如果將1.2.3題中的最后一條偽指令“end start”改為“end”(也就是說,不指明程序的入口個),則哪個程序仍然可以正確執行?請說明原因。
1和2不能正確執行,反匯編出來的代碼并不是我們之前輸入的,所以執行失敗。而3的data和stack都在code之后,所以ip本來就為0,可以正確執行。其中 start 可以用其他字符代替,但是對應的end start 中的start 也必須用同字符代替。 若第一個strat缺省,則end strat中的 strat 也必須去掉。
實驗五:


實驗六:


浙公網安備 33010602011771號