1. 程式人生 > >彙編實驗報告(二)

彙編實驗報告(二)

一開始沒注意把ffff改成0021,第二次改了,兩次結果對比了一下,發現:

  1. 不改ffff不影響棧的記憶體單元地址,DS是資料段地址,SS是棧段地址,兩者是獨立的。
  2. SP也不受影響,SP代表棧頂,只和存入資料的多少有關,存入時SP=SP-2
  3. 記憶體單元地址我一開始沒看執行結果的SP,是直接算的,用22000+(0010-2),後來發現SP都告訴我了,可以直接看SP算。
    最後查看了一下記憶體單元內容和我自己算的也是一樣的。

看到了CS的值

存入ax的值在偏移地址7、8和e、f都有

第一行 把資料2000存入暫存器ax
第二行 把暫存器ax的值存入棧段暫存器,因位棧段暫存器不可以直接送入。
第三行 將資料10賦值給棧頂偏移地址,也就是確定了棧底的位置是20010,sp對應了棧頂的位置,從此處存入資料SP會隨之變化,如此棧就定義好了。

我感覺是因為指令是一條一條執行的,所以會把上一步執行的資料和CS存在裡面。百度說是單步中斷,我也不是很懂。2000:0 f裡面我沒看見IP。

五、實驗總結與體會
1.DS、CS、IP、SS、SP之間注意區分。
2.棧的空間大小要自己把控管理,防止超界。
3.操作物件之間可不可以直接送入要注意。
4.棧頂的偏移地址,和棧底要分清楚。
5.入棧出