masm编译器如何做到32或64字节对齐?

赤勇玄心行天道 2025-07-08 13:47:57

我想用align        32伪指令来实现32字节对齐,可是报错:error A2189: invalid combination with segment alignment : 32

最高只能用align        16做到16字节对齐,请问有什么办法可以做到32或64字节对齐?

...全文
121 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

终于搞清楚了。

.code就等价于
_code segment read execute shared align( 16 ) 'code'
...
_code ends

.data就等价于
_data segment read write align( 16 ) 'data'
...
_code ends

这个问题AI都不知道,非常感谢大神的指点!@日立奔腾浪潮微软松下联想

  • 打赏
  • 举报
回复

align 1/2/4/8...8192都是可以的,但是这个对齐不能大于段对齐(默认是para 16字节)。
所以你需要先改变段对齐:
; page = 256 bytes
; align(n) n=1..8192
data segment page public 'data'
align 64 ; OK
; ...
data ends

注意不要使用简化段模型.code、.data等等,此种模式下设置不了段对齐

  • 举报
回复
@日立奔腾浪潮微软松下联想 用以下代码可以定义一个data段: data segment page public 'data' align 64 data ends 但是用以下代码定一个code段就报错: code segment page public 'code' ; “error A2008: syntax error : segment” align 64 code ends
@赤勇玄心行天道 ml64? _code segment page 'code' align 64 ; ... _code ends
  • 举报
回复
@日立奔腾浪潮微软松下联想 加个下划线就好了,非常感谢大佬!对了,这个32位是不能加下划线,64位是必须要加下划线?
7条回复

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧