| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 605 人关注过本帖
标题:建立分支表的时候把标号定义在数据段里啥意思
只看楼主 加入收藏
未未来
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:182
专家分:157
注 册:2012-11-6
结帖率:94.87%
收藏
已结贴  问题点数:20 回复次数:4 
建立分支表的时候把标号定义在数据段里啥意思
在学汇编语言分支结构的时候有一只分支表的方法,就是在数据段建立一个表,表中存放要转移的程序段的名字(标号)
程序代码:
DATAS SEGMENT
    table dw prog0,prog1,prog2,prog0 
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
  
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

可以单这样定义是通不过的
程序代码:
DATAS SEGMENT
    table dw prog0,prog1,prog2,prog0 
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
   prog1:
   prog2:
   prog0:
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

在代码段写了标号之后就可以编译通过了,
我想请教一下为什么,
是不是代码段先于数据段放入内存,然后在进行数据段的存储,
那table开始的那个数据段存放的是什么。
2014-05-07 17:20
未未来
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:182
专家分:157
注 册:2012-11-6
收藏
得分:0 
我的想法应该是正确的,数据段内存存的是 代码段标号位置的偏移地址
2014-05-07 18:18
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:10 
我从来没用过这个东东 但很明显 第一种写法里面prog1神马的根本没定义。。

顺便 以后再问问题记得详细写出出错信息
2014-05-07 18:21
xkwy0000
Rank: 6Rank: 6
等 级:贵宾
威 望:11
帖 子:107
专家分:441
注 册:2013-2-8
收藏
得分:10 
数据段很显然是用来存放可以修改的数据的,放在代码段中也可以吧
汇编语言提供了很大的灵活性
我总是希望别人容易看懂我编的程序,而不需要加很多的注释,
而结局往往是恰恰相反。
     比如经常习惯      call  [bx+n*2]
     不使用                 call  table+n
     从不使用              pop prog1  pop prog2     call  far ptr prog1
2014-05-08 11:48
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用xkwy0000在2014-5-8 11:48:27的发言:

数据段很显然是用来存放可以修改的数据的,放在代码段中也可以吧
汇编语言提供了很大的灵活性
我总是希望别人容易看懂我编的程序,而不需要加很多的注释,
而结局往往是恰恰相反。
     比如经常习惯      call  
     不使用                 call  table+n
     从不使用              pop prog1  pop prog2     call  far ptr prog1

注释应该告诉读程序的人 这里是干什么的 而不是解释指令的意思

比如这里要加注释 应该说调用它的原因 而不应该说具体的指令用法
2014-05-08 12:47
快速回复:建立分支表的时候把标号定义在数据段里啥意思
数据加载中...
 
   



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

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