jueves, 31 de enero de 2019

Unidad No.1-Hola Mundo 6


Ejecución del programa:





Nota: Se necesita dar enter para poder avanzar


Código:

.model small
.stack
.data
cadena1 db 'Hola Mundo.$'
cadena2 db 'Hola Mundo2.$'
.code
programa:
mov ax,@data
mov ds,ax
mov dx, offset cadena1
mov ah,9
int 21h

mov dx, offset cadena2
mov ah,9
int 21h

mov dx, offset cadena2
mov ah, 09h
int 21h

mov ah, 0
int 16h 
end programa


ret

Unidad No.1-Hola Mundo 5


Ejecución del programa:





Nota: Se necesita dar enter para poder continuar


Código:

.model small  
.stack 
.data
cadena1 db 'Hola Mundo.$' 
.code  

programa: 
 mov ax,@data 
 mov ds,ax
 mov dx,offset cadena1
 mov ah,9
 int 21h

 mov ah, 0
 int 16h          

end programa

ret

Unidad No.1-Hola mundo 4


Ejecución del programa:





Nota: Me pide el cursor para poder avanzar


Código:

org 100h

.model tiny
name "hola a todos"
org 100h

.data
dato db "Hello world!", 0dh, 0ah, 24h ; equivale a \n en c++
msg2 db "Hola mundo!",  0ah, 24h ; 0ah hace el salto
msg3 db "alo mondo!", 0ah, 24h; 0dh hace retornar al inicio
msg4 db "ojos pispiretos", 0ah, 24h ; db es el tipo byte

.code
inicio: ;aqui esta la etiqueta inicio
mov dx, offset dato ; lee el contenido de la variable dato en el registro
mov ah, 09h ; para imprimir el valor, ah debe contener el 9
int 21h ; hazlo! lo muestra en el puerto de video

mov dx, offset msg2
mov ah, 09h
int 21h

mov ah, 0
int 16h ; esperando presionar cualquier tecla equivale a getch()


ret

end


Unidad No.1-Hola mundo 3


Ejecución del programa:






Código:

code segment 
    assume cs: code, ds:code, ss:code, es:code
    org 100h
    
principio:
 mov ah, 0fh
 mov ah, 0
 int 10h
 lea dx, mensaje_a_mostrar
 mov ah, 9h
 int 21h
 int 20h

mensaje_a_mostrar db "Hola Mundo!$",0

code ends
end principio





Unidad No.1-Interrupciones

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.

PASOS PARA EL PROCESAMIENTO

1. Terminar la ejecución de la instrucción máquina en curso. 

2. Salva el valor de contador de programa, IP, en la pila, de manera que en la CPU, al terminar el proceso, pueda seguir ejecutando el programa a partir de la última instrucción.

3. La CPU salta a la dirección donde está almacenada la rutina de servicio de interrupción (ISR, Interrupt Service Routine) y ejecuta esa rutina que tiene como objetivo atender al dispositivo que generó 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 se estaba usando anteriormente.

LISTADO DE INTERRUPCIONES







Unidad No.1-Emuladores online

1-assembler online




Código:

; Simple example
; Writes Hello World to the output

JMP start
hello: DB "Ivan Gutierrez!" ; Variable
       DB 0 ; String terminator

start:
MOV C, hello    ; Point to var 
MOV D, 232 ; Point to output
CALL print
        HLT             ; Stop execution

print: ; print(C:*from, D:*to)
PUSH A
PUSH B
MOV B, 0
.loop:
MOV A, [C] ; Get char from var
MOV [D], A ; Write to output
INC C
INC D  
CMP B, [C] ; Check if end
JNZ .loop ; jump if not

POP B
POP A
RET
2-assembler online


Código:

section .text
global _start       ;must be declared for using gcc
_start:                     ;tell linker entry point
mov edx, len    ;message length
mov ecx, msg    ;message to write
mov ebx, 1     ;file descriptor (stdout)
mov eax, 4     ;system call number (sys_write)
int 0x80        ;call kernel
mov eax, 1     ;system call number (sys_exit)
int 0x80        ;call kernel

section .data

msg db 'Ivan Gutierrez!',0xa ;our dear string
len equ $ - msg ;length of our dear string


3-simulador assembler


Código:

;nasm 2.11.08

section .data
    hello:     db 'Ivan Gutierrez!',10    ; 'Hello world!' plus a linefeed character
    helloLen:  equ $-hello             ; Length of the 'Hello world!' string

section .text
global _start

_start:
mov eax,4            ; The system call for write (sys_write)
mov ebx,1            ; File descriptor 1 - standard output
mov ecx,hello        ; Put the offset of hello in ecx
mov edx,helloLen     ; helloLen is a constant, so we don't need to say
                     ;  mov edx,[helloLen] to get it's actual value
int 80h              ; Call the kernel

mov eax,1            ; The system call for exit (sys_exit)
mov ebx,0            ; Exit with return code of 0 (no error)
int 80h;












Unidad No.1-Tipos de lenguajes ensambladores

El lenguaje es la manera que utlizamos los seres humanos para comunicarnos, por medio de sonidos, expresiones, simbolos, 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 codigo binario.
Existen varios tipos de lnguaje ensamblador, aunque finalmente todos realizan las mismas tareas.

ENSAMBLADORES CRUZADOS: permiten el soporte de medios fisicos como pantallas, impresoras, teclado, etc. y la programacion que ofrecen maquinas potentes que luego seran ejecutados en sistemas especializados.

ENSAMBLADORES RESIDENTES: permanecen en la memoria de la computadora, y cargan para su ejecucion 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 ves que se a genereado el codigo objeto, normalmete son programas complejos y residentes.

MICROENSAMBLADORES: Indica al interprete las instrucciones de como debe actuar la CPU. 

ENSAMBLADORES DE UNA FASE: leen una linea de programa fuente y la traducen directamente para producir una instruccion en lenguaje maquina, estos ensambladores son sencillos, baratos y coupan poco espacio.

ENSAMBLADORES DE DOS FASES: se llaman asi por que realizan la traduccion en dos etapas, en la primera fase revisan el codigo fuente y lo construyen en una tabla de simbolos, en la segunda fase vuelven a leer el programa fuente y pueden tradirlo por completo. estos ensabladores son los mas utilizados en la actualidad.

miércoles, 30 de enero de 2019

Unidad No.1-Manual 1 de lenguajes de interfaz

Unidad No.1-Hola mundo 2 con GUI turbo assembler



Ejecución del programa:





Código:

.model small

.stack
.data
cadena1 db 'Hola Mundo.$'
cadena2 db 'Hola Mundo2.$'
.code
programa:
mov ax,@data
mov ds,ax
mov dx, offset cadena1
mov ah,9
int 21h

mov dx, offset cadena2
mov ah,9
int 21h
end programa


ret


Unidad No.1-Hola mundo 2 con emu8086


Ejecución del programa:





Código:

.model small
.stack
.data
cadena1 db 'Hola Mundo.$'
cadena2 db 'Hola Mundo2.$'
.code
programa:
mov ax,@data
mov ds,ax
mov dx, offset cadena1
mov ah,9
int 21h

mov dx, offset cadena2
mov ah,9
int 21h
end programa


ret


Unidad No.1-Hola mundo 1 con GUI turbo assembler


Ejecución del programa:





Código:

.model small  
.stack 
.data
cadena1 db 'Hola Mundo.$' 
.code  

programa: 
 mov ax,@data 
 mov ds,ax
 mov dx,offset cadena1
 mov ah,9
 int 21h         

end programa

ret

Unidad No.1-Hola mundo 1 con emu8086


Ejecución del programa:





Código:
.model small  
.stack 
.data
cadena1 db 'Hola Mundo.$' 
.code  

programa: 
 mov ax,@data 
 mov ds,ax
 mov dx,offset cadena1
 mov ah,9
 int 21h         

end programa

ret






Unidad No.1-Hola mundo en 96 lenguajes de programación(Video)

Unidad No.1-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.



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.



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.



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.



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.



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.



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.



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.



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. 



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.

martes, 29 de enero de 2019

Unidad No.1-Hola Mundo en lenguaje ensamblador (Por Santiago Lopez)

; ---------------------------------------------
; Programa que imprime un string en la pantalla
; ---------------------------------------------
.model small              ; modelo de memoria

.stack                    ; segmento del stack

.data                     ; segmento de datos
Cadena1 DB 'Hola Mundo$' ; string a imprimir (finalizado en $) 
.code                     ; segmento del código
; ---------------------------------------------
; Inicio del programa
; ---------------------------------------------
programa:
; ----------------------------------------------------------------------------------------------------
; inicia el segmento de datos
; ----------------------------------------------------------------------------------------------------
MOV AX, @data          ; carga en AX la dirección del segmento de datos
MOV DS, AX             ; mueve la dirección al registro de segmento por medio de AX
; ----------------------------------------------------------------------------------------------------
; Imprime un string en pantalla
; ----------------------------------------------------------------------------------------------------
MOV DX, offset Cadena1 ; mueve a DX la dirección del string a imprimir  
MOV AH, 9              ; AH = código para indicar al MS DOS que imprima en la pantalla, el string en DS:DX
INT 21h                ; llamada al MS DOS para ejecutar la función (en este caso especificada en AH)

; ----------------------------------------------------------------------------------------------------
; Finaliza el programa
; ----------------------------------------------------------------------------------------------------
INT 20h                ; llamada al MS DOS para finalizar el programa

end programa





1.1-Importancia del lenguaje ensamblador

El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de microprocesador.

La importancia del lenguaje ensamblador es principalmente que se trabaja directamente con el microprocesador; por lo cual se debe de conocer el funcionamiento interno de este, tiene la ventaja de que en el se puede realizar cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar. Otro punto sería que los programas en ensamblador ocupan menos espacio en memoria.

• El único lenguaje que entienden los microcontroladores es el código máquina formado por ceros y unos del sistema binario.

• El lenguaje ensamblador expresa las instrucciones de una forma más natural al hombre a la vez que muy cercana al microcontrolador, ya que cada una de esas instrucciones se corresponde con otra en código máquina.


• El lenguaje ensamblador trabaja con nemónicos, que son grupos de caracteres alfanuméricos que simbolizan las órdenes o tareas a realizar.

•La traducción de los nemónicos a código máquina entendible por el microcontrolador la lleva a cabo un programa ensamblador.

• El programa escrito en lenguaje ensamblador se denomina código fuente (*.asm). El programa ensamblador proporciona a partir de este fichero el correspondiente código máquina, que suele tener la extensión *.hex.


Ventajas y desventajas del lenguaje ensamblador 

Ventajas

1. Como trabaja directamente con el microprocesador al ejecutar un programa, pues como este lenguaje es el mas cercano a la máquina la computadora lo procesa mas rápido.


2. Eficiencia de tamaño .- Un programa en ensamblador no ocupa mucho espacio en memoria porque no tiene que cargan librerías y demás como son los lenguajes de alto nivel


3. Flexibilidad .- Es flexible porque todo lo que puede hacerse con una máquina, puede hacerse en el lenguaje ensamblador de esta máquina; los lenguajes de alto nivel tienen en una u otra forma limitantes para explotar al máximo los recursos de la máquina. O sea que en lenguaje ensamblador se pueden hacer tareas especificas que en un lenguaje de alto nivel no se pueden llevar acabo porque tienen ciertas limitantes que no se lo permite 

Desventajas

Tiempo de programación .

- Como es un lenguaje de bajo nivel requiere más instrucciones para realizar el mismo proceso, en comparación con un lenguaje de alto nivel. Por otro lado, requiere de más cuidado por parte del programador, pues es propenso a que los errores de lógica se reflejen más fuertemente en la ejecución.


Programas fuente grandes .

- Por las mismas razones que aumenta el tiempo, crecen los programas fuentes; simplemente requerimos más instrucciones primitivas para describir procesos equivalentes. Esto es una desventaja porque dificulta el mantenimiento de los programas, y nuevamente reduce la productividad de los programadores.


Peligro de afectar recursos inesperadamente .

- Que todo error que podamos cometer, o todo riesgo que podamos tener, podemos afectar los recursos de la maquina, programar en este lenguaje lo más común que pueda pasar es que la máquina se bloquee o se reinicialize. Porque con este lenguaje es perfectamente posible (y sencillo) realizar secuencias de instrucciones inválidas, que normalmente no aparecen al usar un lenguaje de alto nivel.


Falta de portabilidad.

- Porque para cada máquina existe un lenguaje ensamblador; por ello, evidentemente no es una selección apropiada de lenguaje cuando deseamos codificar en una máquina y luego llevar los programas a otros sistemas operativos o modelos de computadoras.


Unidad No.1-Instalación de GUI Turbo Assembler