2016-06-09 10 views
3

Ich habe überall im Internet gesucht, aber ich konnte nicht finden, was das "fh" in der folgenden Anweisung and eax, 38fh bedeutet. Ich weiß, dass "h" für hexadezimal und "d" für dezimal steht, aber ich habe noch nie fh gesehen.Was bedeutet das "fh" Suffix auf eine Zahl wie "38fh" in Intel Assembly

+2

Es ist die Zahl * 3f8 * in Hexadezimal. Literale, die in * h * enden, geben die Nummer in Hexadezimal an. * 3f8h * ist * 1016 * in Dezimal. –

+0

Natürlich! Das war sehr dumm von mir ... Danke :) –

+1

Gern geschehen. Sie sind nicht allein in solchen Fehlern, zum Beispiel vertippte ich die Nummer, es ist eigentlich 38f nicht 3f8 :) –

Antwort

5

Wenn ein Intel-Assembler (dh MASM) Token mit einer Zahl (0 bis 9) beginnt, wird angenommen, dass das gesamte Token ein Wert ist. Wenn der Wert mit einem h endet, nimmt der Assembler an, dass es H exadecimal ist.

In Ihrem Fall 38fh beginnt mit einer Zahl, so wird angenommen, dass ein Wert sein. Das Ende des Tokens in Ihrem Fall ist h (oder H), so dass es als Hexadezimalzahl behandelt wird. So wird 38f als hexadezimaler Wert behandelt. Die f ist einfach eine gültige hexadezimale Ziffer. 38f ist 911 in Dezimal und 1110001111 in Binär.

Wenn Sie ein Token wie f8h haben, tritt ein Problem auf. Da es mit einem Buchstaben beginnt (keine Ziffer 0 bis 9), wird es als Bezeichner oder Symbol behandelt. Dies wird wahrscheinlich zu einer Art von Syntaxfehler führen, wenn es als and eax, f8h erscheint. Die Frage, die man haben kann - wenn ein hexadezimaler Wert mit einem Buchstaben beginnt A bis F Wie kann ich es mit einem h Suffix darstellen? Einfach, legen Sie einfach eine 0 auf der Vorderseite. Dies würde funktionieren and eax, 0f8h.

Wie Fifoernik wies darauf hin, Ein Trick wäre eine andere Aktivierung verwendet das Suffix heraus stehen zu lassen: 38Fh. Es wäre vielleicht einfacher für einen neuen Assembler gewesen, zu sehen, dass f eine hexadezimale Zahl war, wenn es in Großbuchstaben F gemacht worden wäre, während das Suffixzeichen 'h' klein geschrieben wurde.