實驗任務:
一、使用debug,將下面的程式段寫入記憶體,逐條執行,根據指令執行後的實際運**況填空
其中① 在使用 a 命令輸入指令除錯前,使用 e 命令將記憶體單元 0021:0 ~0021:7 連續 8
個位元組資料修改為 30h, 31h, 32h, 33h,34h,35h,36h,37h
② 將 p74 實驗任務(1)中第1 行的 mov ax, ffff → 改為 mov ax, 0021
首先用e命令首先修改好對應記憶體,檢視修改好的記憶體值後進行彙編命令輸入
下面用t命令分步執行
將結果填寫在書本上,如圖:
實驗結果與理論分析一致
二、按圖3.19中執行實驗,分析為什麼2000:0~2000:f的內容會發生改變
首先按題目要求輸入a指令
然後用t命令分布執行,每次執行後用d命令檢視記憶體中改變
前三行彙編指令的功能是用ax設定棧段位址設為ss=2000h,和棧頂的偏移位址sp=0010h
mov sp,10即是初始化棧頂
棧頂2000:0010,棧底2000:000f,此棧為空棧
記憶體改變猜想:棧中不光存入了資料,後面也許讀入了關於ss,ip的相關資料,最後棧清空時棧底棧頂重合這些資料也隨之消失
實驗總結:
通過實驗二的學習,從彙編指令中感受到了棧中記憶體位址的變化方式,以及棧的先進先出的特性。而這些在程式語言中只能得到結果,具體的指標操作過程還是不夠清晰。
同時對實驗2的過程產生的猜想會讓我在接下來的學習過程中更加熱衷於解出答案。
再者,這裡提供了乙個不同於程式語言要設第三者變數的交換資料方法,這裡用棧的特性實現了直接對兩者資料的交換,聽說這只是彙編中不設第三個變數的三種方法其一,很期待接下來彙編給我的驚喜!
彙編實驗(二)
test 和 and 區別在於不改變op1 shr 如果要多移幾次 mov cl,4 shr dl,cl 判斷陣列裡正負數 並分開存放 assume cs code,ds data data segment m db 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17...
彙編實驗二
1 從buf單元開始存有一字串 長度 255 程式設計實現統計該字串中的ascii在42h 45h之間的字元個數,並將統計結果以二進位制形式顯示在螢幕。486 data segment use16 buf db abcd count equ buf data ends code segment us...
彙編實驗二
1 使用e命令修改0021 0 0021 f資料,及修改後檢視是否正確寫入的操作 可以看出是正確的。2 使用a命令輸入指令 3 執行命令 將結果填在書上 2.1 使用a命令輸入指令,使用e命令修改2000 0 2000 f的值,及修改後檢視的部分 2 單步除錯每一行彙編指令 第一行 給ax賦值 第三...