Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Assembler: Flags bei CMP (https://www.delphipraxis.net/12989-assembler-flags-bei-cmp.html)

Niels 8. Dez 2003 18:36


Assembler: Flags bei CMP
 
Hoi,

ich hab jetzt angefangen Assembler zu lernen. Da ich leider noch kein Buch hab, kann ich nur Tuts durcharbeiten und im Netz suchen. Mein Problem besteht darin, dass ich auf allen möglichen Seiten war um rauszufinden Welche Flags bei welchem Ergebnis wie gesetzt werden.

Herausgefunden hab ich schon, dass das Overflow, Sign, Zero, Aux.carry, Parity und Carray Flag (also praktisch alle Status Flags) verändert werden. Jetzt würde mich interessieren, was mit ihnen passiert um dann dementsprechend JUMPs einzusetzen.

MfG Niels

Mikko 8. Dez 2003 19:14

Re: Assembler: Flags bei CMP
 
Schau mal auf http://win32asm.cjb.net/. Da gibts einiges zu Assembler (siehe auch MessageBord).

d3g 8. Dez 2003 19:28

Re: Assembler: Flags bei CMP
 
Mein Assembler-Buch sagt dazu:

Code:
Befehl  |  geprüfte Statusflags
-----------------------------------
JA/JBNE |  CF=0 und ZF=0
JAE/JNB |  CF=0
JB/JNAE |  CF=1
JBE/JNA |  FC=1 oder ZF=1
JE/JZ   |  ZF=!
JG/JNLE |  ZF=0
JGE/JNL |  SF gleich OF
JL/JNGE |  SF ungleich OF
JLE/JNG |  ZF=1
JNE/JNZ |  ZF=0
JC      |  CF=1
JNC     |  CF=0
JNP/JPO |  PF=0
JNS     |  SF=0
JO      |  OF=1
JP/JPE  |  PF=1
Und außerdem:

Zitat:

Zitat von Reiner Backer hat in 'Programmiersprache Assembler'
Das Carry Flag wird gesetzt, wenn nach einer Addition oder Subtraktion der Wertebereich in einem der Register überschritten ist. [...] Findet ein Übertrag statt, so steht das Carry Flag auf 1.

[...]

Das Parity Flag dient zur Fehlerprüfung bei der Datenübertragung über die serielle Schnittstelle. Das Parity Flag ist auf 1, wenn das Ergebnis der beiden Prüfsummen eine gerade Anzahl an Bytes im Low-Byte ergibt. Bei einer ungeraden Anzahl von bits wird das Parity Flag auf 0 gesetzt.

[...]

Das Auxiliary Flag [...] is dem Carry Flag sehr ähnlich. Zum Unterschied wird mit dem hilfsübertragsflag ein Übertrag von Bit 3 nach Bit 4 bei einer 8-Bit-Operation angezeigt. Bei einem Übertrag staht AF auf 1.

[...]

Das Zero Flag zeigt nach einer Operation an, ob das Ergebnis 0 ist oder nicht.Beim ergebnis 0 steht das Zero Flag auf 1.

[...]

Nach einem arithmetischen oder logischen Befhel befindet sich das höchstwertige Bit des Ergebnisses im Sign Flag. Das Sign Flag zeigt somit an, ob das Ergebnis positiv oder negativ ist. Ist das Ergebnis negativ, so wird das Sign Flag auf 1 gesetzt.

[...]

Wenn bei einer arithmetischen Operation ein Übertrag auf das höchstwertige Bit erfolgt, wird das Overflow Flag auf 1 gesetzt.

AF ist also nur für BCD-Arithmetik interessant und OF nur für Zahlen mit Vorzeichen wichtig.

Niels 8. Dez 2003 19:53

Re: Assembler: Flags bei CMP
 
Danke...funktioniert jetzt alles

MfG Niels


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz