nasm的段定义

来源:百度知道 编辑:UC知道 时间:2024/05/15 12:44:59
MASM的段都可以自己取名字,而且可以定义多个的,而NASM的段却好像不行。。比如都是[section .text],[section .data]之类的,我搞不懂。NASM的段不能自己取名字的吗?不能定义多个的吗?
小弟比较菜,请大侠指教……

可以的
比如:
section ab
db 123h
section bc
db 234h
section cd
db 345h

编译后用objdump看一下就知道了。

SECTION'或`SEGMENT': 改变和定义段。

'SECTION'指令('SEGMENT'跟它完全等效)改变你正编写的代码将被汇编进的段。
在某些目标文件格式中,段的数量与名称是确定的;而在别一些格式中,用户
可以建立任意多的段。因此,如果你企图切换到一个不存在的段,'SECTION'有
时可能会给出错误信息,或者定义出一个新段,

可以随便定,什么都可以 .data .text你也可以改成 .a .b,masm里才不可以随便定,masm32里.data和.text就是约定的数据和代码段,nasm则不这样认为,你写来个[secion aabb]也可以啊

比你你写个:

extern _ExitProcess@4
extern _printf

[section .erer]
a db 'hello,world!',13,10

[section asdf]

section .ggg
global _start
_start:
push a
call _printf
add esp, 4
call _ExitProcess@4

照样可以编译运行

Nasm中不再有assume操作,段地址完全取决于存入段寄存器的值。 关于NASM的使用方法及语法还可以参阅NASM使用手册。

好像是不能自己取名的。。