Wie um zu überprüfen, ob eine Ganzzahl ist neg oder pos?
Ich bin neu in x86-Assembler geschrieben, ich habe eine vorzeichenbehaftete Ganzzahl gespeichert in register eax
, und ich möchte, um zu überprüfen, ob die Zahl negativ oder positiv. Zu tun, dass ich verwendet bt
Anweisung zu überprüfen, wird das erste bit.
Hier ist was ich getan habe:
bt eax,0
jnc isNegative
bt
führt das erste bit nach carry-flag, und ich jnc
zu überprüfen, wenn carry-flag ist 0 oder 1.
Wenn es 1, es sollte eine negative Zahl sein, und nicht negative Anweisungen...
aber der Ausgang ist unvorhersehbar, manchmal habe ich eine positive, und Sie erkennen es als eine negative Zahl. Mache ich etwas falsch?
EDIT: ich habe gerade realisiert, könnte es damit etwas zu tun haben mit den endian Typ. Es ist tatsächlich die überprüfung der letzten etwas statt, das erste bit. Lassen Sie mich versuchen, verwenden bt
, 7
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Wert ist negativ, wenn das MSB gesetzt ist. Es kann überprüft werden, mit
oder, einfacher:
oder für byte-Fall:
Können Sie die
jge
undcmp
Anweisungen:Ihre aktuelle Lösung überprüft, ob die Zahl gerade oder ungerade ist, stattdessen testen die 31 bit:
Oder vergleichen Sie die Anzahl auf null, und testen, ob es größer als oder gleich ihm.