| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1060 人关注过本帖
标题:王爽汇编第二版实验5有些疑问。。。。。!~~
取消只看楼主 加入收藏
ganbikai
Rank: 2
等 级:论坛游民
帖 子:20
专家分:17
注 册:2011-8-24
结帖率:100%
收藏
已结贴  问题点数:0 回复次数:9 
王爽汇编第二版实验5有些疑问。。。。。!~~
图片附件: 游客没有浏览图片的权限,请 登录注册

这道题目的 a segment  b segment c segment  看不懂他把这些数据定义到那个段中了
搜索更多相关主题的帖子: 疑问 数据 
2011-08-26 16:15
ganbikai
Rank: 2
等 级:论坛游民
帖 子:20
专家分:17
注 册:2011-8-24
收藏
得分:0 
刚才想了想 不知道是不是这个意思    a ,b,c  就是定义了3个不同的段  一个段定义了8个字节(16*(n/16+1))=16 所以他的实际空间应该还是16个字节     
所以他们的数据才这么显示:  
                 这是a定义的 CS-3        CS:0000  01 02 03 04 05 06 07 08 00 00 00 00 00 00 00 00
                 这是b定义的 CS-3        CS: 0010  01 02 03 04 05 06 07 08 00 00 00 00 00 00 00 00
                 这是c定义的 CS-3        CS:0020  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

因为他们是3行伪指令      从CS+3这里才是代码的真正开始   我也不知道说的对不对 请各位告诉下答案  我试过在加上个:
e segment   
     db 1,2,3,4,5,6,7,8
e ends
debug加载程序后 CS加了4
DS=13E1 SS=13F1 CS=13F5        

越打字 越感觉不对劲了  我还是不懂 a segment   b segment   segment   他们定义的数据在那个段中 为什么
                                                                              
                          

[ 本帖最后由 ganbikai 于 2011-8-26 17:36 编辑 ]
2011-08-26 17:23
ganbikai
Rank: 2
等 级:论坛游民
帖 子:20
专家分:17
注 册:2011-8-24
收藏
得分:0 
希望有朋友能帮我解答下问题  我怕在往后面学 会看不懂
2011-08-26 17:39
ganbikai
Rank: 2
等 级:论坛游民
帖 子:20
专家分:17
注 册:2011-8-24
收藏
得分:0 
刚才看看了别人补充的代码   是不是那个a b c  CPU不认识  在start:那里 mov ax,a  然后 mov ds,ax  那么他就定义在数据段   mov ss,ax  那么那个a就定义在栈段  是这样理解吗
2011-08-26 20:37
ganbikai
Rank: 2
等 级:论坛游民
帖 子:20
专家分:17
注 册:2011-8-24
收藏
得分:0 
大哥们  我自己胡思乱想的  我真不敢把他当正确的 求解释啊
2011-08-26 20:38
ganbikai
Rank: 2
等 级:论坛游民
帖 子:20
专家分:17
注 册:2011-8-24
收藏
得分:0 
回复 9楼 iamsky1981
(16*(n/16+1))这个算法是10进制 应该是 (10*(n个字节/10+1))  我理解的就是 只要他不超过16个字节 该段实际空间就是16个字节  超过16个字节 比喻 18个字节  那么该段实际空间就是32个字节。 这个算法是视频的讲师说的  他说也许听者理解起来会有点麻烦  按照C语言的什么什么的 就是这个公式(抱歉原话我忘了

  我刚才到王爽老师的论坛看了看别人的答案  又翻了翻视频   说那个segment前面那个是个标记 那么那个A B C 就是一个标记  
  我又看了看视频  第一句代码是这样  
assume CS:code  DS:data  SS:stack
data segment
      dw XXX,XXX,......省略
data ends

stack segment
      dw XXX,XXX,......省略
stack ends
code segment
start : mov ax,stack
        mov ss,ax
...................
.................省略

他这里是把那里是什么段 都定义好了  看到MOV ax,stack  这句代码 听到讲师说的(讲师怎么说的原话我忘记了) 然后突然记得以前讲师说过 CS指向就是代码段  SS指向就是栈段  DS指向就是数据段  同一个段 他用什么指他就是什么 我一想 这句话我以前根本没理解好啊 我一直在纠结debug加载程序后为什么CS:0这里面的数据不是代码里定义的数据 因为之前学的程序里 我都习惯直接看CS的值来查看定义的数据所以..............(字越打越多了   既然A是标记  这道题目就是要A+B的值放到C中  那么A就是放那些数据的地址 我用DS指向就行         

[ 本帖最后由 ganbikai 于 2011-8-27 00:03 编辑 ]
2011-08-26 23:55
ganbikai
Rank: 2
等 级:论坛游民
帖 子:20
专家分:17
注 册:2011-8-24
收藏
得分:0 
回复 6楼 zklhp
真理啊  我刚才看别人的代码才想起来
2011-08-26 23:56
ganbikai
Rank: 2
等 级:论坛游民
帖 子:20
专家分:17
注 册:2011-8-24
收藏
得分:0 
回复 11楼 zklhp
我刚才一直在实践 帖子我发了好久了
2011-08-26 23:57
ganbikai
Rank: 2
等 级:论坛游民
帖 子:20
专家分:17
注 册:2011-8-24
收藏
得分:0 
以下是引用iamsky1981在2011-8-26 22:05:37的发言:

(16*(n/16+1))=16 搞不懂你这个16怎么算出来的
这里定义的a, b,c三个段每个段占16个字节,是因为段定义的默认定位类型是PARA,也就是说段起始位置位于可用的第一个节(每节为16个字节)
 
“在start:那里 mov ax,a  然后 mov ds,ax  那么他就定义在数据段   mov ss,ax  那么那个a就定义在栈段  是这样理解吗”
 
这个地方不是说定义在哪个段,a段已经定义好了, mov ds, ax只是把a的段地址赋给ds或者ss,让段寄存器指向a段
 
“从CS+3这里才是代码的真正开始” 此言差矣  CS才是代码的真正开始
 
总的来说,楼主的基础差那么一点点,建议楼主把基础再复习一下
恩 我学到这章  这个实验5 引出了 之前一些没学好的东西
各位晚安
2011-08-27 00:09
ganbikai
Rank: 2
等 级:论坛游民
帖 子:20
专家分:17
注 册:2011-8-24
收藏
得分:0 
以下是引用zklhp在2011-8-26 22:10:35的发言:

我觉得你的问题在于 不会实践 “实践是真理的唯一标准”
这道题目刚才实践成功了 但暴露我前面几个视频没理解好  又要重看 悲哀
版主晚安

[ 本帖最后由 ganbikai 于 2011-8-27 00:12 编辑 ]
2011-08-27 00:09
快速回复:王爽汇编第二版实验5有些疑问。。。。。!~~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025968 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved