PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variablen richtig deklarieren (NASM)



derBenny
02.10.2006, 17:10
Das gibt es nicht. Ich suche nun schon ziemlich lange danach und habe sogar schon in einem anderen Programmiererforum nachgefragt, aber niemand scheint es zu wissen. Dabei ist es ein ganz kleines, unbedeutendes Problem:

Wie deklariere ich bei NASM Variablen richtig?
Ich möchte 56 Byte für einen String reservieren. Bei MASM geschieht das durch
derString db 56 dup (?)Das funktioniert bei NASM nicht. Ich habe folgende Anweisungen ausprobiert, aber keine hat funktioniert:
derString db 56 dup (?)
derString db 56, dup (?)
derString: db 56 dup (?)
derString: db 56, dup (?)
derString: db, 56, dup (?)Nichts zu machen. Die Standard-Fehlermeldung lautet "comma expected after operand 1" und wenn ich zuviele Kommas setzte "phase error at end of assembly". Das kann doch eigentlich nicht so schwer sein. >_<

Nachtrag:
Ich könnte es natürlich auch über
derString db 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'mit 56 x machen, aber das wäre nicht sehr elegant.

DFYX
02.10.2006, 17:38
Ich kenn mich zwar kein bisschen mit NASM aus, aber hast du schonmal versucht, ein Komma nach derString zu machen?

derBenny
02.10.2006, 17:45
Ich kenn mich zwar kein bisschen mit NASM aus, aber hast du schonmal versucht, ein Komma nach derString zu machen?Einen Versuch war es wert, aber das hat auch nicht funktioniert. Fehlermeldung: "error: parser: instruction expected".

Rolus
02.10.2006, 18:14
Dup gibt's soweit ich weiß nur bei MASM/TASM u.ä. Bei NASM muss man das anders machen:

datas resb 1024
So werden 1024 Bytes freigehalten. Man kann natürlich auch andere Größen nutzen (resw. ...), siehe NASM Documatation (http://nasm.sourceforge.net/doc/html/nasmdoc3.html#section-3.2.2) für mehr Details. Achja, das ist für nicht-initialisierte Variablen. Ansonsten musst du times (http://nasm.sourceforge.net/doc/html/nasmdoc3.html#section-3.2.5) nutzen.

freundliche Grüße, Rolus

derBenny
02.10.2006, 19:13
Danke, funktioniert wunderbar. ^^
Die NASM-Dokumentation dürfte mir auch in anderen Fragen hilfreich sein.