由于ANSI C中的学习有涉及到汇编写C启动代码的地方,汇编只学了王爽老师的《汇编语言》所以,有些知识还真的自己动手再去搜集一下。
1.段的声明
我们习惯了
data segment
...
data ends
这样的段声明形式了,原来这只是段声明的一个“简化版”,具体的格式是这样的
段名 segment [对齐类型][组合类型][‘类别’]
...
段名 ends
====================
定位类型:说明段的起始边界值(物理地址)。
定位类型
BYTE 段可以从任何地址边界开始
WORD 段从字边界开始,即段的起始边界值为偶数
DWORD 段从双字的边界开始,即段的起始边界值为4的倍数
PARA 段从小段边界开始,即段的起始边界值为16 (或10H) 的倍数
PAGE 段从页边界开始,即段的起始边界值为256 (或100H) 的倍数
注意:
定位类型的缺省项是PARA,即在未指定定位类型的情况下,则连接程序默认为PARA。BYTE和WORD用于把其它段(通常是数据段)连入一个段时使用;DWORD一般用于运行在80386及后继机型上的程序。
====================
组合类型:说明程序连接时的段组合方法。
组合类型 说 明
PRIVATE 该段为私有段,连接时将不与其它模块中的同名段合并
PUBLIC 该段连接时将与其它同名段连接在一起,连接次序由连接命令指定
COMMON 该段在连接时与其它同名段有相同的起始地址,所以会产生覆盖
AT 表达式 段地址=表达式的值,其值必为16位但AT不能用来指定代码段
MEMORY 与PUBLIC同义
STACK 将多个同名堆栈段连接在一起,SP设置在第一个堆栈段的开始
注意:组合类型的缺省项是PRIVATE。
=============================
2.段组定义伪指令
段组定义伪指令能把多个同类段合并为一个64KB的物理段,并用一个段组名统一存取它。段组定义伪指令GROUP的格式如下:
段组名 GROUP 段名 [, 段名 …]
我们已经知道在各种存储模型中,汇编程序自动地把各数据段组成一个段组DGROUP,以便程序在访问各数据段时使用一个数据段寄存器DS,而GROUP伪指令允许用户自行指定段组。
3.public:定义外部模块能够访问的变量
extrn:定义引用外部模块的变量
4.lable 在段中为一个地址位置定义一个符号名,也就是给一个标号定位一个地址。
【暂时这么多,可以看懂点那个汇编程序了,知其“然”了,下一步就是分析其“所以然”了。】
- [biaggi] 下載不了,了已經,,,,, 11/06 08:20
- [游客] 谢谢,我一定会好好学习的. 07/05 12:12
- [jlzh155] 学习了,谢谢分享 11/01 09:35
- [dsk23d] 谢谢了 12/17 14:59
- [lizhi] 谢谢啊。 11/30 22:11
- [hide2may] 感谢。开始学习汇编。 09/11 22:54
- [scruo] 强烈感谢楼主!!!!谢谢!!! 06/04 13:22
- [游客] 楼主,太感谢了 05/23 21:24
- [游客] 楼主,好人啊 05/18 11:47
- [azik2011] up主果然是热心人士,感激不尽~~~~~~~~~~~~~~~~学习了 03/13 09:34
- [linghulg] 谢谢! 02/23 13:01
- [jizha] 明天就过年了,crazyman,祝你新年快乐! 非常感谢你曾经给我的那些帮助! 祝好人一生平安! 01/24 13:22
- [dongliang] 下面两条指令在DEBUG中运行时,弹出无效指令对话框,什么意思啊?我并没有修改中断例程.. 01/08 13:19
- [dongliang] 你好,麻烦你把王爽的汇编第二版发给我好吗? 我到你的链接上去找了,但下不来,所以只能来找你了 谢谢 12/04 18:42
- [hualongmian] 呵呵~谢谢哈! 05/26 14:15
- [xxtb] 加油! 05/15 19:04
- [sky7] 谢谢7! 03/26 17:32
[ crazyman 发表于 2009-01-18 17:37 ]
也没人来踩踩。
[ feitian7376 发表于 2009-01-18 17:46 ]
哈哈,我来踩踩!
[ xijietianxia 发表于 2009-01-18 18:14 ]
我还是复习一下c语言才来学后面吧,c太久没用...