2014-12-03 58 views
0

我的任务是将使用NASM的汇编程序转换为天然气。不幸的是,有很多不匹配的陈述。我已经转换了一些人,但我仍然有关于如何这条语句转换NASM天然气:与天然气resw对应

分钟resw 1

在此先感谢麻烦。 :)

回答

1

预留一个字是很容易的,它只是使用:

min .word 0 

其中保留一个字,并将其设置为零。

如果你想保留一大块,说50个字,很多编译器允许这样的事情:

buff .byte 50(0) 

,但我不知道是否gas支持。它确实似乎提供类似的功能与.fill.space指令:

buff1 .fill 50, 1, 0 ; count, size, value 
buff2 .space 50, 0  ; count (bytes), value (defaults to 0) 

有些汇编器还允许之类的东西.word ?.byte 50(?),如果你不小心设置的值。 gas再次可能支持或不支持。

在任何情况下,您的具体示例似乎都不需要这些。

+0

气体具有' .space size,fill'指令,其中_“发出'size'字节,每个值为'fill'。size和fill都是绝对表达式,如果省略逗号和'fill',则假定'fill'为零“。_ – Michael 2014-12-03 08:30:09

0

你可以尝试:

.lcomm min, 2 

.comm min, 2 

抛开空间在BSS部分两个字节(一个字)。 bss部分的要点是加载程序将分配空间并在加载时将内容设置为零,但它不会占用磁盘上文件的空间。

.lcomm是如果您只需要从您使用.lcomm的文件中引用mincomm是如果你需要从其他文件中引用min(所以链接器将使其可用于其他文件)。

如果你喜欢使用的数据部分,它将使零您的文件和占用的磁盘空间,然后这个,放置在数据部分,应该工作:

min: 
    .fill 2