+ -
当前位置:首页 → 问答吧 → 连接的时候出现there was a error detected

连接的时候出现there was a error detected

时间:2011-05-21

来源:互联网

如题:
程序如下:
;******************************************
; 模块1
;******************************************
public CNT
extrn cmpell:far
data segment
CNT dw 0
array label word
  dw 1111h
  dw 2222h
  dw 3333h

case dw case0
  dw case1
  dw case2
data ends

stack segment
  dw 100 dup(?)
  tos label word
stack ends

code1 segment
assume cs:code1,ds:data,ss:stack
main proc far
start:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,offset tos

push ds
sub ax,ax
push ax

mov bx,array
push bx
mov bx,array+2
push bx
call far ptr cmpell
mov bx,array
push bx
mov bx,array+4
push bx
call far ptr cmpell
mov bx,array+2
push bx
mov bx,array+4
push bx
call far ptr cmpell
cmp CNT,0
jz case0
cmp CNT,2
jz case1
cmp CNT,3
jz case2
exit:
ret

case0:
mov dl,0
mov ah,2
int 21h
jmp exit
case1:
mov dl,1
mov ah,2
int 21h
jmp exit
case2:
mov dl,2
mov ah,2
int 21h
jmp exit
main endp
code1 ends
end

;***************************************
; 模块2
;***************************************
public cmpell
extrn CNT:word

stack segment common
  dw 100 dup(?)
  tos label word
stack ends

code2 segment
assume cs:code2,ss:stack
cmpell proc far
push bp
mov bp,sp
push ax
push bx
mov ax,ss:[bp+8]
mov bx,ss:[bp+6]
cmp ax,bx
jnz ne
add CNT,1
ne:
pop bx
pop ax
pop bp
ret 4
cmpell endp
code2 ends
end

编译是通过的~就是在连接的时候说there was one error detected ,请问是什么原因呢?应该怎么改呢?
这个程序我只是用来实践下而已的,本来题目是比较简单的

编写程序2:要求比较数组ARRAY中的三个16位补码数,并根据比较结果在屏幕上显示如下信息:
如果三个数都不相等则显示0;
如果有两个数相等则显示1;
如果三个数都相等则显示2。

请高手赐教下吧~

作者: love277399986   发布时间: 2011-05-21

exe是会生成的,但在运行的时候说遇到无效的指令~应该怎么修改程序呢?

作者: love277399986   发布时间: 2011-05-21

引用 1 楼 love277399986 的回复:

exe是会生成的,但在运行的时候说遇到无效的指令~应该怎么修改程序呢?


调试检查 无效指令 的地址,然后回溯看如何到这个地址的。

作者: mydo   发布时间: 2011-05-21