miércoles, 27 de febrero de 2019

1.5 Llamadas a servicios del sistema

Llamada al sistema.

  • Llamadas que ejecutan los programas de aplicación para pedir algún servicio al SO. 
  • Llamadas al sistema no bloqueantes: son aquellas llamadas en las que, si lo que se solicita no está disponible, el proceso no se queda bloqueado, sino que devuelven un valor especial indicando la condición de información no disponible
  • Llamadas al sistema bloqueantes: la aplicación se bloquea a la espera del resultado. Si un hilo hace una llamada bloqueante, todos los hilos se bloquearán. Si hace una llamada no bloqueante, los demás hilos podrán seguir ejecutando.

¿Como se mandan las llamadas al sistema?

  • Se activa una interrupción ejecutando una operación especial conocida "Llamada al sistema" 
  • Esta se lanza cuando: 
  • Una aplicación de usuario solicita un servicio del sistema operativo. 
  • Proporciona los medios para que un programa de usuario pida al so que realice tareas reservadas del so en nombre del programa de usuario. 
  • Una llamada al sistema se invoca de diversas maneras dependiendo de la funcionalidad proporcionada por el procesador subyacente. 
  • Se trata de un método usado por un proceso para solicitar la actuación del so. 
  • Normalmente una llamada al sistema toma la forma de una excepción que efectúa una transferencia a una posición específica en el vector de interrupción.

Tipos de llamadas al sistemas
  • Control de procesos 
  • Terminar (end), abortar (abort) 
  • cargar (load), ejecutar (execute) 
  • crear procesos (create process o submit job), terminar procesos (terminate process) 
  • fork: inicia un nuevo proceso 
  • exec:el programa se ejecuta 
  • obtener atributos del proceso (get process attributes), definir atributos del proceso (set process attributes) 
  • esperar para obtener tiempo (wait time) 
  • esperar suceso (wait event), señalizar suceso (signal event) 
  • asignar y liberar memoria. 
  • llamada al sistema para liberar memoria (dump) (i45) 
  • Administración de archivos 
  • crear archivos (create), borrar archivos (delete) 
  • abrir (open), cerrar (close) 
  • leer (read), escribir (write), reposicionar (reposition) 
  • obtener atributos del archivo, definir atributos del archivo. 
  • move: mover archivos 
  • copy: copiar archivos 
  • Adminsitración de dispositivos 
  • solicitar dispositivo (request), liberar dispositivo (release) 
  • leer (read), escribir (write), reposicionar (reposition) 
  • obtener atributos de dispositivo, definir atributos de dispositivo 
  • conectar y desconectar dispositivos lógicamente. 
  • Mantenimiento de la información 
  • obtener la hora (time) o la fecha (date), definir la hora o la fecha 
  • obtener datos del sistema, establecer datos del sistema 
  • obtener los atributos de procesos, archivos o dispositivos 
  • establer los atributos de procesos, archivos o dispositivos 
  • Comunicaciones 
  • crear, eliminar conexiones de comunicación 
  • enviar, recibir mensajes 
  • transferir información de estado 
  • conectar y desconectar dispositivos remotos. (i43) 

Llamadas al sistema
  • Abrir archivo 
  • Crear archivo 
  • Proteger archivo 
  • Escribir mensaje en consola 
  • Terminar en forma anormal 
  • Borrar archivo 
  • Leer archivo 
  • Modificar archivo (i39) 
  • CreateProcess de win32 
  • get hostid: Cada computadora de red tiene un nombre de host. Un host tiene un identificador de red. Ésta llamada al sistema hace esa traducción (i49) 
  • get processid: Cada proceso tiene un nombre de proceso y este nombre se traduce en un identificador mediante el cual el so hace referencia al proceso. Ésta llamada al sistema realiza la traducción

1.3 La memoria principal (RAM)

La memoria principal (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 ejemplo, cuando la CPU tiene que ejecutar un programa, primero lo coloca en la memoria y después lo empieza a ejecutar.

Otros andarán más rápido si el sistema cuenta con más memoria RAM. La memoria Caché: dentro de la memoria RAM existe una clase de memoria denominada Memoria Caché que tiene la característica de ser más rápida que las otras, permitiendo que el intercambio de información entre el procesador y la memoria principal sea a mayor velocidad.

Está formada por bloques de circuitos integrados o chips capaces de almacenar, retener o "memorizar" información digital, es decir, valores binarios; a dichos bloques tiene acceso el microprocesador de la computadora. La MP se comunica con el microprocesador de la CPU mediante el bus de direcciones.

El ancho de este bus determina la capacidad que posea el microprocesador para el direccionamiento de direcciones en memoria. En algunas oportunidades suele llamarse "memoria interna" a la MP, porque a diferencia de los dispositivos de memoria secundaria, la MP no puede extraerse tan fácilmente por usuarios no técnicos.

La MP es el núcleo del sub-sistema de memoria de una computadora, y posee una menor capacidad de almacenamiento que la memoria secundaria, pero una velocidad millones de veces superior. Si tienes más memoria almacenas más datos.

Características de la Memoria
Las magnitudes importantes que caracterizan la Memoria Central o Principal son:

  • Capacidad o tamaño de la misma. Es decir, el numero de miles de posiciones que contiene. Normalmente se expresan en K.palabras, aunque en los ordenadores personales al ser las palabras de 8 bits se expresan en K-bytes. En la actualidad, el tamaño de la palabra es múltiplo del byte, ya que de esta forma el acceso a la misma puede hacerse desde uno al ancho máximo del bus de datos, ahorrando en muchos casos tiempo. Así tendremos palabras de 8, 16, 32, 64 bits y capacidades de siempre medidas en potencia de dos: 8, 16, 64, 128 K...etc(siendo 1K igual a 1025).
  • Tiempo de Acceso. Es el tiempo que invierte el ordenador desde que se emite la orden de lectura-escritura, hasta que finaliza la misma. Este tiempo es muy pequeño, y de el depende la potencia del ordenado. Son típicos tiempos del orden de microsegundos e incluso del orden de 2 a 10 nanosegundos.
  • El tamaño de la celda define su anchura de palabra, y viene fijado por el ancho del registro de información de memoria. Si la palabra interna es superior a la de la memoria, necesitara hacer más de un acceso para conseguir toda la información.

martes, 26 de febrero de 2019

1.2 Registros del procesador de Emu8086

Aquí podemos ver una tabla donde nos muestran los registros según el procesador de Emu8086


Creacion de un proyecto y aplicacion con Django

En esta entrada veremos como podremos crear un proyecto de Django, ademas de una aplicación dentro de nuestro proyecto

Primero que nada para poder crear un proyecto de Django dentro de Python, debemos tener instalado obviamente, Python, y preferentemente Pycharm para poder ver los archivos que nos creara el proyecto de Django.

Ahora, una ves teniendo Python, y Pycharm de preferencia, debemos instalar Django. Para poder instalar Django lo único que debemos hacer es utilizar el siguiente comando
pip install Django
Y se nos empezara a instalar nuestro Django inmediatamente.
Eso es lo fácil, ahora para poder crear un proyecto.

Si tenemos una version de Python menor a 3.X.X como yo, que tengo la version 2.15.X deberemos hacer lo siguiente:

Entramos dentro de nuestro Command Prompt debemos entrar a la carpeta de Pyhton27 y después a Scripts y ejecutar el siguiente código:
Django-admin startproyect Proyecto
En donde al final se escribe el nombre del proyecto nosotros lo llamaremos Proyecto por el momento.
Una vez creado el proyecto podemos ver la carpeta o podemos ver nuestro proyecto y los archivos creados por el proyecto.

Para poder ver que el proyecto ya esta creado bien, podemos buscar el archivo llamado manage.py, el cual es nuestro proyecto en archivo de python, lo que podemos hacer con el archivo es correr nuestro servidor, con el siguiente comando dentro de la carpeta del proyecto en el Command Prompt.
python manage.py runserver
Al momento de correr el comando veremos como empieza a correr nuestro servidor, es un servidor local hay que aclarar esto, pero también podemos ver como es que nos muestra un cierto mensaje de advertencia que no hemos migrado ciertas partes a nuestro proyecto, esto lo veremos después, por ahora veremos como es que nos corre el servidor, y al final nos da una URL, la cual esta URL es de nuestro proyecto.
Podemos ver nuestro proyecto copiando y pegando esa URL que vemos al final.

Ahora, es lo único que tenemos en la pagina, para poder crear una aplicación debemos cerrar nuestro servidor, presionando las teclas Ctrl+C se cierra nuestro servidor, y podemos seguir escribiendo en el CMD.

Para poder crear una aplicación, para nuestro servidor, seria hacer lo siguiente.
Regresamos a nuestra carpeta scripts dentro de la carpeta python27, y escribir el siguiente comando.
django-admin startapp aplicacion
Asi creamos una carpeta exclusivamente para una aplicación que podemos llegar a instalar dentro de nuestro proyecto mas adelante.

Podemos ver dentro de pycharm los archivos que se nos crearon para cada una de las carpetas tanto como para el proyecto como para la aplicación.




martes, 19 de febrero de 2019

1.2 Analisis de los manejadores de bases de datos

Un manejador o gestor de bases de datos (DBMS) es un sistema que permite la creacion, gestion y administracion de bases de datos. Asi como la eleccion y manejo de las estructuras necesarias para el almacenamiento y busqueda de la informacion del modo mas eficiente posible.

A continuacion se mostrara una lista de algunos sistemas gestores de bases de datos:

Oracle

Resultado de imagen para dbms oracle
Oracle data base RDBMS es un sistema de administracion de bases de datos relacionales de objetos de Oracle corporation.
La base de datos de Oracle es la primera diseñada para la computacion grid empresarial, la cual proporciona la manera mas flexible y rentable de administrar la informacion y las aplicaciones.

Ventajas
  • Oracle es el motor de base de datos objeto-relacional mas usado a nivel mundial
  • Puede ejecutarse en todas las plataformas
  • Permite el uso de particiones para mejorar su eficiencia, de replicacion e incluso ciertas versiones admiten la administracion de bases de datos distribuidas 
  • Oracle es la base de datos con mas orientacion a internet

Desventajas
  • Se encuentran muchas versiones desde su lanzamiento original de version 8 con varias versiones posteriores con correcciones,hasta su estabilidad en la version 8.0.3. El motivo de estos errores fue, al parecer, la remodelacion del sistema de almacenamiento por causa de la introduccion de extensiones orientadas a objetos.
  • Su mayor inconveniente es su precio. Incluso las licencias de personasl Oracle son excesivamente caras.

MySQL

Resultado de imagen para dbms mysql

Es un sistema de administracion de base de datos que nos permite administrar bases de datos relacionales. Es un software de codigo abierto respaldado por Oracle. A pesar de que MySQL es un software de codigo abierto, puede comparse una version de licencia comercial de Oracle para obtener servicios de soporte pemium.

Ventajas
  • MySQL es de codigo abierto
  • Tiene una gran velocidad al realizar operaciones, lo que mejora su rendimiento
  • Facilidad de configuracion e intalacion
  • Soporta gran variedad de sistemas operativos
  • Su conectividad, velocidad y seguridad hacen de MySQL server altamente apropiado para acceder a bases de datos en internet.
Desventajas
  • Gran porcentaja de las utilidades de MySQL no estan documentadas
  • No es intuitivo como otros programas. Ejemplo: Access.

Microsoft SQL server

Resultado de imagen para dbms microsoft sql server logo
SQL Server es un sistema de administracion de bases de datos relacionales desarrollado por Microsoft.Tambien es un ORDBMS, plataforma dependiente tanto de su interfaz grafica como software basado en comandos y SQL language, que es producto de IBM.

Ventajas
  • Es muy util para manejar y obtener datos de la red
  • Compatibilidad con la mayoria de las tareas administrativas de SQL Server.
  • Al trabajar una red social, permite agregar mas servidores de SQL Server y visualizar las bases de datos de otra persona.
Desventajas
  • La acaparacion de memoria RAM para intalaciones y manejo de software
  • Contiene muchas restricciones entre ellas
  • Bloqueos a nivel de pagina
  • Un tamaño fijo y demasiado pequeño al trabajar en la hoja

PostgreSQL

Resultado de imagen para dbms postgre logo

Es un potente sistema de gestion de bases de datos relacionales de codigo abierto.
PostgreSQL se ejecuta en todos los principales sistemas operativos, incluidos Linux, Unix y Windows.
Diseñado para ambientes de alto volumen y nadie puede demandarlo por violar acuerdos de licencia, puesto que no hay costo asociado a la licencia de este software.

Ventajas
  • Su intalacion ilimitada
  • Facilidad al administrar 
  • Dispone de flexibilidad para hacer investigacion y desarrollo de sistemas sin necesidad de incurrir en costos adicionales
Desventajas
  • Es 3 veces mas lento que MySQL
  • La sintaxis de algunos comandos o sentencias no es nada intuitiva
  • Consume muchos recursos de la maquina

1.-Perspectiva practica de la administracion de bases de datos

1.1 Administrdor de bases de datos (DBA)

El DBA (Data Base Admininistrator) es el administrador de base de datos. Es el profesional informático encargado de la administración de una o varias bases de datos gestionando su uso y funcionamiento .

Las funciones y responsabilidades de un DBA dependerán en gran medida de la organización de la empresa o proyecto en el que esté trabajando.

Un administrador de base de datos es un especialista en bases de datos e informatica que conoce las herramientas de gestion de la base de datos, asi como la forma de desarrollar los planes de administracion de datos.

Resultado de imagen para Administracion de bases de datos

1.1.1 Funciones de un DBA

Algunas de las funciones de un Administrador de Bases de Datos son las siguientes:
  • Gestión General de Base de Datos
    El DBA es la persona con más conocimientos sobre base de datos en una organización. Como tal, debe entender las reglas básicas de la tecnología de base de datos relacional y ser capaz de comunicarlos con precisión a los demás.
  • Modelado de Datos y Diseño de Base de Datos
    Un DBA debe ser un profesional experto en la recopilación y análisis de las necesidades del usuario para obtener modelos de datos conceptuales y lógicos. Esta tarea es más difícil de lo que parece. Un modelo conceptual de datos describe los requisitos de datos a un nivel muy alto, un modelo de datos lógico proporciona en profundidad los detalles de los tipos de datos, longitudes, relaciones y cardinalidad. El DBA utiliza técnicas de normalización para ofrecer modelos de datos que reflejen las necesidades de los datos de la empresa.
  • Auditoria
    Una de las tareas de un DBA es identificar qué usuarios tienen acceso a insertar, actualizar o eliminar datos, y cuándo. Una auditoría NO sólo podría ser necesaria por un tiempo limitado, para usuarios específicos o datos específicos. También puede ser requerida 24/7 para todos los datos que se introduzcan en el DBMS. Regularmente, para realizar las funciones de autorías los DBAs tienen que trabajar en combinación con los auditores internos y externos de la empresa.
  • Integración con aplicaciones
    La mayoría de las empresas hoy en día utilizan aplicaciones de terceros (casi nadie ya desarrolla sus propias aplicaciones in-house), muy pocas de estas aplicaciones funcionan de manera aislada. En otras palabras, las aplicaciones tienen que interconectarse unas con otras, generalmente utilizando base de datos como el medio para compartir los datos. Los DBAs a menudo se involucran en los procesos de integrar las aplicaciones existentes con las bases datos que administran. Esto puede incluir la creación de aplicaciones a medida, scripts, etc.
  • Resguardo y recuperación de datos
    Uno de los aspectos más fundamentales del trabajo del DBA es proteger los datos de la organización. Esto incluye hacer copias de seguridad periódicas de los datos y mantenerlos a salvo de la destrucción accidental o intencional. Además, diseñar, implementar y probar un plan de recuperación para que cuando se presenten los problemas, los datos se pueden restaurar rápidamente.
  • Inteligencia de negocios y almacenamiento de datos
    Una de las áreas de mayor crecimiento para el DBA es la Inteligencia de Negocios (BI) y almacenamiento de datos. Esto se debe a que cada vez más organizaciones están tratando de extraer toda la información que pueda con el fin de tomar mejores decisiones de negocios.
  • Planificación de capacidad
    En la mayoría de las organizaciones, el número y tamaño de las bases de datos crece rápidamente. Es la responsabilidad del DBA gestionar el creciente volumen de datos y diseñar los planes apropiados para administrarlos. Esto incluye también la gestión del hardware donde se almacenan los datos.
  • Administración de cambios
    La configuración del servidor SQL Server o MySQL, el esquema de base de datos, el código de Transact-SQL, y muchas otras facetas del ecosistema de aplicaciones cambian con el tiempo. A menudo es la responsabilidad del DBA realizar el análisis de impacto antes de realizar los cambios dentro de una DBMS. Implementar cambios, hacer pruebas piloto y documentar todos los cambios y procedimientos es parte del trabajo de un DBA.
  • Desarrollo de aplicaciones
    Muchos administradores de base datos deben de desarrollar aplicaciones y scripts con el objetivo de automatizar tareas relacionadas con la inserción, sustracción o borrado de información dentro del manejador de base de datos. En general, éste debe de colaborar a nivel de integración de sistema con los desarrolladores de aplicaciones, por lo que a veces se ve en la obligación de desarrollar código para casos específicos.

1.1.2 Relacion del DBA con otras areas del sistema

Uno de los principales deberes de un administrador de base de datos es el desarrollo y soporte a pruebas. Las actividades de soporte incluyen la colecta de datos de produccion para llevar a cabo pruebas con ellos; consultar a los programadores respecto al desempeño; y hacer cambios a los diseños de tablas de manera que se pueda proporcionar nuevos tipos de almacenamiento para las funciones de los programas.

Asi es como, un DBA no solo debe preocuparse por la base de datos que como se mencionaba anteriormente en esta entrada, es solo uno de los muchos elementos con los que cuenta un sistema para su interaccion con los usuarios. Si bien, se debe llevar una coordinacion con las demas partes involucradas del sistema para que todo trabaje en armonia y asi el sistema tenga un mayor rendimiento ofreciendo mejor interaccion a sus usuarios.

Como ejemplo de los elementos que compone un sistema, tomaremos de ejemplo la programacion por capas.
Cada una de las capas se encarga de algo en especifico, pero a su vez deben de trabajar en conjunto para lograr un buen rendimiento.

Programa que resta 2 numeros

Ahora veremos un programa el cual, al contrario del programa anterior, en vez de sumar 2 numeros, los restara, basicamente es el mismo codigo del programa anterior, sin embargo, se le cambian algunos registros para poder realizar la resta ademas de los mensajes dentro del programa.

Sintaxis:

.model small


.stack 64
.data
  
;declarando variables globales
numero1 db 0
numero2 db 0

resta db 0

msjn1 db 10,13, "INGRESE EL PRIMER NUMERO A RESTAR=  ",'$';ingrese n1
msjn2 db 10,13, "INGRESE EL SEGUNDO NUMERO A RESTAR=  ",'$';ingrese n2

;mensaje para mostrar los resultados
 

msjnR db 10,13, "LA RESTA DE LA OPERACION DADA ES=  ",'$'
 

.code
begin proc far   
    
    
    ;direccionamiento del procedimiento
    mov ax, @data
    mov ds,ax   
    
    
    ;solicitar del teclado numero 1
    
    mov ah, 09
    lea dx, msjn1
    int 21h
    mov ah, 01
    int 21h
    sub al, 30h
    mov numero1,al   
    
    
    ;solicitar del teclado numero 2
    
    mov ah, 09
    lea dx, msjn2
    int 21h
    mov ah, 01
    int 21h
    sub al, 30h
    mov numero2,al
    
    ;operaciones aritmeticas
                  
    
    ;RESTA
    mov al,numero1
    sub al,numero2
    mov resta,al
    
 
    ;mostrando la resta
    mov ah,09
    lea dx,msjnR
    int 21h
    mov dl,resta
    add dl,30h 
    mov ah,02
    int 21h
   
  
    ;cierre del programa
    mov ah,4ch
    int 21h
    
    begin endp
end

Corrida del programa:

Al momento de correr el programa, nos mostrara al igual que en el programa anterior, 2 mensajes pidiendo 2 numeros, para despues mostrarnos la resta de dichos numeros.

Cabe mencionar que el primer numero que se ingrese siempre debe ser mayor al segundo numero ingresado, si no ocurrira un error.




Programa suma de dos numeros dados por el usuario

Este programa puede ser encontrado en el siguiente video.
Lectura de Caracteres en Lenguaje Ensamblador

Sintaxis:



.MODEL SMALL
.STACK 64
.DATA
    N1 DB 0
    N2 DB 0
    SUMA DB 0
    MSG1 DB "DAME EL PRIMER VALOR:","$"
    MSG2 DB 10,13,"DAME EL SEGUNDO VALOR","$"
    MSG3 DB 10,13,"SUMA= ","$"
.CODE
BEGIN PROC FOR
    ;DIRECCIONAMOS AL SEGMENTO DE DATOS
    MOV AX,@DATA
    MOV DS,AX
    
    ;SOLICITAMOS EL PRIMER DIGITO
    MOV AH,09
    LEA DX,MSG1
    INT 21H
    
    ;SE LEE EL PRIMER VALOR
    MOV AH,01
    INT 21H
    SUB AL,30H
    MOV N1,AL
    
    ;SOLICITAMOS EL SGUNDO DIGITO
    MOV AH,09
    LEA DX,MSG2
    INT 21H
    MOV AH,01
    INT 21H
    SUB AL,30H ;CONVIERTE EL CARACTERER EN NUMERO
    MOV N2,AL
    ;OPERACION
    MOV AL,N1
    ADD AL,N2
    ADD AL,30H ;CONVIERTE A CARACTER
    MOV SUMA,AL
    MOV AH,09
    LEA DX,MSG3
    INT 21H
    
    ;SE IMPRIME EL CARACTER CON EL SRVICIO 02 DE LA INT 21H
    MOV AH,02
    MOV DL,SUMA
    INT 21H
    MOV AH,4CH
    INT 21H
    BEGIN ENDP
END

Corrida del programa:

Al correr el programa nos muestra en pantalla un par de mensajes, en donde se nos pide ingresar algun numero, este numero debe de ser de 1 digito, ingresamos los 2 numeros, y se nos muestra un mensaje donde nos da la suma de dichos numeros ingresados.
Cabe mencionar que la suma de los 2 numeros dados, debe de dar 1 solo dijito, si no nos dara un caracter erroneo.



Impresion de Caracteres en pantalla y lectura desde teclado

Al momento de ingresar un caracter a lenguaje ensamblador a nuestros registros, este no tma el caracter como tal, no lo toma como la letra o el numero que es, si no que toma el codigo ascii del caracter.

Tabla de códigos ascii proporcionada desde emu8086


Al ingresar un caracter, pongamos de ejemplo un numero, el compilador debe tomar el codigo ascii de de ese numero, y al momento de querer imprimirlo en pantalla, o en la consola, lo que debe hacer, es regresar el caracter que le pertenece a ese codigo ascii y mostrara en pantaña el numero seleccionado.

Programa que muestra un determinado mensaje, una cierta cantidad de veces dependiendo de las veces que el usuario elija que se repita.

Sintaxis:

.MODEL SMALL
.STACK 64

.DATA
MENSAJE DB "INGRESA EL NUMERO DE VECES QUE SE REPITETIRA EL MENSAJE (1-9)",13,10,"$"
REPETIR DB 13,10,"REPITIENDO EL CICLO.$"

.CODE
INICIO PROC FAR
        
        MOV AX,@DATA
        MOV DS, AX
        
        MOV AH, 09
        LEA DX, MENSAJE
        INT 21H
        
        MOV AH,01
        INT 21H
        
        ;CONVERTIR A VALOR LO QUE SE LE TECLEA
        SUB AL, 30H
        
        MOV CL , AL
        
        CICLO:
            MOV AH, 09
            LEA DX, REPETIR
            INT 21H
        LOOP CICLO
        
        MOV AX, 4C00H
        INT 21H
INICIO ENDP
END

Corrida del programa:

Al momento de correr el programa, lo que podemos observar es que nos muestra un mensaje el cual dice que inigresemos las veces que queremos que s emuestre el mensaje.
Por ciertas razones, las veces que se puede repetir, mas bien, el numero de veces que se va a repetir, solo puede ser de 1 digito.



Uso de registros en ensamblador 8086

Los registros básicos a la hora de programas dentro del lenguaje de ensamblador, enfocándonos en 8086.
Si bien existen distintos tipos de registros, nosotros veremos los siguientes

AX    Acumulador
BX    Registro base
CX    Registro contador
DX    Registro de datos

El registro AX se usa para almacenar resultados, lectura o escritura desde o hacia los puertos.
El registro BX sirve como apuntador base o indice.
El registro CX se utiliza en operaciones de iteracion, como un contador que se va incrementado o decrementando de acuerdo con el tipo de instrucción dada. Mas comúnmente, utilizado en algún ciclo.
El registro DX se usa como puente para el acceso de datos.

De los anteriores registros, solo habiamos utlizado los registros AX, y el BX par guardar registros numericos hexadecimales.

A continuacion veremos la utilizacion de los registros antes mencionados, para imprimir el abecedario.

Sintaxis:

;USO DEL REGISTRO CX

ORG 100H
    MOV DL, "A" ;SE TRANSFIERE LA LETRA A AL REGISTRO DL
    MOV CX, 26  ;SE TRANSFIERE 26 AL REGISTRO CONTADOR
    
    IMPRIME: ;VA A IMPRIMIR HASTA ACABAR LAS 26
        MOV AH, 02 ;SE TRANSFIERE 02 AL ACUMULADOR
        INT 21H    ;DATO ASCII LEIDO DESDE EL TECLADO
        INC DL     ;SIUIENTE CARACTER DEL ALFABETO
    LOOP IMPRIME   ;CONTINUA

Corrida del programa:

Se han dejado comentarios en el programa para su entendimiento.



Al momento de correr el programa veremos como empiezan a aparecer cada una de las letras del alfabeto hasta su terminacion.


Ahora veremos el programa con una segunda parte la cual no seria mas que el mismo alfabeto pero terminando de imprimir el alfabeto en mayusculas empezara ahora en minusculas.

Sintaxis:


;USO DEL REGISTRO CX

ORG 100H
    MOV DL, "A" ;SE TRANSFIERE LA LETRA A AL REGISTRO DL
    MOV CX, 26  ;SE TRANSFIERE 26 AL REGISTRO CONTADOR
    
    IMPRIME: ;VA A IMPRIMIR HASTA ACABAR LAS 26
        MOV AH, 02 ;SE TRANSFIERE 02 AL ACUMULADOR
        INT 21H    ;DATO ASCII LEIDO DESDE EL TECLADO
        INC DL     ;SIUIENTE CARACTER DEL ALFABETO
    LOOP IMPRIME   ;CONTINUA
    
MOV DL, "a"
MOV CX, 10
LOOP2:
    MOV AH, 02
    INT 21H
    INC DL
LOOP LOOP2


Corrida del programa:


Programa en ensamblador 8086: Operaciones de suma, resta e incremento

Ahora veremos un programa de cierta manera sencillo, dentro de emu8086.

Sintaxis:


ORG 100H         

;SUMA NUMEROS DE 1 SOLO DIGITO
MOV AX, 8H   ;ASIGNA UN VALOR A AX
MOV BX, 4H   ;ASIGNA UN VALOR A BX
ADD AX, BX   ;SUMA AX Y BX
MOV BX,5     ;CAMBIA EL VALOR DE BX
SUB AX,BX    ;RESTA AX Y BX
MOV BX,3     ;CAMBIA EL VALOR DE BX
INC BX
MOV AX,6

HLT ;TERMINA EL PROCESO

CORRIDA DEL PROGRAMA:




Asi es como se ve el programa apenas correrlo.
A continuacion notamos como con la instruccion MOV AX, 8H, se le asigna a AX el valor de 8 en hexadecimal.



 Aqui se le asigna a BX el valor de 4 hexadecimal


Posteriormente se realiza una suma del contenido del registro ZX y BX guardando el resultado en AX, al utilizar hexadecimal, el registro guardado de la suma, se guardara en hexadecimal.


Al registro BX se le cambia el valor a 5 en hexadecimal.


Posteriormente al cambio de valor a BX, se hace una substraccion o resta, entre el registro AX y el BX, dando como resultado un valor de 7 guardandolo en el registro AX.


Después de la substraccion, se le cmabia el valor a BX por un 3 hexadecimal.


Finalmente, incrementamos en 1 el valor del registro BX.


Cambiamos el valor de AX por un 6


Y finalizamoc el programa.

Programa #2

Se hizo un segundo programa al cual solo se le cambiaban los valores ingresandolos en decimal y el programa como tal los convierte a hexadecimal.
Es decir qu si enviamos un 10 al registro AX, el programa lo convertira a hexadecimal y le guardara un "A"

Sintaxis:

ORG 100H
MOV AX, 80  ;Asigna el valor de 80 decimal a hexadecimal a AX
MOV BX,450  ;Asigna el valor de 450 decimal a hexadecimal a BX
INC BX      ;Incrementa en 1 BX
ADD AX,80   ;Suma a AX, 80 en hexadecimal
MOV CX,200  ;Da el valor de 200 hexadecimal a CX
SUB CX,AX   ;Resta a CX el valor en AX

RET


1.4 Iinterrupciones dentro del lenguaje ensamblador

Interrupciones

Veamos primero mas que nada que es una interrupción dentro el lenguaje ensamblador, es una situación especial que suspende la ejecución de un programa de modo que el sistema pueda realizar una acción para tratarla. Tal situación se da, por ejemplo, cuando un periférico requiere la atención del procesador para realizar una operación de E/S.

Las interrupciones constituyen quizá el mecanismo mas importante para la conexión del microcontrolador con el mundo exterior, sincronizando la ejecución de programas con acontecimientos externos.

Pasos para el procesamiento

  1. Terminar la ejecución de la instrucción maquina en curso.
  2. Salva el valor de contador de programa, IP, en la pila, de manera que en el CPU, al terminar el proceso, pueda seguir ejecutando el programa a partir de la ultima instrucción.
  3. La CPU salta a la dirección donde esta almacenada la rutina de servicio de interrupción y ejecuta esa rutina que tiene como objetivo atender al dispositivo que genero la interrupción.
  4. Una vez que la rutina de la interrupción termina, el procesador restaura el estado que había guardado en la pila en el paso 2 y retorna al programa que s estaba usando anteriormente.

EJEMPLOS DE INTERRUPCIONES

int 01h-->un solo paso
int 02h-->interrupcion no enmascarable
int 03h--> punto de interrupcion
int 04h-->desbordamiento
int 05h-->impresion de pantalla
int 08h-->Cronometro
int 15h-->Servicios del sistema
int 16h-->Funciones de entrada del teclado
int 18h-->Entrada con el Basic de Rom
int 19h-->Cargador ed arranque
int 1Ah-->Leer y establecer la hora
int 1Bh-->Obtener el control con una interrupcion de teclado.
int 2oh-->Terminar un programa
int 33h->Funciones del Raton

Aqui abajo dejare un pdf el cual contiene una tabla de interrupciones.




Cabe aclarar este PDF no lo encontré yo, lo encontró mi compañera Carolina Sauceda Peña pueden encontrar su blog en esta liga http://iscsaucedacarolina.blogspot.com creditos a ella.

Programa que pone 3 colores y 3 letras

include 'emu8086.inc' CUADRO MACRO XI,YI,XF,YF,COLOR MOV AX, 0600H ; MOV BH, COLOR ; COLOR DE FONDO Y LETRA MOV BL, 00H MOV CH...