Zahlensysteme

Wie Sie sicherlich wissen, handelt es sich bei unserem normalen Dezimalsystem um ein sogenanntes Stellenwertsystem. Auch wenn wir darüber nicht nachdenken, berechnet sich der Wert der Zahl 4512 aus folgender Rechnung:
4*10^3 + 5*10^2 + 1*10^1 + 2*10^0 = 4000+500+10+2 = 4512

Standardmäßig ist TASM auf das Dezimalsystem eingestellt, d. h. alle Ihre Zahlenangaben beruhen auf der Basis 10.
Unter TASM können Sie von der Assembliererseite aus noch mit drei weiteren Basen arbeiten: Basis 2 (binär), Basis 8 (oktal) und Basis 16 (hexadezimal / hexadekadisch / sedezimal).

Um dem Assemblierer mitzuteilen, daß Sie einen bestimmten Zahlenwert nicht dezimal interpretiert haben möchten, müssen Sie der Zahl einen das Zahlensystem kennzeichnenden Buchstaben anhängen. Im Dezimalsystem ist dies das d (in der Standardeinstellung unnötig), im Binärsystem das b, im Oktalsystem das o und im Hexadezimalsystem das h. Soll die Zahl 12 also ein hexadezimaler Wert sein, dann muß sie 12h geschrieben werden.

Nun läßt sich die Standardeinstellung (Basis 10) natürlich noch auf eine der anderen Zahlenbasen einstellen. Dies wird durch die Anweisung RADIX n erreicht, wobei n eine der vier Basen 10, 2, 8 oder 16 ist. Allerdings verbirgt sich hier ein kleiner Stolperstein, der bei der Fehlersuche vielleicht überhaupt nicht ins Auge fällt:
Wenn mittels RADIX 16 die hexadezimale Interpretation eingestellt und dann an einer Stelle der Wert 1D verwendet wird, im guten Glauben, die (dezimale) Zahl 30 zu verwenden, dann wird dieser Wert jedoch aufgrund des nachgestellten D als Dezimalzahl interpretiert, also 1.

Es ist zu beachten, daß Zahlen vom Assemblierer nur dann als solche erkannt werden, wenn sie mit einer Ziffer beginnen. Die hexadezimale Zahl FFFFh wird also als Symbol (Variable, Sprungmarke, Prozedurname etc.) interpretiert und führt, wenn es nicht aufgefunden wird, zu einer Fehlermeldung. Um die Interpretation als Zahl durchzusetzen, muß eine 0 (Null) vorangestellt werden: 0FFFFh.