2017-01-03 1 views
-3

Bonne nuit, ce qui est le façon de simpliest recevoir un ombles simple, comme paramètre dans Assemblée 16 BITS, et se compare à tester si est la bonne? Je suis depuis 2 jours à chercher des exemples de comment le faire, mais personne n'a travaillé pour moi ... J'ai essayé celacode from StackOverflow et ça ne marche pas, le dx a 81h pas l'hex du char que je avoir besoin. Je suis très novice dans l'Assemblée, donc J'ai besoin de petits exemples de code pour comprendre ... Je veux le façon la plus simple possible, je ne veux pas perdre votre temps ... Merci. Dans shell MS-DOS, je vais appeler mon programme avec un caractère devant, comme "MOVE A". L'exemple dans ce code cité ci-dessus fonctionne comme un Echo, mais je ne peux pas comparer le caractère inséré sur la ligne de commande. Je suis sur Windows 98 avec TASM 4.1 J'ai essayé l'exemple du livre Art de l'Assemblée cité sur le lien, du chapitre 13.3.12, celui de parler de PSP, et ne pas travaille pour ce dont j'ai besoin. Je pense que les gens ne comprennent pas ce que je veux apprendre. Merci les garsComment recevoir des paramètres de MS-DOS et le compare dans l'Assemblée 16 bits?

+0

Nous comprenons ce que vous voulez, vous ne nous comprenez pas. Vous ** avez ** besoin de la PSP, décalage 81h. Cet exemple de code a chargé l'adresse car vous en avez besoin pour cette fonction. Sinon, vous pouvez juste 'mov al, [81h]' ou 'cmp [81h], 'a'' ou similaire. PS: utilisez des caractères moins gras, merci. – Jester

+0

C'est exactement de ça que je parle! Je l'ai essayé à bien des égards, mais ça ne marche pas. Il semble que char ne va pas s'enregistrer .... – user3587527

+0

Oui, bien sûr. Et je ne sais pas comment déboguer et programmer qui a besoin de paramètres pour fonctionner. J'y renonce presque ... – user3587527

Répondre

2

Oui, la ligne de commande est à 81h comme vous l'avez déjà dit. Dans ces exemples, cependant, l'adresse a dû être passée à une fonction de chaîne d'impression. Si vous voulez accéder au personnage lui-même, vous aurez besoin d'un chargement de mémoire, et pas seulement de son adresse. Au moins avec la version dosbox que j'ai disponible, le nom de la commande n'est pas inclus, mais l'espace de séparation est. Donc, le caractère argument réel si vous invoquez votre programme comme move a sera au décalage 82h. Ce code d'échantillon ainsi charger et imprimer la lettre:

org 100h 

mov dl, ds:[82h] 
mov ah, 06h 
int 21h 
mov ax, 4c00h 
int 21h 

Apparemment tasm a besoin le préfixe ds: sinon il émet un avertissement [Constant] assumed to mean immediate constant et procède à l'utiliser comme une adresse non immédiate.

PS: apprendre à utiliser un débogueur.

+0

J'ai utilisé '82h' et je vous ai expliqué la raison. Alors pourquoi as-tu '81h'? Vous avez également créé un fichier exe, alors que vous avez demandé un fichier com tout le long. Cela ne fonctionnera que comme un fichier com. – Jester

+0

Ne fonctionne pas non plus avec [82h] [PRINTSCREEN] (http://i.imgur.com/9azpvge.jpg) @Jester – user3587527

+0

Maintenant vous avez 'mov ah, 02h' au lieu de' mov ah, 06h' .. mauvais code de fonction. – Jester