19.04.2018 Views

Tutorial de ensamblador

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Cabe <strong>de</strong>stacar que los valores <strong>de</strong> los caracteres son manejados como<br />

números según su valor en la tabla ASCII. Si está por <strong>de</strong>bajo <strong>de</strong> “a” (cuyo valor es<br />

97) significa que si valor es menor, y si está por encima <strong>de</strong> ”z” (cuyo valor es 122)<br />

su valor en la tabla ASCII es mayor. Estas dos comparaciones validan si lo que se<br />

ingresó está <strong>de</strong>ntro <strong>de</strong>l rango <strong>de</strong> la “a” a la “z”. Si no está en dicho rango, salta a<br />

SIGA. Si lo está, se transforma en mayúsculas con la línea AND AL,11011111B<br />

.<br />

En la etiqueta SIGA, se tiene MOV [SI], AL va a tomar lo que hay en el<br />

carácter ya transformado. INC SI va a incrementar la posición <strong>de</strong> SI, es <strong>de</strong>cir, va a<br />

avanzar un lugar para almacenar la siguiente letra a teclear en el siguiente espacio<br />

<strong>de</strong> memoria <strong>de</strong> la variable. DEC CX, <strong>de</strong>crementa el contador en CX. Esto es<br />

similar al “i--” <strong>de</strong>l ciclo for en lenguajes <strong>de</strong> alto nivel. CMP CX,0 compara si el<br />

contador es igual a cero. JNE LEER significa que, si el contador no ha llegado al<br />

cero, regresará a ejecutar lo que hay en LEER, es <strong>de</strong>cir, continuará el ciclo. De<br />

otra manera, habrá terminado.<br />

Imprimir un salto <strong>de</strong> línea<br />

MOV DX,OFFSET CRLF<br />

MOV AH,09H<br />

INT 21H<br />

En CRLF, si bien no se asignó una ca<strong>de</strong>na como tal, tiene almacenado el<br />

interlineado. Mostrar esta línea es similar al “\n” <strong>de</strong> los lenguajes <strong>de</strong> alto nivel.<br />

40

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

Saved successfully!

Ooh no, something went wrong!