彙編 實驗四

WINNER9898發表於2018-11-22

實驗內容 一:

   

執行截圖:

 

除錯截圖

將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

 

相關文章