求教:WINXP下VC程序执行"mov es,ax"报错,该怎么处理

求教:WINXP下VC程序执行"mov es,ax"报错
接手改一个98的程序到XP,VC++ 6.0
运行mov es,ax会报错:access violation.
麻烦高手指点一下.非常感谢 !  
  pusha
  push es
  mov ax,wdata
  mov es,ax
  ...

------解决方案--------------------
用16位的汇编器编译连接,在V8086模式下执行即可。
在32位模式下给段寄存器赋值是特权指令。