Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Afficher un nombre [ Archives / Newbii ] (MaxSoldier)

samedi 19 février 2005 à 13:22:08 | Afficher un nombre

MaxSoldier

Membre Club
Bonjours, je voudrais afficher un nombre mais j'ai toujours des erreur :
J'ai donc 2 questions :
Comment déclarer une variable qui contiendra des nombre ( integer ) ( j'ai essayé : var db 100 dup (?) - mais je suis pas sûr de ce que sa fais XD )

Comment afficher ces nombre ( l'interruption 21h avec AH=09h  ne fonctionne pas ... )

Il faut peut etre ajouté un '$' à la fi de ma chaine pour qu'elle soit destiné à l'affichage, mais comment ?

Merci d'avance

PS : J'ai commencé l'assembleur hier ... Soyez sympa ;-)
-=Ar$£nik=-

samedi 19 février 2005 à 18:54:03 | Re : Afficher un nombre

vecchio56

Administrateur CodeS-SourceS
Les nombres sont codé en binaire, tu veux les afficher en base 10, il faut donc que tu fasses des divisions successives par 10 de ton nombre. Pour la déclaration, il suffit de faire var  dw ? par exemple.

samedi 19 février 2005 à 22:28:34 | Re : Afficher un nombre

MaxSoldier

Membre Club

Euh ... tu pourrait t'expliquer ? :p
Par exemple ( sachant que je code sous TASM ) pourait tu me donner la source d'une prog qui affiche :

Test1
Test2
Test3

Sa me permeterai d'apprendre la gestion des nombre et de la concaténation...
Merci !

-=Ar$£nik=-

lundi 21 février 2005 à 12:52:42 | Re : Afficher un nombre

patatalo

Membre Club Administrateur CodeS-SourceS
salut,

un tableau d'int c'est pour le C, en asm c'est pas le compilateur qui gère les flags, la taille d'un int du C dépends si tu prog en 16 ou 32 bits.

db = char ou byte ( 8 bits )
dw = int ou word ( 16 bits )
dd = int ou dword ( 32 bits )

si tu prog en 16 bits:
var word 100 dup (?)

si tu prog en 32 bits:
var dword 100 dup (?)

ensuite:
.data
fmtDD db "%d",0
.data?
tvar dword 100 dup (?)
.code
start:
sub esp,128
mov edi,100
lea si,[tvar]

@@:
mov ecx,esp
invoke wsprintf,ecx,OFFSET fmtDD,DWORD PTR[esi]
mov ecx,esp
invoke MessageBox,0,ecx,0,MB_OK
dec edi
lea esi,[esi+4]
jne @B

add esp,128
invoke ExitProcess,0

end start

 @++

samedi 5 mars 2005 à 11:58:23 | Re : Afficher un nombre

CoreBreaker

db 100 dup(?) ; réserve 100 octets non initialisés
dw 10 dup (1234h) ; réserve 10 word (donc 20 octets) avec pour chacun des word la valeur 1234h
donc en mémoire tu auras 3412341234123412341234123412341234123412
c'est 3412 et pas 1234 car en mémoire la position des octets est inversée

un entier doit être convertit en chaine de caractères pour pouvoir être affichée avec la fonction 9 de l'int 21h, chaine qui doit effectivement se terminer par le caractère '$'

data segment word
un_int_a_afficher dw 12345
chaine db 5 dup(' '), '$' ; 5 car valeur max pour un word est 65535 (5 char max)
data ends

pile segment word
dw 100h dup(?)
pile ends

code segment word public use16
assume cs:code,ds:data,es:data,ss:pile
debut:
   mov ax, data
   mov ds, ax
   mov es, ax

   mov di, offset chaine + 4 ; on se place juste avant le $
   ; pour placer les chiffres de droite à gauche

   mov ax, word ptr [un_int_a_afficher] ; le dividende
   mov bx, 10 ; le diviseur (base décimale)
   mov cx, 5 ; 5 chiffres max
   std ; commande à stosb de placer di sur le char suivant en le déplacant
   ; sur la gauche du précédent

boucle:
   xor dx, dx ; le dividende est dx:ax, et comme on a pas besoin de dx, 
   ; on met dx à zéro

   div bx ; après la division ax=quotient et dx=reste
   xchg ax, dx
   add al, '0' ; on fait la conversion en caractère
   stosb ; on place le caractère
   xchg ax, dx

   or ax, ax ; on teste si le quotient est nul, dans ce cas on sort de la boucle
   loopne boucle

; maintenant on affiche le résultat
; on fait pointer ds:dx sur la chaine
   mov dx, offset chaine
   mov ah, 9
   int 21h

; on termine le programme (fonction 4Ch) avec code retour 0
   mov ax, 4C00h
   int 21h
code ends

end debut

Core Breaker



Cette discussion est classé dans : nombre, afficher


Répondre à ce message

Sujets en rapport avec ce message

Afficher un nombre conteu dans un registre [ par RootASM ] bonjour,J'aimerais afficher le nombre de caractere d'un chaine de caractere mais je ne sais pas comment m'y prendre. Sur le site il y a des messages m Maitriser chaque petit pixel de l'écran [ par tntprog ] Bonjour, J'aimerais pouvoir afficher ou éteindre le moindre petit pixel de mon écran avec la couleur que je désir. Est-ce que quelqu'un sait comment Afficher l'heure avec la memoire video [ par RootASM ] Bonjour,Je voudrais afficher l'heure grace à la mémoire vidéo car elle permet d'économiser une interuption.Quand je le lance sous afd, j'ai bien dans Afficher une variable [ par Mick7 ] Salut, Si vous avez un bon tutorial asm je suis prenneur car ça fait un petit moment que je cherche et j'ai rien trouvé de vraiment complet. Bon voila affichage chaine de caractere [ par Le cancre ] Bonjour à tous et bonne annéeje bataille depuis 2jours à afficher correctement une variable de type string sous masm32,c'est la misère ^^voici ma stru afficher un caractère avec int 10h [ par thicdorb ] bonjour à tous,je suis débutant en assembleur et je commence par le début : afficher un caractèrej'utilise l'inteeruption BIOS 10h    mov    al, 'A'   Afficher le contenu d'un registre [ par Anakinele ] Bonjour !Grand débutant en ASM je cherche 'simplement' (rien ne semble simple en asm !) à afficher dans la console le contenu d'un registre choisi au impaire/paire [ par longchamp ] bonjour,je voudrai écrire un petit programme simple en assembleur qui permet d'enregistrer une valeur ,de compter le nombre de 1 et de 0 dans son écri comment afficher un message en couleur ??? [ par PCBill ] bonjour,je voudrais écrire un message en couleur (n'importe quelle couleur) dans un programme assembleur mais je ne sais pas comment le faire ; quelqu afficher le code ASCII correspondant à un caractère [ par noussa6007 ] salut,je désire déterminer la longueur d'une chaine de caractère saisie.Lorsque la taille vaut par exemple 35, ( 35 caractères saisis) mon programme m


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version


HTC G1

Entre 449€ et 449€


Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,343 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.