主题:哪位肯赐教:SEGMENT
kxzyf
[专家分:0] 发布于 2006-10-01 15:35:00
哪位肯赐教:
按规定格式,段名 SEGMENT [定位类型] [组合类型] [使用类型] [类别],选项可以缺省,但顺序不能改变,[使用类型]默认项是USE16。但有一例外,如何解释:
XCODE SEGMENT USE16 PARA PUBLIC 'XCODE'
最后更新于:2008-02-01 17:39:00
回复列表 (共6个回复)
沙发
chenzep [专家分:3640] 发布于 2006-10-03 00:01:00
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文件来观察上面两个参数对生成二进制代码的影响。
板凳
kxzyf [专家分:0] 发布于 2006-10-06 14:32:00
谢谢!但您没有完全理解我的意思:
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 楼
密码注册 [专家分:350] 发布于 2006-10-06 20:39:00
汇编可以做操作系统吧?有本书叫《自己动手做操作系统》,用的就是汇编。路过,楼主的题目俺看不懂。。。
4 楼
chenzep [专家分:3640] 发布于 2006-10-07 18:33:00
1:这样的格式规定就要自己去看官方说明文档了,人家规定这样就只能这样了。其实我也不太清楚,因为很少情况会用完4个参数的。
2:汇编是基础,就好象数学是计算机的基础一样。学好汇编可以很容易的理解很多计算机的本质,比如,C里面的指针,堆、栈等东西,到了汇编和操作系统的角度理解,是非常容易的。汇编语言最好和操作系统内核一起学,这样理解汇编的效果会不错。
3:不太清楚你的代码,建议你到www.aogosoft.com学习。
5 楼
kxzyf [专家分:0] 发布于 2006-10-09 08:35:00
该问题源自Award Bios 6.00Pg Source Code 源代码,执行其中的 BIOS.BAT+ 目标文件名 后出现的错误信息,资料来源:
http://www.tomore.com/1/10919.html
6 楼
kxzyf [专家分:0] 发布于 2006-12-07 11:11:00
按规则,段不能超过64KB,汇编之前编程人员怎么掌握有没有超过?
我来回复