回 帖 发 新 帖 刷新版面

主题:新手请教高手

PROC 定义过程, 这个过程是不是就是子程序?
   PARA  是干什么的,是不是定义堆栈的??

回复列表 (共3个回复)

沙发

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

板凳

PROC 定义过程, 这个过程是不是就是子程序?
-------------------------------------
是的。


PARA  是干什么的,是不是定义堆栈的??
-----------------------------------
不是。para是段完整定义的对齐属性中的一种,表示此段与其它段排列时段边界为16字节。

3 楼

1楼大哥,
   你给的例子里面的  10dup(),这个dup是干什么的??我也经常见到过但是不知道是什么意思.
   引用: PARA是用来对段生成的二进制代码进行对齐的。一般的段定义默认的都是PARA
一个段的对齐方式有BYTE,WORD,DWORD,PARA,PAGE
      PARA 好像从第一个位置就对齐,DWORD 是4的倍数开始对齐,那么其他的呢??还有为什么要用这个对齐,有什么作用???

我来回复

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