Accueil > > > NASM 32 - CONVERSION HEXA / DÉCIMAL => DIVISION (32 BITS) PAR 10
NASM 32 - CONVERSION HEXA / DÉCIMAL => DIVISION (32 BITS) PAR 10
Information sur la source
Description
La conversion héxa => décimal s'effectue par divisions successives par 10. Prenons l'exemple de la conversion de 255 (0xFF) : 255 / 10 = 25 dans eax + 5 dans edx 25/10 = 2 dans eax + 5 dans edx. Il faut donc afficher dans l'ordre : - le dernier quotient (<10) : 2 - le second reste : 5 - le premier reste : 5 Il y a probablement + simple. Toute suggestion sera la bienvenue. Rappel : compilation sous NASM : nasm -f bin file.asm -o file.exe
Source
- [ORG 0x0100]
-
- [SEGMENT .data]
- decimal db '0123456789'
-
- [SEGMENT .text]
- call vga_mode
- mov eax,0xFF
- call write_eax
- call end
-
- vga_mode: ; cls sur la console
- mov al,00h
- int 10h
- ret
-
- write_eax:
- push eax ; On pousse les valeurs des registres utilisés
- push ebx ; sur la pile afin de pouvoir les restaurer
- push ecx ; après calcul.
- push edx
- push si
- mov ebx,0x0A ; Diviseur dans ebx : ici division par 10.
- xor ecx,ecx ; On met ecx à 0.
- label1:
- xor edx,edx ; On met edx à 0.
- div ebx ; Division de eax par ebx.
- ; Lors d'une division avec registres
- ; de 32 bits,le quotient est placé
- ; dans eax, le reste dans edx.
- push dx ; On pousse le reste sur la pile :
-
- inc ecx ; Incrémentation de ecx pour connaître
- ; le nombre de valeurs à récupérer sur la pile
- ; lors de l'affichage du résultat de la
- ; division en décimal
- cmp eax,ebx ; Comparaison eax avec ebx :
- jg label1 ; si > on recommence
- ; sinon, la division est terminée
- push ax ; On pousse ax contenant le premier terme du résultat.
- label2: ; boucle pour affichage
- pop si ; on récupère la valeur à afficher dans si
- add si,decimal ; on l'additionne à l'offset de la chaîne décimal
- ; pour obtenir l'offset du caractère à afficher.
- mov al,[ds:si] ; On place la valeur à afficher dans al.
- mov ah,0x0E ; fonction 0x0E interruption 10h pour affichage de al.
- int 10h
- dec ecx
- cmp ecx,0x00 ; On recommence jusqu'au second caractère.
- jne label2
- pop si ; Idem : affichage du premier caractère.
- add si,decimal
- mov al,[ds:si]
- mov ah,0x0E
- int 10h
- pop si
- pop edx ; On restaure les registres avec leur valeur initiale.
- pop ecx
- pop ebx
- pop eax
- ret
-
- end: ; Fin correcte du programme.
- mov ax,0x4C00
- int 21h
- ret
[ORG 0x0100]
[SEGMENT .data]
decimal db '0123456789'
[SEGMENT .text]
call vga_mode
mov eax,0xFF
call write_eax
call end
vga_mode: ; cls sur la console
mov al,00h
int 10h
ret
write_eax:
push eax ; On pousse les valeurs des registres utilisés
push ebx ; sur la pile afin de pouvoir les restaurer
push ecx ; après calcul.
push edx
push si
mov ebx,0x0A ; Diviseur dans ebx : ici division par 10.
xor ecx,ecx ; On met ecx à 0.
label1:
xor edx,edx ; On met edx à 0.
div ebx ; Division de eax par ebx.
; Lors d'une division avec registres
; de 32 bits,le quotient est placé
; dans eax, le reste dans edx.
push dx ; On pousse le reste sur la pile :
inc ecx ; Incrémentation de ecx pour connaître
; le nombre de valeurs à récupérer sur la pile
; lors de l'affichage du résultat de la
; division en décimal
cmp eax,ebx ; Comparaison eax avec ebx :
jg label1 ; si > on recommence
; sinon, la division est terminée
push ax ; On pousse ax contenant le premier terme du résultat.
label2: ; boucle pour affichage
pop si ; on récupère la valeur à afficher dans si
add si,decimal ; on l'additionne à l'offset de la chaîne décimal
; pour obtenir l'offset du caractère à afficher.
mov al,[ds:si] ; On place la valeur à afficher dans al.
mov ah,0x0E ; fonction 0x0E interruption 10h pour affichage de al.
int 10h
dec ecx
cmp ecx,0x00 ; On recommence jusqu'au second caractère.
jne label2
pop si ; Idem : affichage du premier caractère.
add si,decimal
mov al,[ds:si]
mov ah,0x0E
int 10h
pop si
pop edx ; On restaure les registres avec leur valeur initiale.
pop ecx
pop ebx
pop eax
ret
end: ; Fin correcte du programme.
mov ax,0x4C00
int 21h
ret
Sources de la même categorie
Commentaires et avis
|
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
Comparez les prix

HTC Hero
Entre 550€ et 550€
|