堆栈定义问题
我明明都定义了堆栈段为什么编译完却警告我没有堆栈段。。。。assume我也assume了要mov ax,stackmov ss,ax我也做了 为什么却。。。还有代码段中需要mov ax,code mov cs,ax吗 为什么呢。。。难道cpu会自己找到?谁能说下
原理。。。
本帖最后由 king嗜血法师 于 2011-6-29 11:26 编辑
1: 应该是编译器的事吧,不需要去纠结。
2: 不需要去为CS赋值,比如:
assume cs:code
codesegment
start: .........
.........
.........
code ends
end start
编译好的程序运行是会先找入口,入口是哪呢?那就是end start,那么程序的第一条指令就是从地址start:开始的了,你换个名字当然也可以,比如:
assume cs:code
codesegment
go: .........
.........
.........
code ends
end go 那是不是不用标号的话我程序的第一行就会被执行 如果code段前边还定义了其他段 而我又没有用那个start标号cpu就会把最前边的其他段中的内容当作代码来执行?
听不懂你在说什么,你把代码发上来看看,我们就知道你在说什么了 这位同学概念严重模糊 建议回去重看视频2遍:lol 这位同学说得不太清楚,我只想告诉你,编写时不需要你去定义CS ip的值的,你只需要将他们关联起来就行了, wdl7770016 发表于 2011-7-1 11:57 static/image/common/back.gif
那是不是不用标号的话我程序的第一行就会被执行 如果code段前边还定义了其他段 而我又没有用那个start标 ...
是的。会从你的数据段当成指令执行。
ok
谢谢哈这几天考试都没时间看计算机。。。
页:
[1]