Entradas

Mostrando entradas de 2017

Enlaces a programas

https://www.lawebdelprogramador.com/codigo/Ensamblador/560-Arranque-del-ordenador.html https://www.lawebdelprogramador.com/codigo/masvotados.php?id=29 https://www.programacion.com.py/escritorio/ensamblador/ejemplos-de-programas-en-ensamblador-8086 https://www.youtube.com/watch?v=h3KwDOO0Xg0 https://www.youtube.com/watch?v=7o7g72MCn2U https://www.lawebdelprogramador.com/foros/Ensamblador/1022270-Documentacion-Puerto-USB.html http://mikeos.sourceforge.net/write-your-own-os.html https://community.nxp.com/thread/101152

Video programa calcular calificación.

https://www.youtube.com/watch?v=fYFBk48K0IM

Programa 17 - De hexadecimal a binario con comas.

El código es el mismo que mostré en clase--no le cambié nada, por lo que aún los mensajes de arriba aparecen distorsionados pero los binarios están funcionando bien. Próximamente le haré ajustes para arreglar lo de arriba. Por el momento si gustan editarlo o algo, adelante. El código: ;=========================================================================== ;=========================================================================== ; PROGRAMA : pe17_cbi.asm ; FUNCION : Convierte un conjunto de caracteres ASCII a Binario. ; REALIZADO POR : Prof. Juan Juárez Fuentes ; EDITADO POR : Ing. Álan Alexander Valdez Casas ; COMPILADOR EN EL QUE SE EJECUTO: TASM 5.0 ; FECHA : Septiembre 28 del 2017 ;=========================================================================== ; DECLARACION DE CONSTANTES ;===========================================================================  CR EQU 13  LF EQU 10  IMPRIMIR EQU 9  FIN EQU 4C00H  DOS EQU 21H  TAB EQU 09H ;================

Ejercicio de bucle para imprimir un texto n veces.

; |//////////////////////////////////////////////////////////////| ; |//////////////////////////////////////////////////////////////| ; |Nombre del programador: Alan Valdez      | ; |Programa: ex_bucle.asm                             | ; |Mision: Imprimir x veces un texto              | ; |Fecha: 12 de septiembre del 2017               | ; |//////////////////////////////////////////////////////////////| ; |//////////////////////////////////////////////////////////////|                                                                 ; |//////////////////////////////////////////////////////////////| ; |//////////////////////////////////////////////////////////////| ; |                         CONSTANTES                  | ; |//////////////////////////////////////////////////////////////| ; |//////////////////////////////////////////////////////////////|    CR          EQU 13 ;    LF           EQU 10 ;    BIOS       EQU 10H    DOS        EQU 21H    TEXT      EQU 3    FI

Código para bucles múltiples.

mov cx, 02 ; loop doble cc: ; loop externo push cx ; guardar loop externo en cx mov cx,03 ; loop triple bb: ; loop interior ;do stuff loop bb pop cx ; obtener loop externo cx loop cc

Extra: 2 ejemplos de programas de ensamblador con bucle.

Imagen
Ejemplo 1: Ejemplo 2: Fuentes: Fuente 1 y Fuente 2

Extra: Referencias sobre colores y fondos en binario.

Imagen
A continuación, anexaré 2 imágenes en las que uno se puede basar a la hora de pintar los fondos y letras en el programa 14 de TASM: Palabras con letras y fondos coloreados..                                                                    Imagen 1: Imagen 2: Imagen3: 

1.8 - Desplegado de mensajes en el monitor

En este momento podemos comenzar a escribir las verdaderas instrucciones que le indicarán a la computadora que mensaje y como lo va a desplegar. Sugiero que comencemos por borrar la pantalla. Esto se puede realizar de muy diversas formas, aquí lo haremos usando el BIOS, el cual es un microchip que se encuentra dentro de toda PC y controla las funciones básicas de entrada y salida (Basic Input Output System). Lo que haremos es decirle al chip "¡Hey! dime en que modo está trabajando la tarjeta de vídeo", cuando obtengamos la respuesta le diremos: "Dile a la tarjeta de vídeo que deje de trabajar en ese modo y que comience a trabajar en el modo de video que me diste". Una instrucción rara, pues lo que le estamos ordenando es que deje de trabajar en el modo en el que está trabajando !y que comience a trabajar en ese mismo modo! Así se lo decimos en su propio lenguaje: principio: mov ah, 0fh int 10h mov ah, 0 int 10h Lo primero que vemos es una "etiqueta",

1.7 - Proceso de ensamblado y ligado

EDICIÓN  Los archivos fuente de código ensamblador deben estar en formato ASCII standard. Para esto puede usarse cualquier editor que permita crear archivos sin formato, e.g. Edlin, Edit, Write, El editor del Turbo Pascal, Works, Word, WordStar, etcétera. Las declaraciones pueden ser introducidas en mayúsculas y/o minúsculas. Una buena práctica de programación es poner todas las palabras reservadas (directivas e instrucciones) en mayúsculas y todo lo del usuario en minúsculas para fines de facilidad de lectura del código. Las sentencias pueden comenzar en cualquier columna, no pueden tener más de 128 caracteres, no se permiten lineas múltiples ni códigos de control, y cada línea debe ser terminada con una combinación de line-feed y carriage-return. Los comentarios se declaran con; y terminan al final de la línea. ENSAMBLADO El ensamblado se lleva a cabo invocando al MASM. Este puese ser invocado, usando una línea de comando, de la siguiente manera: MASM archivo [,[objeto][,[list

1.6 - Modos de direccionamiento

Los llamados modos de direccionamiento son las diferentes maneras de especificar en informática un operando dentro de una instrucción en lenguaje ensamblador. Un modo de direccionamiento especifica la forma de calcular la dirección de memoria efectiva de un operando mediante el uso de la información contenida en registros y / o constantes, contenida dentro de una instrucción de la máquina o en otra parte. Diferentes arquitecturas de computadores varían mucho en cuanto al número de modos de direccionamiento que ofrecen desde el hardware. Eliminar los modos de direccionamiento más complejos podría presentar una serie de beneficios, aunque podría requerir de instrucciones adicionales, e incluso de otro registro. Se ha comprobado que el diseño de CPUs segmentadas es mucho más fácil si los únicos modos de direccionamiento que proporcionan son simples. La mayoría de las máquinas RISC disponen de apenas cinco modos de direccionamiento simple, mientras que otras máquinas CISC tales como el DE

1.5 - Llamadas a servicios del sistema

Es el mecanismo usado por una aplicación para solicitar un servicio al sistema operativo. Las llamadas al sistema comúnmente usan una instrucción especial de la CPU que causa que el procesador transfiera el control a un código privilegiado. previamente especificado por el mismo código. Esto permite al código privilegiado especificar donde va a ser conectado así como el estado del procesador. Cuando una llamada al sistema es invocada, la ejecución del programa que invoca es interrumpida y sus datos son guardados, normalmente en su PCB (Bloque de Control de Proceso del inglés Process Control Block), para poder continuar ejecutándose luego. El procesador entonces comienza a ejecutar las instrucciones de código de alto nivel de privilegio, para realizar la tarea requerida. Cuando esta finaliza, se retorna al proceso original, y continúa su ejecución. El retorno al proceso demandante no obligatoriamente es inmediato, depende del tiempo de ejecución de la llamada al sistema y del algoritmo

1.4 - Interrupciones

Una interrupción es el rompimiento en la secuencia de un programa para ejecutar un programa especial llamando una rutina de servicio cuya característica principal es que al finalizar regresa al punto donde se interrumpió el programa. Dentro de una computadora existen dos clases de interrupciones: Interrupciones por software: Son aquellas programadas por el usuario, es decir, el usuario decide cuando y donde ejecutarlas, generalmente son usadas para realizar entrada y salida.  Interrupciones por hardware: Son aquellas que son provocadas por dispositivos externos al procesador su característica principal es que no son programadas, esto es, pueden ocurrir en cualquier momento en el programa. Existen dos clases de interrupciones de este tipo:        Interrupciones por hardware enmascarables: Aquellas en las que el usuario decide si quiere o no ser interrumpido.        Interrupciones por hardware no enmascarables (NMI): Aquellas que siempre interrumpen al programa.  Las

1.3 - La memoria RAM

La memoria principal o primaria,"Memoria Central ", es aquella memoria de un ordenador, donde se almacenan temporalmente tanto los datos como los programas que la CPU está procesando o va a procesar en un determinado momento. Por su función, es una amiga inseparable del microprocesador, con el cual se comunica a través de los buses de datos. Por ejemplo, cuando la CPU tiene que ejecutar un programa, primero lo coloca en la memoria y después lo empieza a ejecutar. Lo mismo ocurre cuando necesita procesar una serie de datos; antes de poder procesarlos los tiene que llevar a la memoria principal. Esta clase de memoria es volátil, es decir que, cuando se corta la energía eléctrica, se borra toda la información que estuviera almacenada en ella. Por su función, la cantidad de memoria RAM de que disponga una computadora es una factor muy importante; hay programas y juegos que requieren una gran cantidad de memoria para poder usarlos. Otros andarán más rápido si el sistema cuenta

Mnemónicos básicos del lenguaje ensamblador (imagen)

Imagen
En la siguiente imagen se aprecian algunos mnemónicos básicos para el lenguaje ensamblador:

Registros del procesador (relación)

Imagen
Los registros del CPU se emplean para controlar instrucciones en ejecución, manejar direccionamiento de memoria y proporcionar capacidad aritmética. Los registros son direccionales por medio de un nombre. Registro CS: El DOS almacena dirección inicial del segmento de código de un programa en el registro CS. Registro DS: La dirección inicial de un segmento de datos del programa es almacenada en el registro DS. En términos sencillos, esta dirección, más un valor de desplazamiento en una instrucción, genera una referencia a la localidad de un byte específico en el segmento de datos. Registro SS: El registro SS permite la colocación--en memoria-- de una pila, para almacenar temporal de direcciones y datos. Registro ES: Algunas operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro extra de segmento para manejar el direccionamiento de memoria. Registro FS y GS: Son registros extra de segmento en los procesadores 80386 y posteriores. Más información: 

Programas hechos en TAS

Imagen
Programa 1: Hola mundo CR equ 13 LF equ 0Ah Datos Segment Mensaje db CR,LF,'Hola Mundo!',CR,LF,'$' Datos Ends Pila Segment Stack db 64 DUP('PILA') Pila Ends Codigo Segment holam proc far Assume CS:Codigo,DS:Datos,SS:Pila mov ax,Datos mov ds,ax lea dx,Mensaje mov ah,9 int 21h mov ax,4c00h int 21h holam endp Codigo Ends end holam Programa 2: Uso de constantes. CR EQU 13 LF EQU 10 IMPRIMIR EQU 9 FIN EQU 4C00H DOS EQU 21h Datos Segment texto db 'Ejemplo del uso de constantes.',CR,LF,'$' Datos Ends Pila Segment Stack db 64 DUP('PILA') Pila Ends Codigo Segment Assume CS:Codigo,DS:Datos,SS:Pila Inicio: mov ax,Datos mov ds,ax mov dx,offset texto ;offset retorna la direcci?n de una variable mov ah, IMPRIMIR int DOS mov ax,FIN int DOS Codigo End s End Inicio Programa 3: Hola mundo con función/procedimiento. CR EQU 13 ;Constante CR (Ret

Ejercicios extra Unidad 1.

Tipos de IDEs para programar en ensamblador. 1. WinAsm Es un IDE gratuito para desarrollar programas en Windows 32 y 15 bits. Utiliza: MASM y FASM, con un add-in para FASM. 2. Easy Code IDE para lenguaje ensamblador hecho para generar aplicaciones de 32 bits en Windows. Su interfaz es similar a Visual Basic, le permite hacer programas de manera rápida y sencilla como nunca antes había sido posible. 3. RadASM IDE gratuito para ensambladores de 32 bits para Windows. Utiliza: MASM, TASM, FASM, NASM, GoASM y HLA. 4. Fresh IDE IDE visual para el lenguaje ensamblador con compilador integrado FASM. 5. Assembler IDE IDE para código ensamblador, cuyo propósito es automatizar al máximo este proceso integrando el editor de código, depurador y desensamblador. Utiliza: NASM, TASM, MASM y FASM. 6. Visual Studio Permite hacer aplicaciones de consola para distintos dispositivos. ¿Qué IDE elegirías para programar lenguaje ensamblador? Al principio, me incliné mucho sobre Visual S

1.2 El procesador y sus registros internos

Imagen
Un registro es una memoria de alta velocidad y poca capacidad, integrada en el microprocesador. Permite guardar transistoriamente y acceder a valores muy usados, generalmente en operaciones matemáticas. Su función es la de almacenar datos, siendo la manera más rápida de hacerlo por el sistema. Los registros se miden en número de bits que almacenan. La CPU, en cambio, comparte un conjunto de localidades de almacenamiento temporal de datos de alta velocidad, denominada con el mismo nombre: registro. Los registros se dividen en 6 categorías: *Registros de segmento. *Registros de propósito general. *Registros de apuntadores. *Registros de banderas. *Registros de puntero de instrucción *Registros de pila. Algunos ejemplos básicos de registros son: *Contador de programa (PC). *Registro de direcciones de la memoria (MAR). *Registro de datos (RD). *Registro de instrucciones (IR). *Palabra de estado de programa (PSW). Fuente: Fuente 1 Re

1.1 Importancia de la programación en lenguaje ensamblador.

El lenguaje ensamblador es el medio programático en el que el ser humano puede tener contacto "directo e intangible" con el hardware de una computadora, mediante idiomas de programación de bajo nivel. A diferencia de los de alto nivel, estos se caracterizan por ser difíciles de programar, pero ocupan poca memoria del sistema porque lidian con el microprocesador en directo. El lenguaje ensamblador es importante por los siguientes puntos:  *Porque se puede tener control directo al 100% de la computadora. *Los programas no ocupan mucho espacio de memoria. *Permite interaccionar, mediante código de programación, con el hardware. *Facilita al programador trabajar con lenguaje máquina sin perder el control directo del hardware. *Los programas son rápidos y compactos. *Procesamiento más rápido, ya que trabaja directamente con el procesador. Fuente: Fuente1

Unidad 1

Todas las asignaturas correspondientes a la unidad 1 serán anotadas aquí. Como referencia, el temario de la ya mencionada unidad, a continuación: UNIDAD 1: INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR 1.1 Importancia de la programación en lenguaje ensamblador. 1.2 El procesador y sus registros internos 1.3 La memoria principal (RAM) 1.4 El concepto de interrupciones 1.5 Llamadas a servicios del sistema 1.6 Modos de direccionamiento 1.7 Proceso de ensamblado y ligado 1.8 Desplegado de mensajes en el monitor