Assembly 从FASM转换为NASM时的不一致性

Assembly 从FASM转换为NASM时的不一致性,assembly,x86,nasm,portable-executable,fasm,Assembly,X86,Nasm,Portable Executable,Fasm,我正在尝试转换页面底部的代码 从FASM到NASM,我被一些事情困住了 完整代码(工作): 因此,我的两个问题始于rawstart,其中我的NASM orgup宏如下所示: %macro orgup 2 org (((%1+(%2-1))/%2)*%2) %endmacro 对宏orgup的调用看起来像orgup$-$$,4096 我不知道它是否与FASM等效的orgup$,sectionalign相同。这是因为在该指令之后,我在NASM创建的EXE中得到了不同的字节 FASM创建的

我正在尝试转换页面底部的代码 从FASM到NASM,我被一些事情困住了

完整代码(工作):

因此,我的两个问题始于
rawstart
,其中我的NASM orgup宏如下所示:

%macro orgup 2
    org (((%1+(%2-1))/%2)*%2) 
%endmacro
对宏
orgup
的调用看起来像
orgup$-$$,4096

我不知道它是否与FASM等效的
orgup$,sectionalign
相同。这是因为在该指令之后,我在NASM创建的EXE中得到了不同的字节


FASM创建的EXE中的指令
call dword[imgbase+g]
是二进制的FF 15 2E 10 40 00,而NASM创建的EXE中的指令是FF 15 2E 12 40 00
start
中的代码完全相同,因此原点一定设置错误,我不知道原因。

Hah,这是我的代码!如果您在转换宏时遇到问题,只需将组织硬编码为imgbase+$1000。谢谢,Jens。我几乎可以肯定,NASM版本中的组织是不正确的。您的代码非常有助于理解PE的内部外观。谢谢
%macro orgup 2
    org (((%1+(%2-1))/%2)*%2) 
%endmacro