Accueil > > > NASM:CONVERT HEXA TO DECIMAL AVEC E/S
NASM:CONVERT HEXA TO DECIMAL AVEC E/S
Information sur la source
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
Sources de la même categorie
Commentaires et avis
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
|
Derniers Blogs
[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril CERTIFICATIONS BETA .NET 4CERTIFICATIONS BETA .NET 4 par KooKiz
Les inscriptions pour les certifications beta .NET 4 ont commencé. L'inscription est offerte pour les examens suivants : - 71-511, TS: Windows Applications Development with Microsoft .NET Framework 4 - 71-515, TS: Web Applications Development with...
Cliquez pour lire la suite de l'article par KooKiz [MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2[MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2 par redo
J'imagine que la plupart d'entre vous connaissent bien et utilisent le service de traduction de Google, mais connaissez-vous celui de Microsoft . Microsoft Translator ? Effectivement, Microsoft nous annoncé le lancement version 2 de la Technologie Preview...
Cliquez pour lire la suite de l'article par redo LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010!LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010! par MPOWARE
Toutes les vidéos de ce lancement sont en ligne!
Partie I - Intro
http://www.youtube.com/watch?v=LkQzTQ8T6CA
Partie II - Démo 1
http://www.youtube.com/watch?v=drAhYQ7lqvo
Partie III - Démo 2
http://www.youtube.com/watch?v=c8KM_1Gqybc...
Cliquez pour lire la suite de l'article par MPOWARE [WP7] JE NE VEUX PAS D'UN NOUVEL IPHONE[WP7] JE NE VEUX PAS D'UN NOUVEL IPHONE par FREMYCOMPANY
Je pense qu'ils ont besoin d'une piqure de rappel chez Microsoft : c'est bien gentil d'avoir une interface jolie, mais si c'est pour avoir un truc qui ne convainct pas dedans, c'est peine perdue.
---->
Système ouvert ----> Fermé ?
P...
Cliquez pour lire la suite de l'article par FREMYCOMPANY
Forum
RE : CSHARPRE : CSHARP par ghuysmans99
Cliquez pour lire la suite par ghuysmans99
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|