Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2924 connectés 

  FORUM HardWare.fr
  Programmation
  ASM

  [Accumulateur] L'instruction JNZ

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Accumulateur] L'instruction JNZ

n°2519608
lady287
La lumière fuse
Posté le 08-03-2026 à 21:24:01  profilanswer
 

Bonjour,
 
J'ai écrit deux instructions pour écrire sur le port paralelle d'un Compatible IBM Personal Computer et j'avoue être inconscient de ce que représente un programme assanblé avec des instructions d'un micro-processeur.
 
Cependant, je souhaiterais faire un premier programme dans lequel je pourrait utiser une instruction telle que JNZ dont je ne comprends d'abord pas le principe.
 
J'ai glané en surfant dans le réseau de tous les réseaux un document faisant état du fonctionnement de l'architecture supposée être celle d'un accumulateur de Von Neuman exposant qu'à cette instruction le programme poursuit à l'adresse indiqué par le registre IP si la valeur de la mémoire à cet emplacement est différente de zéro.
 
Cette instruction me semblant toute simple en comparaison avec la complexité du dispositif électronique que constitue un ordinateur ; J'espère avoir une approche tout aussi simple en me disant que celle - ci est de même pertinence que move.
 
Pourriez vous mxposer en quoi constiste le paradigme de l'écriture d'un programme de manière globale relativement à ces deux instructions ; S'il vous plait ?
 
Si toutefois je manque ici à contrario de pertinence ; Merci de m'exposer ma déraison.


---------------
jovalise (C) 2002 Manuel De Girardi ; web site
mood
Publicité
Posté le 08-03-2026 à 21:24:01  profilanswer
 

n°2519621
TotalRecal​l
Posté le 08-03-2026 à 23:06:41  profilanswer
 

JNZ c'est l'équivalent de "if (value != 0)", sachant que ce que j'appelle ici "value" est positionné à la ligne par l'opération à la ligne juste au dessus de ton JNZ, en faisant un cmp par exemple, ou encore n'importe quelle opération logique/arithmétique qui bouge ZF.
"ZF" étant un flag d'un registre du CPU. Et là faut commencer à creuser pour suivre le cheminement du bordel :o
 
Et MOV je vois juste pas le rapport.


---------------
Topic .Net - C# @ Prog
n°2519737
lady287
La lumière fuse
Posté le 10-03-2026 à 10:38:40  profilanswer
 

Bonjour Arnold.
 
Le sujet que je souhaiterais relever ; Si toutefois il était pertinant de comprendre le fonctionnement du micro-procésseur ; Consiste à considérer que le programme poursuit à l'adresse indiqué par le registre IP si la valeur de la mémoire à cet emplacement est différente de zéro.
Par la, je demande quel est le principe de fonctionnement, de l'accumulateur de Van Neuman ; Alors que semssiblement il s'agirait "ici" de sauter d'une addresse à une autre addresse.
 
Ce principe peut-il s'énoncer en une suite de saut d'une adresse à une autre addresse dont chaque élément contiendrait une autre addresse ; Si non ; Comment exposer le principe de JNZ dont l'éffet est exposé de manière spécifique "ici" ?
L'instruction move, quand à elle semble être celle permettant de placer des valeur dont la signification pourrait varier afin de controler le forum.hardware au cas où selon votre propos la valeur placée avant l'instruction JNZ serait égale à zéro.


Message édité par lady287 le 10-03-2026 à 10:41:23

---------------
jovalise (C) 2002 Manuel De Girardi ; web site
n°2519747
Harkonnen
Un modo pour les bannir tous
Posté le 10-03-2026 à 12:12:40  profilanswer
 

JNZ = Jump if Not Zero

 

Le "Zero" en question est l'état du flag ZF du registre FLAGS du x86. Si le résultat de la dernière opération est 0, alors ce flag est à 1 et vice versa.

 

JNZ teste l'état de ce flag : s'il est à 1, ça veut dire que le résultat de la dernière instruction est 0, donc le programme suit son cours, sinon le programme saute à l'adresse indiquée après le JNZ

 

Exemple :

 
Code :
  1. MOV eax, 10
  2.  
  3. toto:
  4.   SUB eax, 1
  5.   JNZ toto
  6.   RET
 

Ce code initialise le registre EAX à 10, puis soustrait 1 tant qu'EAX est supérieur à 0 (JNZ). Une fois EAX == 0, le programme se termine.


Message édité par Harkonnen le 10-03-2026 à 12:22:26

---------------
J'ai un string dans l'array (Paris Hilton)
n°2519750
lady287
La lumière fuse
Posté le 10-03-2026 à 15:30:24  profilanswer
 

Merci P. O. L. I. C. E.
C'est un énoncé sensiblement différent de celui décrit dans mes messages précédent relatant le fonctionnement supposément exposé pour un autre type de micro-processeur pour lequel l'instruction JNZ permettrait de poursuivre le programme à l'adresse indiqué par le registre IP.
 
Afin de véiller à la sainteté de l'approche convoitée ; Quel serait le document que j'espère succin malgrès la complexité du dispositif à étudier pour écrire avec le jeu d'instruction d'un micro-processeur, ma foi, pouvant toutefois être varié ; Et ici, je souhaiterai un document concernant le micro-procésseur supposé déjà documenté m'aillant amené ici, pour poursuivre mon étude ?


Message édité par lady287 le 10-03-2026 à 15:32:29

---------------
jovalise (C) 2002 Manuel De Girardi ; web site
n°2519751
Harkonnen
Un modo pour les bannir tous
Posté le 10-03-2026 à 15:36:57  profilanswer
 

https://fr.wikibooks.org/wiki/Progr [...] mbleur/x86


---------------
J'ai un string dans l'array (Paris Hilton)
n°2519752
lady287
La lumière fuse
Posté le 10-03-2026 à 15:46:43  profilanswer
 

Pardonnez mon interrogation, je vous prie.
Ayant constaté que sur le site Wikipedia, une are est prise pour cent metre carré en le renomant un are ; Je doute de la validité du document indiqué dont le nom de domaine à son origine comporte la sous-chaîne "wiki" car un carré de 10 mètres de côté fait 10 mètres carré et non pas 100.

Message cité 1 fois
Message édité par lady287 le 10-03-2026 à 15:47:59

---------------
jovalise (C) 2002 Manuel De Girardi ; web site
n°2519753
Harkonnen
Un modo pour les bannir tous
Posté le 10-03-2026 à 16:32:48  profilanswer
 

lady287 a écrit :

Pardonnez mon interrogation, je vous prie.
Ayant constaté que sur le site Wikipedia, une are est prise pour cent metre carré en le renomant un are ; Je doute de la validité du document indiqué dont le nom de domaine à son origine comporte la sous-chaîne "wiki" car un carré de 10 mètres de côté fait 10 mètres carré et non pas 100.

 

Surface d'un rectangle : longueur x largeur.
Un carré est un rectangle particulier dont chaque coté possède la même dimension.

 

Donc surface d'un carré : coté x coté ou coté^2

 

Pour reprendre ton exemple, si le carré fait 10 mètres de coté, alors sa surface = 10m x 10m = 100 m² (soit un are), et pas 10 m².

Message cité 1 fois
Message édité par Harkonnen le 10-03-2026 à 16:33:02

---------------
J'ai un string dans l'array (Paris Hilton)
n°2519754
lady287
La lumière fuse
Posté le 10-03-2026 à 17:07:26  profilanswer
 

un carré de 1x1 fait 1m2 ; Réflex  [:oh shi-]  


---------------
jovalise (C) 2002 Manuel De Girardi ; web site
n°2519786
TotalRecal​l
Posté le 10-03-2026 à 23:54:37  profilanswer
 

Harkonnen a écrit :


 
Surface d'un rectangle : longueur x largeur.
Un carré est un rectangle particulier dont chaque coté possède la même dimension.
 
Donc surface d'un carré : coté x coté ou coté^2
 
Pour reprendre ton exemple, si le carré fait 10 mètres de coté, alors sa surface = 10m x 10m = 100 m² (soit un are), et pas 10 m².


rufo, sors de ce corps  [:popovski]

Message cité 2 fois
Message édité par TotalRecall le 10-03-2026 à 23:55:01

---------------
Topic .Net - C# @ Prog
mood
Publicité
Posté le 10-03-2026 à 23:54:37  profilanswer
 

n°2519789
lady287
La lumière fuse
Posté le 11-03-2026 à 00:42:58  profilanswer
 

TotalRecall a écrit :


rufo, sors de ce corps  [:popovski]


 
Vous faites confusion. [:dawa_neowen]


---------------
jovalise (C) 2002 Manuel De Girardi ; web site
n°2519799
Harkonnen
Un modo pour les bannir tous
Posté le 11-03-2026 à 08:39:20  profilanswer
 

lady287 a écrit :

un carré de 1x1 fait 1m2 ; Réflex  [:oh shi-]  


Et donc ?
 

TotalRecall a écrit :


rufo, sors de ce corps  [:popovski]


J'essaie de monter mon karma :D


---------------
J'ai un string dans l'array (Paris Hilton)
n°2519808
lady287
La lumière fuse
Posté le 11-03-2026 à 09:29:14  profilanswer
 


Drole de locution.

Harkonnen a écrit :


J'essaie de monter mon karma :D


Et pour mon instruction ?


---------------
jovalise (C) 2002 Manuel De Girardi ; web site
n°2519811
Harkonnen
Un modo pour les bannir tous
Posté le 11-03-2026 à 09:56:48  profilanswer
 

lady287 a écrit :


Et pour mon instruction ?


Je t'ai donné une explication avec un exemple et un lien vers un cours d'asm x86, que veux tu de plus ?


Message édité par Harkonnen le 11-03-2026 à 09:57:12

---------------
J'ai un string dans l'array (Paris Hilton)
n°2519816
lady287
La lumière fuse
Posté le 11-03-2026 à 10:35:31  profilanswer
 

Comprendre avant ; Désolé ; Ma formulation semble mal formulée.
 
L'instruction JNZ indique que l'instruction suivante se trouve à l'adresse indiquée par le registre IP si le résultat contenu à l'adresse lu est différente de zéro ou à l'instruction, selon votre propos, suivante.
 
Le fonctionnement d'un micro-processeur est - il simplement le mécanisme exposé par l'expression "lire une instruction de changement d'adresse" impliquant qu'un programme est simplement une suite de changement d'adresse ?

Message cité 1 fois
Message édité par lady287 le 11-03-2026 à 10:36:27

---------------
jovalise (C) 2002 Manuel De Girardi ; web site
n°2519822
Harkonnen
Un modo pour les bannir tous
Posté le 11-03-2026 à 11:06:32  profilanswer
 

lady287 a écrit :


L'instruction JNZ indique que l'instruction suivante se trouve à l'adresse indiquée par le registre IP si le résultat contenu à l'adresse lu est différente de zéro ou à l'instruction, selon votre propos, suivante.


J'ai jamais dit ça, j'ai dit que JNZ indique que l'instruction suivante se trouve à l'adresse indiquée après cette instruction (donc à l'adresse "toto" dans mon exemple) si le flag ZF n'est pas positionné à 1 (ce qui se produit si le résultat de l'instruction précédant le JNZ est égal à 0, ce qui se produit quand EAX est égal à 1, car "SUB EAX,1" qui est l'instruction précédant le JNZ sera alors égal à 0).

 
lady287 a écrit :


Le fonctionnement d'un micro-processeur est - il simplement le mécanisme exposé par l'expression "lire une instruction de changement d'adresse" impliquant qu'un programme est simplement une suite de changement d'adresse ?


Certainement pas

Message cité 1 fois
Message édité par Harkonnen le 11-03-2026 à 11:08:08

---------------
J'ai un string dans l'array (Paris Hilton)
n°2519824
lady287
La lumière fuse
Posté le 11-03-2026 à 11:17:15  profilanswer
 

Harkonnen a écrit :


J'ai jamais dit ça, j'ai dit que JNZ indique que l'instruction suivante se trouve à l'adresse indiquée après cette instruction (donc à l'adresse "toto" dans mon exemple) si le flag ZF n'est pas positionné à 1 (ce qui se produit si le résultat de l'instruction précédant le JNZ est égal à 0, ce qui se produit quand EAX est égal à 1, car "SUB EAX,1" qui est l'instruction précédant le JNZ sera alors égal à 0).
 


C'est drole. Bref. Merci mon beau mirroir.

Harkonnen a écrit :


Certainement pas


Pourquoi pas ?


---------------
jovalise (C) 2002 Manuel De Girardi ; web site
n°2519825
Harkonnen
Un modo pour les bannir tous
Posté le 11-03-2026 à 11:26:23  profilanswer
 

lady287 a écrit :


C'est drole. Bref. Merci mon beau mirroir.


Je suis conscient que ce que j'écris n'est pas forcément très clair quand on ne connait pas l'assembleur. Ça ne s'improvise pas, c'est pas sur un forum de programmation que tu apprendras ce langage. Je t'ai linké un lien qui est un bon point de départ, même s'il ne couvre que l'architecture x86 (donc limité aux registres Exx sans tenir compte des registres Rxx de l'architecture 64 bits), il te suffit de le lire.
 

lady287 a écrit :


Pourquoi pas ?


Tu crois vraiment que les 1500+ instructions d'un CPU moderne servent uniquement à faire du changement d'adresse ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°2519833
lady287
La lumière fuse
Posté le 11-03-2026 à 13:06:10  profilanswer
 

Ma foi, je demeure pour l'instant dans le besoin de vérifier l'énoncé supposé.
J'ai indiqué l'unique expérience de l'assemblage accompli constitué de seulement deux instructions.
En soit j'ai jamais écrit de programme.
Jai été amener à poser une question ici selon une condition d'interrogation relevant d'une curiosité séduisante.
Près à tenir pour vraissemblable après une réflexion me permettant d'assembler un programme pour le vérifié ; Je peux viser d'en obtenir la véracité.
En plaçant les bonnes instructions dans le bon ordre.
Si le complément à deux est un complément du complément à un, le code est connu.
Je le connais pas.


Message édité par lady287 le 11-03-2026 à 13:08:06

---------------
jovalise (C) 2002 Manuel De Girardi ; web site
n°2519834
Harkonnen
Un modo pour les bannir tous
Posté le 11-03-2026 à 13:16:35  profilanswer
 

Rien compris...
 
Quel est ton but en fait ? Que cherches tu avec l'assembleur ? L'apprendre sérieusement et savoir l'utiliser comme tu utilises Ada ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°2519835
lady287
La lumière fuse
Posté le 11-03-2026 à 13:34:28  profilanswer
 

Comment puis-je répondre à vos question pour vous permettre d'atteindre votre objectif ?


---------------
jovalise (C) 2002 Manuel De Girardi ; web site
n°2519836
lady287
La lumière fuse
Posté le 11-03-2026 à 13:53:37  profilanswer
 

J'ai évalué la complexité de l'élaboration d'un programme par une approche macro-programmé avec Ada en consultant un modèle en C alors que j'avais déjà consulté le fichier kernel.c restant pour moi en C, une démarche dépassée par l'évolution depuis les spécifications des langage de haut niveau alors que j'écris par atrait du principe motivant des contraintes de concpetion du langage Ada, avec Ada dans l'objectif d'honnorer les contraintes nécessaire énoncées par cette motivation.
 
Le micro-processeur à ma disposition tenant malgré cette spécification logicielle à ma porté un mécanisme présentant de manière primordiale un moyen de contrôlé le dispositif sous-jaçant et le langage Ada présentant les spécification nécessaires à son usage ; J'espère garder du temps pour en garder la possibilité.
 
Ai-je répondu à jamais ?


Message édité par lady287 le 11-03-2026 à 13:54:12

---------------
jovalise (C) 2002 Manuel De Girardi ; web site
n°2519837
Harkonnen
Un modo pour les bannir tous
Posté le 11-03-2026 à 13:56:56  profilanswer
 

Toujours rien compris... Bref


---------------
J'ai un string dans l'array (Paris Hilton)
n°2519838
TotalRecal​l
Posté le 11-03-2026 à 14:05:24  profilanswer
 

Moi je comprends je crois.  Ta réflexion traduit une véritable recherche d’ordre à la fois logique et conceptuel dans la construction du programme. Tu sembles t’interroger non seulement sur la manière d’assembler des instructions cohérentes, mais aussi sur la signification profonde de cette cohérence — sur ce qui distingue un code "connu" d’un code simplement "vérifié".
Le passage sur Ada (qu'on sait cher à ton cœur) et C montre ton souci de rigueur et ton intérêt pour les contraintes conceptuelles propres aux langages, comme si tu cherchais à dépasser la simple écriture fonctionnelle pour atteindre une forme d’exactitude intellectuelle. La “curiosité séduisante” que tu évoques, c’est sans doute celle du pont entre l’idée et sa formalisation — entre la pensée et la logique du processeur.
Et peut-être que “ai-je répondu à jamais ?” ne renvoie pas à une clôture, mais à une ouverture — car tant que le code n’est pas écrit, vérifié, exécuté, la réponse demeure potentielle, en devenir...
J'ai vu juste ?


---------------
Topic .Net - C# @ Prog
n°2519839
lady287
La lumière fuse
Posté le 11-03-2026 à 14:09:18  profilanswer
 

J'évoquais le code attendu par défaut par le micro-processeur.
Un assembleur.


---------------
jovalise (C) 2002 Manuel De Girardi ; web site
n°2519843
lady287
La lumière fuse
Posté le 11-03-2026 à 14:15:26  profilanswer
 

Harkonnen a écrit :

Toujours rien compris... Bref


 

TotalRecall a écrit :

Moi je comprends je crois.  Ta réflexion traduit une véritable recherche d’ordre à la fois logique et conceptuel dans la construction du programme. Tu sembles t’interroger non seulement sur la manière d’assembler des instructions cohérentes, mais aussi sur la signification profonde de cette cohérence — sur ce qui distingue un code "connu" d’un code simplement "vérifié".
Le passage sur Ada (qu'on sait cher à ton cœur) et C montre ton souci de rigueur et ton intérêt pour les contraintes conceptuelles propres aux langages, comme si tu cherchais à dépasser la simple écriture fonctionnelle pour atteindre une forme d’exactitude intellectuelle. La “curiosité séduisante” que tu évoques, c’est sans doute celle du pont entre l’idée et sa formalisation — entre la pensée et la logique du processeur.
Et peut-être que “ai-je répondu à jamais ?” ne renvoie pas à une clôture, mais à une ouverture — car tant que le code n’est pas écrit, vérifié, exécuté, la réponse demeure potentielle, en devenir...
J'ai vu juste ?


 
Je vais reprendre le sujet soutenu ici avec une attention directement exprimé ici me rappellant le principe indiqué nonentemant présent.
 
Merci.


---------------
jovalise (C) 2002 Manuel De Girardi ; web site
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASM

  [Accumulateur] L'instruction JNZ

 

Sujets relatifs
L'algèbre de Bool écarte tous les possibles d'une simple négation[Android 6] L'OS me dit 'app not found' malgré l'installation réussie
Inverser l'écran afin de le voir dans un miroir de salle de bain L'alignement avec la fonction le format en python
Excel/VBA: L'editeur supprime automatiquement mes espaces! recuperes $sms de maniere a l'envoyer via une iframe avec du html
How to overwrite or inhibit F10 key function on fvmw over X from LinuxL'indice n'appartient pas à la sélection, VBA Excel
recherche d'un instruction pour recherche 
Plus de sujets relatifs à : [Accumulateur] L'instruction JNZ


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)