Arquitectura de Computadoras 2

Foro para conocer el avance del curso y compartir comentarios, dudas y aportaciones para todos los participantes del mismo.

Mi foto
Nombre: Dr. Sergio Castillo
Ubicación: Xalapa, Veracruz, Mexico

Profesor universitario en el área de las ciencias de la computación. Doctor en Ciencias de la Computación, Maestro en Ciencias Computacionales e Ingeniero en Electrónica y Comunicaciones.

jueves, octubre 27, 2005

Sesión del Jueves 27 de Octubre

En la sesión de hoy hablamos de algunos conceptos generales de archivos y su manejo en bajo nível. Les presenté la información de referencia de las interrupciones Int 21,3D, Int 21,3E e Int 21,3F, que son las interrupciones de DOS que abren, cierran y leen un archivo respectivamente mediante el uso de una manija (handle). Les presenté y expliqué brevemente el siguiente programa que despliega su código fuente:
; Archivo: da.asm
; Despliega en pantalla el archivo "da.asm"
; Abre el archivo origen en modo solo lectura
; Utiliza llamadas a DOS Int 21h/3d, 21h/3E, 21h/3F para
; el manejo de archivos. Int 21h/2 para desplegar los
; bytes leidos caracter por caracter.
; ---------------------------------------------------------
; Algunas constantes
LF EQU 10
CR EQU 13

pila segment stack 'stack'
db 512 dup(?)
pila ends

datos segment 'DATA'
Errora db "Error al abrir archivo origen",LF,CR,07,07,"$"
Buffer db 256 dup (0)
Origen db "da.asm",0
datos ends

prog segment 'CODE'
assume cs:prog,ds:datos,ss:pila
inicio:
mov ax,seg datos
mov ds,ax

mov ah,3dh ; Abre archivo "da.asm"
mov al,00 ; Modo Solo Lectura
mov dx,offset Origen
int 21h

jnc Continua ; Si Error
mov ah,9 ; Despilega mensaje de error
mov dx, offset Errora
int 21h
jmp Fin ; y termina

Continua: ; Sino, lee y despliega contenido del archivo
mov bx,ax ; BX = manija (file handler)
Rep1:
mov cx,256 ; Lee_CX_bytes_de(Origen) a Buffer
Mov ah,3fh
mov dx,offset Buffer
Int 21h
or ax,ax ; Si Bytes_leidos = 0
jz Do1 ; Ve a Do1
mov cx,ax ; CX = Bytes_leidos
xor DI,DI ; Indice = 0
Desp2: ; Despliega los bytes leidos
mov ah,02h
mov dl,Buffer[DI] ; DL = Buffer[DI]
Int 21h ; Continuaiega_caracter_en_DL
Inc DI ; Indice = Indice + 1
Loop Desp2
; Ve a Rep1
jmp Rep1

Do1: ; Cierra_archivo(Origen)
mov ah,3eh
Int 21h
Fin: ; Termina
mov ax,4c00h
int 21h
prog ends
end inicio
A manera de ejercicio, modifiquen este programa para que lea desde la línea de comandos el nombre del archivo a desplegar.

martes, octubre 25, 2005

Sesión Martes 25 de Octubre

En la sesión de hoy hablamos del PSP (Prefix Segment Program), que es una estructura de datos que crea el DOS cuando carga un programa. Dentro del PSP se coloca la "línea de comandos", que consiste en los caracteres que se teclearon al momento de invocar al programa desde el intérprete de comandos.

Presenté y expliqué brevemente el siguiente programa, que desliega su "línea de comandos":
; Archivo: desplc.asm
; Despliega su linea de comandos
pila segment stack 'stack'
db 512 dup (?)
pila ends

datos segment 'data'
msje1 db "La linea de comandos es:",10,13,"$"
datos ends

prog segment 'code'
assume ss:pila,ds:datos,cs:prog
Inicio:
push ds
pop es ; ES apunta al PSP

mov ax,seg datos ; Inicializa DS
mov ds,ax

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

xor cx,cx ; CX = Tamanho linea comandos
mov cl,es:[128]
xor di,di
do1: mov ah,2
mov dl,es:[129+DI]
int 21h
inc di
loop do1

mov ax,4c00h
int 21h
prog ends
end Inicio
Finalmente les dejé, a manera de ejercicio, que modifiquen este programa para que cuente y despliegue el número de palabras en la línea de comandos.

viernes, octubre 14, 2005

Sesiones del Viernes 14 y Martes 18 de Octubre

En estas sesiones trabajaron con la Práctica 4: Interrupciones de DOS.

jueves, octubre 13, 2005

Sesión del Jueves 13 de octubre

En la sesión de hoy mostré como convertir partes de un programa a macros y dejé como ejercicio la conversión a macros de las partes repetitivas de un programa visto anteriormente en clase.

martes, octubre 11, 2005

Sesión del Martes 11 de Octubre

En la sesión de hoy empezamos el tema de la modularización de programas en ensamblador.

Les presenté 2 formas de hacerlo: i) Macros y ii) Procedimientos.

Esta presentación puede servirles para rapasar el tema (es un archivo de powerpoint comprimido).

viernes, octubre 07, 2005

Sesión del Viernes 7 de Octubre

Hoy presentaron el primer examen parcial. Suerte!!!

jueves, octubre 06, 2005

Sesión del Jueves 6 de Octubre

En la sesión de hoy empezamos a estudiar las interrupciones de DOS (Disk Operating System), que nos presentan un nível un poco más funcional o una abstracción ligeramente superior del hardware.
Les pedí que, a manera de ejercicio, escribieran un programa que utilizando interrupciones de DOS desplegara un saludo. Consulten esta referencia.