實驗二
實驗任務(一)
實驗前要求我們將書本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
小結
在完成實驗的過程中,由於操作不熟練經常出現失誤,例如多敲回車。。(輸完一行總是情不自禁敲一個回車)每周如果只花課堂上一節課的時間去學習匯編,好像是真的不可能學好的。課外還需要自己學習。這一章實驗依舊花了很久時間,自己思考的也不夠,繼續努力吧。