Deine Idee ist also, wenn 0 > x gilt, dann ist x keine natürliche Zahl. Das ist mathematisch richtig, wenn man die 0 als natürliche Zahl zählt, ob der Vergleich so funktioniert, ist eine andere Sache - und davon würde ich nicht ausgehen.
Für den Prozessor ist ein Register einfach Wort mit einer bestimmen Länge, hier 8 Bit. Was diese 8 Bit darstellen, weiß der Prozessor nicht (es könnte spezielle Prozessorbefehle geben, was hier aber nicht der Fall ist, wie ich meine).
Werden zwei Register verglichen, passiert das über eine logische Schaltung. So lange die Bits der beiden Register - vom höchstwertigen Bit ausgehend - gleich sind, sind die Register gleich. An der ersten Position, an der das nicht mehr zutrifft, weiß man, welches Register größer ist:
[code]
r1 11100000
r2 11110000
^^^^
===<
[/code]
Hier wäre also r1 < r2.
Die Frage ist jetzt, was die Register darstellen. Das können Zahlen ohne Vorzeichen sein, dann hat man je Register einen Wertebereich von 0 bis 255. In dem Fall stimmt der Vergleich: 00000001 < 11111111 (binär) entspricht 1 < 255 (dezimal).
Wenn es Zahlen mit Vorzeichen sind, dann ist die Frage, wie diese dargestellt werden. Üblicherweise wird das Zweierkomplement verwendet. Um eine Zahl zu negieren, werden die Bits invertiert und anschließend wird eine 1 addiert.
Wenn wir Beispielsweise die 1 negieren wollen, um -1 zu erhalten:
[code]
00000001 # 1 binär
11111110 # invertiert
11111111 # 1 addiert
[/code]
-1 wird im Zweierkomplement also binär mit 11111111 dargestellt.
Klar ist jetzt, dass der Vergleich nicht das gewünschte Ergebnis liefert, denn 00000001 < 11111111 (binär) würde jetzt dezimal 1 < -1 entsprechen.
Tatsächlich lässt sich viel einfacher feststellen, ob eine Zahl negativ ist, denn das 8. Bit ist das Vorzeichen. Daher lassen sich Zahlen von -128 bis +127 darstellen.
Wenn Du also eine Zahl im Zweierkomplement hast, brauchst Du nur zu testen, ob das 8. Bit gesetzt ist. Falls ja, hast Du eine negative Zahl.