同意 wanya870228的回答,我有补充,如果你没有显性的指出
[di]段地址的话,那么就默认段地址为ds:[di],另外,你查看下ds:[di]地址下的内存内容是否为0,若为0,则,通过传送指令mov dl,[di],dl寄存器的内容,当然也为0,说明传送了数据。为了你看的明白,你可以mov之前,把ds:[di]内存用debug调试命令-e ds:[di] 改写成非0。然后再mov,这样就明白了。
DL,可以自由使用,我想你是不是段地址没设对,mov dl,[di]就是吧
((DS)*16+(DI))->DL。
BX,SI,DI这3个默认ds段寄存器
BP这1个默认ss段寄存器
AX,CX,DX,SP这4个不能用来寻址,所以那个段寄存器也不默认。
请参考