注册 登录
编程论坛 汇编论坛

[讨论]关于END,PROC伪操作的用法(新手犯难了)

notiger 发布于 2006-05-18 01:05, 2562 次点击
很明显,END [label]后面的标号就是程序的入口地址,程序只有找到入口才能运行.因此平时我都是按正确的方法写的.
可是有时看到这种程序,
.model small
.code
.
.
.
end
就结束了.也就是说,程序能找到入口,怎么回事啊,不明白.

还有关于过程,就是main proc far的问题与main proc near 作为主程序
中的far,near的问题,我知道写.com程序可以用near.
具体有啥说法吗?
3 回复
#2
公子吕2006-05-18 11:20
.model small
.code
...
end
这种简写模式是可以的,汇编器能够知道入口点。但若是这样:
data segment
data ends
code segment
assume cs:code,ds:data
...
code ends
end
这时汇编器就找不到入口点,就会出错。

far 和 near 问题书上说的都很详细吧,far是段间调用,自然保存断点的时候要将段地址和偏移要同时保存, 而near 在同一个段里面,只要保存偏移地址就可以了。


#3
公子吕2006-05-18 11:22
另外补充一下,386的平摊模式(flat)每个任务4G内存没有分段,就只需要near了。
#4
notiger2006-05-18 12:32
[QUOTE]还有关于过程,就是main proc far的问题与main proc near 作为主程序
中的far,near的问题,我知道写.com程序可以用near.
[/QUOTE]
谢谢楼主.
不过经过本来的实验,MASM500,与MASM
510版本对程序的入口点没有检测,不能不说是个遗憾.
到6.0版本就可以检查出来了.
near 与 far 的调要的方法我能懂.
只是为什么程序一般都用far 类型,而且那么必须.
1