Logo Studenta

Notas_Clase1_ Arqi_Adicional_2015

¡Este material tiene más páginas!

Vista previa del material en texto

1
Prof. Jorge M. Runco 1Curso 2015
Arquitectura de 
Computadoras
Curso 2015
Clase 1
Pasaje de parámetros
Prof. Jorge Runco Curso 2015 2
Temas de clase
� Registros
� Instrucciones
� Tipos de instrucciones
� Programas 
� Subrutinas
� Pasaje de parámetros
2
Prof. Jorge Runco Curso 2015 3
Organización de registros
�Registros visibles al usuario: son 
utilizados por el programador (AX, BX,… 
BP, SP..)
�Registros de control y estado: son 
utilizados por la UC para controlar la 
operación de la CPU: no son visibles por 
el programador (MAR, MBR, IP…..)
Prof. Jorge Runco Curso 2015 4
Organización de registros
CPU PII Intel (principales)(1)
AH AL 
BH BL
CH CL
DH DL
EAX
EBX
ECX
EDX
16 bits 8 bits 8 bits
De uso general
A X
B X
C X
D X
3
Prof. Jorge Runco Curso 2015 5
Organización de registros
CPU PII Intel (principales)(2)
CS
SS
DS
ES
FS
GS
16 bits
Segmentos
Prof. Jorge Runco Curso 2015 6
Organización de registros
CPU PII Intel (principales)(3)
SP
BP
SI
DI
16 bits
Punteros de pila y registros índices
4
Prof. Jorge Runco Curso 2015 7
Organización de registros
CPU PII Intel (principales)(4)
EIP
EFLAGS
PC y banderas 
Prof. Jorge Runco Curso 2015 8
Organización de registros
CPU PII Intel (principales)(5)
• AX : acumulador, es el principal en las 
operaciones aritméticas
• BX : puntero base (dir de memoria)
• CX : contador, interviene en 
instrucciones de ciclo
• DX : datos, participa en multiplicación 
y división
5
Prof. Jorge Runco Curso 2015 9
Organización de registros
CPU PII Intel (principales)(6)
� SI y DI : apuntadores que utilizan las 
instrucciones que recorren 
arreglos o tablas
� BP y SP : también son apuntadores a 
memoria, pero a una zona 
especial: pila ó stack
� E : reg de 32 bits
Prof. Jorge Runco Curso 2015 10
Instrucciones - Intel 
�Tienen la forma :
instrucción destino,fuente
�destino y fuente son 2 operandos, donde 
c/u de ellos está especificado por alguno 
de los mdd vistos, el otro operando es un 
registro de la CPU
6
Prof. Jorge Runco Curso 2015 11
Instrucciones - Intel (2)
�Llamando :
• mem = especificación de una dirección de 
memoria
• reg = registro de la CPU
• inm = dato inmediato
Las instrucciones 
tienen la forma
Prof. Jorge Runco Curso 2015 12
Instrucciones - Intel (3)
Instrucción mem, reg
Instrucción reg , mem
Instrucción reg , reg
Instrucción reg , inm
Instrucción mem, inm
7
Prof. Jorge Runco Curso 2015 13
Instrucciones - Intel (4)
�El nombre destino y fuente proviene del 
hecho que si hay un movimiento de datos, 
es desde la derecha (fuente) hacia la 
izquierda (destino).
�En una suma hay 2 operandos y el 
resultado se almacena en el lugar del 
operando izquierdo (destino).
Prof. Jorge Runco Curso 2015 14
Instrucciones - Intel 8086 
Ejemplos:
• ADD AX,BX AX=AX+BX
• ADD AL,AH AL=AL+AH
• MOV AL,CH AL=CH
• SUB AX,BX AX=AX - BX 
� Direccionamiento por registro
8
Prof. Jorge Runco Curso 2015 15
Instrucciones - Intel 8086 (2)
Ejemplos:
• ADD AX,35AFh AX=AX+35AFh
• ADD AL,15 AL=AL+15
• MOV AL,3Eh AL=3Eh
• SUB AX,1234h AX=AX - 1234h 
�Direccionamiento Inmediato
Prof. Jorge Runco Curso 2015 16
Instrucciones - Intel 8086 (3)
Ejemplos:
• ADD AX, [35AFh] 
AX = AX + contenido direcc. 35AFh y 35B0h
• ADD AL, DATO 
AL = AL + contenido variable DATO (8 bits)
• MOV CH, NUM1
CH = contenido variable NUM1 (8 bits)
� Direccionamiento Directo
9
Prof. Jorge Runco Curso 2015 17
Instrucciones - Intel 8086 (4)
Ejemplos:
• ADD AX, [BX] 
AX = AX + dato almacenado en dirección 
contenida en BX y la que sigue
• MOV [BX], AL 
dato en la dirección contenida en BX = AL
� Direccionamiento Indirecto por registro
Prof. Jorge Runco Curso 2015 18
Instrucciones - Intel 8086 (5)
Ejemplos:
• MOV CX, [BX+SI] 
CX = dato almacenado en la direcc. BX+SI 
y la siguiente
• MOV [BX+DI], AL 
dato almacenado en la direcc. BX+DI = AL 
� Direccionamiento base + índice
10
Prof. Jorge Runco Curso 2015 19
Instrucciones - Intel 8086 (6)
Ejemplos:
• MOV AL, [BX+2] 
AL=dato almacenado en dir BX+2
• MOV [BX+2Ah], AX
dato almacenado en dir BX+2Ah y la que 
sigue = AX (16 bits)
� Direccionamiento Relativo por registro
Prof. Jorge Runco Curso 2015 20
Instrucciones - Intel 8086 (7)
Ejemplos:
• MOV AL, [BX+SI+2] 
AL = dato almacenado en la dir BX+SI+2
• MOV [BX+DI+2Ah], AX
dato almacenado en la dir BX+DI+2Ah y la 
que sigue = AX (16 bits) 
� Direccionamiento relativo base+índice
11
Prof. Jorge Runco Curso 2015 21
Orden de los bytes
1 ORG 1000H
1000 34 92 2 NUM1 DW 9234H
El número de 2 bytes es 
almacenado en sentido 
invertido, la parte alta 
del número en la 
dirección más alta
Dir 1001H
Prof. Jorge Runco Curso 2015 22
Orden de los bytes (2)
12 ORG 2000H
2000 8B 06 00 10 13 MOV AX,NUM1
2004 8B 16 02 10 14 MOVDX,NUM1+2
2008 8B 0E 04 10 15 MOV CX,NUM2
200C 8B 1E 06 10 16 MOV BX,NUM2+2
2010 E8 00 30 17 CALL SUM32
2013 F4 18 HLT
19 END
Este mecanismo se llama “little-endian”
12
Prof. Jorge Runco Curso 2015 23
Problema
• Intel 80x86, Pentium y VAX son “little-
endian”.
• IBM S/370, Motorola 680x0 (Mac), y la 
mayoría de los RISC son “big-endian”.
Incompatibilidad !!!
Prof. Jorge Runco Curso 2015 24
Funcionamiento de la pila
• Zona de memoria destinada a un uso 
específico
• Uso del sistema: salva la dirección de retorno 
cuando es llamada una subrutina ó se produce 
una interrupción por hardware
• Uso del usuario: pasaje de parámetros
• Cada vez que se ejecuta un programa, el so 
inicializa el reg SP apuntando a la pila
• El simulador inicializa SP=8000H
13
Prof. Jorge Runco Curso 2015 25
Operaciones de apilar/desapilar
• PUSH : apila datos. El SP apunta al último 
dato almacenado, por lo tanto primero se 
decrementa y luego almacena el dato.
• POP : desapila datos. Desapila el dato y 
luego incrementa el SP. Operación inversa 
a la anterior.
Prof. Jorge Runco Curso 2015 26
Funcionamiento de la pila
� Mover dato
� Modificar SP
SP
Apilar Desapilar
2
2
1
2
1
2
1
1
PUSH POP
x86
14
Prof. Jorge Runco Curso 2015 27
Definición del procedimiento
Nombre Proc
...
…
…
Ret
Nombre Endp
Cuerpo del procedimiento
Prof. Jorge Runco Curso 2015 28
Pasaje de parámetros a subrutinas
� Procedimientos (subrutinas), en general 
requieren datos de entrada y proveen 
datos de salidas.
� Parámetros son estos datos pasados a y 
desde el procedimiento.
� Estos parámetros pueden ser pasados de 
dos maneras :
� Por valor
� Por referencia
15
Prof. Jorge Runco Curso 2015 29
Parámetros por valor
� Es eso: se pasa el valor de una variable al 
procedimiento.
� Son sólo parámetros de entrada.
� Independientemente del uso de este valor 
por parte del procedimiento, éste no 
puede ser modificado.
Prof. Jorge Runco Curso 2015 30
Parámetros por referencia
� Aquí es pasada la dirección de la variable 
y no su valor.
� Es necesario cuando hay que modificar el 
valor del parámetro (retorno).
� En general menos eficiente que pasar por 
valor. Tenemos la dir y hay que acceder a 
memoria para buscar el dato.
� Pero más eficiente cuando hay que 
transferir un arreglo datos entre proc. Así 
se pasa la dir del arreglo. 
16
Prof. Jorge Runco Curso 2015 31
¿Dónde se pasan los parámetros?
●Vía registros
● El número de registros es la principal limitación 
● Es importante documentar que registros se usan
●Vía memoria
● Se usa un área definida de memoria (RAM). 
● Difícil de estandarizar
Prof. Jorge Runco Curso 2015 32
¿Dónde se pasan los parámetros?
●Vía pila (stack)
● Es el método más ampliamente usado.
● Lo usa la mayoría de los lenguajes de alto nivel.
● Independiente de memoria y registros.
● Hay que comprender bien como funciona porque 
la pila (stack) esusada por el usuario y por el 
sistema.
● Aunque es más complicado, en general los 
registros son recursos muy preciados.
17
Prof. Jorge Runco Curso 2015 33
En HLL y por 
valor
Procedure Mio (I)
………..
………… 
Begin
………….
………….
Mio (x);
En x86 por valor 
en registros
Mio Proc
…El dato está en ax..
……….
Mio Enp
……..
dato dw ….
………..
mov ax, dato
call Mio 
En x86 por valor 
en la pila
Mio Proc
…El dato está en la 
pila……
……….
Mio Enp 
dato dw ….
………..
mov ax, dato
push ax
call Mio 
Prof. Jorge Runco Curso 2015 34
En HLL y por 
referencia
Procedure Mio (Var:I)
………..
………… 
Begin
………….
………….
Mio (x);
En x86 por 
referencia en 
registros
Mio Proc
….La dir de dato en 
……ax……
……….
Mio Enp
……..
dato dw ….
………..
mov ax, offset dato
call Mio 
En x86 por 
referencia y en la 
pila
Mio Proc
…La dir de dato en la 
pila……
…………
Mio Enp
……..
dato dw ….
………..
mov ax,offset dato
push ax
call Mio 
18
Prof. Jorge Runco Curso 2015 35
Llamada al procedimiento y pasaje de 
parámetros por pila
En programa principal
…
Push Parámetro 1
Push Parámetro 2
Call Nombre
…
…
Prof. Jorge Runco Curso 2015 36
Uso de registros con la pila (1)
� SP = Stack pointer (Puntero de pila).
� Apunta al último dato almacenado en la 
pila :
� Por el usuario con push y pop
� Por el sistema al salvar la dirección de 
retorno en el llamado a una subrutina ó 
cuando se produce una interrupción (la 
veremos más adelante).
19
Prof. Jorge Runco Curso 2015 37
Uso de registros con la pila (2)
� BP= Base pointer (Puntero base). Como 
SP no es un registro base ó índice, no 
puede ser usado para direccionar entre 
corchetes. No está permitido [SP].
� Para direccionar la pila se usa BP. Así si se 
ejecutan instrucciones push y pop se 
modifica sp; si hay una llamada a 
procedimiento también se modifica SP.
� BP está manejado por el usuario.
Prof. Jorge Runco Curso 2015 38
Posibles pasos en un procedimiento
1. Salvar el estado de BP (viejo BP)
2. Salvar estado de SP (BP=SP)
3. Reservar espacio para datos locales 
(opcional)
4. Salvar valores de otros registros (opcional)
5. Acceder a parámetros
6. Escribir sentencias a ejecutar
7. Retornar parámetro (opcional)
8. Regresar correctamente del procedimiento
20
Prof. Jorge Runco Curso 2015 39
Primero Proc 
push bp
mov bp, sp
sub sp, 2
push ax
mov cx, [bp+número]
(instrucciones)
pop ax
mov sp, bp
pop bp
ret
Endp Primero
Paso 1:salvar el 
estado de bp
Paso2 :salvar 
sp. Uso bp para 
direccionar
Paso 4 : salvar 
registros. Acá 
uno como ej. 
Pueden ser más
Paso 3 : corre 2 lugares 
sp y esos 2 bytes pueden 
ser usados como “locales” 
para este procedimiento
OPCIONAL
OPCIONAL
OPCIONAL
Paso 5 : 
acceder a 
parámetrosPaso 6
Paso 8
En el procedimiento……..
Prof. Jorge Runco Curso 2015 40
Pasos......dentro del procedimiento
● El procedimiento comenzaría con:
push BP
mov BP, SP
● Esto establece a BP como puntero de 
referencia y es usado para acceder a los 
parámetros y datos locales en la pila. SP no 
puede ser usado para éste propósito porque 
no es un registro base ó índice. El valor de SP 
puede cambiar pero BP permanece fijo. 
21
Prof. Jorge Runco Curso 2015 41
Pasos......dentro del procedimiento
● Así la primera instrucción salva BP y la 
segunda carga el valor de SP en BP (en el 
momento de entrar al procedimiento).
● BP es el puntero al área de la pila 
asignada al procedimiento (frame 
pointer). 
● Para acceder a los datos se deberá sumar 
un desplazamiento fijo a BP.
Prof. Jorge Runco Curso 2015 42
Pasos......dentro del procedimiento
● Reservar espacio para variables locales
● se decrementa SP, reservando lugar en la pila
sub SP, 2
● Este ej. reserva 2 bytes para datos locales.
● El sistema puede utilizar al SP sin escribir 
sobre el área de trabajo (o frame) del 
procedimiento.
22
Prof. Jorge Runco Curso 2015 43
Parámetro 1
Parámetro 2
Dirección de 
retorno 1
Parámetro 1
Parámetro 2
Dirección de 
retorno 1
Viejo BP
Variables locales 1
SP
BP
SP y BP al entrar a Primero
SP 
BP 
SP y BP después de paso 3
Prof. Jorge Runco Curso 2015 44
Pasos......dentro del procedimiento
● Salvar otros registros
● por ej. ax
push ax
● Si el procedimiento no cambia el valor de 
los registros, éstos no necesitan ser 
salvados. Normalmente los registros son 
salvados después de establecer el puntero 
(frame pointer) y los datos locales.
23
Prof. Jorge Runco Curso 2015 45
Parámetro 1
Parámetro 2
Dirección de 
retorno
Viejo BP
Variables locales
Salvar AX
SP antes de pasar parámetros
SP luego de pasar parámetro 1 
desde programa principal
SP luego de pasar parámetro 2 
y antes de llamar al 
procedimiento
SP después de llamar al proc
Salvar viejo BP y hacer BP=SP 
en el procedeimiento
Espacio para datos locales. 
En el procedimiento
Posición de SP luego de salvar 
por ej. AX (En el proc.)
2 bytes
2 bytes
2 bytes
4 bytes
2 bytes
2 bytes
Prof. Jorge Runco Curso 2015 46
Pasos......dentro del procedimiento
acceso a los parámetros
● En general el desplazamiento de BP para 
acceder a un parámetro es igual a:
● 2 (es el tamaño de BP apilado) + tamaño 
de dirección de retorno + total de tamaño 
de parámetros entre el buscado y BP
● Para acceder al Parámetro 1 deberá ser:
mov CX, [ BP + 8 ]
24
Prof. Jorge Runco Curso 2015 47
Parámetro 1
Parámetro 2
Dirección de retorno
Viejo BP
Variables locales
Salvar AX
BP
SP
2 bytes
4 bytes
2 bytes
BP + 8
Prof. Jorge Runco Curso 2015 48
Salida del procedimiento
● Los registros salvados en la pila deben ser 
descargados en orden inverso.
● Si se reservó espacio para variables 
locales, se debe reponer SP con el valor 
de BP que no cambió durante el 
procedimiento.
● Reponer BP.
● Volver al programa que llamó al 
procedimiento con ret.
25
Prof. Jorge Runco Curso 2015 49
Salida del procedimiento
● En nuestro ej.
.
.
pop AX
mov SP, BP
pop BP
ret 
Prof. Jorge Runco Curso 2015 50
Anidamiento de subrutinas
Programa principal
.
.
Push Parámetro1
Call Proce1
.
.
Proce1 Proc 
Push BP 
Push Param2 
Call Proce2
Pop Param2 
Pop BP 
Ret 
Proce1 Endp
Proce2 Proc 
Push BP 
Instrucciones 
Pop BP 
Ret 
Proce2 Endp 
26
Prof. Jorge Runco Curso 2015 51
Parámetro de 
entrada 1
Parámetro de 
entrada 1
Dirección de 
retorno 1
Viejo BP
Dirección de 
retorno 1
Viejo BP
Parámetro de 
entrada 2
Viejo BP1
Dirección de 
retorno 2
BP2=SP2
BP1=SP1 
Viejo BP1
El simulador no tiene BP, hay que usar BX 
Prof. Jorge Runco Curso 2015 52
Para el simulador
● Declaración del procedimiento
org 3000h
nombre: instrucción
.
.
ret
● En lugar de BP se usa BX
27
Prof. Jorge M. Runco 53Curso 2015
Arquitectura de 
Computadoras
Ejemplo
Suma de 2 números de 32 bits 
con el simulador
Prof. Jorge Runco Curso 2015 54
ADD AX,CX
ADC DX,BX
AXDX
BX CX
AXDX
C
Suma de dos números de 32 bits
28
Prof. Jorge M. Runco 55Curso 2015
Arquitectura de 
Computadoras
Ejemplo :Suma de 2 números 
de 32 bits pasados por la pila 
por valor (con el simulador)
Prof. Jorge Runco Curso 2015 56
ORG 2000H
MOV AX, NUM1
PUSH AX
MOV AX, NUM1+2
PUSH AX
MOV AX, NUM2
PUSH AX
MOV AX, NUM2+2
PUSH AX
CALL SUM32
HLT (DIR:2017)
Suma de dos números de 
32 bits pasados por valor 
en la pila
8000H 00H
7FF7H 00H
7FF6H 00H
7FF9H 00H
7FFAH 00H
7FFBH 00H
7FFCH 00H
7FFDH 00H
7FFEH 00H
7FFFH 00H
7FF8H 00H
92H
34H
11H
11H
92H
34H
22H
22H
20H
17H
SP
29
Prof. Jorge Runco Curso 2015 57
8000H 00H
7FF7H 20H
7FF6H 17H
7FF9H 22H
7FFAH 34H
7FFBH 92H
7FFCH 11H
7FFDH 11H
7FFEH 34H
7FFFH 92H
7FF8H 22H
7FF5H 00H
7FF4H 00H
BX
BX
BX
BX
ORG 3000H
SUM32: PUSH BX
MOV BX, SP
ADD BX, 10
MOV AX, [BX]
SUB BX, 2
MOV DX, [BX]
SUB BX, 2
MOV CX, [BX]
SUB BX, 2
ADD AX, CX
ADC DX, [BX]
POP BX
RET
0000H0000H
0000H2222H
0000H0000H9234H
9234H
1111H
2468H3334H
1
SP
BX
SP
AX
CX
DX
Prof. Jorge M. Runco 58Curso 2015
Arquitectura de 
Computadoras
Ejemplo :Suma de 2 números 
de 32 bits pasados por la pila 
por referencia (con el 
simulador)
30
Prof. Jorge Runco Curso 2015 59
ORG 2000H
MOV AX,OFFSET NUM1 
PUSH AX 
MOV AX,OFFSET NUM2 
PUSH AX 
CALL SUM32 
HLT (Dir=200BH)
END 
7FF8H 00H
7FF7H 00H
7FFAH 00H
7FFBH 00H
7FFCH 00H
7FFDH 00H
7FFEH 00H
7FFFH 00H
8000H 00H
7FF9H 00H
7FF6H 00H
7FF5H 00H
0000HAX 1000H
10H
00H
1004H
10H
04H
20H
0BH
Suma de dos números de 32 bits 
pasados por referencia (dirección) 
en la pila
SP
Prof. Jorge Runco Curso 2015 60
ORG 3000H
SUM32:PUSH BX
MOV BX,SP 
ADD BX,6 
MOV AX,[BX] 
SUB BX,2 
MOV CX,[BX]
MOV BX,AX 
MOV AX,[BX] 
ADD BX,2 
MOV DX,[BX] 
MOV BX,CX 
MOV CX,[BX]
ADD BX,2 
ADD AX, CX 
ADC DX,[BX]
POP BX 
RET
7FF8H 00H
7FFAH 2BH
7FFBH 20H
7FFCH 04H
7FFDH 10H
7FFEH 00H
7FFFH 10H
8000H 00H
7FF9H 00H
1000H 34H
1002H 11H
1003H 11H
1004H 34H
1005H 92H
1006H 22H
1007H 22H
1008H 00H
1001H 92H
AX
CX
DX
BX
SP
0000H0000H
0000H 1004H7FFAH
7FF8H
7FF8H
7FFEH
1000H
7FFCH 1004H1000H
9234H
1002H
1111H
1004H 9234H1006H
2468H3334H
0000H
7FFAH

Continuar navegando

Materiales relacionados

24 pag.
Guia_Laboratorio_3_Pseudocodigo_Diagr_Flujo

Escola Maria Pastora Bispo

User badge image

JEAN PAUL MEZA CALCINA

29 pag.
Sistemas Numéricos e Conversões

BUAP

User badge image

Estudiando Y Aprendendo

53 pag.
ic_2004colección

User badge image

Materiales Generales