Accueil > > > HISTOGRAMME DE LA FRÉQUENCE DES LETTRES ET DES CHIFFRES RENCONTRÉES PENDANT LA LECTURE D'UN FICHIER QUELCONQUE
HISTOGRAMME DE LA FRÉQUENCE DES LETTRES ET DES CHIFFRES RENCONTRÉES PENDANT LA LECTURE D'UN FICHIER QUELCONQUE
Information sur la source
Description
Cette source affiche un histogramme de la fréquence des lettres et des chiffres rencontrées pendant la lecture d'un fichier quelconque. En abscisse on trouvera la lettre ou le chiffre, en ordonnée sa fréquence.
Source
- ;**************************************************************************************;
- ;* DSSDEMO *;
- ;**************************************************************************************;
- ;* Nom : Nicolas Pirard *;
- ;* Développé le : 08/05/2005 *;
- ;* Dernière MAJ : 10/05/2005 *;
- ;**************************************************************************************;
- ;* *;
- ;* Ecrire un programme qui affiche un histogramme de la fréquence des lettres et des *;
- ;* chiffres rencontrées pendant la lecture d'un fichier quelconque. *;
- ;* En abscisse on trouvera la lettre ou le chiffre, en ordonnée sa fréquence. *;
- ;* Les miniscules et majuscules ne sont pas différenciées. *;
- ;**************************************************************************************;
-
- ;**************************************************************************************;
- ;* Assembler : TASM *;
- ;* TLINK *;
- ;**************************************************************************************;
-
- .MODEL SMALL
- .STACK 128
-
-
- ;------------------------ Données -----------------------------------------*
-
- .DATA
-
- ;---Titre + phrase à afficher
- titre1 db 13,10,13,10,' ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»',13,10,'$'
- titre2 db ' º º ',13,10,'$'
- titre3 db ' º HISTORIGRAMME DE LA FREQUENCE DES LETTRES ET DES CHIFFRES º ',13,10,'$'
- titre4 db ' º º ',13,10,'$'
- titre5 db ' ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ',13,10,13,10,13,10,'$'
- acqui db 13,10,'Entrer chemin et nom fichier : ','$'
- CONTENU db 13,10,10,'Contenu du fichier : ',13,10,'$'
-
- ;---FICHIER
- fich db 51
- fichlu db ?
- Fichier db 51 dup(0) ;chemin et non du fichier
- Handle dw ?,'$' ; Handle du Fichier
- buffer db 60000 dup(?),'$'
-
- ;---Histogramme
- flechehaut db ' ^',13,10,'$'
- lettreetchiffre db ' A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9',13,10,13,10,'$'
- ligne db ' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ> ',13,10,'$'
- espace2 db ' $'
- passligne db 13,10,'$'
- lignev db '³$'
- lignev2 db ' ³$'
- ligneo db '-$'
- bloc db 'Û $'
-
- frequence dw 0d,'$'
- freq dw 0d,'$'
-
- compa db 10d,'$'
- cmp1 db 0d,'$'
- grand dw 0d,'$'
- tempor dw 0d,'$'
-
- ;---Converssion décimale de la frequence
- dix2 dw 10d
- cent dw 100d
- mil dw 1000d
- millier dw ?,'$'
- centaine dw ?,'$'
- dixaine dw ?,'$'
- unite dw ?,'$'
-
- ;---Compteur
- compteura dw 0d,'$'
- compteura2 db 0d,'$'
- compteurb dw 0d,'$'
- compteurb2 db 0d,'$'
- compteurc dw 0d,'$'
- compteurc2 db 0d,'$'
- compteurd dw 0d,'$'
- compteurd2 db 0d,'$'
- compteure dw 0d,'$'
- compteure2 db 0d,'$'
- compteurf dw 0d,'$'
- compteurf2 db 0d,'$'
- compteurg dw 0d,'$'
- compteurg2 db 0d,'$'
- compteurh dw 0d,'$'
- compteurh2 db 0d,'$'
- compteuri dw 0d,'$'
- compteuri2 db 0d,'$'
- compteurj dw 0d,'$'
- compteurj2 db 0d,'$'
- compteurk dw 0d,'$'
- compteurk2 db 0d,'$'
- compteurl dw 0d,'$'
- compteurl2 db 0d,'$'
- compteurm dw 0d,'$'
- compteurm2 db 0d,'$'
- compteurn dw 0d,'$'
- compteurn2 db 0d,'$'
- compteuro dw 0d,'$'
- compteuro2 db 0d,'$'
- compteurp dw 0d,'$'
- compteurp2 db 0d,'$'
- compteurq dw 0d,'$'
- compteurq2 db 0d,'$'
- compteurr dw 0d,'$'
- compteurr2 db 0d,'$'
- compteurs dw 0d,'$'
- compteurs2 db 0d,'$'
- compteurt dw 0d,'$'
- compteurt2 db 0d,'$'
- compteuru dw 0d,'$'
- compteuru2 db 0d,'$'
- compteurv dw 0d,'$'
- compteurv2 db 0d,'$'
- compteurw dw 0d,'$'
- compteurw2 db 0d,'$'
- compteurx dw 0d,'$'
- compteurx2 db 0d,'$'
- compteury dw 0d,'$'
- compteury2 db 0d,'$'
- compteurz dw 0d,'$'
- compteurz2 db 0d,'$'
- compteur0 dw 0d,'$'
- compteur02 db 0d,'$'
- compteur1 dw 0d,'$'
- compteur12 db 0d,'$'
- compteur2 dw 0d,'$'
- compteur22 db 0d,'$'
- compteur3 dw 0d,'$'
- compteur32 db 0d,'$'
- compteur4 dw 0d,'$'
- compteur42 db 0d,'$'
- compteur5 dw 0d,'$'
- compteur52 db 0d,'$'
- compteur6 dw 0d,'$'
- compteur62 db 0d,'$'
- compteur7 dw 0d,'$'
- compteur72 db 0d,'$'
- compteur8 dw 0d,'$'
- compteur82 db 0d,'$'
- compteur9 dw 0d,'$'
- compteur92 db 0d,'$'
-
- diz db 0d
-
-
- ;---------------------------------------------------------------*
- ;*-------------------- Programme -------------------------------*
- ;*--------------------------------------------------------------*
-
- .CODE
-
- DEBUT:
- mov AX,@DATA ; début du programme
- mov DS,AX ; DS contient l'adresse du debut du segment de donnee par rapport au debut de la RAM
- mov es,ax
-
-
- ;-----Acquisition du chemin d'accès et du nom du fichier----*
-
- lea dx,acqui ;Affiche "Entrer le chemin d'accès et nom du fichier :
- mov ah,09h
- int 21h
-
- mov ah,0Ah
- lea dx,fich
- int 21h
-
- xor bx,bx ;mise à zéro de BX
- mov bl,fichlu ;copie le nombre de caractère lu dans BL
- mov fichier+[bx],0 ;à la fin de la chaine on rajoute le caractère 0
-
- ;-------------OUVERTURE DU FICHIER-----------------*
-
- xor CX,CX ; Remize à 0 de CX qui est l'attribut du fichier
- lea DX,Fichier ; Place le chemein d'accès au fichier dans DX
- mov AH,3Dh ; Fonction d'ouverture du fichier
- int 21h
- mov Handle,ax ; Sauvegarde du Handel du Fichier
-
-
- ;-------------- Affiche le fichier --------------*
-
- mov bx,Handle
- mov ah,3Fh
- mov cx,60000
- lea dx,buffer
- int 21h
-
- ;lea dx,CONTENU
- ;mov ah,09h ;Affiche "Contenu du fichier
- ;int 21h
-
- ;lea dx,buffer
- ;mov ah,09h ;Affiche buffer => le fichier
- ;int 21h
-
-
-
- ;------------ Compte le nombre de lettre et de chiffre ------------*
-
-
- ;---- Charge les caractères du buffer ----*
- CLD ; Direction flag=0 (DI et SI s'incrémente)
- LEA si,buffer
-
- ;--------------- Comparaison ---------------*
- tet:
- LODSB
-
- jmp rep1
- lettrea:
- INC compteura
- jmp tet
- rep1:
- cmp al,'a'
- je lettrea
- cmp al,'A'
- je lettrea
- cmp al,'à'
- je lettrea
- cmp al,'â'
- je lettrea
- jmp rep2
- lettreb:
- INC compteurb
- jmp tet
- rep2:
- cmp al,'b'
- je lettreb
- cmp al,'B'
- je lettreb
- jmp rep3
- lettrec:
- INC compteurc
- jmp tet
- rep3:
- cmp al,'c'
- je lettrec
- cmp al,'C'
- je lettrec
- cmp al,'ç'
- je lettrec
- jmp rep4
- lettred:
- INC compteurd
- jmp tet
- rep4:
- cmp al,'d'
- je lettred
- cmp al,'D'
- je lettred
- jmp rep5
- lettree:
- INC compteure
- jmp tet
- rep5:
- cmp al,'e'
- je lettree
- cmp al,'E'
- je lettree
- cmp al,'é'
- je lettree
- cmp al,'è'
- je lettree
- cmp al,'ê'
- je lettree
- jmp rep6
- lettref:
- INC compteurf
- jmp tet
- rep6:
- cmp al,'f'
- je lettref
- cmp al,'F'
- je lettref
- jmp rep7
- lettreg:
- INC compteurg
- jmp tet
- rep7:
- cmp al,'g'
- je lettreg
- cmp al,'G'
- je lettreg
- jmp rep8
- lettreh:
- INC compteurh
- jmp tet
- rep8:
- cmp al,'h'
- je lettreh
- cmp al,'H'
- je lettreh
- jmp rep9
- lettrei:
- INC compteuri
- jmp tet
- rep9:
- cmp al,'i'
- je lettrei
- cmp al,'I'
- je lettrei
- cmp al,'î'
- je lettrei
- cmp al,'ï'
- je lettrei
- jmp rep10
- lettrej:
- INC compteurj
- jmp tet
- rep10:
- cmp al,'j'
- je lettrej
- cmp al,'J'
- je lettrej
- jmp rep11
- lettrek:
- INC compteurk
- jmp tet
- rep11:
- cmp al,'k'
- je lettrek
- cmp al,'K'
- je lettrek
- jmp rep12
- lettrel:
- INC compteurl
- jmp tet
- rep12:
- cmp al,'l'
- je lettrel
- cmp al,'L'
- je lettrel
- jmp rep13
- lettrem:
- INC compteurm
- jmp tet
- rep13:
- cmp al,'m'
- je lettrem
- cmp al,'M'
- je lettrem
- jmp rep14
- lettren:
- INC compteurn
- jmp tet
- rep14:
- cmp al,'n'
- je lettren
- cmp al,'N'
- je lettren
- jmp rep15
- lettreo:
- INC compteuro
- jmp tet
- rep15:
- cmp al,'o'
- je lettreo
- cmp al,'O'
- je lettreo
- cmp al,'ô'
- je lettreo
- jmp rep16
- lettrep:
- INC compteurp
- jmp tet
- rep16:
- cmp al,'p'
- je lettrep
- cmp al,'P'
- je lettrep
- jmp rep17
- lettreq:
- INC compteurq
- jmp tet
- rep17:
- cmp al,'q'
- je lettreq
- cmp al,'Q'
- je lettreq
- jmp rep18
- lettrer:
- INC compteurr
- jmp tet
- rep18:
- cmp al,'r'
- je lettrer
- cmp al,'R'
- je lettrer
- jmp rep19
- lettres:
- INC compteurs
- jmp tet
- rep19:
- cmp al,'s'
- je lettres
- cmp al,'S'
- je lettres
- jmp rep20
- lettret:
- INC compteurt
- jmp tet
- rep20:
- cmp al,'t'
- je lettret
- cmp al,'T'
- je lettret
- jmp rep21
- lettreu:
- INC compteuru
- jmp tet
- rep21:
- cmp al,'u'
- je lettreu
- cmp al,'U'
- je lettreu
- cmp al,'û'
- je lettreu
- cmp al,'ü'
- je lettreu
- jmp rep22
- lettrev:
- INC compteurv
- jmp tet
- rep22:
- cmp al,'v'
- je lettrev
- cmp al,'V'
- je lettrev
- jmp rep23
- lettrew:
- INC compteurw
- jmp tet
- rep23:
- cmp al,'w'
- je lettrew
- cmp al,'W'
- je lettrew
- jmp rep24
- lettrex:
- INC compteurx
- jmp tet
- rep24:
- cmp al,'x'
- je lettrex
- cmp al,'X'
- je lettrex
- jmp rep25
- lettrey:
- INC compteury
- jmp tet
- rep25:
- cmp al,'y'
- je lettrey
- cmp al,'Y'
- je lettrey
- jmp rep26
- lettrez:
- INC compteurz
- jmp tet
- rep26:
- cmp al,'z'
- je lettrez
- cmp al,'Z'
- je lettrez
- jmp rep27
- chiffre1:
- INC compteur1
- jmp tet
- rep27:
- cmp al,'1'
- je chiffre1
- jmp rep28
- chiffre2:
- INC compteur2
- jmp tet
- rep28:
- cmp al,'2'
- je chiffre2
- jmp rep29
- chiffre3:
- INC compteur3
- jmp tet
- rep29:
- cmp al,'3'
- je chiffre3
- jmp rep30
- chiffre4:
- INC compteur4
- jmp tet
- rep30:
- cmp al,'4'
- je chiffre4
- jmp rep31
- chiffre5:
- INC compteur5
- jmp tet
- rep31:
- cmp al,'5'
- je chiffre5
- jmp rep32
- jmp ch6
- test1:
- jmp tet
-
- ch6:
- chiffre6:
- INC compteur6
- jmp tet
- rep32:
- cmp al,'6'
- je chiffre6
- jmp rep33
- chiffre7:
- INC compteur7
- jmp tet
- rep33:
- cmp al,'7'
- je chiffre7
- jmp rep34
- chiffre8:
- INC compteur8
- jmp tet
- rep34:
- cmp al,'8'
- je chiffre8
- jmp rep35
- chiffre9:
- INC compteur9
- jmp tet
- rep35:
- cmp al,'9'
- je chiffre9
- jmp rep36
- chiffre0:
- INC compteur0
- jmp tet
- rep36:
- cmp al,'0'
- je chiffre0
- cmp al,'$'
- jne test1
-
- CALL add30h
-
- ;-------------Cherche le plus grand compteur-------*
- add grand,30h
-
- mov ax,compteura
- call plusgrand
- mov ax,compteurb
- call plusgrand
- mov ax,compteurc
- call plusgrand
- mov ax,compteurd
- call plusgrand
- mov ax,compteure
- call plusgrand
- mov ax,compteurf
- call plusgrand
- mov ax,compteurg
- call plusgrand
- mov ax,compteurh
- call plusgrand
- mov ax,compteuri
- call plusgrand
- mov ax,compteurj
- call plusgrand
- mov ax,compteurk
- call plusgrand
- mov ax,compteurl
- call plusgrand
- mov ax,compteurm
- call plusgrand
- mov ax,compteurn
- call plusgrand
- mov ax,compteuro
- call plusgrand
- mov ax,compteurp
- call plusgrand
- mov ax,compteurq
- call plusgrand
- mov ax,compteurr
- call plusgrand
- mov ax,compteurs
- call plusgrand
- mov ax,compteurt
- call plusgrand
- mov ax,compteuru
- call plusgrand
- mov ax,compteurv
- call plusgrand
- mov ax,compteurw
- call plusgrand
- mov ax,compteurx
- call plusgrand
- mov ax,compteury
- call plusgrand
- mov ax,compteurz
- call plusgrand
- mov ax,compteur0
- call plusgrand
- mov ax,compteur1
- call plusgrand
- mov ax,compteur2
- call plusgrand
- mov ax,compteur3
- call plusgrand
- mov ax,compteur4
- call plusgrand
- mov ax,compteur5
- call plusgrand
- mov ax,compteur6
- call plusgrand
- mov ax,compteur7
- call plusgrand
- mov ax,compteur8
- call plusgrand
- mov ax,compteur9
- call plusgrand
-
-
- ;--------Calcule de l'échelle-----------------------------*
- xor ax,ax
- mov tempor,10d
- add tempor,30h
- mov ax,tempor
- cmp ax,grand
- ja petit3
- jmp s10
- petit3:
- mov diz,1d
- mov frequence,9d
- mov freq,1d
- jmp okechelle
- s10:
-
- mov tempor,50d
- add tempor,30h
- mov ax,tempor
- cmp ax,grand
- ja p50
- jmp s50
- p50:
- mov diz,5d
- mov frequence,45d
- mov freq,5d
- jmp okechelle
- s50:
-
- mov tempor,100d
- add tempor,30h
- mov ax,tempor
- cmp ax,grand
- ja p100
- jmp s100
- p100:
- mov diz,10d
- mov frequence,90d
- mov freq,10d
- jmp okechelle
- s100:
-
- mov tempor,200d
- add tempor,30h
- mov ax,tempor
- cmp ax,grand
- ja p200
- jmp s200
- p200:
- mov diz,20d
- mov frequence,180d
- mov freq,20d
- jmp okechelle
- s200:
-
- mov tempor,300d
- add tempor,30h
- mov ax,tempor
- cmp ax,grand
- ja p300
- jmp s300
- p300:
- mov diz,30d
- mov frequence,270d
- mov freq,30d
- jmp okechelle
- s300:
-
- mov tempor,400d
- add tempor,30h
- mov ax,tempor
- cmp ax,grand
- ja p400
- jmp s400
- p400:
- mov diz,40d
- mov frequence,360d
- mov freq,40d
- jmp okechelle
- s400:
-
- mov tempor,500d
- add tempor,30h
- mov ax,tempor
- cmp ax,grand
- ja p500
- jmp s500
- p500:
- mov diz,50d
- mov frequence,450d
- mov freq,10d
- jmp okechelle
- s500:
-
- mov tempor,1000d
- add tempor,30h
- mov ax,tempor
- cmp ax,grand
- ja p1000
- jmp s1000
- p1000:
- mov diz,100d
- mov frequence,900d
- mov freq,100d
- jmp okechelle
- s1000:
-
- mov tempor,2500d
- add tempor,30h
- mov ax,tempor
- cmp ax,grand
- ja p2500
- jmp s2500
- p2500:
- mov diz,250d
- mov frequence,2250d
- mov freq,250d
- jmp okechelle
- s2500:
-
-
-
- okechelle:
-
- CALL sub30h
-
- ;-------------Divise les compteurs par le nombre adéquoi (trouvé ds le calcul de l'échelle)------------*
- ;Pour que l'échelle se remette sur 10
-
- mov ax,compteura
- div diz
- mov compteura2,al
-
- mov ax,compteurb
- div diz
- mov compteurb2,al
-
- mov ax,compteurc
- div diz
- mov compteurc2,al
-
- mov ax,compteurd
- div diz
- mov compteurd2,al
-
- mov ax,compteure
- div diz
- mov compteure2,al
-
- mov ax,compteurf
- div diz
- mov compteurf2,al
-
- mov ax,compteurg
- div diz
- mov compteurg2,al
-
- mov ax,compteurh
- div diz
- mov compteurh2,al
-
- mov ax,compteuri
- div diz
- mov compteuri2,al
-
- mov ax,compteurj
- div diz
- mov compteurj2,al
-
- mov ax,compteurk
- div diz
- mov compteurk2,al
-
- mov ax,compteurl
- div diz
- mov compteurl2,al
-
- mov ax,compteurm
- div diz
- mov compteurm2,al
-
- mov ax,compteurn
- div diz
- mov compteurn2,al
-
- mov ax,compteuro
- div diz
- mov compteuro2,al
-
- mov ax,compteurp
- div diz
- mov compteurp2,al
-
- mov ax,compteurq
- div diz
- mov compteurq2,al
-
- mov ax,compteurr
- div diz
- mov compteurr2,al
-
- mov ax,compteurs
- div diz
- mov compteurs2,al
-
- mov ax,compteurt
- div diz
- mov compteurt2,al
-
- mov ax,compteuru
- div diz
- mov compteuru2,al
-
- mov ax,compteurv
- div diz
- mov compteurv2,al
-
- mov ax,compteurw
- div diz
- mov compteurw2,al
-
- mov ax,compteurx
- div diz
- mov compteurx2,al
-
- mov ax,compteury
- div diz
- mov compteury2,al
-
- mov ax,compteurz
- div diz
- mov compteurz2,al
-
- mov ax,compteur1
- div diz
- mov compteur12,al
-
- mov ax,compteur2
- div diz
- mov compteur22,al
-
- mov ax,compteur3
- div diz
- mov compteur32,al
-
- mov ax,compteur4
- div diz
- mov compteur42,al
-
- mov ax,compteur5
- div diz
- mov compteur52,al
-
- mov ax,compteur6
- div diz
- mov compteur62,al
-
- mov ax,compteur7
- div diz
- mov compteur72,al
-
- mov ax,compteur8
- div diz
- mov compteur82,al
-
- mov ax,compteur9
- div diz
- mov compteur92,al
-
- CALL add30h2
-
- ;------------- Affichage de l'histogramme ---------------*
-
- ;---Affiche cadre + titre
- lea dx,titre1
- mov ah,09h
- int 21h
-
- lea dx,titre2
- mov ah,09h
- int 21h
-
- lea dx,titre3
- mov ah,09h
- int 21h
-
- lea dx,titre4
- mov ah,09h
- int 21h
-
- lea dx,titre5
- mov ah,09h
- int 21h
-
- lea dx,flechehaut ; Affiche la flèche vers le haut
- mov ah,09h
- int 21h
-
-
- lea dx,lignev2 ; Affiche ligne verticale
- mov ah,09h
- int 21h
-
- lea dx,passligne ; Passage à la ligne
- mov ah,09h
- int 21h
-
-
- add compa,30h
- add cmp1,30h
-
-
- lignesuivante:
-
- call convfreq ;Conversion décimale de la fréquence pour pouvoir l'afficher
-
- xor ax,ax
- mov ax,freq
- sub frequence,ax
-
- dec compa ; DECREMENTE compa pour passé a la ligne suivante
-
- lea dx,lignev ; Affiche ligne verticale
- mov ah,09h
- int 21h
-
- mov ah,compa ; Place compa dans ah pour la comparaison
-
-
- ;---COMPARE LETTRE A---*
- cmp compteura2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB oka ; Si + petit affiche espace
- jmp noa ; Si + grand affiche bloc
-
- oka:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp letb
-
- noa:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- letb:
- ;---COMPARE LETTRE B---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteurb2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okb
- jmp nob
-
- okb:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp letc
-
- nob:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- letc:
-
- ;---COMPARE LETTRE C---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteurc2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okc
- jmp noc
-
- okc:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp letd
-
- noc:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- letd:
-
- ;---COMPARE LETTRE D---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteurd2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okd
- jmp nod
-
- okd:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp lete
-
- nod:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- lete:
-
- ;---COMPARE LETTRE E---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteure2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB oke
- jmp noe
-
- oke:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp letf
-
- noe:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- letf:
-
- ;---COMPARE LETTRE F---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteurf2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okf
- jmp nof
-
- okf:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp letg
-
- nof:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- letg:
-
- ;---COMPARE LETTRE G---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteurg2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okg
- jmp nog
-
- okg:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp leth
-
- nog:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- leth:
-
- ;---COMPARE LETTRE H---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteurh2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okh
- jmp noh
-
- okh:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp leti
-
- noh:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- letI:
-
- ;---COMPARE LETTRE I---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteuri2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB oki
- jmp noi
-
- oki:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp letj
-
- noi:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- letJ:
-
- ;---COMPARE LETTRE J---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteurj2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okj
- jmp noj
-
- okj:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp letk
-
- noj:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- letk:
-
- ;---COMPARE LETTRE K---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteurk2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okk
- jmp nok
-
- okk:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp letl
-
- nok:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- letl:
-
- ;---COMPARE LETTRE L---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteurl2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okl
- jmp nol
-
- okl:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp letm
-
- nol:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- letm:
-
- ;---COMPARE LETTRE M---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteurm2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okm
- jmp nom
-
- okm:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp letn
-
- nom:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- letn:
-
- ;---COMPARE LETTRE N---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteurn2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okn
- jmp non
-
- okn:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp leto
-
- non:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- leto:
-
- ;---COMPARE LETTRE O---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteuro2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB oko
- jmp noo
-
- oko:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp letp
-
- noo:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- letp:
-
- ;---COMPARE LETTRE P---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteurp2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okp
- jmp nonp
-
- okp:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp letq
-
- nonp:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- letq:
-
- ;---COMPARE LETTRE Q---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteurq2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okq
- jmp noq
-
- okq:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp letr
-
- noq:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- letr:
-
- ;---COMPARE LETTRE R---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteurr2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okr
- jmp nor
-
- okr:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp lets
-
- nor:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- lets:
-
- ;---COMPARE LETTRE S---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteurs2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB oks
- jmp nos
-
- oks:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp lett
-
- nos:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- lett:
-
- ;---COMPARE LETTRE T---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteurt2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okt
- jmp nont
-
- okt:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp letu
-
- nont:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- letu:
-
- ;---COMPARE LETTRE U---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteuru2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB oku
- jmp nou
-
- oku:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp letv
-
- nou:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- letv:
-
- ;---COMPARE LETTRE V---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteurv2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okv
- jmp nov
-
- okv:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp letw
-
- nov:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- letw:
-
- ;---COMPARE LETTRE W---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteurw2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okw
- jmp now
-
- okw:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp letx
-
- now:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- letx:
-
- ;---COMPARE LETTRE X---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteurx2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okx
- jmp nox
-
- okx:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp lety
-
- nox:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- lety:
-
- ;---COMPARE LETTRE Y---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteury2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB oky
- jmp noy
-
- oky:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp letz
-
- noy:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- letz:
-
- ;---COMPARE LETTRE Z---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteurz2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okz
- jmp noz
-
- okz:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp chifpass0
-
- noz:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- jmp chifpass0
- court2:
- jmp lignesuivante
-
- chifpass0:
-
- ;---COMPARE CHIFFRE 0---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteur02,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okchiffre0
- jmp nochiffre0
-
- okchiffre0:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp chifpass1
-
- nochiffre0:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- chifpass1:
-
- ;---COMPARE CHIFFRE 1---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteur12,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okchiffre1
- jmp nochiffre1
-
- okchiffre1:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp chifpass2
-
- nochiffre1:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- chifpass2:
-
- ;---COMPARE CHIFFRE 2---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteur22,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okchiffre2
- jmp nochiffre2
-
- okchiffre2:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp chifpass3
-
- nochiffre2:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- chifpass3:
-
- ;---COMPARE CHIFFRE 3---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteur32,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okchiffre3
- jmp nochiffre3
-
- okchiffre3:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp chifpass4
-
- nochiffre3:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- chifpass4:
-
- ;---COMPARE CHIFFRE 4---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteur42,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okchiffre4
- jmp nochiffre4
-
- okchiffre4:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp chifpass5
-
- nochiffre4:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- chifpass5:
-
- ;---COMPARE CHIFFRE 5---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteur52,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okchiffre5
- jmp nochiffre5
-
- okchiffre5:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp chifpass6
-
- nochiffre5:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- chifpass6:
-
- ;---COMPARE CHIFFRE 6---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteur62,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okchiffre6
- jmp nochiffre6
-
- okchiffre6:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp chifpass7
-
- nochiffre6:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- chifpass7:
-
- ;---COMPARE CHIFFRE 7---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteur72,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okchiffre7
- jmp nochiffre7
-
- okchiffre7:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp chifpass8
-
- nochiffre7:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- chifpass8:
-
- ;---COMPARE CHIFFRE 8---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteur82,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okchiffre8
- jmp nochiffre8
-
- okchiffre8:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp chifpass9
-
- nochiffre8:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- chifpass9:
-
- ;---COMPARE CHIFFRE 9---*
- mov ah,compa ; Place compa dans ah pour la comparaison
- cmp compteur92,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
- JB okchiffre9
- jmp nochiffre9
-
- okchiffre9:
- lea dx,espace2
- mov ah,09h
- int 21h
- jmp finboucle
-
- nochiffre9:
- lea dx,bloc
- mov ah,09h
- int 21h
-
- finboucle:
- lea dx,passligne ; Passage à la ligne
- mov ah,09h
- int 21h
-
- inc cmp1
- cmp cmp1,'9'
- je FIN
-
- jmp court2
-
- FIN:
-
- lea dx,ligne ; Passage à la ligne
- mov ah,09h
- int 21h
-
- lea dx,lettreetchiffre
- mov ah,09h
- int 21h
-
-
- ;-------------FERMETURE DU FICHIER-----------------*
-
- mov bx,Handle
- mov ah,3Eh
- int 21h
-
-
- ;------------------------FIN-----------------------------------------*
-
- mov ax,4C00h ;Appel de la fonction 4ch pour revenir au DOS
- int 21h
-
-
- convfreq proc near
-
- mov ax,frequence
-
- xor dx,dx
- div mil ;divise le resultat par 1000
- mov millier,ax
-
- mov ax,dx
-
- xor dx,dx
- div cent ;divise le resultat par 100
- mov centaine,ax
-
- mov ax,dx
-
- xor dx,dx
- div dix2 ;divise le resultat par 100
- mov dixaine,ax
-
- mov unite,dx
-
- add millier,48d
- add centaine,48d
- add dixaine,48d
- add unite,48d
-
- ;Affichage
- mov dx,millier
- mov ah,02h ;Affiche caractère
- int 21h
-
- mov dx,centaine
- mov ah,02h ;Affiche caractère
- int 21h
-
- mov dx,dixaine
- mov ah,02h ;Affiche caractère
- int 21h
-
- mov dx,unite
- mov ah,02h ;Affiche caractère
- int 21h
-
- RET
- convfreq ENDP
-
-
-
- plusgrand proc near
- cmp ax,grand
- JA grand2 ;Si + grand on le place ds grand
- jmp petit ;Si + petit passe au plus petit
- grand2:
- mov grand,ax
- petit:
- RET
- plusgrand ENDP
-
-
- add30h proc near
-
- ADD compteura,30h
- ADD compteurb,30h
- ADD compteurc,30h
- ADD compteurd,30h
- ADD compteure,30h
- ADD compteurf,30h
- ADD compteurg,30h
- ADD compteurh,30h
- ADD compteuri,30h
- ADD compteurj,30h
- ADD compteurk,30h
- ADD compteurl,30h
- ADD compteurm,30h
- ADD compteurn,30h
- ADD compteuro,30h
- ADD compteurp,30h
- ADD compteurq,30h
- ADD compteurr,30h
- ADD compteurs,30h
- ADD compteurt,30h
- ADD compteuru,30h
- ADD compteurv,30h
- ADD compteurw,30h
- ADD compteurx,30h
- ADD compteury,30h
- ADD compteurz,30h
- ADD compteur0,30h
- ADD compteur1,30h
- ADD compteur2,30h
- ADD compteur3,30h
- ADD compteur4,30h
- ADD compteur5,30h
- ADD compteur6,30h
- ADD compteur7,30h
- ADD compteur8,30h
- ADD compteur9,30h
- RET
- add30h ENDP
-
-
- sub30h proc near
-
- SUB compteura,30h
- SUB compteurb,30h
- SUB compteurc,30h
- SUB compteurd,30h
- SUB compteure,30h
- SUB compteurf,30h
- SUB compteurg,30h
- SUB compteurh,30h
- SUB compteuri,30h
- SUB compteurj,30h
- SUB compteurk,30h
- SUB compteurl,30h
- SUB compteurm,30h
- SUB compteurn,30h
- SUB compteuro,30h
- SUB compteurp,30h
- SUB compteurq,30h
- SUB compteurr,30h
- SUB compteurs,30h
- SUB compteurt,30h
- SUB compteuru,30h
- SUB compteurv,30h
- SUB compteurw,30h
- SUB compteurx,30h
- SUB compteury,30h
- SUB compteurz,30h
- SUB compteur0,30h
- SUB compteur1,30h
- SUB compteur2,30h
- SUB compteur3,30h
- SUB compteur4,30h
- SUB compteur5,30h
- SUB compteur6,30h
- SUB compteur7,30h
- SUB compteur8,30h
- SUB compteur9,30h
-
- RET
- sub30h ENDP
-
-
- add30h2 proc near
-
- ADD compteura2,30h
- ADD compteurb2,30h
- ADD compteurc2,30h
- ADD compteurd2,30h
- ADD compteure2,30h
- ADD compteurf2,30h
- ADD compteurg2,30h
- ADD compteurh2,30h
- ADD compteuri2,30h
- ADD compteurj2,30h
- ADD compteurk2,30h
- ADD compteurl2,30h
- ADD compteurm2,30h
- ADD compteurn2,30h
- ADD compteuro2,30h
- ADD compteurp2,30h
- ADD compteurq2,30h
- ADD compteurr2,30h
- ADD compteurs2,30h
- ADD compteurt2,30h
- ADD compteuru2,30h
- ADD compteurv2,30h
- ADD compteurw2,30h
- ADD compteurx2,30h
- ADD compteury2,30h
- ADD compteurz2,30h
- ADD compteur02,30h
- ADD compteur12,30h
- ADD compteur22,30h
- ADD compteur32,30h
- ADD compteur42,30h
- ADD compteur52,30h
- ADD compteur62,30h
- ADD compteur72,30h
- ADD compteur82,30h
- ADD compteur92,30h
- RET
- add30h2 ENDP
-
-
-
- END debut
;**************************************************************************************;
;* DSSDEMO *;
;**************************************************************************************;
;* Nom : Nicolas Pirard *;
;* Développé le : 08/05/2005 *;
;* Dernière MAJ : 10/05/2005 *;
;**************************************************************************************;
;* *;
;* Ecrire un programme qui affiche un histogramme de la fréquence des lettres et des *;
;* chiffres rencontrées pendant la lecture d'un fichier quelconque. *;
;* En abscisse on trouvera la lettre ou le chiffre, en ordonnée sa fréquence. *;
;* Les miniscules et majuscules ne sont pas différenciées. *;
;**************************************************************************************;
;**************************************************************************************;
;* Assembler : TASM *;
;* TLINK *;
;**************************************************************************************;
.MODEL SMALL
.STACK 128
;------------------------ Données -----------------------------------------*
.DATA
;---Titre + phrase à afficher
titre1 db 13,10,13,10,' ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»',13,10,'$'
titre2 db ' º º ',13,10,'$'
titre3 db ' º HISTORIGRAMME DE LA FREQUENCE DES LETTRES ET DES CHIFFRES º ',13,10,'$'
titre4 db ' º º ',13,10,'$'
titre5 db ' ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ',13,10,13,10,13,10,'$'
acqui db 13,10,'Entrer chemin et nom fichier : ','$'
CONTENU db 13,10,10,'Contenu du fichier : ',13,10,'$'
;---FICHIER
fich db 51
fichlu db ?
Fichier db 51 dup(0) ;chemin et non du fichier
Handle dw ?,'$' ; Handle du Fichier
buffer db 60000 dup(?),'$'
;---Histogramme
flechehaut db ' ^',13,10,'$'
lettreetchiffre db ' A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9',13,10,13,10,'$'
ligne db ' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ> ',13,10,'$'
espace2 db ' $'
passligne db 13,10,'$'
lignev db '³$'
lignev2 db ' ³$'
ligneo db '-$'
bloc db 'Û $'
frequence dw 0d,'$'
freq dw 0d,'$'
compa db 10d,'$'
cmp1 db 0d,'$'
grand dw 0d,'$'
tempor dw 0d,'$'
;---Converssion décimale de la frequence
dix2 dw 10d
cent dw 100d
mil dw 1000d
millier dw ?,'$'
centaine dw ?,'$'
dixaine dw ?,'$'
unite dw ?,'$'
;---Compteur
compteura dw 0d,'$'
compteura2 db 0d,'$'
compteurb dw 0d,'$'
compteurb2 db 0d,'$'
compteurc dw 0d,'$'
compteurc2 db 0d,'$'
compteurd dw 0d,'$'
compteurd2 db 0d,'$'
compteure dw 0d,'$'
compteure2 db 0d,'$'
compteurf dw 0d,'$'
compteurf2 db 0d,'$'
compteurg dw 0d,'$'
compteurg2 db 0d,'$'
compteurh dw 0d,'$'
compteurh2 db 0d,'$'
compteuri dw 0d,'$'
compteuri2 db 0d,'$'
compteurj dw 0d,'$'
compteurj2 db 0d,'$'
compteurk dw 0d,'$'
compteurk2 db 0d,'$'
compteurl dw 0d,'$'
compteurl2 db 0d,'$'
compteurm dw 0d,'$'
compteurm2 db 0d,'$'
compteurn dw 0d,'$'
compteurn2 db 0d,'$'
compteuro dw 0d,'$'
compteuro2 db 0d,'$'
compteurp dw 0d,'$'
compteurp2 db 0d,'$'
compteurq dw 0d,'$'
compteurq2 db 0d,'$'
compteurr dw 0d,'$'
compteurr2 db 0d,'$'
compteurs dw 0d,'$'
compteurs2 db 0d,'$'
compteurt dw 0d,'$'
compteurt2 db 0d,'$'
compteuru dw 0d,'$'
compteuru2 db 0d,'$'
compteurv dw 0d,'$'
compteurv2 db 0d,'$'
compteurw dw 0d,'$'
compteurw2 db 0d,'$'
compteurx dw 0d,'$'
compteurx2 db 0d,'$'
compteury dw 0d,'$'
compteury2 db 0d,'$'
compteurz dw 0d,'$'
compteurz2 db 0d,'$'
compteur0 dw 0d,'$'
compteur02 db 0d,'$'
compteur1 dw 0d,'$'
compteur12 db 0d,'$'
compteur2 dw 0d,'$'
compteur22 db 0d,'$'
compteur3 dw 0d,'$'
compteur32 db 0d,'$'
compteur4 dw 0d,'$'
compteur42 db 0d,'$'
compteur5 dw 0d,'$'
compteur52 db 0d,'$'
compteur6 dw 0d,'$'
compteur62 db 0d,'$'
compteur7 dw 0d,'$'
compteur72 db 0d,'$'
compteur8 dw 0d,'$'
compteur82 db 0d,'$'
compteur9 dw 0d,'$'
compteur92 db 0d,'$'
diz db 0d
;---------------------------------------------------------------*
;*-------------------- Programme -------------------------------*
;*--------------------------------------------------------------*
.CODE
DEBUT:
mov AX,@DATA ; début du programme
mov DS,AX ; DS contient l'adresse du debut du segment de donnee par rapport au debut de la RAM
mov es,ax
;-----Acquisition du chemin d'accès et du nom du fichier----*
lea dx,acqui ;Affiche "Entrer le chemin d'accès et nom du fichier :
mov ah,09h
int 21h
mov ah,0Ah
lea dx,fich
int 21h
xor bx,bx ;mise à zéro de BX
mov bl,fichlu ;copie le nombre de caractère lu dans BL
mov fichier+[bx],0 ;à la fin de la chaine on rajoute le caractère 0
;-------------OUVERTURE DU FICHIER-----------------*
xor CX,CX ; Remize à 0 de CX qui est l'attribut du fichier
lea DX,Fichier ; Place le chemein d'accès au fichier dans DX
mov AH,3Dh ; Fonction d'ouverture du fichier
int 21h
mov Handle,ax ; Sauvegarde du Handel du Fichier
;-------------- Affiche le fichier --------------*
mov bx,Handle
mov ah,3Fh
mov cx,60000
lea dx,buffer
int 21h
;lea dx,CONTENU
;mov ah,09h ;Affiche "Contenu du fichier
;int 21h
;lea dx,buffer
;mov ah,09h ;Affiche buffer => le fichier
;int 21h
;------------ Compte le nombre de lettre et de chiffre ------------*
;---- Charge les caractères du buffer ----*
CLD ; Direction flag=0 (DI et SI s'incrémente)
LEA si,buffer
;--------------- Comparaison ---------------*
tet:
LODSB
jmp rep1
lettrea:
INC compteura
jmp tet
rep1:
cmp al,'a'
je lettrea
cmp al,'A'
je lettrea
cmp al,'à'
je lettrea
cmp al,'â'
je lettrea
jmp rep2
lettreb:
INC compteurb
jmp tet
rep2:
cmp al,'b'
je lettreb
cmp al,'B'
je lettreb
jmp rep3
lettrec:
INC compteurc
jmp tet
rep3:
cmp al,'c'
je lettrec
cmp al,'C'
je lettrec
cmp al,'ç'
je lettrec
jmp rep4
lettred:
INC compteurd
jmp tet
rep4:
cmp al,'d'
je lettred
cmp al,'D'
je lettred
jmp rep5
lettree:
INC compteure
jmp tet
rep5:
cmp al,'e'
je lettree
cmp al,'E'
je lettree
cmp al,'é'
je lettree
cmp al,'è'
je lettree
cmp al,'ê'
je lettree
jmp rep6
lettref:
INC compteurf
jmp tet
rep6:
cmp al,'f'
je lettref
cmp al,'F'
je lettref
jmp rep7
lettreg:
INC compteurg
jmp tet
rep7:
cmp al,'g'
je lettreg
cmp al,'G'
je lettreg
jmp rep8
lettreh:
INC compteurh
jmp tet
rep8:
cmp al,'h'
je lettreh
cmp al,'H'
je lettreh
jmp rep9
lettrei:
INC compteuri
jmp tet
rep9:
cmp al,'i'
je lettrei
cmp al,'I'
je lettrei
cmp al,'î'
je lettrei
cmp al,'ï'
je lettrei
jmp rep10
lettrej:
INC compteurj
jmp tet
rep10:
cmp al,'j'
je lettrej
cmp al,'J'
je lettrej
jmp rep11
lettrek:
INC compteurk
jmp tet
rep11:
cmp al,'k'
je lettrek
cmp al,'K'
je lettrek
jmp rep12
lettrel:
INC compteurl
jmp tet
rep12:
cmp al,'l'
je lettrel
cmp al,'L'
je lettrel
jmp rep13
lettrem:
INC compteurm
jmp tet
rep13:
cmp al,'m'
je lettrem
cmp al,'M'
je lettrem
jmp rep14
lettren:
INC compteurn
jmp tet
rep14:
cmp al,'n'
je lettren
cmp al,'N'
je lettren
jmp rep15
lettreo:
INC compteuro
jmp tet
rep15:
cmp al,'o'
je lettreo
cmp al,'O'
je lettreo
cmp al,'ô'
je lettreo
jmp rep16
lettrep:
INC compteurp
jmp tet
rep16:
cmp al,'p'
je lettrep
cmp al,'P'
je lettrep
jmp rep17
lettreq:
INC compteurq
jmp tet
rep17:
cmp al,'q'
je lettreq
cmp al,'Q'
je lettreq
jmp rep18
lettrer:
INC compteurr
jmp tet
rep18:
cmp al,'r'
je lettrer
cmp al,'R'
je lettrer
jmp rep19
lettres:
INC compteurs
jmp tet
rep19:
cmp al,'s'
je lettres
cmp al,'S'
je lettres
jmp rep20
lettret:
INC compteurt
jmp tet
rep20:
cmp al,'t'
je lettret
cmp al,'T'
je lettret
jmp rep21
lettreu:
INC compteuru
jmp tet
rep21:
cmp al,'u'
je lettreu
cmp al,'U'
je lettreu
cmp al,'û'
je lettreu
cmp al,'ü'
je lettreu
jmp rep22
lettrev:
INC compteurv
jmp tet
rep22:
cmp al,'v'
je lettrev
cmp al,'V'
je lettrev
jmp rep23
lettrew:
INC compteurw
jmp tet
rep23:
cmp al,'w'
je lettrew
cmp al,'W'
je lettrew
jmp rep24
lettrex:
INC compteurx
jmp tet
rep24:
cmp al,'x'
je lettrex
cmp al,'X'
je lettrex
jmp rep25
lettrey:
INC compteury
jmp tet
rep25:
cmp al,'y'
je lettrey
cmp al,'Y'
je lettrey
jmp rep26
lettrez:
INC compteurz
jmp tet
rep26:
cmp al,'z'
je lettrez
cmp al,'Z'
je lettrez
jmp rep27
chiffre1:
INC compteur1
jmp tet
rep27:
cmp al,'1'
je chiffre1
jmp rep28
chiffre2:
INC compteur2
jmp tet
rep28:
cmp al,'2'
je chiffre2
jmp rep29
chiffre3:
INC compteur3
jmp tet
rep29:
cmp al,'3'
je chiffre3
jmp rep30
chiffre4:
INC compteur4
jmp tet
rep30:
cmp al,'4'
je chiffre4
jmp rep31
chiffre5:
INC compteur5
jmp tet
rep31:
cmp al,'5'
je chiffre5
jmp rep32
jmp ch6
test1:
jmp tet
ch6:
chiffre6:
INC compteur6
jmp tet
rep32:
cmp al,'6'
je chiffre6
jmp rep33
chiffre7:
INC compteur7
jmp tet
rep33:
cmp al,'7'
je chiffre7
jmp rep34
chiffre8:
INC compteur8
jmp tet
rep34:
cmp al,'8'
je chiffre8
jmp rep35
chiffre9:
INC compteur9
jmp tet
rep35:
cmp al,'9'
je chiffre9
jmp rep36
chiffre0:
INC compteur0
jmp tet
rep36:
cmp al,'0'
je chiffre0
cmp al,'$'
jne test1
CALL add30h
;-------------Cherche le plus grand compteur-------*
add grand,30h
mov ax,compteura
call plusgrand
mov ax,compteurb
call plusgrand
mov ax,compteurc
call plusgrand
mov ax,compteurd
call plusgrand
mov ax,compteure
call plusgrand
mov ax,compteurf
call plusgrand
mov ax,compteurg
call plusgrand
mov ax,compteurh
call plusgrand
mov ax,compteuri
call plusgrand
mov ax,compteurj
call plusgrand
mov ax,compteurk
call plusgrand
mov ax,compteurl
call plusgrand
mov ax,compteurm
call plusgrand
mov ax,compteurn
call plusgrand
mov ax,compteuro
call plusgrand
mov ax,compteurp
call plusgrand
mov ax,compteurq
call plusgrand
mov ax,compteurr
call plusgrand
mov ax,compteurs
call plusgrand
mov ax,compteurt
call plusgrand
mov ax,compteuru
call plusgrand
mov ax,compteurv
call plusgrand
mov ax,compteurw
call plusgrand
mov ax,compteurx
call plusgrand
mov ax,compteury
call plusgrand
mov ax,compteurz
call plusgrand
mov ax,compteur0
call plusgrand
mov ax,compteur1
call plusgrand
mov ax,compteur2
call plusgrand
mov ax,compteur3
call plusgrand
mov ax,compteur4
call plusgrand
mov ax,compteur5
call plusgrand
mov ax,compteur6
call plusgrand
mov ax,compteur7
call plusgrand
mov ax,compteur8
call plusgrand
mov ax,compteur9
call plusgrand
;--------Calcule de l'échelle-----------------------------*
xor ax,ax
mov tempor,10d
add tempor,30h
mov ax,tempor
cmp ax,grand
ja petit3
jmp s10
petit3:
mov diz,1d
mov frequence,9d
mov freq,1d
jmp okechelle
s10:
mov tempor,50d
add tempor,30h
mov ax,tempor
cmp ax,grand
ja p50
jmp s50
p50:
mov diz,5d
mov frequence,45d
mov freq,5d
jmp okechelle
s50:
mov tempor,100d
add tempor,30h
mov ax,tempor
cmp ax,grand
ja p100
jmp s100
p100:
mov diz,10d
mov frequence,90d
mov freq,10d
jmp okechelle
s100:
mov tempor,200d
add tempor,30h
mov ax,tempor
cmp ax,grand
ja p200
jmp s200
p200:
mov diz,20d
mov frequence,180d
mov freq,20d
jmp okechelle
s200:
mov tempor,300d
add tempor,30h
mov ax,tempor
cmp ax,grand
ja p300
jmp s300
p300:
mov diz,30d
mov frequence,270d
mov freq,30d
jmp okechelle
s300:
mov tempor,400d
add tempor,30h
mov ax,tempor
cmp ax,grand
ja p400
jmp s400
p400:
mov diz,40d
mov frequence,360d
mov freq,40d
jmp okechelle
s400:
mov tempor,500d
add tempor,30h
mov ax,tempor
cmp ax,grand
ja p500
jmp s500
p500:
mov diz,50d
mov frequence,450d
mov freq,10d
jmp okechelle
s500:
mov tempor,1000d
add tempor,30h
mov ax,tempor
cmp ax,grand
ja p1000
jmp s1000
p1000:
mov diz,100d
mov frequence,900d
mov freq,100d
jmp okechelle
s1000:
mov tempor,2500d
add tempor,30h
mov ax,tempor
cmp ax,grand
ja p2500
jmp s2500
p2500:
mov diz,250d
mov frequence,2250d
mov freq,250d
jmp okechelle
s2500:
okechelle:
CALL sub30h
;-------------Divise les compteurs par le nombre adéquoi (trouvé ds le calcul de l'échelle)------------*
;Pour que l'échelle se remette sur 10
mov ax,compteura
div diz
mov compteura2,al
mov ax,compteurb
div diz
mov compteurb2,al
mov ax,compteurc
div diz
mov compteurc2,al
mov ax,compteurd
div diz
mov compteurd2,al
mov ax,compteure
div diz
mov compteure2,al
mov ax,compteurf
div diz
mov compteurf2,al
mov ax,compteurg
div diz
mov compteurg2,al
mov ax,compteurh
div diz
mov compteurh2,al
mov ax,compteuri
div diz
mov compteuri2,al
mov ax,compteurj
div diz
mov compteurj2,al
mov ax,compteurk
div diz
mov compteurk2,al
mov ax,compteurl
div diz
mov compteurl2,al
mov ax,compteurm
div diz
mov compteurm2,al
mov ax,compteurn
div diz
mov compteurn2,al
mov ax,compteuro
div diz
mov compteuro2,al
mov ax,compteurp
div diz
mov compteurp2,al
mov ax,compteurq
div diz
mov compteurq2,al
mov ax,compteurr
div diz
mov compteurr2,al
mov ax,compteurs
div diz
mov compteurs2,al
mov ax,compteurt
div diz
mov compteurt2,al
mov ax,compteuru
div diz
mov compteuru2,al
mov ax,compteurv
div diz
mov compteurv2,al
mov ax,compteurw
div diz
mov compteurw2,al
mov ax,compteurx
div diz
mov compteurx2,al
mov ax,compteury
div diz
mov compteury2,al
mov ax,compteurz
div diz
mov compteurz2,al
mov ax,compteur1
div diz
mov compteur12,al
mov ax,compteur2
div diz
mov compteur22,al
mov ax,compteur3
div diz
mov compteur32,al
mov ax,compteur4
div diz
mov compteur42,al
mov ax,compteur5
div diz
mov compteur52,al
mov ax,compteur6
div diz
mov compteur62,al
mov ax,compteur7
div diz
mov compteur72,al
mov ax,compteur8
div diz
mov compteur82,al
mov ax,compteur9
div diz
mov compteur92,al
CALL add30h2
;------------- Affichage de l'histogramme ---------------*
;---Affiche cadre + titre
lea dx,titre1
mov ah,09h
int 21h
lea dx,titre2
mov ah,09h
int 21h
lea dx,titre3
mov ah,09h
int 21h
lea dx,titre4
mov ah,09h
int 21h
lea dx,titre5
mov ah,09h
int 21h
lea dx,flechehaut ; Affiche la flèche vers le haut
mov ah,09h
int 21h
lea dx,lignev2 ; Affiche ligne verticale
mov ah,09h
int 21h
lea dx,passligne ; Passage à la ligne
mov ah,09h
int 21h
add compa,30h
add cmp1,30h
lignesuivante:
call convfreq ;Conversion décimale de la fréquence pour pouvoir l'afficher
xor ax,ax
mov ax,freq
sub frequence,ax
dec compa ; DECREMENTE compa pour passé a la ligne suivante
lea dx,lignev ; Affiche ligne verticale
mov ah,09h
int 21h
mov ah,compa ; Place compa dans ah pour la comparaison
;---COMPARE LETTRE A---*
cmp compteura2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB oka ; Si + petit affiche espace
jmp noa ; Si + grand affiche bloc
oka:
lea dx,espace2
mov ah,09h
int 21h
jmp letb
noa:
lea dx,bloc
mov ah,09h
int 21h
letb:
;---COMPARE LETTRE B---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteurb2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okb
jmp nob
okb:
lea dx,espace2
mov ah,09h
int 21h
jmp letc
nob:
lea dx,bloc
mov ah,09h
int 21h
letc:
;---COMPARE LETTRE C---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteurc2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okc
jmp noc
okc:
lea dx,espace2
mov ah,09h
int 21h
jmp letd
noc:
lea dx,bloc
mov ah,09h
int 21h
letd:
;---COMPARE LETTRE D---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteurd2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okd
jmp nod
okd:
lea dx,espace2
mov ah,09h
int 21h
jmp lete
nod:
lea dx,bloc
mov ah,09h
int 21h
lete:
;---COMPARE LETTRE E---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteure2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB oke
jmp noe
oke:
lea dx,espace2
mov ah,09h
int 21h
jmp letf
noe:
lea dx,bloc
mov ah,09h
int 21h
letf:
;---COMPARE LETTRE F---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteurf2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okf
jmp nof
okf:
lea dx,espace2
mov ah,09h
int 21h
jmp letg
nof:
lea dx,bloc
mov ah,09h
int 21h
letg:
;---COMPARE LETTRE G---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteurg2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okg
jmp nog
okg:
lea dx,espace2
mov ah,09h
int 21h
jmp leth
nog:
lea dx,bloc
mov ah,09h
int 21h
leth:
;---COMPARE LETTRE H---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteurh2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okh
jmp noh
okh:
lea dx,espace2
mov ah,09h
int 21h
jmp leti
noh:
lea dx,bloc
mov ah,09h
int 21h
letI:
;---COMPARE LETTRE I---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteuri2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB oki
jmp noi
oki:
lea dx,espace2
mov ah,09h
int 21h
jmp letj
noi:
lea dx,bloc
mov ah,09h
int 21h
letJ:
;---COMPARE LETTRE J---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteurj2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okj
jmp noj
okj:
lea dx,espace2
mov ah,09h
int 21h
jmp letk
noj:
lea dx,bloc
mov ah,09h
int 21h
letk:
;---COMPARE LETTRE K---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteurk2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okk
jmp nok
okk:
lea dx,espace2
mov ah,09h
int 21h
jmp letl
nok:
lea dx,bloc
mov ah,09h
int 21h
letl:
;---COMPARE LETTRE L---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteurl2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okl
jmp nol
okl:
lea dx,espace2
mov ah,09h
int 21h
jmp letm
nol:
lea dx,bloc
mov ah,09h
int 21h
letm:
;---COMPARE LETTRE M---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteurm2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okm
jmp nom
okm:
lea dx,espace2
mov ah,09h
int 21h
jmp letn
nom:
lea dx,bloc
mov ah,09h
int 21h
letn:
;---COMPARE LETTRE N---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteurn2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okn
jmp non
okn:
lea dx,espace2
mov ah,09h
int 21h
jmp leto
non:
lea dx,bloc
mov ah,09h
int 21h
leto:
;---COMPARE LETTRE O---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteuro2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB oko
jmp noo
oko:
lea dx,espace2
mov ah,09h
int 21h
jmp letp
noo:
lea dx,bloc
mov ah,09h
int 21h
letp:
;---COMPARE LETTRE P---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteurp2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okp
jmp nonp
okp:
lea dx,espace2
mov ah,09h
int 21h
jmp letq
nonp:
lea dx,bloc
mov ah,09h
int 21h
letq:
;---COMPARE LETTRE Q---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteurq2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okq
jmp noq
okq:
lea dx,espace2
mov ah,09h
int 21h
jmp letr
noq:
lea dx,bloc
mov ah,09h
int 21h
letr:
;---COMPARE LETTRE R---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteurr2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okr
jmp nor
okr:
lea dx,espace2
mov ah,09h
int 21h
jmp lets
nor:
lea dx,bloc
mov ah,09h
int 21h
lets:
;---COMPARE LETTRE S---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteurs2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB oks
jmp nos
oks:
lea dx,espace2
mov ah,09h
int 21h
jmp lett
nos:
lea dx,bloc
mov ah,09h
int 21h
lett:
;---COMPARE LETTRE T---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteurt2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okt
jmp nont
okt:
lea dx,espace2
mov ah,09h
int 21h
jmp letu
nont:
lea dx,bloc
mov ah,09h
int 21h
letu:
;---COMPARE LETTRE U---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteuru2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB oku
jmp nou
oku:
lea dx,espace2
mov ah,09h
int 21h
jmp letv
nou:
lea dx,bloc
mov ah,09h
int 21h
letv:
;---COMPARE LETTRE V---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteurv2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okv
jmp nov
okv:
lea dx,espace2
mov ah,09h
int 21h
jmp letw
nov:
lea dx,bloc
mov ah,09h
int 21h
letw:
;---COMPARE LETTRE W---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteurw2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okw
jmp now
okw:
lea dx,espace2
mov ah,09h
int 21h
jmp letx
now:
lea dx,bloc
mov ah,09h
int 21h
letx:
;---COMPARE LETTRE X---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteurx2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okx
jmp nox
okx:
lea dx,espace2
mov ah,09h
int 21h
jmp lety
nox:
lea dx,bloc
mov ah,09h
int 21h
lety:
;---COMPARE LETTRE Y---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteury2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB oky
jmp noy
oky:
lea dx,espace2
mov ah,09h
int 21h
jmp letz
noy:
lea dx,bloc
mov ah,09h
int 21h
letz:
;---COMPARE LETTRE Z---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteurz2,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okz
jmp noz
okz:
lea dx,espace2
mov ah,09h
int 21h
jmp chifpass0
noz:
lea dx,bloc
mov ah,09h
int 21h
jmp chifpass0
court2:
jmp lignesuivante
chifpass0:
;---COMPARE CHIFFRE 0---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteur02,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okchiffre0
jmp nochiffre0
okchiffre0:
lea dx,espace2
mov ah,09h
int 21h
jmp chifpass1
nochiffre0:
lea dx,bloc
mov ah,09h
int 21h
chifpass1:
;---COMPARE CHIFFRE 1---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteur12,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okchiffre1
jmp nochiffre1
okchiffre1:
lea dx,espace2
mov ah,09h
int 21h
jmp chifpass2
nochiffre1:
lea dx,bloc
mov ah,09h
int 21h
chifpass2:
;---COMPARE CHIFFRE 2---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteur22,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okchiffre2
jmp nochiffre2
okchiffre2:
lea dx,espace2
mov ah,09h
int 21h
jmp chifpass3
nochiffre2:
lea dx,bloc
mov ah,09h
int 21h
chifpass3:
;---COMPARE CHIFFRE 3---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteur32,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okchiffre3
jmp nochiffre3
okchiffre3:
lea dx,espace2
mov ah,09h
int 21h
jmp chifpass4
nochiffre3:
lea dx,bloc
mov ah,09h
int 21h
chifpass4:
;---COMPARE CHIFFRE 4---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteur42,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okchiffre4
jmp nochiffre4
okchiffre4:
lea dx,espace2
mov ah,09h
int 21h
jmp chifpass5
nochiffre4:
lea dx,bloc
mov ah,09h
int 21h
chifpass5:
;---COMPARE CHIFFRE 5---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteur52,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okchiffre5
jmp nochiffre5
okchiffre5:
lea dx,espace2
mov ah,09h
int 21h
jmp chifpass6
nochiffre5:
lea dx,bloc
mov ah,09h
int 21h
chifpass6:
;---COMPARE CHIFFRE 6---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteur62,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okchiffre6
jmp nochiffre6
okchiffre6:
lea dx,espace2
mov ah,09h
int 21h
jmp chifpass7
nochiffre6:
lea dx,bloc
mov ah,09h
int 21h
chifpass7:
;---COMPARE CHIFFRE 7---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteur72,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okchiffre7
jmp nochiffre7
okchiffre7:
lea dx,espace2
mov ah,09h
int 21h
jmp chifpass8
nochiffre7:
lea dx,bloc
mov ah,09h
int 21h
chifpass8:
;---COMPARE CHIFFRE 8---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteur82,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okchiffre8
jmp nochiffre8
okchiffre8:
lea dx,espace2
mov ah,09h
int 21h
jmp chifpass9
nochiffre8:
lea dx,bloc
mov ah,09h
int 21h
chifpass9:
;---COMPARE CHIFFRE 9---*
mov ah,compa ; Place compa dans ah pour la comparaison
cmp compteur92,ah ; Comparaison : si compteur est plus grand ou égale au n° de ligne il affiche un bloc sinon espace
JB okchiffre9
jmp nochiffre9
okchiffre9:
lea dx,espace2
mov ah,09h
int 21h
jmp finboucle
nochiffre9:
lea dx,bloc
mov ah,09h
int 21h
finboucle:
lea dx,passligne ; Passage à la ligne
mov ah,09h
int 21h
inc cmp1
cmp cmp1,'9'
je FIN
jmp court2
FIN:
lea dx,ligne ; Passage à la ligne
mov ah,09h
int 21h
lea dx,lettreetchiffre
mov ah,09h
int 21h
;-------------FERMETURE DU FICHIER-----------------*
mov bx,Handle
mov ah,3Eh
int 21h
;------------------------FIN-----------------------------------------*
mov ax,4C00h ;Appel de la fonction 4ch pour revenir au DOS
int 21h
convfreq proc near
mov ax,frequence
xor dx,dx
div mil ;divise le resultat par 1000
mov millier,ax
mov ax,dx
xor dx,dx
div cent ;divise le resultat par 100
mov centaine,ax
mov ax,dx
xor dx,dx
div dix2 ;divise le resultat par 100
mov dixaine,ax
mov unite,dx
add millier,48d
add centaine,48d
add dixaine,48d
add unite,48d
;Affichage
mov dx,millier
mov ah,02h ;Affiche caractère
int 21h
mov dx,centaine
mov ah,02h ;Affiche caractère
int 21h
mov dx,dixaine
mov ah,02h ;Affiche caractère
int 21h
mov dx,unite
mov ah,02h ;Affiche caractère
int 21h
RET
convfreq ENDP
plusgrand proc near
cmp ax,grand
JA grand2 ;Si + grand on le place ds grand
jmp petit ;Si + petit passe au plus petit
grand2:
mov grand,ax
petit:
RET
plusgrand ENDP
add30h proc near
ADD compteura,30h
ADD compteurb,30h
ADD compteurc,30h
ADD compteurd,30h
ADD compteure,30h
ADD compteurf,30h
ADD compteurg,30h
ADD compteurh,30h
ADD compteuri,30h
ADD compteurj,30h
ADD compteurk,30h
ADD compteurl,30h
ADD compteurm,30h
ADD compteurn,30h
ADD compteuro,30h
ADD compteurp,30h
ADD compteurq,30h
ADD compteurr,30h
ADD compteurs,30h
ADD compteurt,30h
ADD compteuru,30h
ADD compteurv,30h
ADD compteurw,30h
ADD compteurx,30h
ADD compteury,30h
ADD compteurz,30h
ADD compteur0,30h
ADD compteur1,30h
ADD compteur2,30h
ADD compteur3,30h
ADD compteur4,30h
ADD compteur5,30h
ADD compteur6,30h
ADD compteur7,30h
ADD compteur8,30h
ADD compteur9,30h
RET
add30h ENDP
sub30h proc near
SUB compteura,30h
SUB compteurb,30h
SUB compteurc,30h
SUB compteurd,30h
SUB compteure,30h
SUB compteurf,30h
SUB compteurg,30h
SUB compteurh,30h
SUB compteuri,30h
SUB compteurj,30h
SUB compteurk,30h
SUB compteurl,30h
SUB compteurm,30h
SUB compteurn,30h
SUB compteuro,30h
SUB compteurp,30h
SUB compteurq,30h
SUB compteurr,30h
SUB compteurs,30h
SUB compteurt,30h
SUB compteuru,30h
SUB compteurv,30h
SUB compteurw,30h
SUB compteurx,30h
SUB compteury,30h
SUB compteurz,30h
SUB compteur0,30h
SUB compteur1,30h
SUB compteur2,30h
SUB compteur3,30h
SUB compteur4,30h
SUB compteur5,30h
SUB compteur6,30h
SUB compteur7,30h
SUB compteur8,30h
SUB compteur9,30h
RET
sub30h ENDP
add30h2 proc near
ADD compteura2,30h
ADD compteurb2,30h
ADD compteurc2,30h
ADD compteurd2,30h
ADD compteure2,30h
ADD compteurf2,30h
ADD compteurg2,30h
ADD compteurh2,30h
ADD compteuri2,30h
ADD compteurj2,30h
ADD compteurk2,30h
ADD compteurl2,30h
ADD compteurm2,30h
ADD compteurn2,30h
ADD compteuro2,30h
ADD compteurp2,30h
ADD compteurq2,30h
ADD compteurr2,30h
ADD compteurs2,30h
ADD compteurt2,30h
ADD compteuru2,30h
ADD compteurv2,30h
ADD compteurw2,30h
ADD compteurx2,30h
ADD compteury2,30h
ADD compteurz2,30h
ADD compteur02,30h
ADD compteur12,30h
ADD compteur22,30h
ADD compteur32,30h
ADD compteur42,30h
ADD compteur52,30h
ADD compteur62,30h
ADD compteur72,30h
ADD compteur82,30h
ADD compteur92,30h
RET
add30h2 ENDP
END debut
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
comment se servir du copross graphique!?!? [ par prunkdump ]
Voilà, je voudrais savoir si quelq'un sait se servir du coprocesseur graphique ou aurait des liens sur ce sujet, car c'est complètement defferent de
Fréquence clavier !!! [ par eldered ]
Bonjour a tous !Je code actuellement en java un bomberMan et j'ai quelques soucis de fluidité dans mon scrolling de la carte. Certes, si je scroll pix
interface graphique? [ par rominou ]
Debutant, j'ignore comment et avec quels outils developper une interface graphique pour du C et C++.Pourriez vous m'indiquer une solution pour apprend
tempo avec un 15F [ par tshib ]
Slt à tous ne bref je débute en assembleur et je voudrai avoir la résolution de l'exercice suivant: j'ai un codes qui foire et je voudrai avoir le ver
programmation graphique en mode 12h [ par masta_jigga ]
J'aimerai poser surement une bete question. Comment puis-je faire pour travailler dans le mode 12h (640x480 en 16 couleurs)en accedant directemen
help schema de carte graphique [ par busman ]
salut a tous j ai recup une " saphirre radeon x1900 xtx 512m dual - dvi/vivo"SKU#21082-00PN 102-A 52021-52-ATje recherche desesperement le chema elect
Impression d'une fenêtre [ par Nasman ]
Bonjour,Je suis à la recherche des méthodes à employer pour permettre d'imprimer une fenêtre graphique sur une imprimante sélectionnée. Je n'ai pas de
bug graphique [ par raoulli ]
salut.c'est encore moi.je suis collant hein !Cette fois ci c'est donc pour un bug graphique.Voila, je ne vois pas dutout la maniere de debuguer ce pro
|
Derniers Blogs
[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril CERTIFICATIONS BETA .NET 4CERTIFICATIONS BETA .NET 4 par KooKiz
Les inscriptions pour les certifications beta .NET 4 ont commencé. L'inscription est offerte pour les examens suivants : - 71-511, TS: Windows Applications Development with Microsoft .NET Framework 4 - 71-515, TS: Web Applications Development with...
Cliquez pour lire la suite de l'article par KooKiz [MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2[MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2 par redo
J'imagine que la plupart d'entre vous connaissent bien et utilisent le service de traduction de Google, mais connaissez-vous celui de Microsoft . Microsoft Translator ? Effectivement, Microsoft nous annoncé le lancement version 2 de la Technologie Preview...
Cliquez pour lire la suite de l'article par redo LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010!LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010! par MPOWARE
Toutes les vidéos de ce lancement sont en ligne!
Partie I - Intro
http://www.youtube.com/watch?v=LkQzTQ8T6CA
Partie II - Démo 1
http://www.youtube.com/watch?v=drAhYQ7lqvo
Partie III - Démo 2
http://www.youtube.com/watch?v=c8KM_1Gqybc...
Cliquez pour lire la suite de l'article par MPOWARE
Forum
RE : ASSEMBLEURRE : ASSEMBLEUR par ghuysmans99
Cliquez pour lire la suite par ghuysmans99 RE : ASSEMBLEURRE : ASSEMBLEUR par ghuysmans99
Cliquez pour lire la suite par ghuysmans99 ASSEMBLEURASSEMBLEUR par solleil
Cliquez pour lire la suite par solleil
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
Comparez les prix

HTC Hero
Entre 550€ et 550€
|