主题:新手请教高手
qiuyishuaige
[专家分:150] 发布于 2006-05-08 17:39:00
PROC 定义过程, 这个过程是不是就是子程序?
PARA 是干什么的,是不是定义堆栈的??
回复列表 (共3个回复)
沙发
chenzep [专家分:3640] 发布于 2006-05-09 12:39:00
PARA是用来对段生成的二进制代码进行对齐的。一般的段定义默认的都是PARA
一个段的对齐方式有BYTE,WORD,DWORD,PARA,PAGE
比如你定义了下面的数据段
data1 segment ;这里默认的是PARA
10 dup(1)
data1 ends
data2 segment dword ;DWORD规定了段的开始地址是4的倍数
10 dup(2)
data2 ends
data3 segment para
10 dup(3)
data3 ends
那么生成的数据如下:
地址编号:0,1,2,...9,A,B,C,D,E,F
内容 : 1 1 1 ...1,0,0, 2, 2, 2, 2
2,2,2..2,0,0............0 ;这里是6个2,10个0
3,3,3...3,0,...........0 ;这里是10个3,6个0
板凳
C语言爱好者 [专家分:19410] 发布于 2006-05-09 14:27:00
PROC 定义过程, 这个过程是不是就是子程序?
-------------------------------------
是的。
PARA 是干什么的,是不是定义堆栈的??
-----------------------------------
不是。para是段完整定义的对齐属性中的一种,表示此段与其它段排列时段边界为16字节。
3 楼
qiuyishuaige [专家分:150] 发布于 2006-05-17 19:44:00
1楼大哥,
你给的例子里面的 10dup(),这个dup是干什么的??我也经常见到过但是不知道是什么意思.
引用: PARA是用来对段生成的二进制代码进行对齐的。一般的段定义默认的都是PARA
一个段的对齐方式有BYTE,WORD,DWORD,PARA,PAGE
PARA 好像从第一个位置就对齐,DWORD 是4的倍数开始对齐,那么其他的呢??还有为什么要用这个对齐,有什么作用???
我来回复