cx控制循环加偏移地址赋值写的两段程序

assume cs:code
code segment
	mov ax, 0ffffh
	mov ds, ax
	mov bx, 0
	mov dx, 0
	mov cx, 12
	
s:	mov al, [bx]	;将ffff:0000处的值赋给al
	mov ah, 0		;ah置0
	add dx, ax		;dx+=ax
	inc bx			;bx++
	loop s			;最终实现的是将地址ffff:0000到地址ffff:0011的值相加,和赋值给dx
	
	mov ax, 4c00H
	int 21H
code ends
end

另一段:

assume cs:code 
code segment
	mov bx, 0
	mov cx, 12		;循环12次
s:	mov ax, 0ffffH	;ax=ffffH
	mov ds, ax		;ds=ax=ffffH
	mov dl, [bx]	;dl=ffff:0
	mov ax, 0020H	;ax=0020H
	mov ds, ax		;ds=ax=0020H
	mov [bx], dl	;0020:0=dl=ffff:0
	inc bx			;bx++
	loop s			;最终实现的是把ffff:0到ffff:11处的值挪到0020:0到0020:11处
	
	mov ax, 4c00h
	int 21H
	
code ends
end

针对上一个程序的另一种写法:

assume cs:code
code segment 
		mov ax, 0ffffh	;ax=ffffH
		mov ds, ax		;ds=ax=ffffH
		mov ax, 0020h	;ax=0020H
		mov es, ax		;es=ax=0020H
		mov bx, 0		;bx=0
		mov cx, 12		;cx=12,循环12次
s:		mov dl, [bx]	;dl=ffff:0
		mov es:[bx], dl	;0020:0=dl=ffff:0
		inc bx			;bx++
		loop s			;最终实现的是把ffff:0到ffff:11处的值挪到0020:0到0020:11处
		
		mov ax, 4c00h
		int 21H
code ends
end
发布了78 篇原创文章 · 获赞 3 · 访问量 5596

猜你喜欢

转载自blog.csdn.net/qq_43071318/article/details/105264397