当前位置: 代码迷 >> 汇编语言 >> 编译时出错,帮忙解决一下!解决方案
  详细解决方案

编译时出错,帮忙解决一下!解决方案

热度:3192   发布时间:2013-02-26 00:00:00.0
编译时出错,帮忙解决一下!
;PROGRAM TITLE GOES HERE--Compare string
;**********************************************************
datarea segment
  string1 db 'Move the cursor backward.'
  string2 db 'Move the cursor backward.'
;
  mess1 db 'Match.',13,10,'$'
  mess2 db 'No match!',13,10,'$'
datarea ends
prognam segment
;* * * * * * * * * * * * * * ** * * * * * * * * * * * * *
main proc far
  assume cs:prognam,ds:datarea,es:datarea
start:
;set up stack for return
  push ds
  sub ax,ax
  push ax
;set DS register to current data segment
  mov ax,datarea
  mov ds,ax
  mov es,ax
;MAIN PRT OF PROGRAM GOES HERE
  lea si,string1
  lea di,string2
  cld
  mov cx,25
  repz cmpsb
  jz match
  lea dx,mess2
  jmp short disp
match:
  lea dx,mess1
disp:
  mov ah,09
  int 21h
  ret
main endp
;-------------------------------------------------------------------
prognam ends

end start


错误提示说 start没有定义,我检查了一下没发现有问题,不过编译器就是通不过。

------解决方案--------------------------------------------------------
到网上下载MASM5.0编译器:
http://www.fishc.com/a/downloads/huibian/1011
ML6.15不支持end start

------解决方案--------------------------------------------------------
把下面两行去掉
main proc far
main endp

------解决方案--------------------------------------------------------
高版本的 ml 是支持 end start 语句的,只是引入了标号的范围特性,即认为定义在一个 proc 范围内的标号通常表示方式其为子程私有,只能在该子程内引用;如果要让其可以在整体范围内被引用的话,需要在标号后再加上一个分号':' 即形如 start:: 这样的,即表明 start 是全局性的,可以被 end 语句引用了。
------解决方案--------------------------------------------------------
探讨
;PROGRAM TITLE GOES HERE--Compare string
;**********************************************************
datarea segment
string1 db 'Move the cursor backward.'
string2 db 'Move the cursor backward……

------解决方案--------------------------------------------------------
探讨

高版本的 ml 是支持 end start 语句的,只是引入了标号的范围特性,即认为定义在一个 proc 范围内的标号通常表示方式其为子程私有,只能在该子程内引用;如果要让其可以在整体范围内被引用的话,需要在标号后再加上一个分号':' 即形如 start:: 这样的,即表明 start 是全局性的,可以被 end 语句引用了。
  相关解决方案