回 帖 发 新 帖 刷新版面

主题:哪位肯赐教:SEGMENT

哪位肯赐教:
    按规定格式,段名  SEGMENT  [定位类型] [组合类型] [使用类型] [类别],选项可以缺省,但顺序不能改变,[使用类型]默认项是USE16。但有一例外,如何解释:
XCODE    SEGMENT    USE16 PARA PUBLIC 'XCODE'

回复列表 (共6个回复)

沙发

USE16是指这个段是16位的,这个设置的涉及的内容很多,
比如:
1:push 12H指令。      
在USE16中 sp=sp-2;
在USE32中 sp=sp-4;
2: 自己测试下mov eax,1234h mov ax,1234h的指令在USE16 USE32下分别有什么异同(4种情况)
.........

Para是段开始的位置, 你可以尝试一下用ultra edit打开一个exe程序看看不同的PARA值它们生成的二进制代码有什么不同。
PUBLIC和 'XCODE'是用来组合各个段的排列顺序的,比如你依次定义了seg1,seg2,seg3,生成的二进制代码默认的顺序是seg1,seg2,seg3...如果你想改变这样的顺序:有两种方法:1:通过改变源代码的书写顺序,2:通过定义PUBLIC和'XCODE'。这个一般在工程中使用(能有多少人用汇编做工程?)
你可以通过观察源代码生成的.map文件来观察上面两个参数对生成二进制代码的影响。

板凳

谢谢!但您没有完全理解我的意思:
1。教材中指出,“ [定位类型] [组合类型] [使用类型] [类别],”的排列顺序不能改变,但明显,上例[使用类型] USE16 被放在最前面,为什么?
2。“能有多少人用汇编做工程?”——那用汇编做什么?
3。为什么连结时出现错误:
Mouse.obj(mouse.asm):Fatal error L1123:XCODE:SEGMENT DEFINED BOTH  16-   and 32- bit
Pos: 99 record type: 56FE
NMAK:Fatal  error U1077: 'LINK'   return  code '2'
stop

3 楼

汇编可以做操作系统吧?有本书叫《自己动手做操作系统》,用的就是汇编。路过,楼主的题目俺看不懂。。。

4 楼

1:这样的格式规定就要自己去看官方说明文档了,人家规定这样就只能这样了。其实我也不太清楚,因为很少情况会用完4个参数的。
2:汇编是基础,就好象数学是计算机的基础一样。学好汇编可以很容易的理解很多计算机的本质,比如,C里面的指针,堆、栈等东西,到了汇编和操作系统的角度理解,是非常容易的。汇编语言最好和操作系统内核一起学,这样理解汇编的效果会不错。
3:不太清楚你的代码,建议你到www.aogosoft.com学习。

5 楼

该问题源自Award Bios 6.00Pg Source Code 源代码,执行其中的 BIOS.BAT+ 目标文件名 后出现的错误信息,资料来源:
http://www.tomore.com/1/10919.html

6 楼

按规则,段不能超过64KB,汇编之前编程人员怎么掌握有没有超过?

我来回复

您尚未登录,请登录后再回复。点此登录或注册