Assembler inkrementieren eines Register?
Increments 32-Bit register
=> Was soll das bedeuten, das man ein 32-bit register hier EBX um 1 erhöht?
32-bit sind 4 Byte. D. h. dort stehen vier Zeichen oder vier Zahlen, jede im Bereich 2^7 ist 0 bis 255.
inc [count]
=> Hier erhöhe ich den Inhalt/Wert der Variablen count um 1. In der Variablen count ist z. B. die Zahl 5, braucht 1-Byte als Hexa 0x5 abgespeichert. Mittels inc erhöht sich der Wert der Variablen um 1 also hat sie nun den Wert 0x6 => ist 6.
Richtig?
2 Antworten
=> Was soll das bedeuten, das man ein 32-bit register hier EBX um 1 erhöht?
32-bit sind 4 Byte. D. h. dort stehen vier Zeichen oder vier Zahlen, jede im Bereich 2^7 ist 0 bis 255.
Die 4 Byte eines Registers werden üblicherweise als eine einzige 32-Bit-Zahl betrachtet.
Der INC-Befehl erhöht diese 32-Bit-Zahl um 1.
inc [count]
=> Hier erhöhe ich den Inhalt/Wert der Variablen count um 1.
Kann man so sagen. Allerdings nur dann, wenn man versteht, was man mit "Variable" genau meint.
count zeigt auf eine bestimmte Speicheradresse (und enthält auch die Wortlänge; 1, 2 oder 4 Byte). Die Anweisung inc [count] erhöht den an dieser Speicheradresse gespeicherten Wert der gegebenen Wortlänge um 1.
EBX (beim 386er) ist ein 32-Bit-Register. Lasse Dich bitte nicht dazu verleiten, das in 4 Byte zu je 8 Bit zu zerlegen. Es sind wirklich 32 Bit für eine Zahl.
Bei "count" ist nicht klar, ob es sich um 8, 16 oder 32 Bit handelt. Du hast auf jeden Fall Recht, aus 5 wird 6.
Ja, das Register speichert nur eine Zahl (und nicht etwa 4). Und die wird um 1 erhöht.
"Lasse Dich bitte nicht dazu verleiten, das in 4 Byte zu je 8 Bit zu zerlegen. Es sind wirklich 32 Bit für eine Zahl."
D. h. dann aber auch, dass ich in einem 32-Bit Register nur "eine" Zahl speichern/ablegen kann.
Was soll das jetzt bedeuten, dass man ein 32-Bit Register inkrementiert, um 1 erhöht? Die "eine" 32-Bit Zahl die in dem Register gespeichert ist, wird um 1 erhöht?