【匯編語言】(王爽著第三版)實驗四


實驗四:【bx】和loop的使用

實驗1. 綜合使用 loop,[bx],編寫完整匯編程序,實現向內存 b800:07b8 開始的連續 16 個 字單元重復填充字數據 0403H。

 

1.源代碼

assume cs:code
code segment
mov ax,0b800h
mov ds,ax
mov bx,07b8h
mov cx,16
s: mov [bx],0403h
add bx,2
loop s

mov ax,4c00h
int 21h
code ends
end

進入環境編譯

然后保存文件

2.masm編譯 link鏈接 最后直接執行,得到實驗結果截圖

 

 

 

將源代碼程序中字數據 0403H→修改為 0441H,再次運行,截圖顯示運行結果:

 實驗二

1.源代碼

assume cs:code
code segment
mov ax,0020h
mov ds,ax
mov bx,0
mov ax,0
mov cx,64
s: mov [bx],al
add bx,1
add al,1
loop s

mov ax,4c00h
int 21h
code ends
end

2.匯編、鏈接無誤后,靈活使用 debug 的 t 命令、g 命令、p 命令調試,用 d 命令 查看 0:200~0:23F,確認是否將 0~63 傳送至此段內存區域

實驗三

1.源代碼

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

mov ax,4c00h
int 21h
code ends
end

這段代碼實際上是將[bx]中的數據傳入到0:200處,ds中存放的是cs的值,所以將ds賦值為cs。

cx的值是loop循環的次數,在執行本實驗時,指令的復制實際上是向內存單元寫入數據,而程序段的長度決定了循環寫入的次數,所以cx的值為程序段的長度。

2.用r命令查看一開始cx的值,再用u命令反匯編

3.修改cx的值為0017h:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM