Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
MOV AL,[SI]<br />
PUSH CX<br />
MOV CX,8<br />
Este ciclo irá <strong>de</strong> letra en letra.<br />
El MOV AL, [SI] mueve el siguiente carácter ASCII al AL. Esto se maneja<br />
como un arreglo. Se le dice al programa “Ve esa posición (índice) y dime lo que<br />
hay guardado”.<br />
PUSH CX va a meter el valor <strong>de</strong>l contador temporalmente a la pila. Esto es<br />
similar a cuando una persona está cargando con muchas cosas, toma su celular y<br />
lo <strong>de</strong>ja sobre una mesa mientras se administra cómo cargar todo. Luego, cuando<br />
ya requiera tomar <strong>de</strong> nuevo su celular, lo quitará <strong>de</strong> la mesa.<br />
MOV CX, 8 se le asigna 8 al contador (<strong>de</strong> ahí la importancia <strong>de</strong> respaldar el<br />
viejo valor). Este valor se utilizará para otro ciclo <strong>de</strong>ntro <strong>de</strong>l ciclo principal. El ciclo<br />
principal va a ir <strong>de</strong> letra en letra para convertirla a binario. El segundo ciclo va a<br />
servir para crear los 1’s y 0’s para la conversión.<br />
LOOP_SHIFT:<br />
SHL AL,1<br />
JC BIN_UNO<br />
MOV [DI], BYTE PTR '0'<br />
JMP CICLO_SHIFT<br />
Este ciclo producirá el número binario para la letra correspondiente.<br />
SHL AL,1 en esta línea se va a<br />
hacer un Shift a la izquierda. Esto va a<br />
mover el siguiente número a la ban<strong>de</strong>ra<br />
<strong>de</strong> acarreo CF (Carry flag). Esto se<br />
hace porque el sistema binario crece<br />
hacia la izquierda. Para convertir un<br />
número <strong>de</strong> <strong>de</strong>cimal a binario, se toma<br />
el número a convertir y se divi<strong>de</strong> entre<br />
dos. Si la división da un número<br />
<strong>de</strong>cimal, se quita la parte <strong>de</strong>cimal para<br />
la siguiente división y se coloca un 1 en<br />
el residuo. Por ejemplo, 19 entre 2 da<br />
9.5, entonces se toma en cuenta<br />
solamente el 9, y se coloca un 1 en el<br />
acarreo. En caso contrario, como es el caso <strong>de</strong> la división <strong>de</strong> 4 entre 2, se pone<br />
un 0. De esta manera, 156 <strong>de</strong>cimal es igual a 00111001 en binario.<br />
85