2014-12-03 69 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