\documentclass[12pt,a4paper]{article}
%\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}

\usepackage[francais]{babel}
\usepackage[]{epsfig}
\usepackage[]{color}
\topmargin -0.5in
\textheight 9.5in
\textwidth 6in
\evensidemargin -0in
\oddsidemargin = \evensidemargin

%\special{landscape}

\newcommand{\br}{\overline}
\date{}
\begin{document} 
\boldmath
\title{TD9: Premiers Calculs\\ Traduction Chaîne de caractères $<->$ nombre}
\author{Première année d'IUT Informatique}
\maketitle


Nous allons créer deux variables, une de type \texttt{string} nommée \texttt{nombre} et une de type \texttt{long} appelée \texttt{valeur}.

\section{Chaîne de caractères $->$ valeur numérique}
Nous allons écrire un programme qui lit un nombre au clavier,   stocke la chaîne lue dans la variable \texttt{nombre}, puis convertit cette chaîne en une valeur numérique qui sera stockée dans \texttt{valeur}.

\begin{enumerate}
  \item Ecrire l'algorithme de conversion d'une chaîne de caractères représentant un nombre en base dix en une valeur numérique.
%  valeur <- 0
%  i <- 0
%   tant que i <> taille faire
%         valeur <- valeur * 10 + nombre[i] - '0'
%         i<-i+1

  \item Peut-on utiliser le registre \texttt{\%edx} sans crainte ? Quels rôles peut-on donner aux différents registres? Réécrire l'algorithme en faisant apparaître les registres utilisés.
  \item Ecrire le code assembleur correspondant.
\item Vérifier pas à pas l'exécution de votre code avec \texttt{gdb}.

\end{enumerate}

\section{Valeur numérique $->$ chaîne de caractères}

Nous complétons ce programme en ajoutant les instructions permettant de convertir le nombre stocké dans valeur en une chaîne de caractères stockées dans nombre, puis affichée à l'écran.

\begin{enumerate}
 \item Ecrire l'algorithme de conversion d'une  valeur numérique en une chaîne de caractères représentant un nombre en base dix. 

% i<-0
% 
% tant que valeur <> 0 faire
%            inter[i] <- valeur mod 10 + '0'
%            i<-i+1
%            valeur <- valeur div 10

% j<-0
% i<-i-1
% tant que i > 0 faire
%            nombre[j] <- inter[i]
%           i<-i-1
%           j<-j+1      
%    
% nombre[j]<-0

   \item  Quels rôles peut-on donner aux différents registres ? Réécrire l'algorithme en faisant apparaître les registres utilisés.
  \item Ajouter le code assembleur correspondant à la suite du programme précédent.
\item  Vérifier pas à pas l'exécution de ce  code avec \texttt{gdb}.
\item Prendre en compte le fait que la valeur peut être nulle.
\end{enumerate}

\end{document}










