我写了一个程序,为了让他看起来更"结构化",就在其中用了一些子程序.开始,很显然,error
我就把子程序都注释了,一个个地查错,终于找到了那个有错误的子程序
      mov di,0ah
      mov si,168
      mov bx,0
      mov cx,21
  st: mov ax,[si]
      mov es:[bx+di],ax
      add bx,10h
      add si,2
      loop st
我把他单独提取出来另加了几条语句(想单独编译他以查出错误)
data segment

      mov ax,data
      mov dx,ax
      mov es,ax     ;乱加的,没任何意义,只为了语法正确

      mov di,0ah
      mov si,168
      mov bx,0
      mov cx,21
  st: mov ax,[si]
      mov es:[bx+di],ax
      add bx,10h
      add si,2
      loop st
                    ;(程序一)
data ends
end   
      用masm 5.0 编译,一个错误 immediate mode illegal,看了半天都没看出错误,我就用我一直都用来查错的emu8086,却成功的编译通过了... ...
为了证明我没有操作上的误差,我又复制粘贴编译了几遍,结果同前
   大惑不解,无从下手之时 我又选了我程序中另一段子程序(如下),也是通过加上几条语句 单独编译
data segment

      mov ax,data
      mov dx,ax
      mov es,ax    

      mov di,5
      mov si,84
      mov bx,0
      mov cx,21
   r: mov ax,[si]
      mov dx,[si+2]
      mov es:[bx+di],ax
      mov es:[bx+di+2],dx
      add bx,10h
      add si,4
data ends
end                 ;(程序二)

用emu8086 ,成功通过,而masm5.0却给出了这样的错误  missing or unreachable CS
    而程序二和程序一的内容都差不多,在emu8086也能正确通过,masm 却不能    why?????
这到底应该相信谁的??????
(各位,我初学,麻烦解释详细一点,先谢谢大家了)