| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 585 人关注过本帖
标题:关于子程序的一个问题
只看楼主 加入收藏
wingfeng
Rank: 2
等 级:论坛游民
帖 子:292
专家分:10
注 册:2008-12-12
结帖率:86.67%
收藏
 问题点数:0 回复次数:3 
关于子程序的一个问题
一般的主程序中有如下代码
code segment
assume cs:code,ds:data
...
code ends

而位于不同代码段的子程序该如何写?? 我在一些地方看到如下所示
code2 segment 'code'
assume cs:code2

请问,这个格式应该怎么样啊??'code'这个干吗的?? 还有assume中为什么没有ds:data???
搜索更多相关主题的帖子: 子程序 
2009-10-24 16:43
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:0 
建议楼主找本最基础的MASM语法书看看,这些是最基本的段和段属性定义。设置段属性的目的是让汇编器可以根据属性把段和在一起。

这也是最原始的模块化编程的方式(多代码段、数据段)。

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2009-10-25 10:13
wingfeng
Rank: 2
等 级:论坛游民
帖 子:292
专家分:10
注 册:2008-12-12
收藏
得分:0 
回复 2楼 东海一鱼
我那个书上没有写的样子,所以我来这里问问,知道的告诉我下,谢谢了!!
2009-10-25 11:24
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:0 
段名 segment [定位] [组合] [段字] [’类别’]
                ... ;语句序列
       段名 ends
  
      SEGMENT伪指令定义一个逻辑段的开始,ENDS伪指令表示一个段的结束。段定义指令后的4个关键字用于确定段的各种属性,堆栈段要采用stack组合类型,代码段应具有‘code’类别,其他为可选属性参数。如果不指定,则采用默认参数;但如果指定,注意要按照上列次序。
  
(1) 段定位(align)属性——指定逻辑段在主存储器中的边界:
        BYTE:段开始为下一个可用的字节地址(xxxx xxxxb),属性值为1
        WORD:段开始为下一个可用的偶数地址(xxxx xxx0b),属性值为2
        DWORD:段开始为下一个可用的4倍数地址(xxxx xx00b),属性值为4
        PARA:段开始为下一个可用的节地址(xxxx 0000b),属性值为16
        PAGE:段开始为下一个可用的页地址(0000 0000b),属性值为256
      简化段定义伪指令的代码和数据段默认采用WORD定位,堆栈段默认采用PARA定位。完整段定义伪指令的默认定位属性是PARA。
  
(2) 段组合(Combine)属性——指定多个逻辑段之间的关系:
        PRIVATE:本段与其他段没有逻辑关系,不与其他段合并。这是完整段定义伪指令默认的段组合方式。
        PUBLIC:连接程序把本段与所有同名同类型的其他段相邻地连接在一起,指定一个共同的段地址。这是简化段定义伪指令默认的段组合。
        STACK:本段是堆栈的一部分,这是堆栈段必须具有的段组合。
  
(3) 段字(Use)属性——这是为支持32位段而设置的属性。
        对于16位x86 CPU来说,它默认是16位段,即USE16。而对于汇编32位x86 CPU指令时,它默认采用32位段,即USE32;但可以使用USE16指定标准的16位段。编写运行于实地址方式(8086工作方式)的汇编语言程序,必须采用16位段。
  
(4) 段类别(Class)属性——当连接程序组织段时,将所有的同类别段相邻分配。
         段类别可以是任意名称,但必须位于单引号中;大多数MASM程序使用’code’、’data’和’stack’来分别指名代码段、数据段和堆栈段,以保持所有代码和数据的连续。

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2009-10-25 20:03
快速回复:关于子程序的一个问题
数据加载中...
 
   



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

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