begin process at 2010 03 18 06:23:16
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Applications ms-dos

 > NASM:CONVERT HEXA TO DECIMAL AVEC E/S

NASM:CONVERT HEXA TO DECIMAL AVEC E/S


 Information sur la source

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Applications ms-dos Classé sous :nasm, hexa, décimal, hexadécimal Niveau :Débutant Date de création :22/11/2004 Vu / téléchargé :7 109 / 226

Auteur : Griech

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

 Description

Conversion de valeur hexa en valeur décimal avec entrée sur clavier et affichage à l'écran avec des petits contrôles en plus.

Source

  • ;NASM-IDE ASM Assistant Assembler Project File
  • BITS 16 ;Set code generation to 16 bit mode
  • ORG 0x0100 ;Set code start address to 0100h
  • SEGMENT .text
  • ;;;;;;;;;;;;;;;;;;;;;;
  • ;Entr‚e clavier
  • ;Input Data from keyboard
  • ;*****************;;;;;
  • labbg:
  • push labbeg
  • push len_labbeg ;;;;; Affichage titre a l'‚cran
  • call Pint0921h
  • begin:
  • push zon0h
  • push len_zon0h ;;;;; Affichage message a l'‚cran
  • call Pint0921h
  • lop0:
  • mov al,0ch ;;;;; Keybord buff‚ris‚
  • mov dx,buf1
  • mov ah,0ah
  • int 0x21
  • cmp byte [buf1+1],8
  • jbe st00
  • mov al,07h ;;; byte bell
  • mov ah,0eh
  • int 10h
  • mov cl,[buf1+1]
  • mov bh,0 ;;;; Traitement cas > 8 bytes
  • mov al,' '
  • mov ah,0Ah
  • int 10h
  • jmp lop0
  • st00:
  • xor ecx,ecx
  • mov cl,[buf1+1]
  • xor si,si
  • mov bx,buf1+2
  • des1:
  • mov al,[bx]
  • mov byte [bufzs+si],al
  • cmp cl,1
  • je Ctldata0
  • inc si
  • inc bx
  • loop des1
  • Ctldata0:
  • xor ecx,ecx
  • mov cl,[buf1+1]
  • xor esi,esi
  • xor edi,edi
  • xor eax,eax
  • Ctldata1:
  • push cx
  • mov al,[bufzs+si]
  • mov cx,lent_nmbhc
  • mov di,nmbhc
  • repne scasb
  • pop cx
  • je stt0
  • jmp eror
  • stt0:
  • mov bp,di
  • sub bp,nmbhc
  • dec bp
  • cmp bp,15
  • jbe stt1
  • mov bl,[nmbhc+bp-6]
  • mov byte [bufzs+si],bl
  • stt1:
  • inc si
  • loop Ctldata1
  • jmp sut0 ;;;;traitement minuscule (lowcase)
  • eror:
  • push lab_err
  • push lent_lab_err
  • call Pint0921h ;;;;;;error not Hexa
  • jmp begin
  • sut0:
  • xor cx,cx
  • mov cl,[buf1+1]
  • push bufzs
  • push bufz
  • push cx
  • call movbyte
  • ;;;;;;;;;
  • ;*****************
  • xor eax,eax
  • Valh:
  • xor ecx,ecx
  • xor si, si
  • mov cl,[buf1+1]
  • xor ebx,ebx
  • sub cl,1
  • jz onee
  • bcl00:
  • xor eax,eax
  • mov al,[bufz+si]
  • cmp al,'A'
  • jnb Ablp1
  • sub al,'0'
  • jmp Ablp2
  • Ablp1:
  • sub al,'A' ;;convert ascii to hex
  • add al,10
  • Ablp2:
  • add ebx,eax
  • shl ebx,4
  • inc si
  • loop bcl00
  • onee:
  • xor eax,eax
  • mov al,[bufz+si]
  • cmp al,'A'
  • jnb Ablp21
  • sub al,'0'
  • jmp Ablp22
  • Ablp21:
  • sub al,'A'
  • add al,10
  • Ablp22:
  • add ebx,eax
  • ;;;;;;;;;;;;;;;;;;;;;;;;
  • ;;;;;Affichage en d‚cimal
  • ;;::::::::::::::::::::::::
  • mov eax,ebx
  • ;;;;;;;;;;;;;;;;;;
  • xor esi,esi
  • xor edi,edi
  • xor ecx,ecx
  • mov ebx,10
  • xor ecx,ecx
  • mov ecx,1
  • mov si,0
  • xor edx,edx
  • Lop1:
  • xor edx,edx
  • div ebx ;;convert en decimal
  • cmp eax,ebx
  • jb par10
  • add dl,'0'
  • mov [affdec+si], dl
  • inc ecx
  • inc si
  • jmp Lop1
  • par10:
  • add dl,'0'
  • mov [affdec+si], dl
  • inc si
  • inc ecx
  • add al,'0'
  • mov [affdec+si], al
  • par11:
  • push zon0
  • push len_zon0
  • call Pint0921h
  • ;;;;;;;;;;;;
  • xor ax,ax
  • xor dx,dx
  • xor di,di
  • mov ax,cx
  • mov bx,3
  • mov byte [flg],0
  • div bx
  • ;;;;;;;
  • par12:
  • mov al,[affdec+si]
  • mov ah,0eh
  • int 10h
  • dec si
  • inc di
  • cmp byte [flg],1
  • je st12
  • cmp di,dx
  • je frmt
  • st12:
  • cmp di,3
  • jne lop12
  • frmt:
  • mov al,' '
  • mov ah,0eh
  • int 10h
  • mov byte [flg],1
  • xor di,di ;;;;;format output 9 999 999
  • lop12:
  • loop par12
  • ;;;;;;;;;;;;;;;;
  • call Crlf
  • jmp begin
  • %include "utilit.asm"
  • %include "interup.asm"
  • %include "crlf.asm"
  • SEGMENT .dat
  • lab_err db 'Err0 : Not Hexa number'
  • mem1 db '$'
  • nmbhc db '0123456789ABCDEFabcdef'
  • zon0 db '-- Decimal value : '
  • mem3 db '$'
  • zon0h db '-- Enter Hex value (Ctrl+C Exit) : '
  • mem4 db '$'
  • flg db 0
  • mem5 db '$'
  • len_zon0 equ $-zon0
  • len_zon0h equ $-zon0h
  • lent_lab_err equ $-lab_err
  • lent_nmbhc equ 22
  • labbeg db '***** Convert Hex to decimal',0ah,0dh
  • db '***** Version 11.2004 ********',0ah,0dh
  • db 'e-mail:GriechMoloud@yahoo.fr ',0ah,0dh
  • db '_____________________________$',0ah,0dh
  • len_labbeg equ $-labbeg
  • SEGMENT .bss ;Uninitialised data segment
  • affdec resb 15
  • buf1 resb 15
  • bufzs resb 15
  • bufz resb 10
	           	;NASM-IDE ASM Assistant Assembler Project File
BITS 16			;Set code generation to 16 bit mode
ORG 0x0100		;Set code start address to 0100h
SEGMENT .text
;;;;;;;;;;;;;;;;;;;;;;
;Entr‚e clavier
;Input Data from keyboard
;*****************;;;;;
labbg:
       push  labbeg
       push len_labbeg        ;;;;; Affichage titre a l'‚cran
       call Pint0921h
begin:
       push  zon0h
       push len_zon0h        ;;;;; Affichage message a l'‚cran
       call Pint0921h
lop0:
	mov al,0ch           ;;;;; Keybord buff‚ris‚
	mov dx,buf1
	mov ah,0ah
	int 0x21
	cmp byte [buf1+1],8
	jbe st00
	mov al,07h               ;;; byte  bell
	mov ah,0eh
	int 10h
	mov cl,[buf1+1]
        mov bh,0                ;;;; Traitement cas > 8 bytes
        mov al,' '
	mov ah,0Ah
	int 10h
	jmp lop0
st00:
        xor ecx,ecx
	mov cl,[buf1+1]
	xor si,si
	mov bx,buf1+2
des1:
                mov al,[bx]
		mov byte [bufzs+si],al
		cmp cl,1
		je Ctldata0
		inc  si
		inc bx
         	loop des1

Ctldata0:
     xor ecx,ecx        	
     mov cl,[buf1+1]
     xor esi,esi
     xor edi,edi
     xor eax,eax
Ctldata1:
       push cx
       mov  al,[bufzs+si]
       mov cx,lent_nmbhc
       mov  di,nmbhc

       repne scasb
         pop cx
      je stt0
     jmp eror
stt0:

         mov bp,di
         sub bp,nmbhc
         dec bp
         cmp bp,15
         jbe stt1
         mov  bl,[nmbhc+bp-6]
         mov byte [bufzs+si],bl
stt1:
        inc si
       loop Ctldata1
        jmp  sut0                      ;;;;traitement minuscule (lowcase)
eror:
    push lab_err
    push lent_lab_err
    call Pint0921h                     ;;;;;;error not Hexa
    jmp begin
sut0:

    xor cx,cx
    mov cl,[buf1+1]
          push bufzs
          push bufz
          push cx
          call movbyte
   ;;;;;;;;;

;*****************
	xor eax,eax

Valh:


           xor ecx,ecx
           xor si, si
	mov cl,[buf1+1]
	xor ebx,ebx

         sub cl,1
        jz onee

bcl00:
         xor eax,eax
         mov   al,[bufz+si]
         cmp al,'A'
         jnb Ablp1
         sub al,'0'
         jmp Ablp2
Ablp1:
         sub al,'A'                    ;;convert ascii to hex
         add al,10
Ablp2:


         add ebx,eax
         shl ebx,4
         inc si
         loop bcl00
onee:
         xor eax,eax
         mov al,[bufz+si]
        cmp al,'A'
         jnb Ablp21
         sub al,'0'
         jmp Ablp22
Ablp21:
         sub al,'A'
         add al,10
Ablp22:

        add  ebx,eax

;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;Affichage en d‚cimal
;;::::::::::::::::::::::::
    mov eax,ebx
;;;;;;;;;;;;;;;;;;

    xor esi,esi
    xor edi,edi
    xor ecx,ecx
    mov ebx,10
    xor ecx,ecx
    mov ecx,1
    mov si,0
    xor edx,edx
Lop1:
    xor edx,edx
    div ebx                            ;;convert en decimal
    cmp eax,ebx
    jb par10
   add dl,'0'
   mov  [affdec+si], dl
     inc ecx
    inc si
     jmp Lop1
par10:
    add dl,'0'
    mov  [affdec+si], dl
    inc si
    inc ecx
    add al,'0'
    mov  [affdec+si], al
par11:
    push  zon0
    push len_zon0
    call Pint0921h
;;;;;;;;;;;;
xor ax,ax
xor dx,dx
xor di,di
mov ax,cx
mov bx,3
mov byte [flg],0
div bx

;;;;;;;
par12:
    mov al,[affdec+si]
    mov ah,0eh
    int 10h
    dec si
    inc di
     cmp byte [flg],1
    je st12
    cmp di,dx
    je frmt
st12:
     cmp di,3
    jne lop12


frmt:
    mov al,' '
    mov ah,0eh
    int 10h
    mov byte [flg],1
    xor di,di                     ;;;;;format output 9 999 999
lop12:
  loop par12


;;;;;;;;;;;;;;;;
call Crlf
jmp begin

%include "utilit.asm"
%include "interup.asm"
%include "crlf.asm"
SEGMENT .dat
lab_err db 'Err0 : Not Hexa number'
mem1 db '$' 	
nmbhc db   '0123456789ABCDEFabcdef'
zon0   db '-- Decimal value : '
mem3 db '$'
zon0h   db  '-- Enter Hex value (Ctrl+C Exit) : '
mem4 db '$'
flg  db  0
mem5 db '$'
len_zon0 equ $-zon0
len_zon0h equ $-zon0h
lent_lab_err equ $-lab_err
lent_nmbhc equ 22
labbeg db '***** Convert Hex  to  decimal',0ah,0dh
db        '***** Version 11.2004 ********',0ah,0dh
db        'e-mail:GriechMoloud@yahoo.fr ',0ah,0dh
db        '_____________________________$',0ah,0dh
len_labbeg equ $-labbeg
SEGMENT .bss		;Uninitialised data segment
affdec resb 15
buf1   resb 15
bufzs  resb 15
bufz  resb 10



 Conclusion

j'attend vos remarques et suggestions

 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 LECTURE CHAINE ET COMPARAISON[MASM] par w4kfu
Source avec une capture LECTURE TOUCHE CLAVIER[MASM] par w4kfu
Source avec Zip UN RESOLVEUR SUDUKO AVEC ASSEMBLEUR NASM par msavyo1
Source avec Zip TESTEUR DE COMPATIBILITTÉ VESA (SUPER VGA) par bofur
Source avec Zip COMMUNICATION SÉRIE RS232 AVEC INTERRUPTIONS par bouffa

 Sources en rapport avec celle ci

BIBLIOTHEQUE POUR LE 8086 par flory_
Source avec Zip [LINUX] LIRE CLAVIER ET ECRIRE CONSOLE par sheorogath
Source avec Zip CRÉATION DE DIFFÉRENTS EXÉCUTABLES AVEC NASM ET ALINK par Nasman

Commentaires et avis

Commentaire de HwW_Mb le 22/11/2004 14:03:43

Salut
Bon Programme ! mais essaye de faire une conversion /hexa => binaire/ c peut être plus dur ?

Bon COURAGE et bonne programmation !
@+

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Coversions [ par Gandalfthewhite ] salut à tous et toutes, je débute en programmation assembleur et on me demande différentes conversions: - caractère --> décimal (ex: A -->65)- d Conversions (clarifications) [ par Gandalfthewhite ] salut à tous et toutes, je débute en programmation assembleur et on me demande un programme qui effectue différentes conversions avec procédures et pa NASM VESA ET DOS [ par Ludolpif ] Bonjour, et merci d'avance à ceux qui prennent la peine de lire ce message !J'aimerai créer 1 petit programme en ASM permettant sous dos de faire quel Newbee needs help !! ->pb de choix [ par ddevnull ] Je suis dans la phase de choix de l'assembleur que je vais utiliser et j'hésite énormément entre nasm,tasm et masm.d'un point de vue performances il p SEGMENT SOUS NASM [ par Berty2000 ] Salut.je debute l'assembleur.Dans un prog EXE,comment recuperer la valeur du segment data dans lequelse trouve mot.pour l'offset, il suffit de faire m interruption clavier nasm [ par escobales ] Bonjour,Je n'arrive pas à appeler l'interrruption clavier avec nasmj'ai ecrit un programme en C mais j'ai besoin d'utiliser le clavier pendant que le convertion chaine hexa en decimal [ par mousse85 ] Quelqu'un pourrai m'aider ? Il me faudrai un morceau de code qui me permettrai de convertir une chaine Hexadecimal, se trouvant dans une variable de t Problème avec le org sous nasm [ par dodo76 ] je développe un prog sous nasm pour le mettre ensuite dans une eprom. Je veux que le programme commence à l'adresse 0XFFF0. En début de prog, je mets prgam deimal-hexa [ par nico6736 ] Salut a tous.Je cherche des exemples simple de programation en assemleur 8086.Jai dehja realiser qq exemples styles mul de 2 nomùbres superieu a 99. e Nasm [ par lulu42 ] J'utilise nasm, et je suis en train de travailler sur un petit systeme d'exploitation.Pour me faciliter la tâche j'ai envie d'utiliser les macros.Pouv


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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 : 0,546 sec (4)

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