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
[FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLETECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLE par ROMELARD Fabrice
Speakers: Julien Marechal, Gautier Confiant, Sébastien MEYER La session débute par le positionnement de la solution System Center par rapport aux concepts d'organisation ITIL. Le portail du catalogue de se...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE SECOND JOURTECHDAYS PARIS 2012 : PLEINIèRE SECOND JOUR par ROMELARD Fabrice
Après une première journée dédiée aux développeurs, cette seconde journée est dédiée au monde des entreprises et de ses applications. Ainsi, cette pleinière est dédiée à faire un 360 de l'évolution des applications Business aux demandes ac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|