Question assembleur

Question assembleur - Programmation

Marsh Posté le 10-07-2001 à 11:51:52    

Comment passer des lignes dans une fenêtre dos je voudrais ecrire des chaines de caractere mais il me met tous a la suite

Reply

Marsh Posté le 10-07-2001 à 11:51:52   

Reply

Marsh Posté le 10-07-2001 à 11:59:26    

sa depend comment tu gere l affichage de chr. Si tu le fais en ecrivant directement ds l addr memoire, tu te deplaces pour aller a la ligne suivante
Sinon, si tu fais afficher des chr avec l'interruption DOS (jsais plus c laquelle), tu demandes a faire afficher deux chr, le 0x13 et le 0x20 si je me rappelle bien. ce sont les caractères \n\r.
L'un permet de retourner au debut de la ligne et l'autre va a la ligne suivante

Reply

Marsh Posté le 10-07-2001 à 12:10:56    

pas 0x20 mais plutôt 0x10 (OAh) pour Line Feed
 
L'interruption du DOS est la 21
je peux te retrouver (en cherchant) une URL sur l'interruption 21
A+

Reply

Marsh Posté le 10-07-2001 à 12:21:19    

http://www.cs.cmu.edu/afs/cs.cmu.e [...] files.html
 
Toutes les interruptions en Anglais...
La 21 se trouve dans la Partie B (fichier .zip qui contient un fichier texte nommé interrupt.f qui est celui que tu cherches)
Bonne lecture

Reply

Marsh Posté le 10-07-2001 à 13:31:17    

Merci c'est cool j'aurais peut-être d'autre question plus tard

Reply

Marsh Posté le 10-07-2001 à 16:08:00    

vous êtes sur car quand j'utilise  
MOV AX,0Ah
INT 21h
le programme plante  
Et puis j'ai téléchargé les fichiers et j'ai pas trouvé LINE FEED

Reply

Marsh Posté le 10-07-2001 à 16:31:39    

C'est pas OAh mais 09h :  
 
INT 21 - DOS 1+ - WRITE STRING TO STANDARD OUTPUT
 AH = 09h
 DS:DX -> '$'-terminated string
Return: AL = 24h (the '$' terminating the string, despite official docs which state that nothing is returned) (at least DOS 2.1-7.0 and NWDOS)
 
DS:DX doit pointer sur une chaîne terminée par un $
A+

Reply

Marsh Posté le 10-07-2001 à 17:05:27    

Je complète ma réponse avec un exemple :
Liste des "textes" au début ou à la fin du source (en général à la fin)
Texte1 db "Question sans retour de charriot : $"
Texte2 db "Texte avec retour de charriot",13,10,"$"
RC db 13,10,"$"    
 
MOV DX,offset Texte1
MOV AH,09H
INT 21h
'imprime le texte1 sans retour à la ligne et saut de ligne
 
MOV DX,offset Texte2
MOV AH,09H
INT 21h
'imprime le texte2 avec retour à la ligne et saut de ligne
 
MOV DX,offset RC
MOV AH,09H
INT 21h
'fait un retour à la ligne et un saut de ligne
 
13 est le code du rtour à la ligne (0Dh)
10 est le code du saut de ligne (Line Feed) (0Ah)
A+

Reply

Marsh Posté le 11-07-2001 à 14:05:09    

Merci c'est génial j'ai pu  enfin passer les lignes je voulais te demander j'ai consulté le manuel F car j'ai besoin d'obtenir un nombre au hasard délimité donc j'ai cherché  
GENERATE RANDOM NUMBER et je suis tombé sur le virus cofeeshop je cromprend pas c'est les codes des virus ou quoi?
Je suis pour mes début dans la réalisation d'un jackpot je défini un niveau au départ puis je prend un nombre au hasard et la personne doit trouver le nombre en 5 fois voila.

Reply

Marsh Posté le 11-07-2001 à 14:31:35    

pour les nombres aléatoires, voir :
http://www.alrj.org/docs/algo/random.php
Tu peux éviter de faire un tel générateur dans ton cas en utilisant l'horloge système, vu que tu n'as besoin que d'un seul nombre : tu interroge l'horloge syst au début du prog,
tu demandes une intervention de l'utilisateur (saisie de son prénom par exemple)
tu interroges à nouveau l'horloge et tu comptes par ex les dixièmes de seconde entre les deux appels (modulo 10) pour avoir un chiffre entre 0 et 9
Désolé de ne plus me rappeler la fonction de l'INT 21 qui appelle l'horloge système.
A+

Reply

Marsh Posté le 11-07-2001 à 14:31:35   

Reply

Marsh Posté le 11-07-2001 à 14:55:53    

voici un tout petit code tout simple (bien ke j'ai jamais vraiment bien compris comment il fonctionnait !) qui genere des nombres aléatoires.
j'ai pas vérifié s'il générait parfaitement des nombres aléatoires en tout cas il rend bien des services
 

Code :
  1. randseed dw ?
  2. Random PROC NEAR
  3. ;Retourne une valeur aléatoire dans DX
  4.      MOV AX,[RandSeed]
  5. MOV DX,8405h
  6. MUL DX
  7. INC  AX
  8. MOV [RandSeed],AX
  9. RET
  10. Random ENDP


 
ca devrait t'aider pour faire un truc simple qui marche ;)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 11-07-2001 à 15:09:26    

faut rajotuer que pour definir ton random de depart, prend la valeur du timer de l horloge interne qui est pile poil.
Mais dans le principe cest ce que tu as dis quoique moi je mets plus de bordel dans les bits :)

Reply

Marsh Posté le 12-07-2001 à 18:55:00    

Je voudrais vous demander 2 renseignements:
1- Comment utiliser des variables par exemple:
      var1 dd ?
      ensuite je voudrais lui appliquer une valeur du style al
      donc  
      mov var1,al
      expliquez moi si c'est le principe et si elle garde les valeurs longtemps.
 
2- Voila je voudrais recupérer 2 caractère donc j'utilise l'interruption 21 et 0A il me semble puis je sais pas ou sa va ma saisie j'ai l'impression que sa va quelque part avec DX

Reply

Marsh Posté le 13-07-2001 à 13:47:59    

Re-up :benetton:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed