assemblée de comparer deux nombres
Qu'est-ce que la syntaxe de l'assembleur pour déterminer lequel des deux nombres est le plus grand?
Qu'est-ce que le niveau inférieur (code machine)? Peut-on aller encore plus bas? Une fois que nous obtenons à niveau du bit, ce qui se passe? Comment est-il représenté en 0 et de 1?
La Syntaxe de l'assembleur et du Code Machine dépend de l'architecture de la machine que vous utilisez...
OriginalL'auteur l--''''''---------'''''''''''' | 2009-07-14
Vous devez vous connecter pour publier un commentaire.
Elle varie d'un assembleur pour l'assembleur.
La plupart des machines offrent des registres, qui ont des noms symboliques
comme R1, ou EAX (Intel x86), et ont des instructions
des noms comme "CMP" pour comparer. Et pour une comparaison
l'instruction, vous avez besoin d'un autre opérande, parfois
un registre, parfois un littéral. Souvent, les monteurs de
autoriser les commentaires pour le droit à l'instruction.
Une ligne d'instruction ressemble:
L'assembleur peut varier quelque peu.
Pour Microsoft assembleur X86, vous pouvez écrire:
CMP EAX, 23 ; comparer registre EAX avec la constante de 23
ou
CMP EAX, XYZ ; comparer registre EAX avec le contenu de l'adresse mémoire nommé XYZ
Souvent on peut écrire complexe "expressions" dans le champ opérande
qui permettent à l'instruction, si elle a la capacité, à l'adresse
la mémoire dans une variété de façons. Mais je pense que cela répond à votre question.
Lorsque l'instruction CMP s'exécute, sur la plupart des machines, il produit un résultat par exemple, "moins", "plus", "égalité" et la mettre dans un spécial "conditions" s'inscrire. Le programmeur écrit normalement une instruction CMP, suivi par "JMP sur la condition" e.g, "JE" ou "jmp" égaux"), qui inspecte les conditions de registre et les causes de déroulement du programme de changement à la tarfet de l'instruction jmp si la condition est vraie. L'assembleur n'avez rien à faire; il est de la responsabilité du programme à écrire les instructions l'une après l'autre. L'assembleur convertit simplement, à chaque instruction de ligne de source en binaire.
ah ok! Merci pour l'explication. C'est fait ce que je veux faire plus facile que je pensais que ce serait
OriginalL'auteur Ira Baxter
La technique de base (sur la plupart des systèmes modernes) est de soustraire les deux nombres, et de vérifier le bit de signe du résultat, c'est à dire voir si le résultat est supérieur ou égal à/inférieur à zéro. Dans l'assemblée de code au lieu d'obtenir le résultat directement (dans un registre), vous avez normalement juste de la branche en fonction de l'état:
JLT
etJMP
opérateurs?OriginalL'auteur Edmund
D'abord un CMP (comparaison) l'instruction est appelé ensuite l'une des opérations suivantes:
jle - saut de ligne si inférieur ou égal à
jge - saut de ligne si supérieur ou égal à
Le plus bas assembleur travaille avec est octets, pas de bits (directement en tout cas). Si vous voulez savoir à propos de peu de logique, vous aurez besoin de prendre un coup d'oeil à la conception de circuits.
OriginalL'auteur Spencer Ruport
Cela dépend entièrement du processeur dont vous parlez, mais elle tend à être de la forme:
En d'autres termes, une comparaison de l'instruction pour définir les indicateurs pertinents, suivie par une branche conditionnelle en fonction de ces indicateurs.
C'est généralement aussi bas que vous devez obtenir pour la programmation. Vous avez seulement besoin de connaître le langage machine pour cela, si vous êtes en train de rédiger les assembleurs et vous avez seulement besoin de connaître le microcode et/ou les conceptions de circuits si vous êtes la construction de processeurs.
OriginalL'auteur paxdiablo
Dans TASM (x86 assemblée), il peut ressembler à ceci:
dans ce cas, il compare deux 8bit chiffres qui nous permettent de stocker temporairement dans le supérieur et l'inférieur de la partie du registre B. Alternativement, vous pouvez également envisager d'utiliser
jbe
(si BL <= BH) oujge
/jae
(si BL >= BH).J'espère que quelqu'un trouve qu'il est utile 🙂
OriginalL'auteur LihO
Comme déjà mentionné, généralement la comparaison est faite au moyen d'une soustraction.
Par exemple, X86 Montage/Contrôle De Flux.
Au niveau du matériel il y a des circuits numériques pour faire les calculs, comme les additionneurs.
OriginalL'auteur Nick Dandoulakis
Comparer deux nombres. Si elle est égale à Oui "Y", il s'imprime Pas de "N" sur l'écran, si elle n'est pas égale. Je suis à l'aide de emu8086. Vous pouvez utiliser la SOUS-commande CMP.
OriginalL'auteur mesutpiskin
OriginalL'auteur user4016012