實驗四:【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:

