记录段地址寄存器的使用,用下面的例题来说明具体的使用方法。
例题
将内存ffff:0-ffff:f 内存单元中的数据复制到0:200-0:20f;
分析:
ds寄存器:记录数据从哪里来;
es寄存器:记录数据到哪里去。
assume cs:code
code segment
mov ax,0ffffh
mov ds,ax ; 数据从ds中来
mov ax,20h
mov es,ax ; 数据到es中去
mov bx,0 ; 0-16
mov cx,16 ; loop 计数器
setNumber:
mov dl,ds:[bx]
mov es:[bx],dl
inc bx
loop setNumber
mov ax,4c00h
int 21h
code ends
end
结果如下:
-d 0:200 20f
这个代码可以继续优化,方法如下;
修改代码如下:
assume cs:code
code segment
mov ax,0ffffh
mov ds,ax ; 数据从ds中来
mov ax,20h
mov es,ax ; 数据到es中去
mov bx,0 ; 0-16
mov cx,8 ; loop 计数器
setNumber:
mov dx,ds:[bx]
mov es:[bx],dx
add bx,2
loop setNumber
mov ax,4c00h
int 21h
code ends
end
执行前
执行后