domingo, 8 de diciembre de 2013

modifique el siguiente codigo

para imprima en pantalla los caracteres correspondientes  a los valores 0-255

capture pantalla y señale los cambios realizados al código valor= 15 pts de la calificación de la unidad publicación Jueves 28 de Noviembre

Aqui podemos ver los cambios que se le realizaron al codigo para que se lograra ejecutar correctamente y mostrara los 256 caracteres.



Ejecución del programa



lunes, 2 de diciembre de 2013

Acceso a discos en lenguaje ensamblador

actividad :

Investigue y publique en su blog:

1. Qué es el acceso a dispositivos de almacenamiento
2.Como se hace el acceso a disco usando lenguaje ensamblador
3. Busque y ejecute un programa de demuestre en su ejecución el acceso a disco para grabar y leer




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.


El nivel mas alto de procesamiento de disco es mediante la interrupcion 21h del Dos, que permite el acceso a disco por medio de un directorio y "bloque" y "desbloqueo" de registros.

El nivel mas bajo de procesamiento en disco es por medio de la interrupción 13H del BIOS,
que implica direccionamiento directo de numeros de pista y sector.

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


TITLE Sector Display Program              (Sector.asm)

; Demonstrates INT 21h function 7305h (ABSDiskReadWrite)
; This Real-mode program reads and displays disk sectors.
; Works on FAT16 & FAT32 file systems running under Windows
; 95, 98, and Millenium.
; Last update: 06/01/2006

INCLUDE Irvine16.inc

Setcursor PROTO, row:BYTE, col:BYTE
EOLN EQU <0dh,0ah>
ESC_KEY = 1Bh
DATA_ROW = 5
DATA_COL = 0
SECTOR_SIZE = 512
READ_MODE = 0        ; for Function 7505h

DiskIO STRUCT
    startSector DWORD ?        ; starting sector number
    numSectors  WORD 1        ; number of sectors
    bufferOfs   WORD OFFSET buffer    ; buffer offset
    bufferSeg   WORD SEG buffer        ; buffer segment
DiskIO ENDS

.data
driveNumber BYTE ?
diskStruct DiskIO <>
buffer BYTE SECTOR_SIZE DUP(0),0            ; one sector

curr_row   BYTE  ?
curr_col   BYTE  ?

; String resources
strLine       BYTE  EOLN,79 DUP(0C4h),EOLN,0
strHeading    BYTE "Sector Display Program (Sector.exe)"
              BYTE EOLN,EOLN,0
strAskSector  BYTE "Enter starting sector number: ",0
strAskDrive   BYTE "Enter drive number (1=A, 2=B, "
              BYTE "3=C, 4=D, 5=E, 6=F): ",0
strCannotRead BYTE EOLN,"*** Cannot read the sector. "
              BYTE "Press any key...", EOLN, 0
strReadingSector \
    BYTE "Press Esc to quit, or any key to continue..."
    BYTE EOLN,EOLN,"Reading sector: ",0

.code
main PROC
    mov    ax,@data
    mov    ds,ax
    call    Clrscr
    mov    dx,OFFSET strHeading     ; display greeting
    call    Writestring            ; ask user for...
    call    AskForSectorNumber

L1:    call    Clrscr
    call    ReadSector            ; read a sector
    jc    L2                         ; quit if error
    call    DisplaySector
    call    ReadChar
    cmp    al,ESC_KEY                 ; Esc pressed?
    je    L3                         ; yes: quit
    inc    diskStruct.startSector   ; next sector
    jmp    L1                    ; repeat the loop

L2:    mov    dx,OFFSET strCannotRead    ; error message
    call    Writestring
    call    ReadChar

L3:    call    Clrscr
    exit
main ENDP

;-----------------------------------------------------
AskForSectorNumber PROC
;
; Prompts the user for the starting sector number
; and drive number. Initializes the startSector
; field of the DiskIO structure, as well as the
; driveNumber variable.
;-----------------------------------------------------
    pusha
    mov    dx,OFFSET strAskSector
    call    WriteString
    call    ReadInt
    mov    diskStruct.startSector,eax
    call    Crlf
    mov    dx,OFFSET strAskDrive
    call    WriteString
    call    ReadInt
    mov    driveNumber,al
    call    Crlf
    popa
    ret
AskForSectorNumber ENDP

;-----------------------------------------------------
ReadSector PROC
;
; Reads a sector into the input buffer.
; Receives: DL = Drive number
; Requires: DiskIO structure must be initialized.
; Returns:  If CF=0, the operation was successful;
;           otherwise, CF=1 and AX contains an
;           error code.
;-----------------------------------------------------
    pusha
    mov    ax,7305h            ; ABSDiskReadWrite
    mov    cx,-1                  ; always -1
    mov    dl,driveNumber        ; drive number
    mov    bx,OFFSET diskStruct        ; sector number
    mov    si,READ_MODE        ; read mode
    int    21h                   ; read disk sector
    popa
    ret
ReadSector ENDP

;-----------------------------------------------------
DisplaySector PROC
;
; Display the sector data in <buffer>, using INT 10h
; BIOS function calls. This avoids filtering of ASCII
; control codes.
; Receives: nothing. Returns: nothing.
; Requires: buffer must contain sector data.
;-----------------------------------------------------
    mov    dx,OFFSET strHeading    ; display heading
    call    WriteString
    mov    eax,diskStruct.startSector    ; display sector number
    call    WriteDec
    mov    dx,OFFSET strLine        ; horizontal line
    call    Writestring
    mov    si,OFFSET buffer        ; point to buffer
    mov    curr_row,DATA_ROW        ; set row, column
    mov    curr_col,DATA_COL
    INVOKE SetCursor,curr_row,curr_col

    mov    cx,SECTOR_SIZE            ; loop counter
    mov    bh,0                      ; video page 0
L1:    push    cx                        ; save loop counter
    mov    ah,0Ah                    ; display character
    mov    al,[si]                   ; get byte from buffer
    mov    cx,1                      ; display it
    int    10h
    call    MoveCursor
    inc    si                        ; point to next byte
    pop    cx                        ; restore loop counter
    loop    L1                        ; repeat the loop
    ret
DisplaySector ENDP

;-----------------------------------------------
MoveCursor PROC
;
; Advance the cursor to the next column,
; check for possible wraparound on screen.
;-----------------------------------------------
    cmp    curr_col,79        ; last column?
    jae    L1                 ; yes: go to next row
    inc    curr_col            ; no: increment column
    jmp    L2
L1:    mov    curr_col,0        ; next row
    inc    curr_row
L2:    INVOKE Setcursor,curr_row,curr_col
    ret
MoveCursor ENDP

;-----------------------------------------------------
Setcursor PROC USES dx,
    row:BYTE, col:BYTE
;
; Set the screen cursor position
;-----------------------------------------------------
    mov    dh, row
    mov    dl, col
    call    Gotoxy
    ret
Setcursor ENDP
END main




Este codigo no se puede ejecutar en sistemas con windows 2000 y posteriores

conteste lo siguiente

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.


El nivel mas alto de procesamiento de disco es mediante la interrupcion 21h del Dos, que permite el acceso a disco por medio de un directorio y "bloque" y "desbloqueo" de registros.

El nivel mas bajo de procesamiento en disco es por medio de la interrupción 13H del BIOS,

que implica direccionamiento directo de numeros de pista y sector.




3. mencione y describa las unidades básicas de adaptador de video


El adaptador de vídeo consta de tres unidades básicas:el controlador de video, el vídeo de BIOS y el area de despliegue de vídeo.

1.-El controlador de vídeo, genera las señales de rastreo del monitor para el modo seleccionado, texto o grafico. El procesador de la computadora envía instrucciones a los registros del controlador y lee ahi la informacion de estado.

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

3.- El área de despliegue de video  en memoria contiene la información que el monitor va a mostrar. Las interrupciones que maneja el despliegue en pantalla de forma directa tranfieren a esta area sus datos.

jueves, 28 de noviembre de 2013

Programacion de Dispositivos

Actividad : del capitulo  10 ( pagina155-169)  del libro  digital  lenguaje ensamblador  y ´programación para IBM, genere un resumen en su cuaderno con las funciones  de la int 10. y ejecute el programa ejemplo

RESUMEN ECHO EN EL CUADERNO








Ejecucion del programa ejemplo del libro






miércoles, 27 de noviembre de 2013

Programa en lenguaje de alto nivel con y sin Procedimientos

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.


Mi programa esta escrito en C++


Aquí mostramos el código del programa sin procedimientos.Es mucho mas lago que si utilizáramos algún procedimiento.


También agregue un contador de tiempo para observar cuanto se tarda en ejecutarse el programa.


Al final se muestra el código para obtener el tiempo





Se va ejecutando cada linea conforme al programa



Al final se muestra el tiempo en milisegundos que tardo el programa en ejecutarse



PROGRAMA CON PROCEDIMIENTOS


Como podemos observar el código es muchísimo mas corto que si no utilizáramos procedimientos.
Utilizamos un ciclo for como procedimiento y así se genere las 100 veces el texto indicado.


Esta es la ejecucion del programa


Al final del programa observamos el tiempo que tardo en ejecutarse.
Por lo que concluyo que usar procedimientos es mas rapido que no usarlos.

Ejemplos de Macros y Procedimientos y que Diferencias tienen entre ellos

Actividad #11
Encuentre  2 programas que usen procedimientos en lenguaje ensamblador y 2 programas que usen macros en Lenguaje ensamblador,  mencione las diferencias entre macros y procedimientos.




Los siguientes programas son para realizar sumas de dos variables utilizando procedimientos




En este programa se indica donde se almacena la suma


EJEMPLOS DE MACROS

Estos programas son ejemplos de macros externas




SEGUNDO EJEMPLO DE MACROS





DIFERENCIAS ENTRE MACROS Y PROCEDIMIENTOS

Las macros son mas rápidas porque se ejecutan en linea en un programa y los procedimientos son mas lentos a la hora de ejecutar el programa.
Las macros pueden pasar y recibir parámetros.
La escritura de una macro es simple en cambio la de los procedimientos es mas compleja.
Los procedimientos ayudan a reducir el código y los macros lo hacen mas grande.


sábado, 23 de noviembre de 2013

Logo, Preguntas en Equipo

Instrucciones

  • Publicar preguntas en blog individual
  • enviar preguntas y respuestas a  jefe de equipo
  • jefe de equipo enviar preguntas y respuestas del equipo  a angelica@itcj.edu.mx
  • crear logo y lema que identifique el equipo  y ponerlos en el blog del jefe de equipo


    LOGO

    Nombre : LOS MACROS
    LEMA: ENSAMBLAR HOY, DORMIR MAÑANA

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


    2. Sistemas numéricos ( conversiones, sumas, etc)