实模式和保护模式下的汇编千差万别,可有时候基本的东西都出问题,以下是一个十
分常见的实模式下运行正常的类memset程序段:
MOV AX, 55AA
MOV CX, 6
LES DI, Dest
CLD
REP STOSW
可移植到WIN32的时候怎么弄都是非法指令,最后看到大虾的书,才发现LES这句的正
确写法是:
MOV EDI, Dest
当场差点昏厥,后来一想也是,平坦模式下的ES本来应该是正确的(装着该进程的select
or),一LES了之后反而不对了。
严重感谢 John Robbins 大虾(Matt Pietrek 的同事)的书(《Debuging
Applications》),否则我现在可能快被LES累死了。