+ -
当前位置:首页 → 问答吧 → 为什么可以把start:/end start的代码放到一个far类型的过程里面?

为什么可以把start:/end start的代码放到一个far类型的过程里面?

时间:2010-12-27

来源:互联网

定义一个far类型的过程,不就是为了主代码里面来调用么?
但是很多例子程序却写成了这样:

assume ...
main proc far
start:
...
...
main endp
code ends
end start

为什么这样写实可以的呢? start入口竟然在某个函数的内部,而不是外部? 太令人费解了。

请高手解释一下。谢谢!

作者: s3yeah   发布时间: 2010-12-27

什么书这是? 
  为什么要把子程序当作主程序呢

作者: znxllyuan   发布时间: 2010-12-27

例如csdn上看到的一个例子:

Assembly code

;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 PART OF PROGRAM GOES HERE
  lea si,string 1
  lea di,string 2
  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

作者: s3yeah   发布时间: 2010-12-27

热门下载

更多