eertert 发表于 2012-3-5 13:50:40

有几个问题想问下高手

问题一:
codesegment
          mov   ax,4c00h
          int   21h
start : movax,0
             :
             :
            :
从上面的代码中,第一条指令是指movax , 4c00h,还是start : movax,o?
问题二:运行程序时,是先把程序全部加载到内存后,CPU才开始执行的吗?谢谢了

莫名其妙 发表于 2012-3-5 15:58:06

本帖最后由 莫名其妙 于 2012-3-5 16:10 编辑

第一条指令是指movax , 4c00h,还是start : movax,o?




首先 这个程序的代码段开始地址也就是 cs:ip=cs:0000mov ax,4c00h是他的第一条指令没错   但是程序结尾的时候
有end start这个就表示程序开始执行是从标号start处开始执行就是执行 mov ax,0
当然如果只有 end 后面没有跟标号那么程序从cs段 ip为0000处执行
如果你用debug 对这段程序进行调试你就会发现 当你进入以后r的第一次 程序执行的是mov ax,0他的cs:ip 是 cs:0005


这些指令全部送入内存后系统会自动找到代码结尾处的end 来找到程序开始执行的第一条语句

你后面没发有没有标号只能这样跟你解释

小甲鱼老师的视频有专门提到这个end +标号的地方 注意看视频

eertert 发表于 2012-3-5 20:53:02

莫名其妙 发表于 2012-3-5 15:58 static/image/common/back.gif
第一条指令是指movax , 4c00h,还是start : movax,o?




有点开窍了,非常感谢你!

莫名其妙 发表于 2012-3-5 21:01:26

本帖最后由 莫名其妙 于 2012-3-5 21:01 编辑

eertert 发表于 2012-3-5 20:53 http://bbs.fishc.com/static/image/common/back.gif
有点开窍了,非常感谢你!

共同学习共同探讨共同进步!~
页: [1]
查看完整版本: 有几个问题想问下高手