jueves, 31 de enero de 2019

tipos de interrupciones en el código ensamblador 

que es una interrupcion?

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


en el siguiente link podemos ver un listado de las interrupciones en lenguaje ensamblador::

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Link para ver las interrupciones

::::::::::::::::::::::::::::::::::::::::::::::::::::::::



Interrupción 21H
Propósito: Llamar a diversas funciones del DOS.

Funciones para desplegar información al video 
02H Exhibe salida
09H Impresión de cadena (video)
40H Escritura en dispositivo/Archivo

Funciones para leer información del teclado 01H Entrada desde teclado
0AH Entrada desde teclado usando buffer
3FH Lectura desde dispositivo/archivo

Método FCB
0FH Abrir archivo
14H Lectura secuencial
15H Escritura secuencial
16H Crear archivo
21H Lectura aleatoria
22H Escritura aleatoria

Handles
3CH Crear archivo
3DH Abrir archivo
3EH Cierra manejador de archivo
3FH Lectura desde archivo/dispositivo
40H Escritura en archivo/dispositivo
42H Mover apuntador de lectura/escritura en archivo

Función 02H
Despliega un caracter a la pantalla.

Función 09H
Despliega una cadena de carateres en la pantalla.

Función 01H
Leer un caracter del teclado y desplegarlo.

miércoles, 30 de enero de 2019

ejemplos del dia 30 de enero 2019

#2 Ejemplo de Hola mundo en EMU8086

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 "iHOLA MUNDO!$",0

CODE ENDS
end principio

captura de pantalla:
 #3 Ejemplo de hola mundo en EMU8086
.model tiny
name "hola a todos"
org 100h 
.DATA
dato db "HELLO WORLD",0dh,0ah,24h
msg2 db "hola mundo" ,0ah,24h
msg3 db "alo mundo"  ,0ah,24h
msg4 db "ojos pispiretos" ,0ah,24h

  .CODE
 INICIO:;aqui esta la etiqueta de inicio
 mov dx, OFFSET dato ;lee el contenido de lavariable dato en el registro
 mov ah,09h;para imprimir el valor,ah debe contene el 9
 int 21h ;lo muestra en el puerto de video

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

 ;mov dx,OFFSET msg3
 ;mov ah,09h
 ;innt 21h

 ;mov dx,OFFSET msg4
 ;mov ah,09h
 ;innt 21h

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

 ret

 end program



Sintaxis del Lenguaje Ensamblador


De Programación En Ensamblador” ¿Te Parece Dificil? A Muchos Les Pareció Dificil Cuando Comenzando En Informática Aprendieron el “hola mundo” en html y php los lenguajes que hasta ahora suele ser fáciles para muchos y acordemos nos de otro lenguaje fácil como es el pascal.


Si usted acaba de comenzar a aprender a programar en lenguaje ensamblador, aquí es un ejemplo de programa de la Asamblea explicó de manera que usted pueda comprender la terminología muy básico antes de escribir aplicaciones de montaje más complejas.


Primer programa de la Asamblea simplemente imprime un mensaje de texto “Hello World” en la pantalla.


DATA SEGMENT
     MESSAGE DB "hola mundo!!!$"
ENDS
CODE SEGMENT  
    ASSUME DS:DATA CS:CODE
START:
      MOV AX,DATA
      MOV DS,AX
      LEA DX,MESSAGE       
      MOV AH,9
      INT 21H
      MOV AH,4CH
      INT 21H      
ENDS
END START


En esta programación del lenguaje ensamblador, un solo programa se divide en cuatro segmentos que son


1. segmento de datos


2. Código Segmento


3. Pila de segmentos


4 Segmento Extra. Ahora, de estos uno es obligatorio Segmento es decir Código en todo caso usted no necesita la variable (s) de tu “program.If” necesita la variable (s) de tu programa que tendrá dos segmentos, es decir, Código de segmento y el segmento de datos.


Primera Línea – SEGMENTO DE DATOS:


DATA SEMENG: es el punto de inicio del segmento de datos en un programa y de datos es el nombre dado a este segmento y segmento es la palabra clave para los segmentos que definen, Dónde podemos declarar nuestras variables.


MESSAGE DB “HOLA MUNDO !!! $”


MENSAJE es el nombre de la variable dada a un tipo de datos (tamaño) que es DB. DB significa Definir Byte y es de un byte (8 bits). En los programas de idiomas de la Asamblea, las variables se definen por tamaño de datos no su tipo. Carácter necesita un byte de modo de almacenar carácter o cadena necesitamos DB sólo que no me refiero a DB no puede contener el número o valor numérico. La cadena se muestra entre dobles comillas. $ Se utiliza como carácter NULL en la programación C, Para que el compilador puede entender dónde parar.


DATA ENDS:


Es el punto del segmento de datos en un programa End. Podemos escribir sólo TERMINA Pero para diferenciar el final de qué segmento es de lo que tenemos que escribir el mismo nombre que recibe el segmento de datos.


CODE SEMENG:


Segmento de código es el punto de inicio del segmento de código en un programa y CODE es el nombre dado a este segmento y segmento es la palabra clave para la definición de segmentos, donde podremos escribir el código del programa.


ASSUME DS:DATA CS:CODE:


En esta programación del lenguaje ensamblador, su son diferentes registros actuales para diferentes Propósito Así que tenemos que asumir DATA es el nombre dado a los datos del registro de segmento y CODE es el nombre dado al Código registro el segmento (SS, ES se utilizan de la misma manera como CS , DS)


START:


es la etiqueta que se utiliza para mostrar el punto de partida del código que está escrito en el segmento de código. : Se utiliza para definir una etiqueta como en la programación C.


MOV AX,DATA MOV DS,AX:


Después Suponiendo datos y el código de segmento, Still es obligatorio inicializar segmento de datos de registro DS. MOV es una palabra clave para mover el segundo elemento en el primer elemento. Pero no podemos mover datos directamente a DS debido a MOV comandos de restricción, ahí nos movemos DATA para AX y después de AX a DS. AX es el primer y más importante registro en la unidad ALU. Esta pieza también se denomina inicialización DEL SEGMENTO DE DATOS Y es importante para que los elementos de datos o variables en el segmento de datos se hacen accesibles. Otros segmentos no son necesarios para ser inicializado, Sólo asumiendo es enhalf.


LEA DX,MESSAGE MOV AH,9 INT 21H


El código de tres líneas de arriba se utiliza para imprimir la cadena dentro de la variable MENSAJE. LEA significa carga Dirección eficaz que se utiliza para asignar direcciones de variable para DX registro (Lo mismo se puede escribir de esta manera también MOV DX, MENSAJE DE COMPENSACIÓN ambos significan lo mismo).


MOV AH,4CH INT 21H


El código de dos línea de arriba se utiliza para salir de dos o de salida en el sistema operativo. Entrada Estándar y Interupts salida relacionada estándar se encuentran en INT 21H que también se llama como DOS interrupción. Funciona con el valor de AH registro, si el valor es de 4 canales, que significa Volver a Sistema operativo DOS o que es el final del programa.


CODE ENDS:


CÓDIGO ENDS es el punto del segmento de código en un programa End. Podemos escribir sólo TERMINA Pero para diferenciar el final de qué segmento es de lo que tenemos que escribir el mismo nombre dado al segmento de código.


END START:


FIN START es el final de la etiqueta utilizada para mostrar el punto final del código que está escrito en el segmento de código.

martes, 29 de enero de 2019

Utilizacion del EMU8086 Y TURBO Assemlber

#1 creacion de ejemplo de "hola mundo" en EMU8086

En este caso hicimos un ejemplo de cómo crear un programa que lanzará en pantalla una cadena de caracteres en código ensamblador apartir de EMU8086
Código para la creación:

.modelo small
.stack
.data

Cadena1 DB 'HOLA MUNDO$'
.code

Programa:
MOV AX ,@data
MOV DX,AX
MOV DX,offset Cadena1
MOV AH,9
INT 21h
INT 20h


Captura de programa ejecutandose








#1Creacion de ejemplo de un hola mundo con Turbo Assembler.
En este caso hicimos un ejemplo de cómo crear un programa que lanzará en pantalla una cadena de caracteres en código ensamblador apartir de Turbo Assembler



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.


Importancia del lenguaje ensamblador:
La importancia del lenguaje ensamblador radica 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.



Las características más destacadas del lenguaje ensamblador son:

1) Difícil de entender directamente.
2) Poco portable.
3) Los programas son más rápidos y consumen menos recursos.
4) Se tiene un control muy preciso de las tareas que se van a realizar.
5) Se puede controlar el tiempo que tarda en ejecutarse una rutina.

6) Se puede impedir que se interrumpa un programa durante su ejecución.


















manual 1:

Unidad 3-ejemplo con macros

Programa que que imprime valores numericos en hexadecimales pero haciendo la utilizacion de macros. include 'emu8086.inc' Mostra...