首先你要弄清楚MOVSB这条指令。他把指针DS:SI所指向的字节传送给指针ES:DI所指向内存单元,并根据标志位DF对寄存器DI和SI作相应增减。因为你的DATA1和DATA2的段地址相同,只是偏移不同,所以才有了这个操作。
段与段不能直接传数据,需要用到寄存器,因此有了MOV AX,DS和MOV ES,AX