domingo, 10 de febrero de 2019

1. Programa que repite mensajes

Programa que repite mensajes 


Código:


; You may customize this and other start-up templates; 
; The location of this template is c:\emu8086\inc\0_com_template.txt

org 100h
.model small
.stack 64

.data
mensaje db "Ingrese el numero de veces que se repetira 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 que se tecleo
      sub al, 30h
      mov cl,al

   ciclo:
    mov ah, 09
    lea dx, repetir
    int 21h 
    
   loop ciclo
                    
   mov ax,4c00h
   int 21h

inicio endp

ret


Resultado:








1. ABC Programa que utiliza el Registro cx (ciclos, registro contador)

Programa que utiliza el Registro cx (ciclos, registro contador)

Los registros que veremos son:
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 iteración, como un contador que se va incrementado o decrementa 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.

Cada uno de estos registros sirven de diferente forma dentro de los programas. Anteriormente, habíamos utilizado el registro AX y BX para guardar datos numéricos en hexadecimal.


Programa 1 : cx contador


ABECEDARIO EN MAYÚSCULAS

Código:

; You may customize this and other start-up templates;

; The location of this template is c:\emu8086\inc\0_com_template.txt

org 100h   ;   espacio en memoria

   MOV DL, 'A' ;Se transfiere la letra A el registro de datos dl

   MOV CX, 26 ;se transfiere 26 al registro contador

   imprime: ; va a imprimir hasta acabar las 26 iteraciones
    MOV AH, 02 ; se transfiere 02 al acumulador de byte alto
    INT 21h ; dato ascii leido desde el teclado
    INC DL;siguiente caracter del alfabeto

   LOOP imprime ; continua

    ;MOV DL, "A"
    ;MOV CX, 10
    ;LOOP
    ;    MOV  ah,02
    ;    int 21h
    ;    inc dl
    ;loop loop2 imprime

    ret




Resultado:








Programa 2:

Abecedario en minúsculas

Código:


org 100h   ;   espacio en memoria


MOV DL, "a"
MOV CX, 10
loop2:

    MOV  ah,02
    int 21h
    inc dl

loop loop2 ;imprime

ret

Resultado:












TOP 10 lenguajes de programación




1. JAVA

Liderando el ranking encontramos a Java, el omnipresente. Ahora más reforzado con Android, el sistema operativo más utilizado del mundo. Un lenguaje de programación imprescindible, con el que no te faltará el trabajo. Según un estudio de LinkedIn, está dentro de las 20 habilidades más valoradas por los jefes.

Ventajas:
  • Lenguaje multiplataforma, ejecutable en la mayoría de los sistemas operativos.
  • Software de distribución libre.
  • Lenguaje completo y dispone de una librería y utilidades amplias.
Desventajas:
  • Lenguaje de ejecución lenta al ser interpretado.
  • Difícil de aprender debido a su compleja sintaxis.

2. PYTHON

El segundo del top ten. El lenguaje multiplataforma y multiparadigma. Aplicado en el desarrollo web, extracción de datos, informática científica y aprendizaje automático. Soporta la orientación a objetos, la programación imperativa y funcional. Perfecto para principiantes.
Python  se crea a finales de los 80 y principios de los 90. Su programación se orienta a objetos y se emplea para hacer aplicaciones genéricas (juegos, web o de escritorio), en la informática científica y big data, que ahora está muy de moda. Su código es de distribución libre, por lo que no tendrás que pagar licencias para usarlo.

Ventajas:
  • Es escalable y flexible.
  • Funciona en múltiples plataformas (Windows, Mac, Linux).
  • Soporte de programación de interfaces gráficas de usuario.
  • Conexión con las bases de datos más usadas.
  • Se integra fácilmente con lenguajes como C, C++, y Java entre otros.
Desventajas:
  • No dispone de una buena documentación.
  • Es más lento comparado con otros lenguajes como Java o C.
  • Difícil de ejecutar múltiples hilos.

3. JAVASCRIPT

Más conocido como "el lenguaje de la web". Más del 95% de las webs de Internet son programadas con JavaScript, como Google Chrome, Firefox y Explorer. Además, presenta un enorme potencial de futuro a medida que el IoT y los dispositivos móviles se vuelven más populares. Esto le convierte en una habilidad indispensable para los desarrolladores.
Las ventajas de JavaScript se sitúan en el lado del front-end, y varios frameworks que soporta como React y Angular JS tienen un gran potencial para mejorar la experiencia del usuario en la web. Se trata en definitiva de un lenguaje ligero, multiplataforma, estructurado y orientado a objetos y eventos.

Ventajas:
  • Es un lenguaje de programación seguro y fiable.
  • De fácil uso y muy completo.
  • Es ligero y permite la elaboración de múltiples aplicaciones web.
  • Es compatible con la mayoría de navegadores.


Desventajas:
  • No proporciona muchos recursos.
  • Soporta 3D, pero las opciones que ofrece son limitadas.
  • Puede ser vulnerable, ya que el código de JavaScript está visible para todo el mundo.
  • Tienes que descargar completamente el código antes de procesarlo.


4. C++

El favorito de los programadores de videojuegos y aplicaciones de banca electrónica. Nace en 1983 de C y es uno de los más estudiados en la actualidad, a pesar de su complejidad comparado con JavaScript o Python. Es empleado para crear software en aplicaciones y sistemas, juegos para PC, controladores y firmware incorporado.

Ventajas:
  • Lenguaje muy didáctico, y a través del mismo puedes aprender otros como C#, Java, PHP.
  • Muy utilizado en la creación de sistemas operativos, utilidades, bibliotecas…
  • Permite programar con múltiples estilos, como los estructurados.
  • Admite la compilación de nuestro código en múltiples plataformas.
Desventajas:
  • El uso de librerías dinámicas se hace muy complicado, ya que la carga y la liberación de memoria de la librería corre a cargo de los programadores.
  • No es muy usable para desarrollar páginas web.
  • Complejo programar bases de datos.
  • Más pesado que otros programas similares. 

5. C# 

Dominar esta variante de C es esencial para todo programador. Con C# se desarrollan las aplicaciones de Microsoft. La compañía lo creó para funcionar con .NET Framework y utilizar un lenguaje más rápido y fácil. Muy demandado en el mercado laboral por la cantidad de usuarios de Windows, lo que le convierte en competencia directa con macOS e iOS.

Ventajas:
  • Lenguaje muy potente y flexible.
  • Soporta la mayoría de paradigmas.
  • Es complicado hacer portabilidades.
Desventajas:
  • Tiene una curva de aprendizaje bastante elevada.
  • No existe una correcta documentación de la herramienta.

6. PHP

Este lenguaje es otro de los más populares e incrustado a HTML  se utiliza para desarrollar páginas webs. Lo encontramos instalado en más de 20 millones de sitios web y es considerado uno de los más flexibles gracias a su Código Abierto. Ideal para los que se inician en programación.

Ventajas:
  • Muy fácil de usar si estás empezando en esto de la programación, pero muy completo para los programadores profesionales.
  • Se orienta al desarrollo de aplicaciones web dinámicas.
  • Es un código seguro y confiable, ya que el código fuente está oculto para el navegador y cliente.
  • Licencia abierta de uso.
  • Las últimas versiones hacen que PHP sea una lenguaje orientado a objetos muy potente y con un rendimiento muy mejorado.
Desventajas:
  • Necesitas un servidor web para ejecutar una aplicación, aunque las últimas versiones traen un servidor incorporado.
  • Debes tener un conocimiento genérico de HTML para trabajar con PHP o con JSON.
7. PERL 

Lenguaje muy práctico para extraer información de archivos de texto y generar informes a partir del contendido de los ficheros. De uso gratuito, a pesar de su continuo avance, la preferencia por esta habilidad ha bajado entre los desarrolladores.

Ventajas: 
  • Es uno de los lenguajes de programación más sencillos que existen.
  • Muy eficiente y de elevado rendimiento a la hora de tratar un gran volumen de datos.
  • Puede usarse tanto en desarrollo web como en otros entornos.
  • No necesitas hacer instalaciones a posteriori, ya que el intérprete viene por defecto.
  • Un mismo código corre en multitud de distribuciones sin necesidad de que toques una sola línea.

Desventajas:
  • Puede ser lento comparado con otras herramientas, ya que se compila al principio de su ejecución.
  • Su código es difícil de leer.
  • Al no disponer de control de excepciones es complicado encontrar algunos errores

8. SWIFT 

Creado por Apple en 2014 para el desarrollo de aplicaciones en iOS, OS X, Apple TV y Watch OS. Su código es fácil de leer y escribir, cercano al inglés. La compañía anunció en 2017 que pronto hará su uso gratuito.

Ventajas:
  • No es un lenguaje exclusivo de iOS y puedes usarlo en Linux también.
  • Es más fácil de aprender y programar con él que otros lenguajes.
  • Ofrece un código muy seguro ya que evita ciertas estructuras o condiciones.
  • Tareas como la encriptación se ejecutan más rápidamente.
Desventajas:
  • Cada vez que salga una nueva versión, tendrás que reprogramar tu app.
  • Impone muchas reglas a hora de programar. 
9. R 

Elegido como el lenguaje de programación preferido por los estadistas y los analistas.  Es una herramienta para el cálculo numérico que permite generar gráficos de alta calidad, siendo muy útil para la minería de datos. Cuenta con una gran variedad de entornos de desarrollo que facilitan escribir scripts: R commander, RKWard y RStudio.

Ventajas:
  • Es software libre de código abierto, por lo que tendrás una gran comunidad detrás apoyándote en caso de dudas.
  • Multiplataforma. Funciona en Mac, Windows…
  • Los gráficos son de gran calidad.
Desventajas:

  • Es difícil encontrar información específica dada la amplia documentación que circula.
  • Los mensajes de error que nos muestra no concretan los fallos.
  • Si no sabes mucho de programación, es complejo de usar.
10. RUST

Diseñado por Mozilla para ser un lenguaje seguro, concurrente y práctico, cualidades que lo hacen fácil de utilizar tanto por desarrolladores como por principiantes. Todo apunta a que en 2018, Rust va a alcanzar grandes cotas de popularidad.

Ventajas:
  • Lenguaje rápido y seguro (gestión automática del guardado y el manejo de la memoria).
  • Basado en expresiones.
  • No puedes utilizar un valor que no haya sido inicializado previamente.
Desventajas:
  • Necesitamos por lo menos una función de inicio (la función main).
  • Es más complejo de aprender que otros lenguajes, ya que algunas de sus reglas son diferentes a las habituales.

martes, 5 de febrero de 2019

Lista de Interrupciones para procesador 8086 Lenguaje Ensamblador



Lista de interrupciones para procesador 8086 del lenguaje ensamblador


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.


http://ebadillo_computacion.tripod.com/ensamblador/8086_int.pdf


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

Lenguaje ensamblador del microprocesador: 

Manual 1 de lenguajes de interfaz

https://drive.google.com/file/d/1GEXHus3zVUPLlDw4ASeUjRXcp53D_c31/view

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

ascii code




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

Lectura de Caracteres en Lenguaje Ensamblador (segmentos de registros).

https://www.youtube.com/watch?v=vFnEN4s-zEw



1. Programas de operaciones en ensamblador suma, resta

Programa 1: 

Donde se realizara una serie de operaciones matemáticas simples en formatos hexadecimales y decimales.

Código:

org 100h
;suma de un solo digito

mov ax, 8h ;asignar valor a los registros
mov bx, 4h ;
add ax,bx ;suma de dos registros
mov bx, 5 ;se da bx un valor de 5
sub ax,bx ;resta
mov bx, 3 ;se da bx a 3
inc bx

mov ax, 6 ;se da valor en ax
hlt ; terminar proceso



Para comprender  mejor este programa, a continuación paso a paso se detallara como funciona.
Comenzamos con el programa donde se sumara un solo dígito. En la cuarta linea vemos "ax", al registro que se le asignara 8 en hexadecimal.





En el registro "bx" se le asigna el valor 4 hexadecimal.


Luego, se suma "ax" y "bx", guardando el resultado en ax (add = suma).


El resultado sera dado en hexadecimal:
8 + 4 = 12 en hexadecimal es C


En la siguiente instrucción ahora a "bx" se le asigna 5 (hexadecimal).


Para después ver que se realizara la operación de resta del registro "ax" y "bx". Siendo el resultado ahora 7 en el registro ax. 


Se cambia el valor anterior de "bx" ahora por un 3.


Con un inc se realiza un incremento en uno al registro "bx", siendo ahora 4.


Para terminar la ultima instrucción indica cambio de valor de "ax" en un 6.







OTRO PROGRAMA
Programa 2:

En este programa solo cambia de valor hexadecimal a decimal.

Código:

ORG 100h


mov ax, 80  ; AX =80 d 
mov bx, 450 ; BX=450 d
inc bx     ;BX++ bx 451
add ax, 80  ; AX=AX+80
mov cx, 200 ;CX=200
sub cx, ax  ; CX=CX-ax 200-160=40  

ret         ;retorno de subrutina


 ;ax=80
 ;valor de bx en hex 450 equivale 1C2
 ;inc bx 451
 ;add ax, 80 ax=160
 ;cx=200
 ;sub cx,
 ;sub cx, ax=120



Resultado:










Programa 3: versión en hexadecimal

org 100h  
;los valores proximos son valores decimales
;estos se convierten a hexadecimal en memoria

mov ax,80h      ;ax=80h
mov bx,450h     ;bx=450h
inc bx         ;bx++
add ax,80h      ;ax=80h
mov cx,200h     ;cx=200h
sub cx,ax      ;cx=cx-ax

ret          ;Retorno de subrutina 



Resultado:










1.1. INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR

Unidad 1: Lenguaje ensamblador




El lenguaje ensamblador, o assembler (en inglés assembly language y la abreviación asm), es un lenguaje de programación de bajo nivel. Consiste en un conjunto de mnemónicos que representan instrucciones básicas para los computadores, microprocesadores, microcontroladores y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura de procesador y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador. 

Cada arquitectura de procesador tiene su propio lenguaje ensamblador que usualmente es definida por el fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico de cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel, que idealmente son portables.


Características
  • El código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido directamente por un ser humano ya que su estructura se acerca más bien al lenguaje máquina, es decir, lenguaje de bajo nivel.
  • El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un Microprocesador, suele necesitar ser modificado, muchas veces en su totalidad para poder ser usado en otra máquina distinta, aun con el mismo Microprocesador, solo pueden ser reutilizados secciones especiales del código programado.
  • Los programas hechos en lenguaje ensamblador, al ser programado directamente sobre Hardware, son generalmente más rápidos y consumen menos recursos del sistema (memoria RAM y ROM). Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan más rápidamente y ocupan menos espacio que con lenguajes de alto nivel.
  • Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un Microprocesador por lo que se pueden crear segmentos de código difíciles de programar en un lenguaje de alto nivel.
  • También se puede controlar el tiempo en que tarda una Rutina en ejecutarse, e impedir que se interrumpa durante su ejecución.
  • El lenguaje ensamblador es un código estructurado y gravitatorio desarrollado sobre un archivo de programación (.ASM), en el cual pueden existir varios programas, macros o rutinas que pueden ser llamados entre si


Tipos de Lenguaje Ensamblador



El lenguaje es la manera que utilizamos los seres humanos para comunicarnos, por medio de sonidos, expresiones, símbolos, etc. de igual manera la computadora necesita de un lenguaje para que pueda funcionar y nosotros como desarrolladores debemos entender. La computadora utiliza el conocido lenguaje ensamblador, que es un lenguaje de alto nivel y al hablar de lenguajes de alto nivel debemos comprender que trabaja por medio de código binario.
Existen varios tipos de lenguaje ensamblador, aunque finalmente todos realizan las mismas tareas.

ENSAMBLADORES CRUZADOS: permiten el soporte de medios físicos como pantallas, impresoras, teclado, etc. y la programación que ofrecen maquinas potentes que luego serán ejecutados en sistemas especializados.

ENSAMBLADORES RESIDENTES: permanecen en la memoria de la computadora, y cargan para su ejecución al programa objeto producido. es el indicado para el desarrollo de pequeños sistemas de control.

MACROENSAMBLADORES: permiten el uso de macroinstrucciones, son programas grandes que no permanecen en memoria una vez que se ha generado el código objeto, normalmente son programas complejos y residentes.

MICROENSAMBLADORES: Indica al interprete las instrucciones de cómo debe actuar la CPU.

ENSAMBLADORES DE UNA FASE: leen una línea de programa fuente y la traducen directamente para producir una instrucción en lenguaje máquina, estos ensambladores son sencillos, baratos y ocupan poco espacio.


ENSAMBLADORES DE DOS FASES: se llaman así por que realizan la traducción en dos etapas, en la primera fase revisan el código fuente y lo construyen en una tabla de símbolos, en la segunda fase vuelven a leer el programa fuente y pueden traducirlo por completo. Estos ensambladores son los más utilizados en la actualidad.


Referencias: 
https://sites.google.com/site/ensambladoralexa/1-1-3-tipos-de-lenguaje-ensamblador
https://es.wikipedia.org/wiki/Lenguaje_ensamblador
https://www.ecured.cu/Lenguaje_ensamblador



3. Colores Modificado 9

Modificación del programa # 9 " Colores " Por mi compañero Ambrocio isaias Laureano CR EQU 13 ;Declaro retorno de carro LF...