1. 程式人生 > >【組合語言】(王爽著第三版)實驗二

【組合語言】(王爽著第三版)實驗二

實驗二

實驗任務(一)

實驗前要求我們將書本P74的程式段按理論分析,將結果進行填空。之後用Debug,將該程式段寫入記憶體,逐條執行之後,

根據指令執行後的實際執行的結果填空如下。

 

mov ax,0021

 

mov  ax , ffff

   mov  ds , ax

   mov  ax , 2200

   mov  ss , ax

   mov  sp , 0100

   mov  ax , [0]                       ;ax=3130

   add  ax , [2]                        ;ax=6462

   mov  bx , [4]                       ;bx=3534

   add  bx , [6]                        ;bx=6C6A

   push  ax                             ;sp=00FEH  ;修改的記憶體單元的地址是2200:00FE內容為6462

   push  bx                             ;sp=00FCH  ;修改的記憶體單元的地址是2200:00FC內容為6C6A

   pop  ax                               ;sp=00FEH  ;ax=6C6A

   pop  bx                               ;sp=0100H  ;bx=6462

   push  [4]                             ;sp=00FE    ;修改的記憶體單元的地址是2200:00FE內容為3534

   push  [6]                             ;sp=00FC    ;修改的記憶體單元的地址是2200:00FC內容為3736

在使用a指令除錯前,先使用e命令將記憶體單元0021:0~0021:7連續8個位元組資料修改為30H,31H,32H,33H,34H,35H,36H,37H,最後用D命令檢視是否正確。

接著我們再使用a指令去除錯每一步的指令

 

 

 

 

 

 

 

 

實驗任務(二)

 使用 a命令輸入 7 行指令,使用 e 命令修改 2000:0~2000:f 的值,及修改後檢視的部分

 

單步執行除錯,並且每步除錯後都用d命令檢視2000:0~2000:f的值:

 

從中我們發現前三行的指令的功能為:把0~2000:f這段空間當做棧段,初始化棧頂

mov sp,0010H   :設定棧頂的偏移地址,棧為空,sp=0010H

棧頂為2000:0010,棧底為2000:000E

小結

在完成實驗的過程中,由於操作不熟練經常出現失誤,例如多敲回車。。(輸完一行總是情不自禁敲一個回車)每週如果只花課堂上一節課的時間去學習彙編,好像是真的不可能學好的。課外還需要自己學習。這一章實驗依舊花了很久時間,自己思考的也不夠,繼續努力吧。