19.04.2018 Views

Tutorial de ensamblador

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!