Beruflich Dokumente
Kultur Dokumente
ESCUELA DE POSTGRADO
MAESTRIA EN CIENCIAS MENCION INFORMATICA
ARQUITECTURAS DE ALTO RENDIMIENTO – GUIA DE LABORATORIO
2) OBJETIVO DE LA PRACTICA
3) TRABAJO PREPARATORIO.
4) MATERIALES.
08/09/2018 ECP 1 de 10
UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO
ESCUELA DE POSTGRADO
MAESTRIA EN CIENCIAS MENCION INFORMATICA
ARQUITECTURAS DE ALTO RENDIMIENTO – GUIA DE LABORATORIO
5) MARCO TEORICO
FUNCION scanf()
Por ejemplo:
int nroEntero
scanf(“%d”, &nroEntero)
En este caso, los datos leídos desde el teclado se interpretan como entero y son
almacenados en la variable nroEntero.
Para llamar a la función scanf() se necesita declarar la misma como externa. Puesto
que la función necesita parámetros, estos deben dejarse en la pila antes de llamar a la
misma. Así, para el ejemplo anterior, se debe declarar una cadena que se usará como
formato de lectura. Igualmente, la variable a donde se leerá el número ingresado será
declarada en la sección BSS.
section .data
formato db "%d",0
section .bss
nroEntero resd 1
;Leer numero
push dword nroEntero
push dword formato
call scanf
add esp, 8
08/09/2018 ECP 2 de 10
UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO
ESCUELA DE POSTGRADO
MAESTRIA EN CIENCIAS MENCION INFORMATICA
ARQUITECTURAS DE ALTO RENDIMIENTO – GUIA DE LABORATORIO
FUNCION printf()
int nroEntero;
int mitadNro;
printf(“La mitad de %d es %d\n”, nroEntero, mitadNro);
Para llamar a la función printf() se necesita declarar la misma como externa. Puesto
que la función necesita parámetros, estos deben dejarse en la pila antes de llamar a la
misma. Así, para el ejemplo anterior, se debe declarar una cadena que se usará como
formato de salida. Igualmente, las variables serán declaradas en la sección BSS (En lugar
de ello, estos parámetros podría pasarse desde registros a la pila).
section .data
section .bss
nroEntero resd 1
mitadNro resd 1
Los valores que se mostrarán se deben dejar en la pila en orden inverso, asi:
;Mostrar resultados
push dword [mitadNro]
push dword [nroEntero]
push dword formato
call printf
add esp, 12
08/09/2018 ECP 3 de 10
UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO
ESCUELA DE POSTGRADO
MAESTRIA EN CIENCIAS MENCION INFORMATICA
ARQUITECTURAS DE ALTO RENDIMIENTO – GUIA DE LABORATORIO
6) TRABAJO DE LABORATORIO.
Solución
;Nombre : doble.asm
;Proposito : calcula el doble de un entero ingresado por
el usuario
;Autor : Edwin Carrasco
;FCreacion : 20/12/2011
;FModificacion : ---
;compilacion : nasm -f elf doble.asm
; gcc -o doble doble.o
section .data
mensaje db "ESTE PROGRAMA CALCULA EL DOBLE DE UN NUMERO
ENTERO",10,0
pideNro db "Ingrese el numero: ",0
salida db "El doble es: ",0
leer db "%d",0
imprimir db "El doble de %d es %d", 10, 0
section .bss
numero resd 1
doble resd 1
section .text
global main
main:
push ebp
mov ebp, esp
;--LEER DATOS
;Pedir numero
08/09/2018 ECP 4 de 10
UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO
ESCUELA DE POSTGRADO
MAESTRIA EN CIENCIAS MENCION INFORMATICA
ARQUITECTURAS DE ALTO RENDIMIENTO – GUIA DE LABORATORIO
;Leer numero
push dword numero
push dword leer
call scanf
add esp, 8
;--PROCESAR
mov eax, [numero]
shl eax, 1
mov [doble], eax
;--MOSTRAR RESULTADOS
push dword [doble]
push dword [numero]
push dword imprimir
call printf
add esp, 12
Solución
;Nombre : mcd.asm
;Proposito : calcula el mcd de dos números enteros
ingresados por el usuario
;Autor : Edwin Carrasco
;FCreacion : 28/12/2011
;FModificacion : 01/01/2012
;compilacion : nasm -f elf mcd.asm
; gcc -o mcd mcd.o
section .data
strProposito db "ESTE PROGRAMA CALCULA EL MCD DE DOS NUMEROS
ENTEROS",10,0
strInNro1 db "Ingrese el primer numero: ",0
strInNro2 db "Ingrese el segundo numero: ",0
formatOut db "El MCD de %d y %d es %d", 10, 0
08/09/2018 ECP 5 de 10
UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO
ESCUELA DE POSTGRADO
MAESTRIA EN CIENCIAS MENCION INFORMATICA
ARQUITECTURAS DE ALTO RENDIMIENTO – GUIA DE LABORATORIO
formatIn db "%d", 0
section .bss
nro1 resd 1
nro2 resd 1
section .text
global main
main:
;--INDICAR QUE HACE EL PROGRAMA
push strProposito
call printf
add esp, 4
;--LEER DATOS
;Leer primer nro
push strInNro1
call printf
add esp, 4
push nro1
push dword formatIn
call scanf
add esp, 8
push nro2
push dword formatIn
call scanf
add esp, 8
;--PROCESAR
;Parametros para el modulo MCD
mov eax, [nro1]
mov ebx, [nro2]
call fnMCD
;--MOSTRAR RESULTADOS
push ebx
push dword [nro2]
push dword [nro1]
push dword formatOut
call printf
add esp, 16
08/09/2018 ECP 6 de 10
UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO
ESCUELA DE POSTGRADO
MAESTRIA EN CIENCIAS MENCION INFORMATICA
ARQUITECTURAS DE ALTO RENDIMIENTO – GUIA DE LABORATORIO
mov eax, 1
int 80h
;--MODULO fnMCD
;======================================================
; int MCD (int nro1, int nro2){
; do {
; resto = nro1 % nro2;
; nro1 = nro2;
; nro2 = resto;
; } while (resto != 0);
; return nro1;
; }
;======================================================
fnMCD:
;Parametros en eax = nro1, ebx = nro2
;Crear el marco de pila
push ebp
mov ebp, esp
sgte:
xor edx, edx
div ebx ;Q = eax = edx:eax/ebx, R = edx
cmp edx, 0
je fin
mov eax, ebx
mov ebx, edx
jmp sgte
fin:
;destruir marco de pila
mov esp, ebp
pop ebp
;return ebx
ret
08/09/2018 ECP 7 de 10
UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO
ESCUELA DE POSTGRADO
MAESTRIA EN CIENCIAS MENCION INFORMATICA
ARQUITECTURAS DE ALTO RENDIMIENTO – GUIA DE LABORATORIO
7) PRACTICAS DE LABORATORIO
08/09/2018 ECP 8 de 10
UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO
ESCUELA DE POSTGRADO
MAESTRIA EN CIENCIAS MENCION INFORMATICA
ARQUITECTURAS DE ALTO RENDIMIENTO – GUIA DE LABORATORIO
8) EVALUACION
SESION 01 SESION 02
ACTIVIDAD
Procedimental Procedimental
Ejecución del ejercicio de ejemplo 05 --
Resolución del ejercicio propuesto 01 05 --
Resolución del ejercicio propuesto 02 10 --
Resolución del ejercicio propuesto 03 -- 10
Resolución del ejercicio propuesto 04 -- 10
TOTAL 20 20
08/09/2018 ECP 9 de 10
UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO
ESCUELA DE POSTGRADO
MAESTRIA EN CIENCIAS MENCION INFORMATICA
ARQUITECTURAS DE ALTO RENDIMIENTO – GUIA DE LABORATORIO
BIBLIOGRAFIA
LIBROS
[L01]. Bartlett Jonathan. “Programming From The Ground Up”. Bartlett Publishing,
2003
[L02]. Brey Barry. “Los Microprocesadores Intel. Arquitectura, Programación e
Interfaces”. Prentice Hall 3Ed.
[L03]. Dandamudi. “Guide To Assembly Language Programming In Linux”. Springer
2005
[L04]. Hyde Randall. “Art of Assembly Language Programming”. Nostarch Press 1Ed.
[L05]. Smith B. E., Johnson M. T. “Programming The Intel 80386” Editorial Scott,
Foresman And Company, 1987.
REFERENCIAS WEB
08/09/2018 ECP 10 de 10