Arquitectura de Computadoras 2
Foro para conocer el avance del curso y compartir comentarios, dudas y aportaciones para todos los participantes del mismo.
Acerca de mí
- 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
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:
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
Ilustramos la implementación de esta estructura de control de flujo con un ejemplo. Supongamos el siguiente pseudocódigo:
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:
Ilustramos la implementación de esta estructura de control de flujo con un ejemplo. Supongamos el siguiente pseudocódigo:
Ilustramos la implementación de estas estructuras de control de flujo con un ejemplo. Supongamos el siguiente pseudocódigo:
Para implementar esta estructura de control les presenté la instrucción
Ilustramos la implementación de esta estructura de control de flujo con un ejemplo. Supongamos el siguiente pseudocódigo:
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.
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,100En ensamblador:
if (cx > 0) then
div cx
dec cx
finif
mov ax,dx
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,50En ensamblador:
if (ax < 10)
then
add cx,ax
inc ax
else
dec ax
finif
inc cx
mov bx,50WHILE (cond) DO Inst1 ... InstN ENDWHILE
cmp ax,10 ; if (ax < 10)
jge else
add cx,ax ; then
inc ax
jmp finif
else: ; else
dec ax
finif:
inc cx
Ilustramos la implementación de esta estructura de control de flujo con un ejemplo. Supongamos el siguiente pseudocódigo:
En ensamblador:
mov dx,100
while (dx <> 0) do
add ax,dx
dec dx
endwhile
mov dx,ax
mov dx,100DO Inst1 ... InstN UNTIL(cond) y DO Inst1 ... InstN WHILE(cond)
m1: cmp dx,0 ; while (dx <> 0)
je endm1
add ax,dx ; do
dec dx
jmp m1
endm1: ; endwhile
mov dx,ax
Ilustramos la implementación de estas estructuras de control de flujo con un ejemplo. Supongamos el siguiente pseudocódigo:
mov cx,0En ensamblador:
DO
inc cx
div cx
mov bx,ax
UNTIL (AX = 0)
mov ax,dx
mov cx,0FOR (Contador=1 a N) Do Inst1 ... InstN ENDFOR
do1: inc cx ; DO
div cx
mov bx,ax
cmp ax,0 ; UNTIL (AX = 0)
jne do1
mov ax,dx
Para implementar esta estructura de control les presenté la instrucción
LOOPSu sintaxis es:
LOOP DirecciónSu semántica es:
CX = CX -1Noten que esta instrucción está ligada al registro CX.
SI (CX <> 0)
Salto a Dirección
SINO
Ejecuta la instrucción que sigue a LOOP
Ilustramos la implementación de esta estructura de control de flujo con un ejemplo. Supongamos el siguiente pseudocódigo:
mov dx,50En ensamblador:
PARA (Contador=1 a 30)
sub ax,dx
dec dx
FINPARA
mov ax,cx
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:
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:
- 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:
- Tarea 1.-Resumen de la lectura 1.
- Tarea 2.-Resumen de la lectura 2.
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.
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..
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
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.
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
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