记录段地址寄存器的使用,用下面的例题来说明具体的使用方法。
将内存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
执行前
执行后