实验4:[bx]和loop的使用


一、编程,向内存0:200 ~ 0:23F依次传送数据0 ~ 63(3FH)

assume cs:code

code segment

	mov ax,0020h
	mov ds,ax
	
	mov bx,0 ;内存偏移始址
	mov cx,64 ;循环40h次
	mov ax,0 ;待写入元素的开始值
	
s:	mov ds:[bx],ax
	inc bx 
	inc ax
	loop s
	
	mov ax,4c00h
	int 21h
	
code ends
end

因为这里bx和ax都是从0开始,所以我们可以进行一些优化:

assume cs:code

code segment

	mov ax,0020h
	mov ds,ax
	
	mov bx,0 ;内存偏移始址及起始值
	mov cx,64 ;循环40h次
	
s:	mov ds:[bx],ax
	inc bx 
	loop s
	
	mov ax,4c00h
	int 21h
	
code ends
end

二、下面程序功能是将"mov ax,4c00h"之前的指令复制到内存0:200处,补全程序,调试跟踪结果

assume cs:code

code segment

	mov ax,____
	mov ds,ax ;ds:ax
	
	mov ax,0020h
	mov es,ax ;es:0020
	
	mov bx,0
	
	mov cx,____
	
s:	mov al,[bx] ;将ds:0处的内容送给al
	mov es:[bx],al
	inc bx
	loop s
	
	mov ax,4c00h
	int 21h
	
code ends
end

我们这里有两行是不确定的值,我们可以在debug下去查看,这里不确定的值可以随便填写,我们填写为1,进入debug后进行观察

在这里插入图片描述
在这里我们可以知道,每次复制1字节内容,使用al寄存器进行中转

这里我们可以看到循环次数为076A:0000 ~ 076A:0016,所以cx = 17

第一行的内容应该是CS寄存器中的值给DS寄存器复制,所以第一行填入CS

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值