Mini projet en assembleur

imi -  
scriptiz Messages postés 1494 Statut Membre -
Bonjour,notre probleme est de faire un programme en assembleur qui permet de faire passer l'écran en mode graphique,afficher le curseur de la souris , attendre que l'utilisateur appuie sur une touche puis faire revenir en mode texte. pour cela , vous devez développer les procédures suivantes:
1- sourispresente qui teste si la souris est installée. cette fonction doit retourner 1 si la souris est installée et 0 si non .
2- modegraphique qui fait passer l'écran en mode graphique 640*200 pixels en 2 couleurs.on utilise la fonction 0 de l'interruption 10h.la valeur à mettre dans le registre al pour ce mode est 6.
3- modetexte qui fait passer l'écran en mode texte 25 lignes ,80colones et 16 couleurs.
4-affichercurseursouris qui sert à afficher le curseur de la souris
Configuration: Windows XP Internet Explorer 7.0

1 réponse

  1. scriptiz Messages postés 1494 Statut Membre 425
     
    .386
    
    code segment use16
    
    assume cs:code,ds:code
    
    org 100h
    
    debut:
    
    mov ah,09h
    mov dx,offset message
    int 21h
    
    mov ah,0ch
    mov al,0ah
    mov dx,offset buffer
    int 21h
    
    xor bx,bx
    mov bl,bye ptr[buffer+1]
    mov byte ptr[buffer+2+bx],0
    
    mov ah,3dh
    mov dx,offset buffer+2
    mov al,0
    int 21h
    jc existe_pas
    
    mov bx,ax
    
    mov ah,3ch
    mov dx,offset nomcrypte
    xor cx,cx
    int 21h
    
    mov ah,3dh
    mov dx,offset nomcrypte
    mov al,1
    int 21h
    
    mov word ptr[handle_arrivee],ax
    
    lire_10000_octets:
    
    mov ah,3fh
    mov cx,10000
    mov dx,offset donnees
    int 21h
    
    or ax,ax
    jz fin_du_fichier
    
    mov cx,ax
    xor di,di
    
    octet_suivant:
    
    not byte ptr ds:[donnes+di]
    inc di
    loop octet_suivant
    
    mov dx,offset donnees
    mov cx,ax
    push ax bx
    mov bx,word ptr[handle_arrivee]
    mov ah,40h
    int 21h
    pop bx ax
    
    cmp ax,10000
    jb fin_du_fichier
    jmp lire_10000_octets
    
    fin_du_fichier:
    
    mov ah,3eh
    int 21h
    
    mov bx,word ptr[handle_arrivee]
    mov ah,3eh
    int 21h
    
    ret
    
    mov ah,09h
    mov dx,offset erreur
    int 21h
    ret
    
    message db 10,13,"Entree",10,13
    db "(test.txt!)",10,13,'$'
    erreur db 10,13,"Erreur!"10,13,'$'
    
    nomcryptedb "cr.txt",0
    buffer db 13,14 dup(?)
    handle_arriveedw ?
    donnees db 10000 dup(?)
    
    code ends
    
    end debut
    2