You are on page 1of 11

Microprocesadores II PRACTICA N1

Disee un programa que muestre por pantalla los N primeros nmeros pares elevados al cubo. El valor N deber ser introducido desde teclado.

#include<conio.h> #include<dos.h> #include<stdio.h> #include<iostream.h> main() { unsigned int a,in,c=1,r=0,b; clrscr(); scanf("%d",&a); asm{ mov ax,a inc ax mov b,ax mov dx,b mov ax,a mov cx,1 } Ciclo_0: asm{ mov cx,c mov dx,b cmp cx,dx jl ciclo_1 } goto fin; ciclo_1: asm{ mov ax,2 mov bx,r add ax,bx mov r,ax mov ax,r mov bx,r mul bx mul bx mov in,ax

inc cx mov c,cx } printf ("%d ",in); goto ciclo_0; fin: getch(); }

Realizar un programa que permita introducir nmeros desde teclado y que cuando se le introduzca el valor cero realice la media aritmtica de todos los nmeros introducidos.

#include<stdio.h> #include<conio.h> #include<dos.h> main() { unsigned int a,xy,c=0,d=0,r; clrscr(); ciclo_1: scanf("%d",&a); asm{ mov ax,a mov bx,0 cmp ax,bx jg inicio } goto result; inicio: asm{ mov ax,a mov cx,c add ax,cx mov c,ax mov dx,d inc dx mov d,dx } goto ciclo_1; result: asm{ mov dx,0 mov ax,c mov bx,d div bx mov xy,ax } printf("la media es: %d",xy); getch(); }

Implementar un programa que permita encontrar el mnimo comn mltiplo de dos nmeros introducidos desde teclado. #include<stdio.h> #include<conio.h> #include<dos.h> #include<iostream.h> main() { unsigned int a,b,c=1,d,e; clrscr(); scanf("%d",&a); scanf("%d",&b); asm{ mov ax,a mov bx,b cmp ax,bx jg ciclo_1 } Ciclo_2: asm{ mov bx,b mov ax,c mul bx mov e,ax mov bx,a mov dx,0 div bx mov ax,c inc ax mov c,ax cmp dx,0 je muestra } goto ciclo_2; ciclo_1: asm{ mov ax,a mov bx,c mul bx mov e,ax mov bx,b mov dx,0 div bx mov ax,c

inc ax mov c,ax cmp dx,0 je muestra } goto ciclo_1; muestra: printf("%d",e); getch(); }

Efectuar un programa que lea dos nmeros enteros y muestre en pantalla todos los nmeros comprendidos entre dichos nmeros, ambos incluidos. El programa no debe suponer que el primero ser menor que el segundo, ni viceversa, pero s que deber tenerlo en cuenta para mostrar los nmeros en orden creciente o decreciente segn corresponda. #include<stdio.h> #include<conio.h> #include<dos.h> #include<iostream.h> main() { unsigned int a,b,cont; clrscr(); scanf("%d",&a); scanf("%d",&b); asm{ mov ax,a mov bx,b cmp ax,bx jg ciclo_1 } Ciclo_2: printf("%d ",a); asm{ mov ax,a inc ax mov a,ax mov bx,b cmp ax,bx jle ciclo_2 } goto fin; ciclo_1: printf("%d ",a); asm{ mov ax,a dec ax mov a,ax mov bx,b cmp ax,bx jge ciclo_1 } goto fin; fin: getch();

Los nmeros perfectos son aquellos enteros que son iguales a la suma de sus divisores sin incluir a l mismo. Ejemplo: 6 es un nmero perfecto. Elabore un algoritmo que calcule todos los nmeros perfectos menores que un N dado.

#include <conio.h> #include <dos.h> #include <stdio.h> main() { unsigned int a,cont=0,d=1,c=2; clrscr(); scanf("%d",&a); ciclo_1: asm{ mov ax,c mov bx,a cmp ax,bx jle ciclo_2 } goto fin; ciclo_2: asm{ mov ax,c mov bx,d mov dx,0 div bx mov ax,dx mov bx,0 cmp ax,bx je ciclo_3 } asm{ mov ax,d inc ax mov d,ax mov bx,c cmp ax,bx jl ciclo_1 } Ciclo_4: asm{ mov ax,cont mov bx,c cmp ax,bx

je ciclo_5 } goto acumula; ciclo_5: asm{ mov ax,cont mov bx,a cmp ax,bx jle muestra } goto acumula; muestra: { asm{ mov ax,cont mov cont,ax } printf("%d ",cont); } goto acumula; ciclo_3: asm{ mov ax,cont mov bx,d add ax,bx mov cont,ax mov cx,d inc cx mov d,cx mov ax,d mov bx,c cmp ax,bx jl ciclo_1 } goto ciclo_4; acumula: asm{ mov ax,d mov ax,1 mov d,ax mov bx,cont mov bx,0 mov cont,bx

mov cx,c inc cx mov c,cx } goto ciclo_1; fin: getch(); }

Escriba un programa que realice la conversin de un nmero binario a un nmero decimal. Dado un nmero binario, su equivalente en decimal se obtiene multiplicando cada uno de los bits por la potencia de 2 correspondiente a su posicin y sumando los resultados de cada producto. El nmero binario se lee de la entrada estndar uno a uno los dgitos desde el menos significativo hasta el ms significativo. Para demarcar el fin de entreda se utilizar el dgito 9. La salida es el nmero decimal. Ejemplo de entrada: 0 1 1 0 0 1 9. Salida: 22.

#include<stdio.h> #include<conio.h> #include<dos.h> main() { unsigned int bit,n; bit=0; clrscr(); ciclo_1: scanf("%d",&n); asm{ mov ax,n cmp ax,9 je fin } asm{ mov ax,bit mov bx,2 mul bx mov s,ax mov bx,n add ax,bx mov s,ax jmp ciclo_1 } fin: printf("%d ",bit); getch();

Realizar un programa que permita la obtencin de de la divisin de 2 nmeros de longitud variable usando mtodos numricos. ( El docente se encargara de explicar en curso el procedimiento a ser usado para la resolucin del ejercicio).

You might also like