[TAsm] Lire a partire d'un fichier .txt

nobie -  
petit_apprenti Messages postés 17 Statut Membre -
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
A voir également:

2 réponses

petit_apprenti Messages postés 17 Statut Membre 14
 
je ne sais pas quel langage tu utilises, mais je peux te donner un astuce. commence par lire chaque caractere tout seul et essaye de le tromsformer en entier, tant que c'est des chiffre ca marche mais des que tu tombes sur le plus et que tu essayes de le transformer en entier ca ne marche pas (ca genere une exception en java par exemple) la tu sais que le nombre termine alors tu prends le tout ( du premier chiffre a celui avant le +) et tu le transformes en entier. tu fais la meme chose avec le deuxieme chiffre et ca resouds le probleme. si c'est tjr un + tu peux chercher sa position puis prendre le nombre qui se trouve avant lui.
je ne pense pas qu'il existe une fonction qui va faire ce travail a ta place, alors c'est a toi de programmer une telle procedure. j'espere que ca va t'aider. bon courage
0
nobie
 
Gros Merci
c'est le langage assembleur que j'utilise avec compilateur Tasm "sa marche pas comme java"

.MODEL small
.STACK
.CODE               
	mov ax,@data     ;base jaddress of data
	mov ds,ax        ;segment
	
	lea dx,FileName  ;put address of fileneame in dx        
	mov al,2         ;access mode - read and write
	mov ah,3Dh       ;function 3Dh -open a file
	int 21h          ;call DOS service
	mov Handle,ax    ;save file handle for later
	jc ErrorOpening
	
	mov dx,offset Buffer  ;address of buffer in dx
	mov bx,Handle         ;handle in bx
	mov cx,80            ;amount of bytes to be read
	mov ah,3Fh            ;function 3Fh - read from file
	int 21h               ;call dos service
	jc ErrorReading           

	mov bx,Handle    ;put file handle in bx 
	mov ah,3Eh       ;function 3Eh - close a file
	int 21h          ;call dos service
   
	
	
;ici je veut lire les deux nembre a partir du buffer
; mais je sait pas cmt faire 
; je suis bloque ici;
;procédure suivi 
;je vais lire jusqu'au le + et j'enregistre le 
; je lit le 1ere chiffre je stock dans nb1 "1"
; je multiplie par 10  "sa donne 10 "
;je lit le 2eme et je l'ajout a nb1 "sa donne 12"
;... jusqu'au '+'
;après je couverte le nb1 on HEX pour l'addition
:même démarche pour nb2 après j'additionne et j'affiche  

	mov AX,4C00h     ;terminate program and return to                                                                       
				  ;DOS using
	INT 21h          ;interrupt 21h function 4CH

ErrorOpening:
	mov dx,offset OpenError ;display an error                                                                            
	mov ah,09h       ;using function 09h
	int 21h          ;call dos service
	



     mov ax,4C01h ;end program with an errorlevel of 1   
	int 21h
		
ErrorReading:
	mov dx,offset ReadError ;display an error                                                                            
	mov ah,09h       ;using function 09h
	int 21h          ;call dos service
		
	mov ax,4C02h ;end program with an errorlevel of 2   
        int 21h
 
.DATA

Handle        DW ? ;variable to store file handle   
FileName      DB "C:\test.txt",0 ;file to be opened

OpenError     DB "An error has occured(opening)!$"
ReadError     DB "An error has occured(reading)!$"

Buffer        DB 80 dup (?) ;buffer to store data from                                             
					    ;file one bigger for $
END

quelqu'un peut m'aide sa sera très gentil "c'est une question d'examen de l'année denier"

GRos MErci
0
petit_apprenti Messages postés 17 Statut Membre 14
 
ok, je vois :)
ca fait vraiment longtemps que je n'ai pas utilise l'assembleur, en plus je n'ai jamais ete tres fort en assembleur, alors je n'ai qu'a te souhaiter bon courage
0