1.P71页 串操作指令
在书中倒数第二段写道:若AR1与AR2的地址分别为1000H、1020H,此时源子串与目的子串在存储区产生重叠,可以采用以下的方式处理,即将子串自尾至首传送
LEA SI,AR1
LEA DI,AR2
MOV CX,100
ADD SI,100-1
ADD DI,100-1
STD
REP MOVSB
粗看还是比较难理解的,为什么就可以避免源和目标子串重叠的问题,我们分开来考虑
1.如果还是从头到头传送,开始时偏移地址为1000H中放的是23H,传完把23H给到偏移地址为1020H的目的地址,问题出现了,原本源字串中偏移地址为1020H的地方是有数据的,相当于传一次就覆盖了一次,后面全乱了
2.如果是从尾到尾,那么开始SI指向的是偏移地址为1063H的数据,而DI指向的是偏移地址为1083H的数据,每一次SI和DI的指针都往上移动,那么可以保证SI指向的数据不会被DI指向的数据覆盖掉,实现了避免源和目标子串重叠