gctom
Messages postés9Date d'inscriptionvendredi 5 décembre 2003StatutMembreDernière intervention27 mars 2004
-
10 mars 2004 à 08:07
gctom
Messages postés9Date d'inscriptionvendredi 5 décembre 2003StatutMembreDernière intervention27 mars 2004
-
13 mars 2004 à 11:39
je vous expose mon problème : j'ai quelque difficultés avec l'assembleur malgré les livres et cours que j'ai suivi, je n'arrive pas a faire 2 petit programme :
- l'un qui permet de faire une addition et une multiplication entre 2 nombres et d'afficher le résultat
- l'autre qui permet la réalisation d'une horloge qui affiche l'heure et la date pendant une durée indéterminée. le programme doit s'accompagner d'une réalisation graphique qui permet d'afficher une image ou plusieurs.
SVP aidez-moi car je n'arrive a faire aucun de ces 2 programme.
merci
si vous avez des conseils a me donner : [mailto: gctom@caramail.com] merci
main: ;affichage du 1er message
;------------------------
mov bx,0001h
lea dx,message1
mov cx,l_message1
mov ah,40h
int 21h
;saisie du 1er nombre
;--------------------
lea dx, N1
mov ah,0ah
int 21h
;affichage du 2e message
;-----------------------
mov bx,0001h
lea dx,message2
mov cx,l_message2
mov ah,40h
int 21h
;saisie du 2e nombre
;-------------------
lea dx, N2
mov ah,0ah
int 21h
;conversion en decimal etendu des chiffres des 2 nombres
;-------------------------------------------------------
mov ax, 0000111100001111b
and word ptr N1+2,ax
and word ptr N1+4,ax
and word ptr N2+2,ax
and word ptr N2+4,ax
;affichage du menu
;-----------------
mov bx,0001h
lea dx,messagemenu
mov cx,l_messagemenu
mov ah,40h
int 21h
mov bx,0001h
lea dx,choix1
mov cx,l_choix1
mov ah,40h
int 21h
mov bx,0001h
lea dx,choix2
mov cx,l_choix2
mov ah,40h
int 21h
;conversion du resultat pour l'affichage
;---------------------------------------
convers:
mov al, 00110000b
or byte ptr Res1+6,al
or byte ptr Res1+5,al
or byte ptr Res1+4,al
or byte ptr Res1+3,al
or byte ptr Res1+2,al
mov dl,0ah
int 21h
je resultat
resultat:
;affichage du 3e message
;-----------------------
mov bx,0001h
lea dx,message3
mov cx,l_message3
mov ah,40h
int 21h
;affichage du resultat de l'addition
;-----------------------------------
lea dx, Res1+2
mov cx,5
mov ah,40h
int 21h
je fin
;affichage du 4e message
;-----------------------
mov bx,0001h
lea dx,message4
mov cx,l_message4
mov ah,40h
int 21h
;multiplication de N1 et N2
;--------------------------
multiplication:
;affichage du resultat de la multiplication
;------------------------------------------
;fin de programme
;----------------
fin:
mov ah,4ch
int 21h
;-------------------------------------------
; declaration des messages
;-------------------------------------------
messagemenu db "faites votre choix :", 0dh, 0ah
l_messagemenu equ $-messagemenu
choix1 db "1-addition (par d‚faut):", 0dh, 0ah
l_choix1 equ $-choix1
choix2 db "2-multiplication", 0dh, 0ah
l_choix2 equ $-choix2
message1 db "Saisir le 1er nombres (Maximum 4 chiffres):", 0dh, 0ah
l_message1 equ $-message1
message2 db 0dh, 0ah, "Saisir le 2e nombres (Maximum 4 chiffres):", 0dh, 0ah
l_message2 equ $-message2
message3 db 0dh, 0ah, "Le resultat de l'addition est:", 0dh, 0ah
l_message3 equ $-message3
message4 db 0dh, 0ah, "Le resultat de la multiplication est:", 0dh, 0ah
l_message4 equ $-message4
;-------------------------------------------
; declaration des variables
;-------------------------------------------
N1 db 5,?,5 dup(?)
N2 db 5,?,5 dup(?)
Res1 db 6,?,6 dup(?)
choix db 2,1,?
cseg ends
end main
---------------------------------
voila si vous pouvez m'aider ca serait génial parce que la je galère bcp trop. merci
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 20142 12 mars 2004 à 15:58
salut,
la fonction 40h de l'interruption 21h du DOS sert a ecrire dans un fichier.
pour sortie a l'ecran, essaie plutot la fonction 09h
!!! le caractere de terminaison doit etre '$' je crois.
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 20142 12 mars 2004 à 16:44
re,
convers:
mov al, 00110000b
or byte ptr Res1+6,al
or byte ptr Res1+5,al
or byte ptr Res1+4,al
or byte ptr Res1+3,al
or byte ptr Res1+2,al
mov dl,0ah <- mov ah,0ah ira mieux ici
int 21h
je resultat
resultat:
relit ton code car il y a des petites erreurs d'inattention sinon, tu est presque au bout du premier exo.
gctom
Messages postés9Date d'inscriptionvendredi 5 décembre 2003StatutMembreDernière intervention27 mars 2004 12 mars 2004 à 21:29
ben j'espère que j'ai bientot fini paske c pas évuident l'assembleur.
je galère a mort (j'ai eu a peu près une dizaine d'heure de cours et puis quelques heure de programmation)
mais j'ai trouvé ca relativement insuffisant. surtout pour réaliser une horloge !
et pour le mov al,0
ben avec un amis on a trouvé qu'en mettant ca, le résultat était de la bonne forme. enfin pour le moment on est très content de ca. par exemple en faisant 1211 + 4545 on obtient 05756 alors ke sans on obtient autre chose a la place du zéro.
mais je ne sais pas si cela est du a la partie ke l'on a rajouté.