. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->包含多个段的程序
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  6.2那个示例代码加上start和end start有什么意义?  [待解决] 回复[ 13次 ]   点击[ 740次 ]  
helloworld
[帖 主]   [ 发表时间:2007-10-26 13:06 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:6
注册日期:2007-10-20 14:34
书中说,如果不在第一条汇编指令上加入start,程序会从dw这一行开始执行,但这也没什么问题啊,如果一开始就指定了0010H处的mov bx,0做为程序的入口处,那cpu还怎么得到dw后面所定义好的数据呢
potti_chu
[第1楼]   [ 回复时间:2007-10-26 13:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-10-09 10:59
dw 是伪指令, 并不需要被执行,也不能被执行。
helloworld
[第2楼]   [ 回复时间:2007-10-26 13:22 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:6
注册日期:2007-10-20 14:34
噢 我想 用dw定义了一段数据之后 程序运行后就会自动载入到内存 随时可以使用
既然如此也不必特意给代码弄个入口啊,让它像平时一样运行就是啦
lovemhome
[第3楼]   [ 回复时间:2007-10-26 13:44 ]   [引用]   [回复]   [ top ] 
荣誉值:5
信誉值:2
注册日期:2007-10-18 10:43
楼主还不是不明白程序的执行过程

源程序(dw 0123h,0456h... mov 等指令)->编译(此时已经将 dw 定义的数据编译成2进制数据)->机器码
->加载到内存(dw定义的数据一块放入内存,这块内容对cup来言就是指令【也就是为什么通过u命令翻译过来的汇编指令并不是我们期望的】,如果没有end start这些内容也将被cup执行,因为此时cs:ip指向这里)->指令被cpu执行

---------------------------
只是我自己的看法,有不正确请大家指正
lovemhome
[第4楼]   [ 回复时间:2007-10-26 13:50 ]   [引用]   [回复]   [ top ] 
荣誉值:5
信誉值:2
注册日期:2007-10-18 10:43
对cpu而言,内存中的内容可以是指令也可以是数据
这就要看我们怎么怎样给cpu指定

指令和数据是我们人类分成的两种概念,cpu它并不知道,如果我们将cs:ip指向一个存储单元,则cpu就将它当作指令来执行了

--------------
我自己是这样理解的,不知道楼主明白吗?
helloworld
[第5楼]   [ 回复时间:2007-10-26 14:20 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:6
注册日期:2007-10-20 14:34
哦哦 你这么一说我明白了
假如那串自己定义的数据 转换成机器码后 而且他又是在CS:IP处的,如果刚好他凑成一条汇编指令那就惨了
fishboy
[第6楼]   [ 回复时间:2007-10-26 15:06 ]   [引用]   [回复]   [ top ] 
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42
回复:[第5楼]
------------------
事实上,你的担心确实发生了!!很惨,就是程序出错,无法正确运行。
lovemhome
[第7楼]   [ 回复时间:2007-10-27 08:50 ]   [引用]   [回复]   [ top ] 
荣誉值:5
信誉值:2
注册日期:2007-10-18 10:43
回复:[第5楼]
------------------
恩,就是那个意思
liumin2
[第8楼]   [ 回复时间:2007-11-07 09:06 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-10-27 23:31
妙啊 ,小弟佩服!~
bug
[第9楼]   [ 回复时间:2007-11-07 15:14 ]   [引用]   [回复]   [ top ] 
荣誉值:22
信誉值:0
注册日期:2007-09-24 10:42
确定程序入口。
huibian
[第10楼]   [ 回复时间:2007-11-08 10:37 ]   [引用]   [回复]   [ top ] 
荣誉值:117
信誉值:2
注册日期:2007-09-04 10:41
学习了,程序出错的可能的原因:把数据当作指令执行了,后果无法预知 `_`"
shanguianti
[第11楼]   [ 回复时间:2007-11-08 10:43 ]   [引用]   [回复]   [ top ] 
荣誉值:19
信誉值:0
注册日期:2007-10-31 16:24
end start是确定了程序的入口是从start标号处开始的,我们是想对用dw定义的数据进行操作,并不是想把dw定义的数据当作指令来执行,因此CS:IP开始执行的地方应该在我们所定义的数据之后才行。
zysong
[第12楼]   [ 回复时间:2007-11-08 16:51 ]   [引用]   [回复]   [ top ] 
荣誉值:19
信誉值:0
注册日期:2007-07-05 17:25
解决了。路过
debugk
[第13楼]   [ 回复时间:2008-08-19 19:36 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-06-13 10:30
如果不用start来确定入口地址,程序会从dw 0123H,。。。。0987H开始执行,CPU会把他们当作指令来执行,就会出现意想不到的结果。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved