begin process at 2012 05 24 03:33:52
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Systeme

 > MPRINT4.ASM

MPRINT4.ASM


 Information sur la source

Note :
Aucune note
Catégorie :Systeme Classé sous :Mmprint, texte, mémoire Niveau :Initié Date de création :29/11/2010 Vu / téléchargé :1 241 / 24

Auteur : gedeon26

Ecrire un message privé
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Routine d affichage en mode texte accer directe a la mémoire
routine pour ODO vectra OS 32b                                                                                                                                                                                                                                                                       .

Source

  • ; Procedure mprint 4.00 (c)Usils and Laruse software 160208 for OS: ODO vectra RMIS (r)2010
  • ; Entrée :ax=service (?)
  • ; :ch=mode (0=mono / 1=couleur) - cl=attribut(couleur)
  • ; :bh=colone(x) - bl=ligne(y)
  • ; :ds:dx=adresse du texte a afficher
  • ; Sortie :aucune
  • ; r.s :cf,ax,bx,cx,dx,si,ds,es
  • ; Flag :-
  • Mprint proc
  • push ax
  • push bx
  • push cx
  • push dx
  • push si
  • push fs
  • Cli
  • mov si,dx
  • xor ax,ax
  • cmp bh,1 ; bh>0 x=x-1
  • jb short ml1
  • dec bh
  • ml1: cmp bl,1 ; bl>0 y=y-1
  • jb short ml2
  • dec bl
  • ml2: or ah,0b0h ; memoire mono b000
  • and ch,3 ; mode 0,1,2
  • or ch,ch ; ch=0 mode mono
  • jz short mono
  • or ah,08h ; couleur memoire b800
  • mono: mov fs,ax
  • calcul: xor ax,ax
  • or al,bl ; variable multiplicateur bl(y[ligne])
  • mov dx,160 ; y>0 y=y*160 (80x2)
  • mul dx
  • mov dx,ax
  • xor ax,ax
  • or al,bh
  • shl ax,1 ; x=x*2
  • add ax,dx ; ofs=((y*160)+(x*2))
  • mov di,ax
  • Rchar: mov al,ds:[si] ; al=char
  • c0: or al,al
  • jz short mfin ; si char=0 fin
  • c1: cmp al,1
  • jne short c2
  • xor bh,bh ; comme char(13) Cr x=1 y=1+160
  • inc bl
  • inc si
  • jmp short calcul
  • c2: cmp al,2
  • jne short c3
  • inc si
  • mov cl,ds:[si] ; change atribut couleur
  • inc si
  • mov al,ds:[si]
  • jmp short cf
  • c3: cmp al,3 ; repet char
  • jne short c4
  • push ax
  • push cx
  • xor ch,ch
  • inc si
  • mov cl,ds:[si] ; nombre de repetision
  • inc si
  • mov ax,ds:[si] ; char a repeter+couleur
  • cpi: mov fs:[di],ax ; affiche char+attribut
  • add di,2
  • loop short cpi ; cl=cl-1 if cl>0 loop
  • inc si
  • inc si
  • pop cx
  • pop ax
  • jmp short Rchar
  • c4: cmp al,4
  • jne short c5
  • inc si
  • mov bx,ds:[si]
  • xchg bh,bl
  • add si,2
  • jmp short calcul
  • c5:
  • cf: mov fs:[di],al ; print char
  • inc di ; attribut
  • mov fs:[di],cl ; print couleur
  • inc di
  • inc si ; ofs char +1
  • jmp short Rchar ; on recomence
  • mfin: Sti
  • pop fs
  • pop si
  • pop dx
  • pop cx
  • pop bx
  • pop ax
  • ret
  • Mprint endP
; Procedure mprint  4.00 (c)Usils and Laruse software 160208 for OS: ODO vectra RMIS (r)2010
; Entrée    :ax=service (?)
;           :ch=mode (0=mono / 1=couleur) - cl=attribut(couleur)
;           :bh=colone(x) - bl=ligne(y)
;           :ds:dx=adresse du texte a afficher
; Sortie    :aucune
; r.s       :cf,ax,bx,cx,dx,si,ds,es
; Flag      :-
Mprint     proc  
            push ax
            push bx
            push cx
            push dx
            push si
            push fs
	 Cli
            mov si,dx
            xor ax,ax
            cmp bh,1             ; bh>0 x=x-1
            jb short ml1
            dec bh
 ml1:       cmp bl,1             ; bl>0 y=y-1
            jb short ml2
            dec bl
 ml2:       or ah,0b0h           ; memoire mono b000
            and ch,3             ; mode 0,1,2
            or ch,ch             ; ch=0 mode mono
            jz short mono
            or ah,08h            ; couleur memoire b800
 mono:      mov fs,ax
 calcul:    xor ax,ax
            or al,bl             ; variable multiplicateur bl(y[ligne])
            mov dx,160           ; y>0 y=y*160 (80x2)
            mul dx
            mov dx,ax
            xor ax,ax
            or al,bh
            shl ax,1             ; x=x*2
            add ax,dx            ; ofs=((y*160)+(x*2))
            mov di,ax
 Rchar:     mov al,ds:[si]       ; al=char
 c0:        or al,al
            jz short mfin        ; si char=0 fin
 c1:        cmp al,1
            jne short c2
            xor bh,bh            ; comme char(13) Cr x=1 y=1+160
            inc bl
            inc si
            jmp short calcul
 c2:        cmp al,2
            jne short c3
            inc si
            mov cl,ds:[si]       ; change atribut couleur
            inc si
            mov al,ds:[si]
            jmp short cf
 c3:        cmp al,3             ; repet char
            jne short c4
            push ax
            push cx
            xor ch,ch
            inc si
            mov cl,ds:[si]       ; nombre de repetision
            inc si
            mov ax,ds:[si]       ; char a repeter+couleur
 cpi:       mov fs:[di],ax       ; affiche char+attribut
            add di,2
            loop short cpi       ; cl=cl-1 if cl>0 loop
            inc si
            inc si
            pop cx
            pop ax
            jmp short Rchar
 c4:        cmp al,4
            jne short c5
            inc si
            mov bx,ds:[si]
            xchg bh,bl
            add si,2
            jmp short calcul
 c5:
 cf:        mov fs:[di],al       ; print char
            inc di               ; attribut
            mov fs:[di],cl       ; print couleur
            inc di
            inc si               ; ofs char +1
            jmp short Rchar      ; on recomence
 mfin:   Sti  
	    pop fs
            pop si
            pop dx
            pop cx
            pop bx
            pop ax
            ret
Mprint     endP

 Conclusion

Heu !!!!

bonne utilisation...
Ruze/
contacte ruse2011@gmx.com

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec une capture COMPTEUR DE TEMPS par parki
PROGRAMME.ASM par aminadaou
AMMORCE.ASM par aminadaou
Source avec Zip LES INTERRUPTIONS SANS LES INT par wqaxs36
Source avec Zip BOOTLOADER & KERNEL EN ASM 64 BITS par wqaxs36

 Sources en rapport avec celle ci

EDITEUR DE TEXTE SIMPLE (SANS MODIFICATION DU TEXTE) par izel
ECRIRE EN COULEUR AVEC TASM par cheoles

Commentaires et avis

Commentaire de ghuysmans99 le 29/11/2010 17:38:36

Pas du 32 ni du "vrai" 16 bits : dans ce dernier mode de fonctionnement, seulement 4 registres de segment dont 2 potentiellement utilisables : CS,DS,ES,SS.

Commentaire de patatalo le 30/11/2010 20:57:42 administrateur CS

salut,


Et puis comme le programme suppose, ça va faire une belle magouille sur du 50*25.

Un petit include pour definir les paramètres ne serait pas si excessif non plus.

@++

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

faire un dump mémoire en asm [ par olly60 ] comment peut on faire un dump mémoire en assembleur?? je bloque dessus étant débutant dans ce language!! j'ai seulement besoin de l'algo svpmerci convertir un fichier ascci en fichier texte afin de pouvoir imprimer corectemen sur une imprimante laser [ par kamie ] KamieBonjour à tous,j'ai un petit problème et je ne sais pas comment faire.j'ai un fichier qui est de format ascii.lorsque nous imprimons ce fichier s Pas belle police de texte ! Ouinnn ! [ par Bombela ] Salut !Je fais de la prog Windows en C++ et Asm depuis peux et les progs que je fais, que ça soit en C++ ou Asm, on une police toute grasse et pas bel besoin d'aide pour de l'assembleur sous simulateur [ par critchou ] Bonjour, j'ai un programme à faire pour mercredi et je ne sais pas trop comment faire.Je dois écrire un texte (jusque là, ça va) et compter le nombre Adresse mémoire d'une chaine [ par moffer ] Bonjour,Je veux pointer sur le premier caractère de ma chaine. Lorsque je compile le code suivant :SEGMENT DATAchaine db 'Hello$'SEGMENT TEX COULEUR DE TEXTE LORS DU PASSAGE DE LA SOURIS [ par knetus12 ] salut a tousj'ai un probleme pour faire changer la couleur d'un texte quand la souris passe dessus ca na marche pas pourquoi ??? .ELSEIF uMsg == algorithme huffman [ par yannenater ] salut,je voulais savoir si qqun pouvait m'aider pour trouver comment coder en ASM 68000 l'algo de huffman pour compresser un petit texte. le tout débu Erreur bizzar [ par Vermifuge ] J'ai programmé une DLL de gestion mémoire sous windows, et j'ai un problème vraiment étrange. Lorsque j'allou de la mémoire ça marche, sauf à un momen Affichage texte (Debutant) [ par ffomnislash ] BonjourJe debute en assembleur et je voudrais pouvoir afficher du texte en boucle, ceci j'y arrive sans pb mais le texte se rajouteAutrement dit j'ai texte défilant de gauche à droite [ par julemi ] Pouvez-vous m'envoyer le code source d'un programme qui fait défiler un texte de gauche à droite en language assembleur ...Merci


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,108 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales