问题:将内存ffff:0~ffff:b单元中的数据复制到0:200~0:20b单元中。
assume cs:codesg
codesg segment
mov bx,0
mov cx,12
s:
mov ax,0ffffh
mov ds,ax
mov dl,[bx]
mov ax,002h
mov ds,ax
mov [bx],dl
inc bx
loop s
mov ax,4c00h
int 21h
codesg ends
end
思路简单,利用循环,修改两次ds的值,bx可以同步,利用dl即可将一段内存地址中的内容传递到另一内存中,但是可以改进,使用段寄存器。代码如下:
assume cs:codesg
codesg segment
mov bx,0
mov cx,12
mov ax,0ffffh
mov ds,ax
mov ax,002h
mov de,ax
s:
mov dl,ds:[bx];段前缀的使用 改进程序5.8
mov es:[bx],dl;//es为附加段
inc bx
loop s
mov ax,4c00h
int 21h
codesg ends
end
这样就可以不用每个循环修改两次ds的值,在循环外设置好ds和es 。一共省略12次设置ds的操作,效率提高。