lunes, 25 de noviembre de 2013

ACTIVIDAD 25 NOV. 2013



1.Qué es el acceso a dispositivos de almacenamiento?
Forma en que se puede leer y escribir datos en un dispositivo auxiliar a la memoria principal.

2.Como se hace el acceso a disco usando lenguaje ensamblador?
La interrupción 21h, función 7305h, es decir la lectura y escritura de disco absoluta, permite leer y escribir sectores lógicos de disco. La función 7305 trabaja en el sistema de archivos FAT12, FAT16 y FAT32. Cualquier programa que permita leer y escribir los sectores de disco puede sobrepasar los permisos de los archivos y directorios compartido

3. mencione y describa las unidades básicas de adaptador de video:
1- El controlador de video: esta unidad es el "caballo de batalla", genera las señales de rastreo del monitor para el modo seleccionado, texto o grafico.

2- El video de BIOS: que actua como una interfaz con el adaptador de video, contiene rutinas, como para establecer el cursor y desplegar caracteres.

3- El area de despliegue de video: en memoria contiene la informacion que el monitor va a mostrar. las interrupciones que manejan el despliegue en pantalla de forma directa transfieren a esta area sus datos.
Las localidades del adaptador de video dependen de los modos de video que se esten usando.

A000:[0] utilizada para descripcion de fuentes cuando esta en modo de texto y para graficos de alta resolucion para EGA,MCGA Y VGA
B000:[0] Modo de texto monocromatico para MDA,EGA Y VGA
B100:[0] Para HCG
B800:[0] Modos de texto para CGA,MCGA,EGA Y VGA Y modos graficos para CGA,EGA,MCGA Y VGA


 

miércoles, 20 de noviembre de 2013

Acceso a discos en lenguaje ensamblador




1.Qué es el acceso a dispositivos de almacenamiento?
Forma en que se puede leer y escribir datos en un dispositivo auxiliar a la memoria principal.

2.Como se hace el acceso a disco usando lenguaje ensamblador?

La interrupción 21h, función 7305h, es decir la lectura y escritura de disco absoluta, permite leer y escribir sectores lógicos de disco. La función 7305 trabaja en el sistema de archivos FAT12, FAT16 y FAT32. Cualquier programa que permita leer y escribir los sectores de disco puede sobrepasar los permisos de los archivos y directorios compartido

3. Busque y ejecute un programa de demuestre en su ejecucion el acceso a disco para grabar y leer


 un ejemplo podria ser : rutina_absolutedRead: transfiere de un o mas sectores al buffer especificado accesando directamente a los sectores logicos.
en caso de error se enciende el bit de acarreo y ax con el codigo de error.


invocacion: push<unidad de disco>
            push<numero de sectores a leer>
            push<primer sector a leer>
            push SEG<buffer>
            push OFFSET<buffer>
            call_AbsoluteRead


            PUBLIC_AbsoluteRead
_AbsoluteRead  PROCNEAR
            ARG Buffer:DWORD,Start:WORD,NumSect:WORD,Drive:BYTE=ArgLen
            push bp        ;salvar BP
            mov bp,sp      ;permitir acceso a los argumentos
            push bx        ;salvar registros
            push cx
            push dx 
            push ds 

            mov al,Drive   ;lectura absoluta del disco
            mov cx,NumSect
            mov dx,Start
            lds bx,Buffer
            int 25h
            pop bx

            pop ds         ;recuperar registros 
            pop dx
            pop cx
            pop bx
            pop bp
            ret ArgLen
AbsoluteRead  ENDP

Programación de dispositivos resumen






 
programa ejemplo:

 
 
 
 


miércoles, 13 de noviembre de 2013

actividad de competencia

1. pregunta de  código ( lenguaje ensamblador), corrección de error, contenido de registro etc


1- ¿que es lo que hace la linea 19 en el siguiente código?





2- realice las siguientes sumas de números binarios:









3 - conteste la siguiente pregunta:















martes, 12 de noviembre de 2013

Actividad #12


En un lenguaje de su conocimiento debe Hacer un programa para imprimir 100 veces un mensaje
1. Sin usar procedimientos
2. Usando llamadas a procedimientos
3. Incluya una funcion de tiempo que imprima el tiempo de inicio y el tiempo al final para medir el tiempo de ejecución




-----------------sin procedimientos----------------------------------

package unidad3;

public class ejemplo2 {
     
    double inicio1,finals1;
  
    public void mensaje1(){
        inicio1=System.currentTimeMillis();
       
        System.out.println("\tTiempo inicio: "+inicio1);
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
         System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
         System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
         System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
         System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
         System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
         System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
         System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
         System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
         System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
        System.out.println(".-"+" mi clase de lenguajes de interfaz");
       
       
       
        finals1=System.currentTimeMillis()-inicio1;
       
  
        System.out.println("\tTiempo final: "+finals1);
    }
        public static void main(String[] args) {
            ejemplo2 app=new ejemplo2();
            app.mensaje1();
           
        }
       










-------------------con procedimientos-----------------------


package unidad3;

public class procedimientos {
     
    double inicio,finals;
  
    public void mensaje(){
        inicio=System.currentTimeMillis();
       
        System.out.println("\tTiempo inicio: "+inicio);
       
        for (int i = 1; i<=100; i++){
        System.out.println(i+".-"+" mi clase de lenguajes de interfaz");
       
        finals=System.currentTimeMillis()-inicio;
       
        }
        System.out.println("\tTiempo final: "+finals);
    }
        public static void main(String[] args) {
            procedimientos app=new procedimientos();
            app.mensaje();
           
        }
       
    }
  
   



 

domingo, 10 de noviembre de 2013

Actividad #11


MACROS

Las macros son útiles para los siguientes propósitos:

* Simplificar y reducir la cantidad de codificación repetitiva.
* Reducir errores causados por la codificación repetitiva.
* Linealizar un programa en lenguaje ensamblador para hacerlo mas legible.


INITZ MACRO                      ;define macro 
      MOV   AX,@data             ;}cuerpo de 
      MOV   DS,AX                ;{la definicion
      MOV   ES,AX                :{de la macro
      ENDM                       ;Fin de la macro

una macro que recibe un parametro y que permite cadenas en pantalla seria  :


.MACRO Imprime_Cad(cadena)
LEA DX,Cadena
MOV AH,09h
INT 21h
ENDM

PROCEDIMIENTOS

A continuación se describen los pasos necesarios para la ejecución de un procedimiento:

1. Se encuentra la llamada Call.
2. El microprocesador almacena en la Pila el contenido del IP.
3. Se coloca en el IP el valor del desplazamiento correspondiente al Procedimiento.
4. El microprocesador ejecuta las instrucciones del procedimiento.
5. El procedimiento termina cuando se encuentra con la instrucción Ret.
6. Se saca de la Pila el valor original del IP y se continua el flujo del programa

El siguiente procedimiento coloca el cursor en las coordenadas establecidas en DI y DH:

PROC GotoXY
XOR BH,BH
MOV AH,02H
INT 10h
RET
ENDP GotoXY

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



         page 60,132 
TITLE     P08CALLP (EXE) Llamada a procedimientos 
               .MODEL     SMALL 
               .STACK      64 
               .DATA 
;--------------------------------------------------------------------- 
               .CODE 
BEGIN    PROC        FAR 
               CALL          B10             ;Llama a B10 
;              ... 
               MOV         AX,4C00H     ;Salida a DOS 
               INT 21H 
BEGIN    ENDP 
;--------------------------------------------------------------------- 
B10        PROC       NEAR 
              CALL         C10               ;Llama a C10 
;             ... 
              RET                                ;De regreso 
B10       ENDP                              ;Quien llama 
;--------------------------------------------------------------------- 
             END BEGIN



diferencia entre macro y procedimiento:

El empleo de macros no debemos confundirlo con el empleo de procedimientos, ya que una llamada a una macro sustituye su nombre por el cuerpo de la misma, en cambio, una llamada a procedimientos lo único que realiza es un enlace con otro programa. Las macros se suelen incluir todas dentro de ficheros específicos. En cada uno de los ficheros situaremos las macros que tengan alguna relación entre sí

domingo, 3 de noviembre de 2013

act 28 de octubre (if-thn)



Se pretende realizar un programa en lenguaje ensamblador equivalente al siguiente código en C:

Este programa calcula el máximo de los elementos del array a, almacenádolo en la variable max.