C

cheatr4

Usuario (Argentina)

Primer post: 15 oct 2010Último post: 3 nov 2013
6
Posts
105
Puntos totales
11
Comentarios
C
Cosas que nadie sabe!
InfoporAnónimo10/19/2010

COSAS DE LA VIDA QUE POCOS SABEMOS Anatomia humana: El largo de los brazos extendidos hacia los costados de una persona, miden exactamente lo mismo que la persona en si, es decir que su altura mida lo mismo que sus brazos extendidos hacias los lados! Perdon por el asco de imagen que hice, pero es lo que me salio :S El largo de el pie de una persona, desde la punta del dedo gordo hasta el talon es exactamente del mismo largo que el ante-brazo (de esa misma persona obviamente) si no lo creen hagan la prueba! ¿SUFRIMIENTO O FIESTA? Es la novena luna de cada año la que dictamina el antes y el despues de un mes que para musulmanes es una fiesta. Un mes que vemos los extranjeros desde afuera como muy dificil de afrontar; no comer en todo el dia, no beber, no fumar y lo peor para los latinos no poder mantener relaciones sexuales! "Se trata de que el rico pueda sentir los dolores del hambre y sepa apreciar lo que el pobre ha de soportar y por tanto comparta las generosidades de Allah con ellos." Imam Hussein Comparando este mes de dedicacion total que realizan los musulmanes, te pones a pensar..tu serías capaz de completar todo un mes en estas condiciones? con lo que nos gusta a nosotros comer y beber!! y no digamos lo del sexo!! El ramadan en españa seria un fracaso absoluto. La tradición es tan arraigada que deportistas de elite siguen arrajatabla todas las condiciones para ser uno mas, aunque no este en su pais, el lo vive como tal. Tonterias: La melodia musical de la cancion FELIZ CUMPLEAÑOS es la misma que la de la cancion EL PAYASO PLIN PLIN!! xD Curiosidades: 1. El tiempo de espera medio hasta que nos dormimos es de siete minutos. 2. Los CDs fueron diseñados para recibir 74 minutos de música porque esa es la duración de la Novena Sinfonía de Bethoven. 3. Antes del 1800, los zapatos para el pie izquierdo y derecho eran iguales. 4. El encendedor se inventó antes que los fósforos. 5. Walt Disney tenía miedo a los ratones. 6. A lo largo de nuestra vida, y durante las noches, cada humano se come una media de 8 arañas. 7. Los cómics del pato Donald se prohibieron en Finlandia porque no llevaba pantalones. 8. Las mujeres pestañean casi dos veces más que los hombres. 9. En China hay más angloparlantes que en los Estados Unidos. 10. ¿Sabías que compartes tu fecha de cumpleaños con al menos otros 9 millones de personas en el mundo? 11. Leonardo Da Vinci inventó las tijeras. 12. Solo una de cada dos mil millones de personas alcanza o sobrepasa los 116 años de edad. 13. El cacahuete es uno de los ingredientes de la dinamita. 14. Como media, la mano izquierda realiza el 56% del trabajo cuando se escribe a máquina. 15. En el mundo hay más pollos que personas. 16. Los repelentes de mosquitos no repelen. Te ocultan. El spray bloquea los censores del mosquito por lo tanto ellos no saben que estas ahí. 17. Ningún pedazo de papel puede ser plegado a la mitad más de 7 veces. 18. Los burros matan más gente anualmente que los accidentes aéreos. 19. Quemas más calorías durmiendo que mirando televisión. 20. El roble no produce bellotas hasta que tiene 50 años o más. 21. El rey de corazones es el único rey sin bigotes. 22. La distancia de alas del Boeing 747 Jumbo es más larga que el vuelo del primer avión de los hermanos Wright. 23. Es posible hacer subir una vaca por las escaleras, pero no bajarla. 24. En promedio, 100 personas mueren ahogados al año con bolígrafos. 25. Es físicamente imposible lamerse el propio codo. 26. La guerra más corta de la historia tuvo lugar entre Zanzibar e Inglaterra en 1896. Zanzíbar se rindió a los 38 minutos. 27. La silla eléctrica fue inventada por un dentista. 28. Febrero de 1865 es el único mes en los registros históricos que no tuvo ninguna luna llena. 29. La orina de gato brilla a la luz de una lámpara de luz negra. 30. Si gritas durante ocho años, siete meses y seis días, habrás producido suficiente energía sonora como para calentar una taza de café. 31. Si te tirases pedos consistentemente durante seis años y nueve meses, producirías suficiente gas como para crear la energía de una bomba atómica. 32. Una libélula vive aproximadamente 24 horas. 33. La memoria de un pez dorado es de tres segundos. 34. En Inglaterra, al Presidente de la Cámara no se le permite hablar. 35. El nombre de Oz, usado en "El mago de Oz" se le ocurrió a su autor Frank Baum cuando en su despacho contempló el segundo tomo de su enciclopedia, A-N y O-Z. 36. Una pelota de golf oficial tiene 336 agujeritos. 37. La manera mas fácil de diferenciar un animal carnívoro de un herbívoro es por sus ojos. Los carnívoros (perros, leones) los tienen al frente de la cabeza, lo que les facilita localizar su alimento. Los herbívoros los tienen a los lados de la misma (aves, conejos), lo que les ayuda a detectar la aproximación de un posible depredador. 38. Una persona parpadea aproximadamente 25 mil veces por semana. 39. El material más resistente creado por la naturaleza es la tela de Araña. 40. 15% de las mujeres americanas se mandan flores a si mismas en el día de los enamorados. 41. La hija de Shakespeare era analfabeta. 42. Einstein nunca fue un buen alumno, y ni siquiera hablaba bien a los 9 años, sus padres creían que era retrasado mental. 43. El Nombre completo de pato Donald es: Donald Fauntleroy Duck 44. En 1987, las líneas aéreas gringas se ahorraron 40,000 $ con sólo eliminar una aceituna de cada ensalada. 45. Una jirafa se puede limpiar sus propias orejas con la lengua. 46. Millones de árboles son plantados accidentalmente por ardillas que entierran sus nueces y no recuerdan dónde las escondieron. 47. Comerse una manzana es más eficaz que tomarse un café para mantenerse despierto. 48. Las hormigas se desperezan por la mañana cuando se despiertan. 49. Los cepillos de dientes de color azul son más usados que los de color rojo. 50. El órgano del hombre que puede crecer 20 veces su tamaño original es la retina 51. Las ballenas duermen la mitad de su cerebro para no undirse. 52. Sólo hay un alimento que no se deteriora: La miel 53. Los delfines duermen con un ojo abierto. 54. Un tercio de todo el helado vendido en el mundo, es de vainilla. 55. Las uñas de las manos crecen aproximadamente cuatro veces más que las del pie. 56. El ojo de un avestruz es mayor que su cerebro. 57. Los diestros viven, en promedio, nueve años más que los zurdos. 58. El "cuac" de un pato, no produce eco. Y nadie sabe porqué. 59. El músculo más potente del cuerpo humano es la lengua. 60. Es imposible estornudar con los ojos abiertos. 61. La "jota" es la única letra que no aparece en la tabla periódica de los elementos químicos. 62. Una sóla gota de aceite de motor hace que 25 litros de agua dejen de ser apropiados para el consumo humano. 63. Los chimpancés y los delfines son los únicos animales, junto con el hombre, capaces de reconocerse frente al espejo. 64. Reir durante el día, hace que se duerma mejor por la noche. Saludos!!

30
19
P
Programas para compilar en pascal
Ciencia EducacionporAnónimo6/27/2011

Acá les voy a dejar el código de algunos de los programas que piden en el primer año de la carrera de analista en computación Programa que dado dos numeros ingresado por el usuario, devuelve el maximo comun divisor y el minimo comun multiplo entre ellos(el método utilizado para resolver el problema, es el famoso Algoritmo de Euclídes) : {comienzo del código} program ejercicio; uses crt; var num1,num2:integer;{variables que almacenan los valores ingresados por el usuario} mcd,mcm:integer;{variables que almacenan los resultados devueltos por las funciones} procedure LeerDatos( var x,y:integer);{ accion que lee los datos ingresados por el usuario e intercambia sus valores en caso de que el primero sea menor que el segundo} var aux:integer; begin writeln(' Ingrese el primer numero'); readln(x); writeln(' Ingrese el segundo numero'); readln(y); if y>x then begin aux:= y; y:= x; x:= aux; end; end; function CalcMax( x,y:integer):integer;{funcion que calcula el maximo comun divisor} var aux:integer; result:integer; begin if (x mod y=0)then begin CalcMax:= y; end else begin if (y = 0) then begin result:= x end else begin while x > 0 do begin aux:= x; x:= y mod x; y:= aux; result:= y end; CalcMax:= result; end; end; end; function CalcMin( x,y:integer):integer; {funcion que calcula el minimo comun multiplo} begin CalcMin:= (x*y) div (CalcMax(x,y)); end; begin{cuerpo principal del algoritmo(invocacion de la accion y de las funciones, devolucion por pantalla de los resultados)} LeerDatos(num1,num2); if (num1>0) and (num2>0) then begin mcd:= CalcMax(num1,num2); writeln( 'El maximo comun divisor entre los dos numeros es: ',mcd); if (CalcMin(num1,num2) < 0) then {en el caso de que la cuenta supere el numero 32000, se sale de rango y devuelve un valor negativo} begin writeln('El valor del minimo comun multipo esta fuera de rango, no se puede calcular!'); end else begin mcm:=CalcMin(num1,num2); writeln( 'El minimo comun multiplo entre los dos numeros es: ',mcm); end; end else begin writeln('Los datos ingresados no son validos, no se puede realizar la cuenta!'); end; readkey; clrscr; end. {fin del código} Programa que carga una matriz de forma aleatoria(simulando ser la cantidad diaria de precipitaciones a lo largo de una año no bisiesto) y calcula los promedios de las precipitaciones diarias, mensuales, totales, mayor y menor subsecuencias de precipitaciones: {inicio del código} program ejercicio17; uses crt; type TArreglos= array [1..365] of integer; {tipo enumerado para facilitar el uso de las variables de tipo arreglo unidimensional} type TMatriz= array [1..12,1..31] of integer; {tipo enumerado para facilitar el uso de las variables de tipo arreglo bidimensional} const MaxMilimetros=180; {constante utilizada en la funcion randomReal para cargar la matriz aleatoriamente con valores de 0 hasta 100} var lluvias: TMatriz; {cargar los valores de las presipitaciones, para luego pasarlo a arreglo} diaMaxPrecipitacion,diaMinPrecipitacion:integer; {variables para almacenar el dia con mas y menos precipitaciones} mesMaxPrecipitacion,mesMinPrecipitacion:integer; {variables para almacenar el mes con mas y menos precipitaciones} maxPrecipitacion,minPrecipitacion:integer; {variables para almacenar la maxima y minima precipitacion en todo el año} cambio:TArreglos; {variable que almacena los valores de la matriz cuando es pasada a un arreglo} promMens:TArreglos; {variable que almacena el promedio por mes de las precipitaciones} numUsuario:integer; {variable que almacena el valor ingresado por el usuario para calcular la max y min subsecuencia de precipitaciones a lo largo del año} res,res1,res2,res3:integer; {variables que almacenan el principio y fin de la subcecuencia maxima y minima de precipitaciones} function RandomReal(hasta:integer):integer; {funcion que asigna valores aleatorios cuando es invocada en la accion cargar} var x:integer; begin x:=Random (hasta)-70; if x<0 then begin x:=0; end; RandomReal:=x; end; function DiaMes(m:integer):integer; { funcion que dada un mes, retorna la cantidad de dias que contiene el mes, sin tener en cuenta bisiesto} begin case m of 1,3,5,7,8,10,12: DiaMes:=31; 2: DiaMes:=28; 4,6,9,11: DiaMes:=30; end; end; procedure Cargar(var a:TMatriz; hastaDonde:integer);{accion que carga la matriz de forma aleatoria} var i,j,n:integer; begin for i:= 1 to 12 do begin n:=DiaMes(i); for j:= 1 to n do begin a[i,j]:= RandomReal(hastaDonde); end; end; end; function Cambiar(a:TMatriz):TArreglos; { funcion que dada una matriz, la convierte en arreglo } var j,i:integer; k:integer; res:TArreglos; begin k:=0; for i := 1 to 12 do begin for j := 1 to 31 do begin if (a[i,j] > -1) then begin res:=a[i,j]; end; k:=k+1; end; end; Cambiar:=res; end; function PromedioDia( a:TArreglos):real; {funciones que calcula el promedio por dia} var i,acum:integer; begin acum:=0; for i:=1 to 365 do begin acum:= acum + a; end; PromedioDia:= (acum div 365); end; procedure PromedioMens(a:TMatriz; var b:TArreglos); {acciones que calcula el promedio mensual} var i,j,k,acum:integer; begin k:=0; for i:=1 to 12 do begin acum:=0; for j:=1 to 31 do begin acum:=acum + a[i,j]; end; k:= k+1; case i of 1,3,5,7,8,10,12:b:=acum div 31; 2:b:=acum div 28; 4,6,9,11:b:=acum div 30; end; end; end; procedure PrecipitacionMax( a:TMatriz; var max,dia,mes:integer); {accion que calcula maxima precipitacion anual} var i,j:integer; begin max:=0; for i:=1 to 12 do begin for j:=1 to 31 do begin if (a[i,j] >= max) then begin max:= a[i,j]; dia:=j; mes:=i; end; end; end; end; procedure PrecipitacionMin( a:TMatriz; var min,dia,mes:integer); {accion que calcula la minima precipitacion anual} var i,j:integer; begin min:=MaxMilimetros; for i:=1 to 12 do begin for j:=1 to 31 do begin if (a[i,j] < min) and (a[i,j] <> 0) then begin min:= a[i,j]; dia:=j; mes:=i; end; end; end; end; function Sumatoria(a:TArreglos; desde,hasta:integer):integer; {funcion que calcula la sumatoria de los elementos que se encuentran en el arreglo} var i,acum:integer; begin acum:=0; for i:= desde to hasta do begin acum:= acum + a; end; Sumatoria:= acum; end; procedure SubSecuenciaMax( a:TArreglos; dia:integer; var res,res1:integer); {accion que calcula la maxima subsecuencia de precipitaciones} var resul,i,max:integer; begin max:=0; for i:= 1 to 365 - dia do begin resul:= Sumatoria(a,i,i+dia); if (resul > max) then begin max:= resul; res:=i; res1:=(i+dia)-1; end; end; end; procedure SubSecuenciaMin( a:TArreglos; dia:integer; var res,res1:integer); {accion que calcula la minima subsecuencia de precipitaciones} var resul,i,min:integer; begin min:=MaxMilimetros; for i:= 1 to 365 - dia do begin resul:= Sumatoria(a,i,(i+dia)-1); if (resul < min) and (resul > 0) then begin min:= resul; res:=i; res1:=(i+dia)-1; end; end; end; procedure Mostrar (a:TArreglos); var i:integer; begin for i:=1 to 12 do begin writeln('[',i,'] ', a,' % '); end; end; procedure Mostrar1 (a:TMatriz); var i,j:integer; begin for i:=1 to 12 do begin for j:=1 to 31 do begin gotoxy(j*4,i+22); write(a[i,j]); end; end; end; begin {cuerpo principal del algoritmo} clrscr; Cargar(lluvias,MaxMilimetros); cambio:= Cambiar(lluvias); Writeln( ' El promedio de lluvias por dia fue: ',PromedioDia(cambio):2:0,'%'); PromedioMens(lluvias,promMens); Writeln(' El promedio mensual de lluvias fue: '); Mostrar(cambio); PrecipitacionMax(lluvias,maxPrecipitacion,diaMaxPrecipitacion,mesMaxPrecipitacion); Writeln( ' La maxima precipitacion del año fue: ',maxPrecipitacion, ' en el dia: ',diaMaxPrecipitacion,' y en el mes: ' ',mesMaxPrecipitacion); PrecipitacionMin(lluvias,minPrecipitacion,diaMinPrecipitacion,mesMinPrecipitacion); Writeln(' La minima precipitacion del año fue: ',minPrecipitacion,' en el dia: ',diaMinPrecipitacion,' y en el mes: ',mesMinPrecipitacion); Writeln(' Ingrese un numero entero para saber la maxima y minima subsecuencia de precipitaciones:'); readln(numUsuario); if numUsuario<= 0 then begin textcolor(lightred); Writeln(' ERROR: No se puede realizar el calculo para el numero ingresado'); end else begin SubSecuenciaMax(cambio,numUsuario,res,res1); SubSecuenciaMin(cambio,numUsuario,res2,res3); Writeln(' El periodo del año de ',numUsuario,' dias con mas precipitaciones fue desde el dia: ',res,' hasta el dia ',res1); Writeln(' El periodo del año de ',numUsuario,' dias con menos precipitaciones fue desde el dia: ',res2,' hasta el dia ',res3); end; textcolor(white); Writeln(' La matriz generada es la siguiente: '); Mostrar1(lluvias); Write(' '); textcolor(90); Writeln(' Presione una tecla para salir'); readkey; textcolor(white); clrscr; end. {fin del código} Programa que cuenta la cantidad de vocales cargadas en un arreglos unidimensinal: {inicio del código} program vocaless; uses crt; const max=3; var vocales:array[0..3] of char; vocal:char; res:char; indice:integer; function EsVocal(letra:char):boolean; begin if (letra='a') or (letra='e') or (letra='i') or (letra='o') or (letra='u') then begin EsVocal:=true; end else EsVocal:=false; end; begin{cuerpo principal del algoritmo} indice:=0; repeat writeln(' Ingrese una letra'); readln(vocal); if EsVocal(vocal)=true then begin indice:=indice+1; vocales:=vocal; end; writeln('¿Desea continuar? (s/n)'); readln(res) until (res='n') or (res='N') or (indice=max); writeln(' La cantidad de vocales ingresadas es: ',indice); readkey; clrscr; end. {fin del código} Por ahora son estos tres que creo que son los ejercicios más pedidos para ser entregados a manera de trabajo práctico Nota: Recuerden indentar bien el código a la hora de copiarlo y pegarlo en sus respectivos editores o compiladores! Si quieren que los textos que se imprimen por pantalla con algun color, despues de "program..." ponen *uses crt; y antes de cada "writeln" ponen *textcolor(el color que quieran,ej: red,blue). Aclaracion: se escribe sin * Espero que les sea de ayuda en caso de que la necesiten! Saludos!

50
0
Dibujos muy buenos !
Dibujos muy buenos !
ArteporAnónimo11/2/2010

Hola gente, aca les dejo un par de dibujos hechos 100% a mano por un amigo!! Algunos dibujos son ideas de él, otros son personajes de peliculas o de videojuegos.. Pero son todos propios, NINGUNO ES COPIA DE NADA NI DE NADIE! Prince of Persia Leonidas Leonidas Prince of Persia Prince of Persia Prince of Persia Se daran cuenta que algunos son un poco mas viejos que otros, se nota el progreso en los dibujos , aunque no los ordene cronologicamente! Cabe destacar que son hechos unicamente con lapices y lapiceras! Artista: Pablo Castillo, Rio Cuarto - Córdoba - Argentina. Espero que les guste.. DEJEN SU COMENTARIO O ALGUN PUNTITO SI LES GUSTO Saludos!

0
0
C
Calculadora en Assembler
Ciencia EducacionporAnónimo11/3/2013

Hola gente, hace mucho que no subo nada y hoy les traigo una CALCULADORA hecha en lenguaje ENSAMBLADOR ó ASSEMBLER !! IMPORTANTE!!!: El compilador utilizado para compilar este código es NASM y linkea con librerias de C con el linkeador GCC Aclaro esto porque hay varias versiones de compiladores y linkeadores para este lenguaje, no todos tienen las mismas sentecias, por esto es que este código corre únicamente con ese compilador y con ese linkeador!!! Primero el Código en Ensablador, el cual debe ser copiado y pegado en sus respectivos editores y luego guardado con extención " .asm" : %include "asm_io.inc" ; Organización del Procesador - Año 2013 - Proyecto Final segment .text global calculadora_enteros global calculadora_flotantes extern division_entera ;-------------------------------- Subrutina Principal Para Enteros -------------------------------- calculadora_enteros: push EBP ;Empuja el ebp al stack mov EBP, ESP ;Pone el ebp apuntando al esp mov ECX, [EBP+16] ;Mueve a ecx el valor de la operación a realizar para lugar saltar a las correspondientes subrutinas de cálculo cmp ECX, 0 ;Compara el valor para saber a que subrutina de calculo saltar je Sumar_e ;Salta por igual a la etiqueta que Suma cmp ECX, 1 ;Compara el valor para saber a que subrutina de calculo saltar je Restar_e ;Salta por igual a la etiqueta que Resta cmp ECX, 2 ;Compara el valor para saber a que subrutina de calculo saltar je Multiplicar_e ;Salta por igual a la etiqueta que Multiplica cmp ECX, 3 ;Compara el valor para saber a que subrutina de calculo saltar je Dividir_e ;Salta por igual a la etiqueta que Divide Sumar_e: mov EAX, [EBP+8] ;Mueve a eax el primer operando add EAX, [EBP+12] ;Le suma a eax el valor del segundo operando jmp Next_e ;Salta al final de la subrutina CALCULADORA_ENTEROS Restar_e: mov EAX, [EBP+8] ;Mueve a eax el primer operando sub EAX, [EBP+12] ;Le resta a eax el valor del segundo operando jmp Next_e ;Salta al final de la subrutina CALCULADORA_ENTEROS Multiplicar_e: push dword [EBP+12] ;Empuja el primer operando push dword [EBP+8] ;Empuja el segundo operando call Multiplica_e ;Llama a la subrutina de NASM que realiza la MULTIPLICACIÓN add ESP, 8 ;Desapila los parámetros jmp Next_e ;Salta al final de la subrutina CALCULADORA_ENTEROS Dividir_e: push dword [EBP+12] ;Empuja el valor del segundo operando push dword [EBP+8] ;Empuja el valor del primer operando call division_entera ;Llamada a subrutina de C que divide enteros add ESP, 8 ;Desapila los parámetros jmp Next_e ;Salta al final de la subrutina CALCULADORA_ENTEROS Next_e: pop EBP ;Desapila el ebp ret ;Retorna a la dirección apilada por el llamador ;............................Subrutina que realiza la Multiplicación de Enteros ............................ Multiplica_e: push EBP ;Empuja el ebp al stack mov EBP, ESP ;Pone el ebp apuntando al esp mov dword EAX, [ebp+12] ;Mueve a ax el multiplicador mov dword EBX, [ebp+8] ;Mueve a bx el multiplicando mov dword ECX, [ebp+12] ;Mueve a cx el multiplicador mov dword EDX, [ebp+8] ;Mueve a dx el multiplicando cmp EAX, 0 ;Compara ax con 0 para saber si es negativo jl Complemento_ax ;Si es menor que 0 salta a la etiqueta que lo convierte en positivo Vuelve: cmp EBX, 0 ;Compara bx con 0 para saber si es negativo jl Complemento_bx ;Si es menor que 0 salta a la etiqueta que lo convierte en positivo cmp EBX, 0 ;Compara bx con 0 para saber si es positivo jge Seguir ;Si es mayot que 0 salta a la etiqueta que continua con la ejecucion del programa Complemento_ax: not EAX ;Niega todos los bits del registro add EAX, 1 jmp Vuelve ;Salta a la etiqueta vuelve Complemento_bx: not EBX ;Niega todos los bits del registro add EBX, 1 jmp Seguir ;Salta a la etiqueta seguir Seguir: mov ESI, 0 ;Inicializa edi con 0 para usarlo como indice While_: cmp ESI, 16 ;Compara el valor del indice con 16(la cantidad de bits a shiftear) je end_ ;Salta por igual al final del ciclo shl EBX, 1 ;Shiftea a la izquierda ebx una posición inc ESI ;Incrementa el indice jmp While_ ;Salta al principio del ciclo end_: mov ESI, 0 ;Incializa edi con 0 para usarlo como indice While_loop: ;Comienzo del ciclo (*) mov EDI, EAX ;Mueva a edi el valor del segundo operando cmp ESI, 16 ;Compara el indice con la cantidad de cicladas a realizar je end_while ;Salta por igual al final del ciclo shr EAX, 1 ;Shiftea a la derecha eax una posición jc Restaurar ;Salta por Carry a la etiqueta Restaurar inc ESI ;Incrementa el registro usado como indice para el ciclo jmp While_loop ;Salta al principio del ciclo Restaurar: mov EAX, EDI ;Mueve a ax el valor contenido en edi add EAX, EBX ;Le suma a el multiplicador el multiplicando shr EAX, 1 ;Shiftea a la derecha eax una posición inc ESI ;Incrementa el registro usado como indice para el ciclo jmp While_loop ;Salta al principio del ciclo end_while: ;Fin del ciclo (*) mov ESI, 0 ;Inicializa esi con 0 para utilizarlo como contador cmp ECX, 0 ;Compara la copia del valor original del segundo operando con 0 jl Casos ;Salta por menor a la etiqueta Casos cmp EDX, 0 ;Compara la copia del valor original del primer operando con 0 jl Casos_1 ;Salta por menor a la etiqueta casos_1 jmp Fin ;Salta al final de la subrutina MULTIPLICA_E en caso de no saltar por menor Casos: inc ESI ;Incrementa el contador esi cmp EDX, 0 ;Compara el valor del primer operando con 0 jnl Complemento ;Salto por NO menor a la etiqueta Complemento inc ESI ;Incrementa el contador esi en caso de no haber saltado jmp Complemento ;Salta a la etiqueta Complemento Casos_1: inc ESI ;Incrementa el contador esi jmp Complemento ;Salta a la etiqueta Complemento Complemento: cmp ESI, 1 ;Compara el valor del contador con 1 jne Fin ;Salta por distinto al final de la Subrutina MULTIPLICA_E(no debe modificar los signos) not EAX ;En caso de no haber saltado niega el valor del resultado add EAX, 1 ;Le suma 1 al valor negado para completar el Complemento a la Base jmp Fin ;Salta al final de la Subrutina MULTIPLICA_E Fin: pop EBP ;Desapila el ebp ret ;Retorna a la dirección apilada por el llamador ;--------------------------------- Subrutina Principal Para Flotantes -------------------------------------- calculadora_flotantes: push EBP ;Empuja el ebp al stack mov EBP, ESP ;Pone el ebp apuntando al esp mov ECX, [EBP+16] ;Mueve a ecx el valor de la operación a realizar para lugar saltar a las correspondientes subrutinas de cálculo cmp ECX, 0 ;Compara el valor para saber a que subrutina de calculo saltar je Sumar_f ;Salta por igual a la etiqueta que Suma cmp ECX, 1 ;Compara el valor para saber a que subrutina de calculo saltar je Restar_f ;Salta por igual a la etiqueta que Resta cmp ECX, 2 ;Compara el valor para saber a que subrutina de calculo saltar je Multiplicar_f ;Salta por igual a la etiqueta que Multiplica cmp ECX, 3 ;Compara el valor para saber a que subrutina de calculo saltar je Dividir_f ;Salta por igual a la etiqueta que Divide Sumar_f: fld dword [EBP+8] ;Pone el primer operando en el tope de la pila de flotantes (ST0) fadd dword [EBP+12] ;Le suma al tope de la pila el segundo operando jmp next_f ;Salta al final de la subrutina CALCULADORA_FLOTANTES Restar_f: fld dword [EBP+8] ;Pone el primer operando en el tope de la pila de flotantes (ST0) fsub dword [EBP+12] ;Le resta al tope de la pila el segundo operando jmp next_f ;Salta al final de la subrutina CALCULADORA_FLOTANTES Multiplicar_f: fld dword [EBP+8] ;Pone el primer operando en el tope de la pila de flotantes (ST0) fmul dword [EBP+12] ;Multiplica el valor del tope de la pila el segundo operando jmp next_f ;Salta al final de la subrutina CALCULADORA_FLOTANTES Dividir_f: fld dword [EBP+8] ;Pone el primer operando en el tope de la pila de flotantes (ST0) fdiv dword [EBP+12] ;Divide el valor del tope de la pila por el segundo operando jmp next_f ;Salta al final de la subrutina CALCULADORA_FLOTANTES next_f: pop EBP ;Desapila el ebp ret ;Retorna a la dirección apilada por el llamador ------------------------------------------------------------------------------------------------------------------------- Por último el código en C " libreria utilizada por el código de Ensamblador" , el cual debe ser copiado, luego pegado en sus respectivos editores y guardado con extensión " .c " : #include <stdio.h> #include <stdlib.h> #define ENTEROS 0 #define FLOTANTES 1 int calculadora_enteros(int op1, int op2, int operacion); float calculadora_flotantes(float op1, float op2, int operacion); /* * Programa principal: computan las operaciones aritméticas entre dos operandos enteros o flotantes. */ int main(int argc, char * argv[]){ int operacion; int tipoOperandos; char op2[100]; char op1[100]; int res_entero; float res_flotante; printf("Ingrese el tipo de los operandos [0->Enteros, 1->Flotantes]: n"; scanf("%d",&tipoOperandos); //Lectura de operandos por entrada estándar printf("Ingrese el primer operando: n"; scanf("%s",op1); printf("Ingrese el segundo operando: n"; scanf("%s",op2); printf("Ingrese la operación que desea realizar [ 0->suma ,1->resta ,2->multiplicación ,3->división]: n"; scanf("%d",&operacion); switch(tipoOperandos){ case ENTEROS:{ res_entero = calculadora_enteros(atoi(op1), atoi(op2), operacion); printf("Resultado = %dn",res_entero); break; } case FLOTANTES:{ res_flotante = calculadora_flotantes(atof(op1), atof(op2), operacion); printf("Resultado = %fn",res_flotante); break; } default: printf("Operación no válida.n"; } } /* * Rutina que obtiene el cociente de la división entera entre a y b. * Esta rutina debe ser invocada desde la rutina calculadora_enteros (programada en assembler), * cuando el operador es división (3). */ int division_entera(int a, int b) { return a / b; } Dejo los comandos para correr este programa desde consola en linux-ubuntu: nasm -f elf Calculadora.asm ------ Compila el código assembler gcc -o Calculadora calcular.c Calculadora.o asm_io.o -------- linkea el archivo objeto generado por el compilador con las librerias "calcular" y "asm_inc" de C ./Calculadora ------------- Corre el programa por consola NOTA: Los archivos ".asm" y ".c" deben estar en la misma ruta de destino para poder linkearlos entre ellos!!! No es agradable a la vista el post, pero creo que es un buen aporte! es un proyecto de la materia Organizacion del Procesador de 2do año de la carrera de Analista en Computacion de la Universidad Nacional de Rio Cuarto, hecho por mi y un compañero! Recuerden Indentar correctamente, Saludos!!! El que tenga problemas al copiar las sentencias por los simbolos, etc, si me manda un mensaje privado le envio por email el archivo hecho por mi para no tener que hacer un Copy-Paste desde aqui al editor de texto (ya que normalmente suele generar problemas)

25
23
Actualizar windows xp pirata!!! muy simple.
Actualizar windows xp pirata!!! muy simple.
Hazlo Tu MismoporAnónimo10/15/2010

holaa este es mi primer post aca les dejo la info.. 1ro: copien y peguen en un documento de texto lo siguiente: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWPAEvents] "OOBETimer"=hex:ff,d5,71,d6,8b,6a,8d,6f,d5,33,93,fd "LastWPAEventLogged"=hex:d5,07,05,00,06,00,07,00,0f,00,38,00,24,00,fd,02 [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersion] "CurrentBuild"="1.511.1 () (Obsolete data - do not use)" "InstallDate"=dword:427cdd95 "ProductId"="69831-640-1780577-45389" "DigitalProductId"=hex:a4,00,00,00,03,00,00,00,36,39,38,33,31,2d,36,34,30,2d, 31,37,38,30,35,37,37,2d,34,35,33,38,39,00,5a,00,00,00,41,32,32,2d,30,30,30, 30,31,00,00,00,00,00,00,00,00,0d,04,89,b2,15,1b,c4,ee,62,4f,e6,64,6f,01,00, 00,00,00,00,27,ed,85,43,a2,20,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00, 00,00,00,00,00,00,00,00,00,00,00,31,34,35,30,34,00,00,00,00,00,00,00,ce,0e, 00,00,12,42,15,a0,00,08,00,00,87,01,00,00,00,00,00,00,00,00,00,00,00,00,00, 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,94,a2,b3,ac "LicenseInfo"=hex:9e,bf,09,d0,3a,76,a5,27,bb,f2,da,88,58,ce,58,e9,05,6b,0b,82, c3,74,ab,42,0d,fb,ee,c3,ea,57,d0,9d,67,a5,3d,6e,42,0d,60,c0,1a,70,24,46,16, 0a,0a,ce,0d,b8,27,4a,46,53,f3,17 2do: una vez pegado ponen; "Guardar como" ( lo guardan en escritorio para qe les sea mas rapido encontrarlo) y le ponen de "nombre" al archivo lo siguiente: XXX.REG 3ro: cuando se guarde se les van a guardar dos archivos , uno en formato doc de texto y otro en formato .REG (donde los hayan guardados porq qedan siempre juntos) .. le dan doble click al archivo .REG y ponen aceptar a TODO.. les va a decir qe se guardaron los cambios o algo asi no me acuerdo Por ultimo entran aca : http://www.microsoft.com/genuine/validate/ValidateNow.aspx?displaylang=es y siguen los tres simples pasos indicados por microsoft.. espero qe les guste. saludos.

0
0
Que pasa con los alimentos vencidos?
Que pasa con los alimentos vencidos?
Salud BienestarporAnónimo10/17/2010

Los alimentos como leche, pure de tomates, etc. que vienen envasados en tetra brick, (mayormente) como todos sabemos tienen una fecha de vencimiento! Cuando este tipo de alimentos se vencen o tienen algun tipo de problema por el cual no pueden ser consumidos, son enviados, por quien los posee en ese momento, nuevamente a la fabrica o envasadora de donde vinieron para realisarles nuevamente todo los procesos que se le fueron realizados para que puedan ser consumidos, para que duren un tiempo mas que si estubiesen frescos, etc. estos procesos realizados se indican ( no en todos los casos) en la parte inferior del envase : este tipo de procesos ( segun los fabricantes ) pueden ser realizados hasta 5 veces (inclusibe) En la imagen, donde estan re-marcados los numeros, se pueden ver la cantidad de veces que se le fue realizado dicho proceso, el numero faltante del 1 al 5 es la cantidad de veces!!!! veanlo ustedes mismos en los alimentos que consumen.. saludos

0
0
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.