實驗內容 一:
執行截圖:
除錯截圖
將0403h改為0441h後 :
執行截圖:
除錯截圖 :
實驗內容 二 :
1)
除錯截圖:
2)
參考程式碼: (來源於網路)
assume cs:code
code segment
mov ax,20h
mov ss,ax
mov sp,40h
mov bx,3f3eh
mov cx,32
s: push bx
sub bx,0202h
loop s
mov ax,4c00h
int 21h
code ends
end
除錯截圖
思考:
mov ss,ax 指定堆疊段為0:200處
mov sp,40h 指定棧頂指標為0:23f處
定義棧位置為200-23f 然後將資料0~63 倒序壓入棧
在push bx 命令前 0:200 23f 之間的記憶體
第一次 push 後
逐漸迴圈......
最終達成目的
實驗內容 三 :
(3)下面的程式功能是將“mov ax,4c00h"之前的指令複製到記憶體0:200處,補全程式。上機除錯,跟蹤執行結果。
assume cs:code
code segment
mov ax,cs
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,17h
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
解答:
第一空 : 將段程式碼CS:存放當前正在執行的程式程式碼所在段的段基值賦值給 ds
第二空 : 推出來的
先隨便令 cx=20
通過反彙編
“mov ax,4c00h"之前 是至 0017
所以如果將“mov ax,4c00h"之前的指令複製到記憶體0:200處 需複製17個位元組
需迴圈17次
cx =17h