wdl7770016 发表于 2011-6-28 15:54:22

堆栈定义问题

我明明都定义了堆栈段为什么编译完却警告我没有堆栈段。。。。assume我也assume了要mov ax,stackmov ss,ax我也做了 为什么却。。。
还有代码段中需要mov ax,code   mov cs,ax吗   为什么呢。。。难道cpu会自己找到?谁能说下
原理。。。

king嗜血法师 发表于 2011-6-29 11:24:12

本帖最后由 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

wdl7770016 发表于 2011-7-1 11:57:35

那是不是不用标号的话我程序的第一行就会被执行   如果code段前边还定义了其他段 而我又没有用那个start标号cpu就会把最前边的其他段中的内容当作代码来执行?

liuhui88126 发表于 2011-7-1 17:12:12

听不懂你在说什么,你把代码发上来看看,我们就知道你在说什么了

夜读金瓶梅 发表于 2011-7-1 20:15:02

这位同学概念严重模糊 建议回去重看视频2遍:lol

milorguan 发表于 2011-7-3 10:49:23

这位同学说得不太清楚,我只想告诉你,编写时不需要你去定义CS ip的值的,你只需要将他们关联起来就行了,

king嗜血法师 发表于 2011-7-4 03:24:22

wdl7770016 发表于 2011-7-1 11:57 static/image/common/back.gif
那是不是不用标号的话我程序的第一行就会被执行   如果code段前边还定义了其他段 而我又没有用那个start标 ...

是的。会从你的数据段当成指令执行。

wdl7770016 发表于 2011-7-5 16:05:32

ok
谢谢哈这几天考试都没时间看计算机。。。
页: [1]
查看完整版本: 堆栈定义问题