1. 程式人生 > >組合語言與程式設計 實驗四

組合語言與程式設計 實驗四

實驗內容

1. 綜合使用loop,[bx],編寫完整彙編程式,實現向記憶體 b800:07b8 開始的連續16個*字單元*重複填充字資料 0403H。

下面是具體的程式碼

assume cs:code
code segment
    mov ax,0b800h
    mov ds,ax
    mov ax,0403h
    mov bx,07b8h

    mov cx,10h
s: mov [bx],ax
    inc bx
    inc bx
    loop s

    mov ax,4c00h
    int 21h
cod ends
end


清屏後執行.exe檔案,得到如下結果


> 將原始碼程式中字資料 0403H-> 修改為0441H,再次執行。

可見原來的愛心變成了A

2. 綜合使用loop,[bx],編寫完整彙編源程式,實現向記憶體 0:200~0:23f 依次傳送資料0~63(3FH)。

程式碼如下

assume cs:code
code segment
    mov ax,0
    mov ds,ax
    mov bx,0200h
    mov al,0
    
    mov cx,40h
s: mov [bx],al
    inc bx
    inc al
    loop s

    mov ax,4c00h
    int 21h
code ends
end

進行編譯、連結無誤以後,使用debug 觀察

**從實驗結果可以驗證題目所要求


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

進行Debug



**可見,第二個位元組也被複制過去了。反彙編檢視複製的內容,發現與原始碼相同


實驗總結與體會

  • 首先這次實驗用的部落格園自帶的 Markdown 作為編輯器,初次使用,而且沒有地方預覽,所以排版不一定好看、正確,在此說明

  • 這次實驗相對來說還是用的前幾次的知識,加以應用。對彙編的瞭解更加深一步了。;
    end
    --------