實驗任務2
實驗結果:1)-d指令用來檢視某一區域的記憶體使用情況,段基址為ffff,乘以16之後就是ffff0,再加上偏移位址就是最後檢視的位址
2)先檢視生産日期記憶體區域
嘗試進行修改
再次檢視,修改無效,說明這塊區域隻能讀,不能寫
實驗任務3
1)-e b800:0 03 04 03 04 03 04 03 04 03 04
2)-f b800:0f00 0f9f 03 04 對某一段記憶體進行批量修改
3) 嘗試進行對記憶體進行修改
實驗任務4
當執行完mov sp,30之後,ss:sp指向棧底0020:0030,每執行一次push,sp就減2。
每執行完一次pop,sp就+2。
答案1:棧頂的邏輯位址為0020:0030,因為此時棧為空,這時棧頂和棧底重合,實體位址為00230
答案2:每次push放入的是字形資料,20位于棧底,是以放入的是1020,再放入3040
答案3:沒有變化
答案4:
實驗任務5
答案1:當執行完mov ss,ax之後sp的值也改變了,說明這兩條指令并不會分步執行,而是會一起執行
答案2:t指令使cpu中斷,但是編譯器要知道下面指令的位址,于是在棧中存放了下一條指令的位址。
實驗任務6
實驗任務7
答案1: 第一空填cs,要把程式段的入口放在ds段基址寄存器中後面就能根據偏移位址複制
第二空填cx,是程式的長度
沒有操作數的指令,指令長度為1個位元組
操作數隻涉及寄存器的的指令,指令長度為2個位元組,如:mov bx,ax
操作數涉及記憶體位址的指令,指令長度為3個位元組,如:mov ax,ds:[bx+si+idata]
操作數涉及立即數的指令,指令長度為:寄存器類型+1。 8位寄存器,寄存器類型=1,如:mov al,8;指令長度為2個位元組。 16位寄存器,寄存器類型=2,如:mov ax,8;指令長度為3個位元組
CS為代碼起始段位址