Faire une calculatrice

Faire une calculatrice - ASM - Programmation

Marsh Posté le 28-04-2003 à 18:09:28    

vous avez pas des exemples ou tutoriaux pour realiser une caltos avec masm6.1 ?
 
Parce que c... [:vomi][:zoutte]  
 
Genre comment stocker les nombres, comment faire des operations sur des grands nombres (ainsi que sur les reels :cry:)
 
Bref... kel cauchemard...

Reply

Marsh Posté le 28-04-2003 à 18:09:28   

Reply

Marsh Posté le 28-04-2003 à 18:12:21    

Deja, si tu peux, utilises Masm 8.0, il est 100 fois mieux.
Ensuite, je te conseille d'abord de le faire en C, puis ensuite de le passer en asm, petit à petit : tu fais des sections asm dans ton programme en C, tu testes, tu remplaces d'autres sections C par de l'asm, etc...
Tu verras que t'auras fait ta calc en asm sans t'en rendre compte :)


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 28-04-2003 à 18:15:17    

Harkonnen a écrit :

Deja, si tu peux, utilises Masm 8.0, il est 100 fois mieux.


 
oui mais non, restriction a la con de la fac stupide [:ben-tx]  [:zoutte]  
 

Citation :

Harkonnen a écritEnsuite, je te conseille d'abord de le faire en C, puis ensuite de le passer en asm, petit à petit : tu fais des sections asm dans ton programme en C, tu testes, tu remplaces d'autres sections C par de l'asm, etc...
Tu verras que t'auras fait ta calc en asm sans t'en rendre compte :)


 
mouais, bourrin touch :p
on va tenter quand meme... c pas tres propre quand meme :p


Message édité par -VDV- le 28-04-2003 à 18:18:09
Reply

Marsh Posté le 29-04-2003 à 10:46:52    

[:atreyu]

Reply

Marsh Posté le 29-04-2003 à 10:50:41    

pourquoi tu uppes ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 29-04-2003 à 11:44:52    

Moi perso j'ai déja fait une calculatrice en asm, et j'ai pas eu besoin de tous ces outils...
Juste trois logiciels :
deux ptits progs dos : tasm et tlink
et le fameux notepad....
 
Après c'est sur que ca prend plus de temps, mais au moins après tu es content de toi

Reply

Marsh Posté le 29-04-2003 à 11:52:47    

Harkonnen a écrit :

pourquoi tu uppes ?


ils se connaissent  [:tinostar]


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 29-04-2003 à 14:53:45    

Urd-sama a écrit :


ils se connaissent  [:tinostar]  


 
Oui et puis c'est plutot moi que ça concerne ... Vdv a posté ma demande hier quand j'étais chez lui depuis son compte parce que la derniere fois que l'on a fait ça en changeant de compte, le forum nous a considéré comme multinick alors que ce n'est absolument pas le cas ...
 
 
Pour la calculatrice, j'avais divisé le travail avec une autre personne, je m'occupait d'un projet et lui de la calculatrice, mais cet abrutit qui m'avait dit : "ouais pas de problème ça avance" n'a absolument rien foutu et je me retrouve avec ce projet en plus sur le dos ... Donc j'ai fait comme j'ai pu une premiere ébauche mais comme je n'ai jamais fait d'assembleur avant j'ai quelques problèmes pour réaliser le calculs ... donc si vous avez ça dans votre musette, n'hésitez pas ...
 
PS : je ne vous garantie pas que le prog marche, je suis en effet obligé d'utilisé win95 pour faire fonctionner Masm61. Avant hier, le prog marchait sous WinXP avec gestion de la souris, hier il se lançait toujours, la souris fonctionnait mais plus rien ne réagissait sauf le bouton OFF... Source sur demande ...


Message édité par get@fix le 29-04-2003 à 14:56:12
Reply

Marsh Posté le 29-04-2003 à 17:18:25    

C bon logiquement ça passe sous XP sans problème ... Juste un bug stupide de palette qui m'a fait perdre pas mal de temps ...
 
http://samba.de.amigo.free.fr/Prog.rar

Reply

Marsh Posté le 29-04-2003 à 18:40:18    

GeT@FiX a écrit :

C bon logiquement ça passe sous XP sans problème ... Juste un bug stupide de palette qui m'a fait perdre pas mal de temps ...
http://samba.de.amigo.free.fr/Prog.rar


Bien joue ton viry... :pt1cable:  :D


---------------
See the eyez of the tiger in my blood
Reply

Marsh Posté le 29-04-2003 à 18:40:18   

Reply

Marsh Posté le 29-04-2003 à 22:59:32    

true_playa a écrit :


Bien joue ton viry... :pt1cable:  :D  


 
?

Reply

Marsh Posté le 30-04-2003 à 03:41:37    

Urd-sama a écrit :


ils se connaissent  [:tinostar]  


 
arf t la aussi toi ?
c destabilisant de croise des gens d'un forum sur un autre :p

Reply

Marsh Posté le 30-04-2003 à 08:17:38    

-VDV- a écrit :


arf t la aussi toi ?
c destabilisant de croise des gens d'un forum sur un autre :p


vouais j'traine que sur prog, pas le reste


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 30-04-2003 à 15:56:35    


C'etait bien virii ? :??:  :fou:  :pt1cable:  :sweat:


---------------
See the eyez of the tiger in my blood
Reply

Marsh Posté le 04-05-2003 à 00:02:53    

true_playa a écrit :


C'etait bien virii ? :??:  :fou:  :pt1cable:  :sweat:  


Je ne comprends même pas de quoi tu parles ...
Si tu connais l'assembleur 8086, ne te gène pas pour m'aider mais si tu n'as rien à dire, je te prie de t'abstenir ...
 
 
Bon, j'ai encore quelques problème, même si personne ne m'a répondu je poste quand même ... Apres tout on sais jamais ... J'ai créé une procedure addition qui marche parfaitement mais j'ai quelques soucis avec la procedure de soustraction dont voici le code


;***************
;SOUSTRACTION
;***************
soustraction proc near
    mov si,offset nombre_1
    mov di,offset resultat
    call copy_nb
  bcl_soust:
    mov si, offset resultat
    call comparaison
    cmp val_zero,0
    je fin_soust
    mov si, offset nombre_2
    call comparaison
    cmp val_zero,0
    je fin_soust
    mov di,offset nombre_2+16
    call moins_un
    mov di,offset resultat+16
    call moins_un
    jmp bcl_soust
  fin_soust:
    ret
soustraction endp
 
;************
;COMPARAISON
;************
comparaison proc near
    mov al,0
    mov cx,16
  bcl_comp:
    add al,[si]
    inc si
    loopnz bcl_comp
    mov val_zero,al
comparaison endp
 
;********
;MOINS UN
;********
moins_un proc near
    mov cx,16
  bcl_moins_un:
    dec di
    mov al,[di]
    cmp al,0
    jne pas_de_prob
    mov al,9
    mov [di],al
    dec cx
    cmp cx,0
    jne bcl_moins_un
  pas_de_prob:
    sub al,1
    mov [di],al
    ret
moins_un endp
 
;*********************************************************
;COPIE de nombre : si contient l'adresse de la source
;     di contient l'adresse de la destination
;*********************************************************
copy_nb proc near
    mov cx,16
  bcl_copy:
    mov al,[si]
    mov [di],al
    inc si
    inc di
    loopnz bcl_copy
    ret
copy_nb endp
 
val_zero db 0
nombre_1 db 0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 ;1000d
nombre_2 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0 ;50d
resultat db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0


 
 
Bon comme vous pouvez le constater j'utilise une methode bourrin ... C-à-d je retire 1 à chaque membre jusqu'à ce qu'il y en ait une des opérandes nulle ... j'ai essayé ma procedure moins_un elle a l'air de fonctionner donc je pense que cela vient de ma procedure soustraction ...


Message édité par get@fix le 04-05-2003 à 00:04:23
Reply

Marsh Posté le 04-05-2003 à 08:40:33    

T un bourin! pourquoi tu te contente pas d'ajouter l'opposé (le complementà 2 et ca c facile à faire meme sur les grand nombre)

Reply

Marsh Posté le 04-05-2003 à 09:29:19    

Non, c'est bon j'ai trouvé .... j'ai oublié un ret dans la procedure de comparaison  :fou: ... j'ai quand même passé pas loin de 4 heures à trouver ça ...  :cry:  :pt1cable:

Reply

Marsh Posté le 09-05-2003 à 20:35:25    

Ayant passé ma soutenace aujourd'hui, je n'ai plus besoin de ce code source donc je vous le livre si ça interesse quelqu'un ...
 
http://samba.de.amigo.free.fr/calc.bmp
 

calc segment
.486
Assume cs:calc,ds:calc,es:calc
org 100h
 
deb:
  call load_bmp
  mov ax,0
  int 33h
  cmp ax,0
  je quitter
  mov ax,1
  int 33h
  initialisation:
    mov coordx,50
    call affiche_blanc
    mov negatif,0
    mov overflow,0
    mov compteur,0
    mov di,offset resultat
    call initialize
    mov di,offset nombre_1
    call initialize
    mov di,offset nombre_2
    call initialize
    mov si,offset nombre_1
    call affi_nb
  saisie1:
    mov si,offset nombre_1
    call affi_nb
    call saisie
    cmp caract,27
    je quitter
    cmp caract,8
    je backsaisie1
    cmp caract,13
    je saisie1
    cmp caract,42
    je operateur
    cmp caract,43
    je operateur
    cmp caract,45
    je operateur
    cmp caract,47
    je operateur
    cmp caract,'c'
    je initialisation
    cmp caract,'C'
    je initialisation
    cmp compteur,16
    je saisie1
    inc compteur
    mov dl,caract
    sub dl,48
    mov di,offset nombre_1-1
    mov si,offset nombre_1
    mov cx,16
  decal_nb1:
    inc si
    inc di
    mov al,[si]
    mov [di],al
    loopnz decal_nb1
    mov [di],dl
    jmp saisie1
  backsaisie1:
    cmp compteur,0
    je saisie1
    dec compteur
    mov di,offset nombre_1+16
    mov si,offset nombre_1+15
    mov cx,15
   bcl_back1:
    dec di
    dec si
    mov al,[si]
    mov [di],al
    loopnz bcl_back1
    mov nombre_1[0],0
    jmp saisie1
  operateur:
    mov al,caract
    mov operator,al
    mov compteur,0
  saisie2:
    mov si,offset nombre_2
    call affi_nb
    call saisie
    cmp caract,27
    je quitter
    cmp caract,8
    je backsaisie2
    cmp caract,13
    je validation
    cmp caract,42
    je saisie2
    cmp caract,43
    je saisie2
    cmp caract,45
    je saisie2
    cmp caract,47
    je saisie2
    cmp caract,'c'
    je initialisation
    cmp caract,'C'
    je initialisation
    cmp compteur,16
    je saisie2
    inc compteur
    mov dl,caract
    sub dl,48
    mov di,offset nombre_2-1
    mov si,offset nombre_2
    mov cx,16
  decal_nb2:
    inc si
    inc di
    mov al,[si]
    mov [di],al
    loopnz decal_nb2
    mov [di],dl
    jmp saisie2
  backsaisie2:
    cmp compteur,0
    je saisie2
    dec compteur
    mov dl,8
    mov ah,2
    int 21h
    mov dl,32
    int 21h
    mov dl,8
    int 21h
    mov di,offset nombre_2+16
    mov si,offset nombre_2+15
    mov cx,15
   bcl_back2:
    dec di
    dec si
    mov al,[si]
    mov [di],al
    loopnz bcl_back2
    mov nombre_2[0],0
    jmp saisie2
  validation:
    cmp operator,'+'
    je addit
    cmp operator,'-'
    je soust
    cmp operator,'*'
    je mult
    call division
    jmp result
  mult:
    call multiplication
    jmp result
  addit:
    call addition
    jmp result
  soust:
    call soustraction
    mov si,offset resultat
    call comparaison
    cmp val_zero,0
    jne result
    mov si,offset nombre_2
    call comparaison
    cmp val_zero,0
    je result
    mov coordx,50
    call affiche_moins
    mov si,offset nombre_2
    mov ax,16
    call affi_nb
    mov negatif,1
    jmp resultf2
  result:
    cmp overflow,0
    je resultf
    mov cx,16
    mov al,11
    mov di,offset resultat
  over_bcl:
    mov [di],al
    inc di
    loopnz over_bcl
  resultf:
    mov ax,16
    mov si,offset resultat
    call affi_nb
  resultf2:
    call saisie
    mov coordx,50
    call affiche_blanc
    cmp caract,27
    je quitter
    cmp overflow,1
    je initialisation
    cmp caract,8
    je initialisation
    cmp caract,13
    je resultf
    cmp caract,42
    je operateur2
    cmp caract,43
    je operateur2
    cmp caract,45
    je operateur2
    cmp caract,47
    je operateur2
    cmp caract,'c'
    je initialisation
    cmp caract,'C'
    je initialisation
    mov di,offset nombre_1
    call initialize
    mov di,offset nombre_2
    call initialize
    mov di,offset resultat
    call initialize
    mov di,offset nombre_1+15
    mov compteur,1
    mov dl,caract
    sub dl,48
    mov [di],dl
    jmp saisie1
 
operateur2:
    cmp negatif,1
    je operateur2m
    mov si,offset resultat
    mov di,offset nombre_1
    call copy_nb
    mov di,offset nombre_2
    call initialize
    mov di,offset resultat
    call initialize
    mov overflow,0
    mov negatif,0
    jmp operateur
operateur2m:
    mov si,offset nombre_2
    mov di,offset nombre_1
    call copy_nb
    mov di,offset nombre_2
    call initialize
    mov di,offset resultat
    call initialize
    mov overflow,0
    mov negatif,0
    jmp operateur
 
quitter:
    mov ah,0
    mov al,2
    int 10h
    mov ah,4Ch
    int 21h
 
;**************
;INITIALISATION
;**************
initialize proc near
  mov cx,16
  init_bcl:
    mov al,0
    mov [di],al
    inc di
    loopnz init_bcl
  ret
initialize endp
 
 
;******
;SAISIE
;******
saisie proc near
vide_buffer:
    mov ah,0Ch
    mov al,0
    int 21h
test_saisie:
    mov ax,5
    int 33h
    cmp bx,01h
    je clique_souris
    mov ah,1
    int 16h
    jz test_saisie
    cmp al,13   ;Carriage return
    je fin_saisie
    cmp al,'c'
    je fin_saisie
    cmp al,'C'
    je fin_saisie
    cmp al,27   ;Escape
    je fin_saisie
    cmp al,8   ;Backspace
    je fin_saisie
    cmp al,42
    je fin_saisie
    cmp al,43
    je fin_saisie
    cmp al,45
    je fin_saisie
    cmp al,47
    je fin_saisie
    cmp al,48
    jb vide_buffer
    cmp al,57
    ja vide_buffer
fin_saisie:
    mov caract,al
    ret
clique_souris:
 cmp dx,55
 jb test_saisie
 cmp dx,68
 ja cliquepasoff
 cmp cx,484
 jb test_saisie
 cmp cx,514
 ja test_saisie
 mov al,27
        jmp fin_saisie
cliquepasoff:
 cmp dx,92
 jb test_saisie
 cmp dx,105
 ja cliquebouton7410852963
 cmp cx,120
 jb test_saisie
 cmp cx,270
 ja retourarriere
        mov al,'c'
 jmp fin_saisie
retourarriere:
 cmp cx,360
 jb test_saisie
 cmp cx,510
 ja test_saisie
 mov al,8
 jmp fin_saisie
 
cliquebouton7410852963:
 cmp cx,120d
 jb test_saisie
 cmp cx,190d
 ja cliquebouton852
 cmp dx,109d
 jb test_saisie
 cmp dx,122d
 ja cliquebouton410
 mov al,55
 jmp fin_saisie
 
cliquebouton410:
 cmp dx,126d
 jb test_saisie
 cmp dx,139d
 ja cliquebouton10
 mov al,52
 jmp fin_saisie
 
cliquebouton10:
 cmp dx,143d
 jb test_saisie
 cmp dx,156d
 ja cliquebouton0
 mov al,49
 jmp fin_saisie
 
cliquebouton0:
 cmp dx,160d
 jb test_saisie
 cmp dx,173d
 ja test_saisie
 mov al,48
 jmp fin_saisie
 
cliquebouton852:
 cmp cx,200
 jb test_saisie
 cmp cx,270
 ja cliquebouton963
 cmp dx,109
 jb test_saisie
 cmp dx,122
 ja cliquebouton52
 mov al,56
 jmp fin_saisie
 
cliquebouton52:
 cmp dx,126
 jb test_saisie
 cmp dx,139
 ja cliquebouton2
 mov al,53
 jmp fin_saisie
 
cliquebouton2:
 cmp dx,143
 jb test_saisie
 cmp dx,156
 ja test_saisie
 mov al,50
 jmp fin_saisie
 
cliquebouton963:
 cmp cx,280
 jb test_saisie
 cmp cx,350
 ja cliquedmsa
 cmp dx,109
 jb test_saisie
 cmp dx,122
 ja cliquebouton63
 mov al,57
 jmp fin_saisie
 
cliquebouton63:
 cmp dx,126
 jb test_saisie
 cmp dx,139
 ja cliquebouton3
 mov al,54
 jmp fin_saisie
 
cliquebouton3:
 cmp dx,143
 jb test_saisie
 cmp dx,156
 ja test_saisie
 mov al,51
 jmp fin_saisie
 
cliquedmsa:
 cmp cx,360
 jb test_saisie
 cmp cx,430
 ja cliquevalidation
 cmp dx,109
 jb test_saisie
 cmp dx,122
 ja cliquemsa
 mov al,'/'
 jmp fin_saisie
 
cliquemsa:
 cmp dx,126
 jb test_saisie
 cmp dx,139
 ja cliquesa
 mov al,'*'
 jmp fin_saisie
 
cliquesa:
 cmp dx,143
 jb test_saisie
 cmp dx,156
 ja cliquea
 mov al,'-'
 jmp fin_saisie
 
cliquea:
 cmp dx,160
 jb test_saisie
 cmp dx,173
 ja test_saisie
 mov al,'+'
 jmp fin_saisie
 
cliquevalidation:
 cmp cx,440
 jb test_saisie
 cmp cx,510
 ja test_saisie
 cmp dx,109
 jb test_saisie
 cmp dx,220
 ja test_saisie
 mov al,13
 jmp fin_saisie
 
saisie endp
 
;****************************************
; ADDITION
;****************************************
addition proc near
    mov si,offset nombre_1
    mov di,offset resultat
    call copy_nb
    mov di,offset resultat+16
    mov si,offset nombre_2+16
    mov ah,0
    mov cx,16
  bcl_add:
    dec di
    dec si
    mov al,[si]
    add al,ah
    add al,[di]
    mov ah,0
    aaa
    mov [di],al
    loopnz bcl_add
    cmp ah,0
    je fin_add
    mov overflow,1
fin_add:
    ret
addition endp
 
;**************
;MULTIPLICATION
;**************
multiplication proc near
 bcl_mult:
    mov si,offset nombre_2
    call comparaison
    cmp val_zero,0
    je fin_mult
    mov di,offset nombre_2+16
    call moins_un
    mov di,offset resultat+16
    mov si,offset nombre_1+16
    mov ah,0
    mov cx,16
  bcl_mult_add:
    dec di
    dec si
    mov al,[si]
    add al,ah
    add al,[di]
    mov ah,0
    aaa
    mov [di],al
    loopnz bcl_mult_add
    jmp bcl_mult
  fin_mult:
    cmp ah,0
    jne over_mult
    ret
  over_mult:
    mov overflow,1
    ret
multiplication endp
 
;***************
;SOUSTRACTION
;***************
soustraction proc near
    mov si,offset nombre_1
    mov di,offset resultat
    call copy_nb
  bcl_soust:
    mov si, offset resultat
    call comparaison
    cmp val_zero,0
    je fin_soust
    mov si, offset nombre_2
    call comparaison
    cmp val_zero,0
    je fin_soust
    mov di,offset nombre_2+16
    call moins_un
    mov di,offset resultat+16
    call moins_un
    jmp bcl_soust
  fin_soust:
    ret
soustraction endp
 
;********
;DIVISION
;********
division proc near
    mov si,offset nombre_2
    call comparaison
    cmp val_zero,0
    je division_par_zero
  bcl_div:
    mov si,offset nombre_2
    mov di,offset nombre_t
    call copy_nb
  bcl_div_soust:
    mov si, offset nombre_t
    call comparaison
    cmp val_zero,0
    je plus_un
    mov si, offset nombre_1
    call comparaison
    cmp val_zero,0
    je fin_soust
    mov di,offset nombre_1+16
    call moins_un
    mov di,offset nombre_t+16
    call moins_un
    jmp bcl_div_soust
  plus_un:
    mov ah,0
    mov al,1
    mov di,offset resultat+16
    mov cx,16
   bcl_plus_un:
    dec di
    add al,[di]
    aaa
    mov [di],al
    mov al,ah
    mov ah,0
    loopnz bcl_plus_un
    jmp bcl_div
  division_par_zero:
    mov overflow,1
  fin_soust:
    ret
 
division endp
 
;************
;COMPARAISON
;************
comparaison proc near
    mov al,0
    mov cx,16
  bcl_comp:
    add al,[si]
    inc si
    loopnz bcl_comp
    mov val_zero,al
    ret
comparaison endp
 
;********
;MOINS UN
;********
moins_un proc near
    mov cx,16
  bcl_moins_un:
    dec di
    mov al,[di]
    cmp al,0
    jne pas_de_prob
    mov al,9
    mov [di],al
    dec cx
    cmp cx,0
    jne bcl_moins_un
  pas_de_prob:
    sub al,1
    mov [di],al
    ret
moins_un endp
 
;*********************************************************
;COPIE de nombre : si contient l'adresse de la source
;     di contient l'adresse de la destination
;*********************************************************
copy_nb proc near
    mov cx,16
  bcl_copy:
    mov al,[si]
    mov [di],al
    inc si
    inc di
    loopnz bcl_copy
    ret
copy_nb endp
 
 
;**************************************
;TOUT CE QUI CONCERNE LE MODE GRAPHIQUE
;**************************************
 
;**********************************************
;Affichage d'un nombre :  si contient la source
;**********************************************
affi_nb proc near
    mov ax,2
    int 33h
    mov cx,16
    mov coordx,62
bcl_zero:
    mov dl,[si]
    cmp dl,0
    jne bcl_affi
    inc si
    push cx
    push si
    call affiche_blanc
    pop si
    pop cx
    dec cx
    cmp cx,1
    ja bcl_zero
bcl_affi:
    mov al,[si]
    cmp al,0
    push cx
    push si
    jne affi1
    call affiche_zero
    jmp bcl_affi_fin
affi1:
    cmp al,1
    jne affi2
    call affiche_un
    jmp bcl_affi_fin
affi2:
    cmp al,2
    jne affi3
    call affiche_deux
    jmp bcl_affi_fin
affi3:
    cmp al,3
    jne affi4
    call affiche_trois
    jmp bcl_affi_fin
affi4:
    cmp al,4
    jne affi5
    call affiche_quatre
    jmp bcl_affi_fin
affi5:
    cmp al,5
    jne affi6
    call affiche_cinq
    jmp bcl_affi_fin
affi6:
    cmp al,6
    jne affi7
    call affiche_six
    jmp bcl_affi_fin
affi7:
    cmp al,7
    jne affi8
    call affiche_sept
    jmp bcl_affi_fin
affi8:
    cmp al,8
    jne affi9
    call affiche_huit
    jmp bcl_affi_fin
affi9:
    cmp al,9
    jne affidiaise
    call affiche_neuf
    jmp bcl_affi_fin
affidiaise:
    cmp al,11
    jne bcl_affi_fin
    call affiche_diaise
bcl_affi_fin:
    pop si
    pop cx
    inc si
    loopnz bcl_affi
fin_affi:
    mov ax,1
    int 33h
    ret
affi_nb endp
 
affiche_moins proc near
 mov si, offset opm
 call imprime_chiffre
 ret
affiche_moins endp
 
affiche_blanc proc near
 mov si, offset efface
 call imprime_chiffre
 ret
affiche_blanc endp
 
affiche_zero proc near
 mov si, offset ch0
 call imprime_chiffre
 ret
affiche_zero endp
 
affiche_un proc near
 mov si, offset ch1
 call imprime_chiffre
 ret
affiche_un endp
 
affiche_deux proc near
 mov si, offset ch2
 call imprime_chiffre
 ret
affiche_deux endp
 
affiche_trois proc near
 mov si, offset ch3
 call imprime_chiffre
 ret
affiche_trois endp
 
affiche_quatre proc near
 mov si, offset ch4
 call imprime_chiffre
 ret
affiche_quatre endp
 
affiche_cinq proc near
 mov si, offset ch5
 call imprime_chiffre
 ret
affiche_cinq endp
 
affiche_six proc near
 mov si, offset ch6
 call imprime_chiffre
 ret
affiche_six endp
 
affiche_sept proc near
 mov si, offset ch7
 call imprime_chiffre
 ret
affiche_sept endp
 
affiche_huit proc near
 mov si, offset ch8
 call imprime_chiffre
 ret
affiche_huit endp
 
affiche_neuf proc near
 mov si, offset ch9
 call imprime_chiffre
 ret
affiche_neuf endp
 
affiche_diaise proc near
 mov si,offset diaise
 call imprime_chiffre
 ret
affiche_diaise endp
 
imprime_chiffre proc near
 mov ax,coordx
 add ax,11
 mov coordx,ax
 mov x,0
 mov y,0
impbcl:
 mov ah,0ch
 lodsb
 mov cx,coordx
 add cx,x
 mov dx,coordy
 add dx,y
 int 10h
 add x,1
 mov bx,long
 cmp x,bx
 jne impbcl
 mov x,0
 add y,1
 mov bx,height
 cmp y,bx
 jne impbcl
 ret
imprime_chiffre endp
 
Load_BMP proc near
    mov al,13h
    mov ah,00h
    int 10h
    mov ah,3dh
    mov al,00h
    lea dx,nom_fich
    int 21h
    mov num,ax
    mov cx,0
    mov dx,10
    call deplacer_pointeur
    mov ah,3fh
    mov bx,num
    mov cx,4
    lea dx,deb_fich
    int 21h
    mov cx,0
    mov dx,54
    call deplacer_pointeur
    mov cpt,0
  pal:
    mov ah,3fh
    mov bx,num
    mov cx,4
    lea dx,palette
    int 21h
    mov ah,10h
    mov al,10h
    mov bx,cpt
    mov cl,byte ptr palette
    shr cl,2
    mov ch,byte ptr palette+1
    shr ch,2
    mov dh,byte ptr palette+2
    shr dh,2
    int 10h
    inc cpt
    cmp cpt,255
    jne pal
    mov cx,word ptr deb_fich+2
    mov dx,word ptr deb_fich
    call deplacer_pointeur
  haut:
    mov x,0
  larg:
    mov ah,3fh
    mov bx,num
    mov cx,1
    lea dx,coul
    int 21h
    call aff_point
    inc x
    cmp x,320
    jne larg
    dec y
    jnz haut
    mov ah,3eh
    mov bx,num
    int 21h
load_BMP endp
 
deplacer_pointeur proc near
 mov ah,42h
     mov al,0
     mov bx,num
     int 21h
 ret
deplacer_pointeur endp
 
aff_point proc near
     mov ax,0a000h
     mov es,ax
     mov ax,320
     mul y
     add ax,x
     mov di,ax
     mov al,coul
     stosb
     ret
aff_point endp
 
nom_fich db "calc.bmp",00h
num dw ?
deb_fich dd ?
palette dq ?
coul db ?
x dw 0
y dw 199
cpt dw ?
 
long dw 10
height dw 10
coordx dw 62
coordy dw 77
 
opm db 75,75,75,75,75,75,75,75,75,75
    db 75,75,75,75,75,75,75,75,75,75
    db 75,75,75,75,75,75,75,75,75,75
    db 75,75,75,75,75,75,75,75,75,75
    db 75,75,75,00,00,00,75,75,75,75
    db 75,75,75,75,75,75,75,75,75,75
    db 75,75,75,75,75,75,75,75,75,75
    db 75,75,75,75,75,75,75,75,75,75
    db 75,75,75,75,75,75,75,75,75,75
    db 75,75,75,75,75,75,75,75,75,75,0dh
 
ch0 db 75,75,75,00,00,00,75,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,75,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,75,00,00,00,75,75,75,75,0dh
 
ch1 db 75,75,75,75,75,75,75,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,75,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,75,75,75,75,0dh
 
ch2 db 75,75,75,00,00,00,75,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,00,00,00,75,75,75,75
    db 75,75,00,75,75,75,75,75,75,75
    db 75,75,00,75,75,75,75,75,75,75
    db 75,75,00,75,75,75,75,75,75,75
    db 75,75,00,75,75,75,75,75,75,75
    db 75,75,75,00,00,00,75,75,75,75,0dh
 
ch3 db 75,75,75,00,00,00,75,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,00,00,00,75,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,00,00,00,75,75,75,75,0dh
 
ch4 db 75,75,75,75,75,75,75,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,75,00,00,00,75,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,75,75,75,75,0dh
 
ch5 db 75,75,75,00,00,00,75,75,75,75
    db 75,75,00,75,75,75,75,75,75,75
    db 75,75,00,75,75,75,75,75,75,75
    db 75,75,00,75,75,75,75,75,75,75
    db 75,75,75,00,00,00,75,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,00,00,00,75,75,75,75,0dh
 
ch6 db 75,75,75,00,00,00,75,75,75,75
    db 75,75,00,75,75,75,75,75,75,75
    db 75,75,00,75,75,75,75,75,75,75
    db 75,75,00,75,75,75,75,75,75,75
    db 75,75,75,00,00,00,75,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,75,00,00,00,75,75,75,75,0dh
 
ch7 db 75,75,75,00,00,00,75,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,75,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,75,75,75,75,0dh
 
ch8 db 75,75,75,00,00,00,75,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,75,00,00,00,75,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,75,00,00,00,75,75,75,75,0dh
 
ch9 db 75,75,75,00,00,00,75,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,00,75,75,75,00,75,75,75
    db 75,75,75,00,00,00,75,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,75,75,75,00,75,75,75
    db 75,75,75,00,00,00,75,75,75,75,0dh
 
efface  db 75,75,75,75,75,75,75,75,75,75
        db 75,75,75,75,75,75,75,75,75,75
 db 75,75,75,75,75,75,75,75,75,75
 db 75,75,75,75,75,75,75,75,75,75
 db 75,75,75,75,75,75,75,75,75,75
 db 75,75,75,75,75,75,75,75,75,75
 db 75,75,75,75,75,75,75,75,75,75
 db 75,75,75,75,75,75,75,75,75,75
 db 75,75,75,75,75,75,75,75,75,75
 db 75,75,75,75,75,75,75,75,75,75,0dh
 
diaise db 75,75,75,75,75,75,75,75,75,75
 db 75,75,75,00,75,75,00,75,75,75
 db 75,75,75,00,75,75,00,75,75,75
 db 75,00,00,75,00,00,75,00,00,75
 db 75,75,75,00,75,75,00,75,75,75
 db 75,75,75,00,75,75,00,75,75,75
 db 75,00,00,75,00,00,75,00,00,75
 db 75,75,75,00,75,75,00,75,75,75
 db 75,75,75,00,75,75,00,75,75,75
 db 75,75,75,75,75,75,75,75,75,75,0dh
 
negatif  db 0
overflow db 0
compteur db 0
val_zero db 0
operator db ?
caract  db ?
nombre_1 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
nombre_2 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
nombre_t db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
resultat db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 
calc ends
 
end deb


Message édité par get@fix le 09-05-2003 à 20:47:54

---------------
/dev/null
Reply

Marsh Posté le 13-07-2003 à 23:45:45    

C'est quand meme  :pt1cable:  
 
Un peu gros pour les 4 opérations élémentaires  :pt1cable:

Reply

Marsh Posté le 08-08-2003 à 11:09:40    

C'est pas si long que ça ... y'a déjà énormément de ligne pour savoir où est le curseur mais qui ne sont pas difficiles à comprendre... et puis j'ai utilsé des méthodes bien bourrin aussi ... y'avait largement moyen de faire diminuer le code ... Je voulais gérer les nombres flotant aussi mais par manque de temps j'en ai été incapable (faut dire que j'ai commencé le projet 1 semaine avant de la rendre, alors que je n'avais encore jamais fait de véritable programme en assembleur (jamais de lecture du clavier et ni d'affichage à l'écran même en mode texte) et que 3 jours avant de le rendre, comme mon code ne me plaisait pas j'ai décidé de tout effacer et de tout recommencer)...

Reply

Marsh Posté le 27-08-2003 à 01:42:52    

:sweat:  
de passage:
berk, c'est moche l'assembleur, je retourne au php

Reply

Marsh Posté le 27-08-2003 à 03:32:02    

et harkonnen qui m'invitais à fait un tuto d'assembleur, ca l'a pas l'air très sympa :D


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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