我写了一个程序,为了让他看起来更"结构化",就在其中用了一些子程序.开始,很显然,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?????
这到底应该相信谁的??????
(各位,我初学,麻烦解释详细一点,先谢谢大家了)