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

  FORUM HardWare.fr
  Programmation
  ASM

  [Tasm]lire 2 entier d'un fichier et faire une adition

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Tasm]lire 2 entier d'un fichier et faire une adition

n°1731438
nobie
Posté le 14-05-2008 à 03:46:19  profilanswer
 

Bonjour,
j'ai un fichier txt 'addition.txt' se fichiers comporte une
chaîne de maximum 20 caractère sous forme 1234+56=
 
je doit afficher à l'écran 1234+56= 1290
 
mais j'ai un problème je sait pas comment lire les 2 nombre.
 
Gros MErci pour votre aide

Code :
  1. .model small
  2. .stack
  3. .code
  4. mov ax,@data
  5. mov ds,ax
  6. mov dx,OFFSET FileName
  7. mov al,2
  8. mov ah,3Dh
  9. int 21h
  10. mov Handle,ax
  11. jc ErrorOpening
  12. mov dx,offset Buffer
  13. mov bx,Handle
  14. mov cx,100
  15. mov ah,3Fh
  16. int 21h
  17. jc ErrorReading
  18. mov bx,Handle
  19. mov ah,3Eh
  20. int 21h
  21. mov cx,20
  22. mov si,OFFSET Buffer
  23. xor bh,bh
  24. mov ah,0Eh
  25. NextChar:
  26. lodsb
  27. cmp al,'+'
  28. ;je nombre2:
  29. cmp al,'='
  30. ;je entierToString:
  31. mov ax,nb1 // si mon premier nombre et tres grand 8568705 que doit je faire ??
  32. mov dx,10h
  33. mov nb1,ax
  34. ;int 10h
  35. loop NextChar
  36. mov ax,4C00h
  37. int 21h
  38. ;entierToString:  :pt1cable:  :pt1cable:  je suis bloce ici je sait pas comme faire pour concertire mes 2 entier pour l'adition
  39. ErrorOpening:
  40. mov dx,offset OpenError
  41. mov ah,09h
  42. int 21h
  43. mov ax,4C01h
  44. int 21h
  45. ErrorReading:
  46. mov dx,offset ReadError
  47. mov ah,09h   ;
  48. int 21h
  49. mov ax,4C02h
  50. int 21h
  51. .data
  52. NB1 dw  //
  53. nb2 dw
  54. Handle DW ?
  55. FileName DB "C:\test.txt",0
  56. OpenError DB "An error has occured(opening)!$"
  57. ReadError DB "An error has occured(reading)!$"
  58. Buffer DB 20 dup (?)
  59. END

mood
Publicité
Posté le 14-05-2008 à 03:46:19  profilanswer
 

n°1750210
knice
Posté le 23-06-2008 à 14:19:16  profilanswer
 

Ton entier est lu comme une chaine de caractères en ASCII.
Ainsi, un 1 sera codé : 49
         un 2,                 50
etc.
Donc c'est pas trop compliqué. Tu fais un test sur les valeurs, tant que c'est compris entre 48 (le '0') et 57 (le '9'), c'est que tu lis ton premier nombre. Il ne te reste donc plus qu'à leur retrancher 48 pour obtenir la vraie VALEUR.
et en même temps, il faut que tu decodes ton nombre, tu fais donc un truc du genre :
 
# lecture du premier nombre
som=0
tant que t[i] compris entre 48 et 57  faire
   som= 10*som + (t[i]-48)
fin faire
 
# puis tu lis l'autre nombre :
som2=0
tant que t[i] compris entre 48 et 57  faire
   som2= 10*som2 + (t[i]-48)
fin faire
 
# somme finale :
resultat = som+som2
 
enjoy !


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

  [Tasm]lire 2 entier d'un fichier et faire une adition

 

Sujets relatifs
Simple lecture de fichier... [ RESOLU ][OPenLaszlo] Afficher des boutons en x,y en fct de fichier xml
lire valeur sous le shellcopier/coller entre fichier excel
script linux qui permet de vérifier une valeur dans un fichier .confLire un fichier texte en J2ME
mal ou pas pas bien : lire des vidéos via fpassthru()Générer des mail quel format de fichier?
[Fichier TXT] Insérer un élément en début de chaque ligne 
Plus de sujets relatifs à : [Tasm]lire 2 entier d'un fichier et faire une adition


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR