martes, 5 de marzo de 2019

Aportes en clase con libreria emu8086



PROGRAMA "MAYOR O MENOR DE EDAD"

.model small
.stack
.data                   
include "emu8086.inc"       
num1 db 0; variable para la edad
.code
inicio proc far
 
    ;poner el primer letrero
    print " Ingrese su edad: "
 
    ;lectura del valor
    call scan_num  ;llamada al procedimiento de la lib para pedirla

    mov num1,cl
 
    ;lectura segundo valor
 

    xor ax,ax  ;xor para limpiar el registro
    mov al,num1
    cmp al,18d ;Si lo que se encuentra en al>18
    JGE mayor ;salta a mayor
    JMP menor ;sino ve a menor
 
    mayor:
        printn " "
        print "Eres mayor de edad"
        jmp final
    menor:
        printn " "
        print "Eres menor de edad"
           
        jmp final
       
       
    final:
         print " "
         printn " "
         print "Presiona enter para salir..."
         mov ah,0 ;servicios de lectura de una pulsación de teclado
         int 16h  ;Invoca a servicios de teclado
         mov ah,4ch
         int 21h
         ret
define_print_string
define_print_num
define_print_num_uns
define_scan_num
endp inicio

end

SALIDA DEL PROGRAMA


------------------------------------------------------------------------------------------------------------


PROGRAMA DE SUMA DE DOS NUMEROS

name "suma de dos numeros"
include "emu8086.inc"
org 100h

.data
suma db 2 dup (?) ;,manera de declarar un arreglo de 2 lugrares
.code
sumas proc
    print " Introduce el primer numero: " ;macro de la lib
    call scan_num  ;llamada a un prodecimiento para pedir un numero
    mov suma[0],cl
    printn " "
    print " Introduce el segundo numero: "
    call scan_num  
    mov suma[1],cl
    xor ax,ax      ;xor nemonico que limpia registros
    add al,suma[0] ;valor de suma posicion 0
    add al,suma[1] ;valor de suma posicion 1
    printn " " ;macro de la libreria pone un espacio y retorno
    print " La suma es: " ; macro que imprime un letrero
    call print_num  ;llamada a un procedimiento para imprimir un num del
sumas endp
exit:
    print " "
    printn " "
    print "Presiona enter para salir..."
    mov ah,0  ;servicio de pulsacion de teclado
    int 16h   ;invoca a servicios de taclado
    ret
define_print_string  ;no se uso 
define_print_num ;es del print_num
define_print_num_uns ;conversion decimal a scan_num
define_scan_num ;del scan_num prodedimiento
end  

SALIDA DEL PROGRAMA


------------------------------------------------------------------------------------------------------------


PROGRAMA "APROBADO O REPROBADO"

model small
.stack 64
.data
    include "emu8086.inc"
     
    nota db 0

     
.CODE  
OPERACIONES PROC FAR ;DECLARACION DE PROCEDIMIENTO   
  
    ;MUESTRO EL MENSAJE        
    print " "  ;usa macro print para un espacio
    print "Ingrese la calificacion: "
     
    call scan_num    ;Leo el numero  proc scan_num de la libreria
    mov nota,cl      ;lo guardo en nota
     
    xor ax,ax        ;borro el contenido de ax
    mov al,nota      ;muevo nota a al
     
    CMP AL,70d       ;comparo al con 70
    JGE MAYOR        ;si es mayor o igual pasa a mayor
    JMP MENOR        ;si no a menor
         
   MAYOR:
    printn " "   
    print "Aprobado"
    JMP SALIR
         
   MENOR:  
    printn " "   
    print "Reprobado"
    JMP SALIR
     
   SALIR:
         print " "
         printn " "
         gotoxy 10,10  ;coloco el cursor en las coordenadas 10x,10y
         print "Presiona enter para salir..." ;imprimo despues este mensaje
         mov ah,0  ;servicio de lectura de pulsacion de tecla
         int 16h   ;invoca servicios de teclado
         mov ah,4ch
         int 21h
         ret
        
OPERACIONES ENDP  

define_print_string
define_print_num
define_print_num_uns
define_scan_num   
     
END 

SALIDA DEL PROGRAMA

Programas con Libreria emu8086


HOLA MUNDO 

include emu8086.inc
org 100h
PRINT  'HOLA MUNDO'
GOTOXY 10,5
PUTC 65 ; 65 es un codigo ascii para 'A'
PUTC 'B'
RET ;REGRESO AL SISTEMA OP
END ;DIRECTIVA PARA DETENER EL COMPI

Salida del programa




-----------------------------------------------------------------------------------------------------------------

Pide tu nombre y muestra saludo


;get string y print_string
include 'emu8086.inc' 
org 100h 

lea SI, msg1  ;configurar puntero (SI) a msg
              ;pedir el numero

call print_string ;imprime el mensaje que apunta SI

lea  DI, buffer ;configura el puntero (DI) para el buffer de entrada
mov  DX, bufSize ;esteble el tamano del buffer
call get_string  ;obtener el nombre y ponerlo en el buffer

lea  SI , newIn ;punto a CR/LF hola mundo
call print_string ;mensaje impreso que apunta SI
ret  ;retorno del sistema    

;data
msg1   db "Ingresa tu nombre " , 0
newIn  db 13,10
       db "Hola "
buffer db 20 dup (0)   ; buffer de entrada para get_string
bufSize = $-buffer ;calcul el tamano del buffer

define_get_string
define_print_string
end     ;directivo para detener el compilador

salida del programa


--------------------------------------------------------------------------------------------------------------------

Pide un numero y muestra saludo


include 'emu8086.inc'
org 100h
lea SI, msg1 ;pide el numero
call print_string
call scan_num ;obtener el numero en cx

mov ax, cx   ;copia el numero a ax

call pthis  ;imprime la sig cadena
DB 13,10, 'Has introducido  el numero: ' , 0
call print_num   ;numero de impresionen ax
ret

msg1 DB 'Ingresa un numero: ', 0

;macros para definir procs 
define_scan_num
define_print_string
define_print_num
define_print_num_uns
define_pthis

end

Salida del programa

Introduccion al Lenguaje ensamblador


1.1 IMPORTANCIA DE LA PROGRAMACIÓN EN LENGUAJE 

ENSAMBLADOR
El lenguaje ensamblador como cualquier lenguaje de programación es un conjunto de palabras que le indican al ordenador lo que tiene que hacer. Sin embargo la diferencia fundamental es que cada instrucción escrita en lenguaje ensamblador tiene una correspondencia exacta con una operación en el procesador. Por lo que son operaciones muy sencillas tales como: “Cargar 32 en el registro BX” o “Transferir el contenido del registro CL al CH”. Así pues, las palabras del lenguaje ensamblador son nemotécnicas que representan el código máquina, lenguaje que entiende el procesador.
En el 8086/88 se definen los siguientes tamaños de datos:
4 bits - nibble
8 bits - byte
16 bits - word
32 bits – dword

1.2 EL PROCESADOR Y SUS REGISTROS
La Unidad Central de Proceso (CPUpor sus siglas en inglés) tiene 14 registros internos cada uno de 16 bits. Los primeros cuatro, AXBXCX DX, son de uso general y se pueden usar también como registros de bits. Es decir, AX se puede dividir en AH AL (AH es el byte alto, high, y AL es el byte bajo, low) Lo mismo es aplicable a los otros tres (BX en BH BLCX en CH CL DX en DH DL)
Estos son los únicos registros que pueden usarse de modo dual (en 8 o 16 bits)

Los registros de la CPU son conocidos por sus nombres propios, que son:

AX (acumulador)
BX (registro base)
CX (registro contador)
DX (registro de datos)
DS (registro del segmento de datos)
ES (registro del segmento extra)
SS (registro del segmento de pila)
CS (registro del segmento de código)
BP (registro de apuntadores base)
SI (registro índice fuente)
DI (registro índice destino)
SP (registro del apuntador de pila)
IP (registro del apuntador de siguiente instrucción)
F (registro de banderas)

El registro AX se usa para almacenar resultados, lectura o escritura desde o hacia los puertos.
El BX sirve como apuntador base o índice.
El CX se utiliza en operaciones de iteración, como un contador que automáticamente se incrementa o decrementa de acuerdo con el tipo de instrucción usada.
El DX se usa como puente para el acceso de datos.
El DS es un registro de segmento cuya función es actuar como policía donde se encuentran los datos. Cualquier dato, ya sea una variable inicializada o no, debe estar dentro de este segmento. La única excepción es cuando tenemos programas del tipo *.com, ya que en éstos sólo puede existir un segmento. El registro ES tiene el propósito general de permitir operaciones sobre cadenas, pero también puede ser una extensión del DS
Ejemplo de código usando AX, DS y DX:

.MODEL SMALL
.STACK
.DATA                
CADENA1 DB "HOLAMUNDO"."$"
.CODE
PROGRAMA:
MOV AX,@DATA
MOV DS, AX
MOV DX, OFFSET CADENA1
MOV AH, 9
 INT 21H
END PROGRAMA

1.3 LA MEMORIA PRINCIPAL (RAM)
Este tipo de memoria puede ser borrada y grabada las veces que deseemos. La única desventaja es que la información grabada en ella solo puede ser utilizada mientras tenga energía. En cuanto se corte la alimentación, los datos que se grabaron se borrarán instantáneamente. Se usan solo como almacenamiento temporal.

1.4 EL CONCEPTO DE INTERRUPCIONES
Una interrupción 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 más importante para la conexión del microcontrolador con el mundo exterior, sincronizando la ejecución de programas con acontecimientos externos.

Ejemplos de interrupciones

int 01h-->un solo paso
int 02h-->Interrupción no enmascarable
int 03h--> Punto de interrupción
int 04h-->Desbordamiento
int 05h-->Impresión 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 de arranque
int 20h-->Invoca al servicio de terminación de programa del DOS
int 21h-->Invoca a todos los servicios de llamada a función DOS
int 1Ah-->Leer y establecer la hora
int 1Bh-->Obtener el control con una interrupción de teclado.
int 2oh-->Terminar un programa
int 33h-->Funciones del Ratón

1.5 LLAMADAS AL SERVICIO DE SISTEMAS
Una llamada al sistema es un método o función que puede invocar un proceso para solicitar un cierto servicio al sistema operativo. Dado que el acceso a ciertos recursos del sistema requiere la ejecución de código en modo privilegiado, el sistema operativo ofrece un conjunto de métodos o funciones que el programa puede emplear para acceder a dichos recursos. En otras palabras, el sistema operativo actúa como intermediario, ofreciendo una interfaz de programación (API) que el programa puede usar en cualquier momento para solicitar recursos gestionados por el sistema operativo.

1.6 MODOS DE DIRECCIONAMIENTO
Los modos de direccionamiento indican la manera de obtener los operandos y son:
Direccionamiento de registro
Direccionamiento inmediato
Direccionamiento directo
Direccionamiento indirecto mediante registro
Direccionamiento indirecto por registro base
Direccionamiento indexado
Direccionamiento indexado respecto a una base
El tipo de direccionamiento se determina en función de los operandos de la instrucción.
La instrucción MOV realiza transferencia de datos desde un operando origen a un operando Su formato es el siguiente:

MOV destino, origen

1.7 PROCESO DE ENSAMBLADO Y LIGADO
1. El programa utiliza un editor de texto para crear un archivo de texto ASCII, conocido como archivo de código fuente.
2. El ensamblador lee el archivo de código fuete y produce un archivo de código objeto, una traducción del programa a lenguaje máquina. De manera opcional, produce un archivo de listado. Si ocurre un error, el programador debe regresar al paso 1 y corregir el programa.
3. El enlazador lee el archivo de código objeto y verifica si el programa contiene alguna llamada a los procedimientos en una biblioteca de enlace. El enlazador copia cualquier procedimiento requerido de la biblioteca de enlace, lo combina con el archivo de código objeto y produce el archivo ejecutable. De manera opcional, el enlazador puede producir un archivo de mapa.
4. La herramienta cargador (loader) del sistema operativo lee el archivo ejecutable y lo carga en memoria, y bifurca la CPU hacia la dirección inicial del programa, para que éste empiece a ejecutarse.

1.8 DESPLEGADO DE MENSAJES DEL MONITOR
Todos los gráficos y el texto que se muestran en el monitor se escriben en la RAM de visualización de video, para después enviarlos al monitor mediante el controlador de video. El controlador de video es en sí un microprocesador de propósito especial, que libera a la CPU principal del trabajo de controlar el hardware de video.

lunes, 4 de marzo de 2019

Libreria .emu8086

USO DE LA LIBERIA emu8086

emu8086.inc define las siguientes macros :

PRINT string - macro con 1 parámetro, imprime una cadena.PRINTN string - macro con 1 parámetro, imprime una cadena. Lo mismo que PRINT pero agrega automáticamente "retorno de carro" al final de la cadena.PUTC char - macro con 1 parámetro, imprime un carácter ASCII en la posición actual del cursor.GOTOXY col, fila - macro con 2 parámetros, establece la posición del cursor.CURSOROFF - apaga el cursor de texto.CURSORON - enciende el cursor de texto.

emu8086.inc también define los siguientes procedimientos :

PRINT_NUM : procedimiento que imprime un número firmado en el registro AX . Para usarlo declare: DEFINE_PRINT_NUM y DEFINE_PRINT_NUM_UNS antes de la directiva END .
PRINT_NUM_UNS : procedimiento que imprime un número sin firma en el registro AX . Para usarlo declare: DEFINE_PRINT_NUM_UNS antes de la directiva END.
GET_STRING : procedimiento para obtener una cadena terminada en nulo de un usuario, la cadena recibida se escribe en el búfer en DS: DI , el tamaño del búfer debe estar en DX . El procedimiento detiene la entrada cuando se presiona 'Enter'. Para usarlo declare: DEFINE_GET_STRING antes de la directiva END .

PRINT_STRING : procedimiento para imprimir una cadena terminada en nulo en la posición actual del cursor, recibe la dirección de la cadena en el registro DS: SI . Para usarlo declare: DEFINE_PRINT_STRING antes de la directiva END .
SCAN_NUM : procedimiento que obtiene el número FIRMADO de varios dígitos del teclado y almacena el resultado en el registro CX . Para usarlo declare: DEFINE_SCAN_NUM antes de la directiva END .

U1 - Examen


Examen Unidad 1                                                                                                           Graficacion

Alumno: Armando Hernandez Leal
Maestra: Maria Yolanda Rodriguez Loya

¿ Que se entiende por la graficacion por computadora ?
La graficacion hecha por computadora es el arte o la ciencia de producir imágenes gráficas con la ayuda de la computadora .

Es el campo de la informática visual , donde se utilizan computadoras tanto para generar imágenes visuales sinteticamente como  integrar o cambiar la información visual y espacial aprobada del mundo real .

Una de las características de la graficacion por computadora es que pude ser almacenada, manipulada  , transportada y transportada por medio de computadoras o medios electrónicos digitales


¿ Que se entiende por  procesamiento de imágenes ?
El procesamiento , el análisis y la interpretación de imágenes es un campo de especialización muy importante de la visión artificial , que hace posible que un ordenador procese imágenes o fotografías  bidimensionales ( aisladas o bien conectadas en secuencias dinámicas o temporales).


¿ Que se entiende por reconocimiento de patrones ?

Son los medios por los cuales se puede interpretar el mundo. Es la ciencia que se ocupa de los procesos  sobre ingeniería , computación y matemáticas relacionados con objetos físicos  y/o
abstractos , con el propósito de extraer información que permita establecer propiedades de o ente  conjuntos de dichos objetos.

Se enfoca en :

*Reconocimiento estadístico de patrones
*Reconocimiento sintactico  de patrones
*Redes neuronales
*Reconocimiento lógico combinatorio de patrones

¿Que se entiende por geometría comunicacional ?
La geometría Computacional es una disciplina que se ocupa de diseño y análisis de algoritmos que resuelven problemas geométricos . En ella ocurren elementos puramente matemáticos con cuestiones y herramientas propias de la información.


¿Que se entiende por datos pictoricos?
Son los datos numéricos representados y expresados mediante imágenes  haciendo uso programas de graficacion .



¿Que se entiende por Rasterizacion?
La rasterizacion es el proceso por el cual una imagen descrita en un formato grafico vectorial se convierte en un conjunto de pixeles o puntos para ser desplegados en un medio de salida digital , como una pantalla de computadora, impresora ,etc . Este procesamiento se suele usar en momentos muy concretos .

¿Que se entiende por Rendering ? 
Renderizado (render en ingles) es un termino usado en jerga informática para referirse al proceso de generar  una imagen o vídeo mediante el calculo de iluminación Gi  partiendo de un modelo en 3D .



¿Que se entiende por modelo gráfico ?
Estudia los diversos tipo de modelos matemáticos usados para representar la forma de los objetos que integran una escena. El modelado consiste en ir dando forma a objetos individuales que luego serán usados en la escena. Los procesos de modelado pueden incluir la edición de la superficie del objeto o
las propiedades del material .


¿Que se entiende por transformacion grafica?

Transformacion de la grafica de funciones.La graficacion de las funcione es como un retrato de las funciones . Nos ayuda a tener una idea de como trasforma la funcion los valores que le vamos dando.
A partir de la grafica de la funcion podemos encontrar el dominio , el contradominio ,describir su comportamiento : donde crece ,donde decrece , donde se hace cero , donde tiene un minimo o un maximo , etc.

Aportaciones de los siguientes autores a la graficacion por computadora :
 Ben Laposky :  En 1950 Laposky utiliza un ociloscopio de rayos catodicos con generadores de ondas sinusoidales y varios otros circuitos eléctricos y electrónicos para crear arte abstracto ,refiriéndose por si mismo como , "composiciones eléctricas" . Por juguetear  con los haces electrónicos mostrados por tubo de rayos catodicos del osciloscopio y fotografiarlos con una cámara de alta velocidad con filtros de color , las imágenes resultantes a los que llamo "Oscillons" , muestra varias combinaciones estéticas de las formas basicas de onda eléctricas jugando una especie de "música visual " .

Steve Russell :  Steve "Slug" Russell es un programador y científico, conocido por haber creado uno de los primeros videojuegos llamado Spacewar ! en 1961. Spacewar fue incuestionablemente el primer videojuego en obtener amplio reconocimiento, y es generalmente reconocido como el primero del genero "shoot-'em'up". También escribio las primeras dos implementaciones del lenguaje de programación Listp para lBM 704.  En un tiempo Steve trabajo para una compañía fundada por Nolan Bushnell que tiempo después se convertiría en Atari.

Ivan Sutherland : En 1965 , este científico presento en el congreso de IFIP (International Federation of Information Processing) su programa de investigación sobre grafismo computerizado ; dio forma al concepto de mundo virtual. Sutherland ha escrito cerca de 49 publicaciones y lleva acabo 12 patentes. A lo largo de los años , Ivan Edward Sutherland ha recibido muchos premios por sus contribuciones a la informática, como el AM Turing Award , el First Zwoeykin Award y muchos mas.

Jack Bresenham : Algoritmo de Bresenham, desarrollado en 1962 ,  es la inovacion mas conocida. Determina que apunta en un  2- dimensional el trama debe ser trazado con fin de formar una linea recta entre dos puntos dados , y se utiliza comúnmente para dibujar lineas en una pantalla de ordenador . Es uno de los primeros algoritmos descubiertos en el campo de los gráficos por ordenador. El algoritmo de circuito punto medio comparte algunas similitudes a su algoritmo de linea y se conoce como algoritmo de circuito de Bresenham .


Unidad 3 - Configuracion y Administracion del Espacio en Disco

3.1 Estructuras logicas de almacenamiento. Para la gestión del almacenamiento de una base de datos existen 4 conceptos bien definidos que ...