Comment puis-je imprimer 0,2,4,6,... en langage d'assemblage?
J'ai un devoir à partir de mon ordi. système de org. sujet et malheureusement, je suis un peu nouveau quand il s'agit du langage d'assemblage. Je suis censé écrire un programme qui affiche les nombres 0,2,4,6,8,10 respectivement. Comment pourrais-je aller à ce sujet?
Peut-être que cela va répondre à ma question: (Réactions s'il vous plaît)
.model small
.stack 100H
.data
.code
call proc
mov cx,5
mov dx,0
L1:
mov bx,2
add dx,bx
mov ah,02h
loop L1
int 21
endp
- Ce langage d'assemblage? Il y a beaucoup, voulez-vous dire x86?
- sir im vous donner un exemple... .modèle de proc .pile de 100H .les données .appel de proc principal appel ace1 appel ace2 mov cx, 10 proc L1: mov dx, 41h mov ah, 02h inc dx, boucle L1 int 21h endp *sir ce programme affiche A,B,C,D, et ainsi de suite (un programme comme ce monsieur, comment vous appelez ça?)
- oui, monsieur, je suis supposer pour afficher les numéros de 0,2,4,6,8,10 respectivement
- Ne vous endormez pas dans la classe la prochaine fois, brotha.
- im en utilisant un textpad pour l'exécution de mon programme
- Vraiment, Textpad est un émulateur x86 plug-in? C'est nouvelles pour moi 🙂
- Je ne pense pas qu'il n'est jamais loin, @abelenky, l'appel de proc' ressemble à une récursion infinie.
- à quel nombre voulez-vous arrêter (si).
- nombre de pax 10 sir.
- Arrêtez de m'appeler monsieur. Mon père était sir, je suis juste Pax.
- ok pax ^_^ coz je ne sais pas vous, si vous êtes un professionnel de l'homme? c'est pourquoi je suis toujours montrer du respect à tout le monde même s'il/elle est juste un enfant.
- ce semestre est beaucoup de l'enfer pour moi, je me suis inscrit C++, VBPro, Assemblée en même temps. Je suis plutôt concentrée sur le C++ et c'est peut-être pourquoi je ne peux pas raconter trop de l'Assemblée, désolé.
- Oliver, il n'est pas habituel (sur les parties de l'Internet que je suis habitué) d'appeler quelqu'un "monsieur". Si vous voulez être poli, puis il suffit de dire "s'il vous plaît" et "merci".
- Juste par intérêt, Oliver, quelle est votre nationalité. Ne répondez pas si vous ne voulez pas, mais le "sir" chose indique généralement Indien sensibilités culturelles pour moi.
- im un thaïlandais ^_^ et même les gens qui sont plus petites à mon poste/statut dans la vie, j'ai l'habitude de les appeler monsieur, je ne sais pas mais pour moi, c'est la façon dont je montre du respect pour les autres ^_^
- -9, sérieux? Je veux dire, je pouvais voir à -2 ou -3, mais c'est ridicule... je pourrais avoir demandé la même chose comme un langage d'assemblage débutant. Beaucoup de gens ne connaissent pas les différents types de langage d'assemblage et ainsi de suite.
- Oliver, veuillez retrait à gauche de vos lignes de code en 4 espaces, afin de s'assurer qu'ils sont présentés comme des lignes séparées.
- C'est de cette façon le vote des travaux.
- désolé, mais je n'en ai trouvé aujourd'hui ce site web sur les mains pour aider les programmeurs, désolé pour les nombreuses fautes T_T
- Je suis d'accord, -9 semble un peu excessif. Spécialement de celles qui ne semble pas savoir qu'il y a plus de 1 assemblée de la langue, mais pas assez pour montrer quelques échantillons dans TOUT langage d'assemblage.
- Oliver, votre échantillon actuel a de nombreuses erreurs de votre exemple précédent, auxquelles j'ai répondu à ma réponse ci-dessous.
- Les gens commencent à voter sauvegarder maintenant que la question a été précisé et élargi. J'ai vu ce genre de comportement avant.
- J'ai supprimé mon bas de vote. Je suis rassuré par l'OP volonté de participer, plutôt que de se demander-et-exécuter.
Vous devez vous connecter pour publier un commentaire.
Aller voir votre maître de conférences et/ou le tuteur et demander des conseils. C'est qu'ils sont là. Vous n'avez pas donné n'importe où près de assez d'informations pour vous aider.
Voici ce que j'ai pense votre ABCD programme devrait ressembler. Je vous suggère de l'utiliser comme un point de départ pour essayer de faire un 0 2 4 ... version.
Lorsque vous avez au moins eu un aller à la conversion de ce, poste le code et nous allons critiquer ce que vous avez fait.
Si on vous apprend quelque chose, ça ne dure jamais, mais, si vous apprenez quelque chose, il dure éternellement (de l'alcool-pourris méninges nonobstant :-).
Int 21
est l'interruption ms-DOS qui permet à des programmes en assembleur pour utiliser différentes DOS de fonctions. C'est conceptuellement un énorme instruction switch basé sur laAH
registre qui est pourquoi vous verrez des choses commeInt 21 Fn 02
, ce qui signifie exécutermov ah,2
suivie parint 21
.Int 21 Fn 02
va prendre le contenu deDL
et de sortie à l'écran. Si la séquence:sera de sortie le caractère (0x41).
De même,
Int 21 Fn 4c
de sortie du processus en cours d'exécution.Langage d'assemblage est une représentation symbolique de la numériques de la machine de codes et d'autres constantes nécessaires pour programmer un PROCESSEUR en particulier (ou de l'architecture). Afin de langage d'assemblage pour les Mac (plus récemment, Intel X86) est différent de celui utilisé sur l'iPhone - BRAS.
Votre professeur est aussi probablement vous attend pour réaliser la différence entre la forme binaire du nombre que vous comptera avec, et le format ASCII que vous allez utiliser pour l'affichage à l'écran.
Je suis sûr que votre classe vous a donné certains l'éducation ici.
Pouvez-vous code assez assemblée pour imprimer un ou deux numéros?
Pouvez-vous code assez de calculer les chiffres, même si vous ne pouvez pas les imprimer?
Post que beaucoup de code, et vous pouvez trouver de l'aide ici.
Sinon, vous êtes de demander aux autres de faire vos devoirs pour vous.
Vous savez il n'y a plus d'une saveur de "Langage d'Assemblage."
Vous pouvez le faire exactement comme le programme qui imprime A, B, C, D, etc.: sauf qu'au lieu de partir de "A", commencent à '0; et au lieu d'augmenter de 1 à chaque fois (de 'A' à 'B'), en augmentation de 2 (à partir de '0' à '2').
Après l'impression '0', '2', '4', '6', et le "8", le prochain numéro que vous souhaitez imprimer est '10'.
Pour imprimer '10', vous pouvez imprimer '1' suivi par '0'. Ou, au lieu d'invoquer
int 21
avecah=2
(qui imprime un caractère à la fois), vous pouvez définirah=9
pour imprimer une chaîne de caractères (setds:dx
à un bloc de mémoire qui contient des "10$
").Plus tard, vous avez proposé la solution suivante et a demandé pour la critique:
Mes critiques sont comme suit:
defineuser1 n'existe pas (je pense que tu veux dire userdefine1)
réglage cx doit être à l'intérieur (pas avant) la procédure
invoquant int 21 doit être à l'intérieur (pas de l'extérieur) de la boucle
vous avez besoin d'un traitement spécial à "10" comme je l'ai mentionné ci-dessus
Il y a une différence entre
'0'
(le caractère ASCII/chiffres) et0
(le nombre) ... vous avez besoin d'imprimer les caractères/chiffres, pas le nombreVous avez besoin d'apprendre à tester votre code (l'écrire, pas à travers elle avec le débogueur, et le corriger), de préférence avant de poster des questions à ce sujet.
Vous avez un compteur commence à zéro et à plusieurs reprises l'incrémenter par deux, l'impression du résultat.
Je suis nouveau en informatique et quand j'ai vu cette question, je voulais juste l'essayer. J'ai réussi à le faire et voici le code
Ok. C'est ma meilleure tentative. Beaucoup de détails à gauche. Je dois aussi mentionner que je n'ai pas le branlant la moindre idée de comment imprimer un char à l'écran.
Comme d'autres l'ont mentionné, vous n'avez pas spécifié de quel langage d'assemblage, donc j'ai choisi x86.
Enfin, allez parler à tes professeurs, ils vont vous aider beaucoup plus que nous le pouvons.
Êtes-vous à l'aide d'une macro pour la sortie?
doit être quelque chose comme...