| CPC Rulez https://cpcrulez.fr/forum/ |
|
| Question sur l'instruction IN https://cpcrulez.fr/forum/viewtopic.php?f=4&t=4475 |
Page 1 sur 1 |
| Auteur : | Demoniak [ 19 Fév 2011, 21:59 ] |
| Sujet du message : | Question sur l'instruction IN |
Comme le titre l'indique, j'ai une question assez "pointue" sur l'instruction IN du Z80. Dans les docs sur le Z80 que j'ai pu lire, il est indiqué que l'instruction IN r,(C) remet à zéro le flag N, et n'affecte pas le flag C. Or, en testant avec WinApe, il semble que le flag N soit positionné à 1 et le flag C remis à zéro. Comme j'ai pas de vrai cpc disponnible pour tester, qui peux me dire qui a raison ? |
|
| Auteur : | hERMOL [ 19 Fév 2011, 22:17 ] |
| Sujet du message : | Re: Question sur l'instruction IN |
bon je test sur un vrai CPC .... ce petit code nous donne la valeur du registre flag apres un "in a,(c)" Code : xor a ; AF in a,(c) ; ED 78 push af ; F5 pop bc ; C1 ld a,c ; 79 call &BB5A ; CD 5A BB ret ; C9 qui me donne la lettre "D" -> 68 -> &x1000100 |
|
| Auteur : | Demoniak [ 19 Fév 2011, 22:39 ] |
| Sujet du message : | Re: Question sur l'instruction IN |
hERMOL a écrit : bon je test sur un vrai CPC .... ce petit code nous donne la valeur du registre flag apres un "in a,(c)" Code : xor a ; AF in a,(c) ; ED 78 push af ; F5 pop bc ; C1 ld a,c ; 79 call &BB5A ; CD 5A BB ret ; C9 qui me donne la lettre "D" -> 68 -> &x1000100 Hum oui mais qu'est ce que tu as mis dans le registre B ? ça dépend sur quel port on va lire (par exemple le port #F400 ou le port #F500) |
|
| Auteur : | hERMOL [ 19 Fév 2011, 22:44 ] |
| Sujet du message : | Re: Question sur l'instruction IN |
ca une incidence sur le reg "A" pas sur le registre "F" ??? - tout les flags a 0 avant j'obtiens "D" -> 68 -> &x1000100 - tout les flags a 1 avant , j'obtiens -> 173 -> &x10101101 Code : SZ-H-VNC &x01000100 avec avant &00 &x10101101 avec avant &FF S=pas touche Z=inversement d'état ? H=0 V=1 N=0 C= pas touche |
|
| Auteur : | Demoniak [ 19 Fév 2011, 22:51 ] |
| Sujet du message : | Re: Question sur l'instruction IN |
En Fait, les flags S, Z et P/V sont positionnés en fonction de la valeur du registre A. Par exemple si tu lis le port #F400, ça te retourne zéro dans A, donc S=0, P=1 et Z=1 si tu lis un autre port (#FF00 par ex), ça retourne #FF dans A, donc S=1, P=1 et Z=0 Sinon d'après ton test, on voit que le flag C n'est pas affecté par l'instruction IN, et que le flag N est mis à zéro. C'est ce que je voulais savoir |
|
| Auteur : | Fredouille [ 20 Fév 2011, 09:55 ] |
| Sujet du message : | Re: Question sur l'instruction IN |
Quand j'ai un doute sur le positionnement des flags, je compile vite fait un petit programme sous Oshon Z80 simulator et je regarde comment il se comporte. |
|
| Auteur : | Demoniak [ 20 Fév 2011, 13:36 ] |
| Sujet du message : | Re: Question sur l'instruction IN |
Fredouille a écrit : Quand j'ai un doute sur le positionnement des flags, je compile vite fait un petit programme sous Oshon Z80 simulator et je regarde comment il se comporte. Ok merci du conseil, je testerai. |
|
| Auteur : | Longshot [ 22 Fév 2011, 13:38 ] |
| Sujet du message : | Re: Question sur l'instruction IN |
Le comportement de certains bits de F dans winape est très mal géré. Je m'en étais rendu compte en essayant de faire tourner la protection de revolog sous winape. (Elle ne peut actuellement pas être émulée correctement à cause de ce problème et un autre de mauvais calcul d'interruption du code (l'interruption tombe au mauvais endroit)) Ce problème n'apparait que très rarement car très peu de programmes se servent du contenu complet de F, à part pour des protections (comme celle de hercule:latis, qui utilise F comme une instruction Z80A). |
|
| Auteur : | Megachur [ 22 Fév 2011, 20:07 ] |
| Sujet du message : | Re: Question sur l'instruction IN |
Espérons que PC-CPC sera bien mieux de ce côté là !!! Allez Démoniak !!! Allez Démoniak !!! Allez Démoniak !!! |
|
| Auteur : | Demoniak [ 08 Mars 2011, 17:18 ] |
| Sujet du message : | Re: Question sur l'instruction IN |
C'est bon, j'émule pour pratiquement toutes les instructions les bits 3 et 5 des Flags. Je dis pratiquement, car il me reste à terminer l'instruction BIT n,(HL), qui utilise le registre MEMPTR pour déterminer la valeur de ces bits. Sinon tous les autres cas sont fait. |
|
| Auteur : | TotO [ 08 Mars 2011, 19:12 ] |
| Sujet du message : | Re: Question sur l'instruction IN |
Accurate ! |
|
| Auteur : | hERMOL [ 08 Mars 2011, 21:21 ] |
| Sujet du message : | Re: Question sur l'instruction IN |
Demoniak a écrit : Je dis pratiquement, car il me reste à terminer l'instruction BIT n,(HL), qui utilise le registre MEMPTR pour déterminer la valeur de ces bits. ah vi ce fameux MEMPTR, je voulais lancer un topic la dessus , apres la new (2006) sur RAWW.ORG Citer : As it is known, after the instruction BIT n,(HL) execution, bits 3 and 5 of the flag register become containing values that is not documented in the official documentation at all. Actually these bits are copied from the bits 11 and 13 of the internal register pair of Z80 CPU, which is used for 16-bit operations, and in most cases to handle addresses. This is usual practice for processors having 8-bits data bus working with 16-bits data.
|
|
| Page 1 sur 1 | Le fuseau horaire est UTC+1 heure |
| Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |
|