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.

martes, agosto 30, 2005

Sesión del Martes 30 de agosto

En la sesión de hoy realizaron el Ejercicio 2 en equipos de 2 integrantes. Se trata de empezar a aplicar la programación a bajo nivel, que requiere de un buen grado de lógica y de un buen conocimiento del conjunto de instrucciones del procesador. En un comentario posterior anexaré una propuesta de solución para estos ejercicios.

viernes, agosto 26, 2005

Sesión del Viernes 26 de agosto

Formato de instrucción en lenguaje ensamblador
Primero vimos rapidamente el formato de instrucción en ensamblador:

{etiqueta:} mnemónico operandos {; Comentario}

donde {etiqueta:} y {; Comentario} son opcionales.

Por ejemplo:
      mov ax,100
do1: cmp bx,0 ; Instrucción con etiqueta (do1:) y este comentario
jne do2
add cx,ax
do2: dec ax
jmp do1

Programación estructurada en bajo nivel
Posteriormente presenté la manera de implementar en ensamblador las estructuras de control de flujo que se manejan en la programación estructurada:
  • IF (cond) THEN Inst1 ... InstN ENDIF

  • IF (cond) THEN InstV1 ... InstVN ELSE InstF1 ... InstFM ENDIF

  • WHILE (cond) DO Inst1 ... InstN ENDWHILE

  • DO Inst1 ... InstN UNTIL(cond)
    DO Inst1...InstN WHILE(cond)

  • FOR (Contador=1 a N) Do Inst1 ... InstN ENDFOR


IF (cond) THEN Inst1 ... InstN ENDIF
Ilustramos la implementación de esta estructura de control de flujo con un ejemplo. Supongamos el siguiente pseudocódigo:
     mov ax,100
if (cx > 0) then
div cx
dec cx
finif
mov ax,dx
En ensamblador:
     mov ax,100
cmp cx,0 ; if (cx > 0)
jle finif
div cx ; then
dec cx
finif:
mov ax,dx


IF (cond) THEN InstV1 ... InstVN ELSE InstF1 ... InstFM ENDIF
Ilustramos la implementación de esta estructura de control de flujo con un ejemplo. Supongamos el siguiente pseudocódigo:
    mov bx,50
if (ax < 10)
then
add cx,ax
inc ax
else
dec ax
finif
inc cx
En ensamblador:
    mov bx,50
cmp ax,10 ; if (ax < 10)
jge else
add cx,ax ; then
inc ax
jmp finif
else: ; else
dec ax
finif:
inc cx
WHILE (cond) DO Inst1 ... InstN ENDWHILE
Ilustramos la implementación de esta estructura de control de flujo con un ejemplo. Supongamos el siguiente pseudocódigo:

mov dx,100
while (dx <> 0) do
add ax,dx
dec dx
endwhile
mov dx,ax
En ensamblador:
     mov dx,100
m1: cmp dx,0 ; while (dx <> 0)
je endm1
add ax,dx ; do
dec dx
jmp m1
endm1: ; endwhile
mov dx,ax
DO Inst1 ... InstN UNTIL(cond) y DO Inst1 ... InstN WHILE(cond)
Ilustramos la implementación de estas estructuras de control de flujo con un ejemplo. Supongamos el siguiente pseudocódigo:
   mov cx,0
DO
inc cx
div cx
mov bx,ax
UNTIL (AX = 0)
mov ax,dx
En ensamblador:
   mov cx,0
do1: inc cx ; DO
div cx
mov bx,ax
cmp ax,0 ; UNTIL (AX = 0)
jne do1
mov ax,dx
FOR (Contador=1 a N) Do Inst1 ... InstN ENDFOR
Para implementar esta estructura de control les presenté la instrucción
LOOP
Su sintaxis es:
  LOOP Dirección
Su semántica es:
    CX = CX -1
SI (CX <> 0)
Salto a Dirección
SINO
Ejecuta la instrucción que sigue a LOOP
Noten que esta instrucción está ligada al registro CX.

Ilustramos la implementación de esta estructura de control de flujo con un ejemplo. Supongamos el siguiente pseudocódigo:
    mov dx,50
PARA (Contador=1 a 30)
sub ax,dx
dec dx
FINPARA
mov ax,cx
En ensamblador:
    mov dx,50
mov cx,30
p1: sub ax,dx ; PARA (Contador=1 a 30)
dec dx
loop p1 ; FINPARA
mov ax,cx

Finalmente les presenté un algoritmo para calcular la raíz cuadrada aproximada de un entero positivo. Consiste en restar sucecivamente los numeros impares (1,3,5,...) al entero positivo hasta que el resultado de la resta sea menor o igual a 1. Ilusté el algoritmo con un ejemplo y les pedí que lo tradujeran a ensamblador.

jueves, agosto 25, 2005

Sesión del jueves 25 de agosto

En la sesión de hoy continuamos revisando el conjunto de instrucciones de los procesadores Intel x86 (conocida como IA32, Intel Architecture 32 bits). Vimos dos clases de instrucciones:
  • Manipulación de bits: BT,BTC, BTR y BTS

  • Control del flujo de ejecución del programa: CALL, INT y Saltos (incondicional y condicionales).


La siguiente referencia puede servirles para revisar lo visto en clase sobre los saltos condicionales.

También les encargué las tareas 1 y 2 para entregar a más tardar el próximo jueves 1 de septiembre vía email:

martes, agosto 23, 2005

Sesión del Martes 23 de agosto

En la sesión de hoy seguimos presentando el conjunto de instrucciones de los procesadores Intel x86. Nos enfocamos en las operaciones de División y Multiplicación.
Les recomiendo buscar referencias para entender mejor estas instrucciones. Pueden consultar esta referencia, entre otras.

viernes, agosto 19, 2005

Sesión del viernes 19 de agosto

En la sesión de hoy iniciamos el estudio de la programación en bajo nivel con un primer vistazo a la arquitectura de los procesadores Intel x86. Me apoyé en esta presentación.
Después empezamos a conocer el conjunto de instrucciones de los procesadores Intel, estudiando algunas instrucciones de transferencia y algunas instrucciones aritméticas. Para esta parte me apoyé en este documento..

jueves, agosto 18, 2005

Sesión del Jueves 18 de agosto

En la sesión de hoy continuamos con la exposición de la Arquitectura de la IBM PC. Hablamos sobre la memoria RAM, el teclado y la pantalla de video principalmente.

Les recomiendo que consulten las siguientes referencias:

Para lo visto sobre la RAM: Presentación sobre memoria caché (las primeras 10 láminas).

Para lo visto sobre el teclado: El teclado de la IBM PC

Para lo visto sobre la pantalla de video: La pantalla de video de la IBM PC

martes, agosto 16, 2005

Sesión del martes 16 de agosto

En la sesión de hoy les presenté un bosquejo de los temas del curso e iniciamos con el estudio de la arquitectura de la IBM PC.

Pueden consultar las siguiente referencias para afirmar lo visto en clase:

Caracteríticas generales de los procesadores Intel x86.
La memoria y los puertos de Entrada/Salida en la PC
El mapa de memoria de la PC en modo real.

lunes, agosto 15, 2005

Bienvenidos!

Este blog es un foro para el intercambio de información, comentarios, aportaciones y dudas para todos los participantes del curso Arquitectura de Computadoras 2 impartido por la Facultad de Estadística e Informática de la Universidad Veracruzana.

Pretendo agregar un resumen de cada clase del curso para que les sirva como una guía del avance del mismo y como un punto de encuentro para compartir comentarios, dudas o aportaciones sobre los contenidos del curso.

Todas sus aportaciones son bienvenidas y muy apreciadas.

Atentamente,

Sergio Castillo