Hola, soy totalmente nuevo en este foro; no soy programador profesional sino solo un aficionado que se quedo en el siglo pasado (inicie con basic y sigo pensando en basic).
Hace bastantes años desarrolle un programa en basic que hacia exactamente lo que esta pidiendo "chinho"; podia por ejemplo multiplicar un numero de 1000 (mil) cifras por otro de otras tantas. En aquella epoca basic me limitaba a “solamente” numeros de 32000 (treinta y dos mil) cifras.
Desarrolle la suma la resta, la multiplicacion pero quede estancado en la division.
Y esto lo hacia sin mayor demanda de memoria y en tiempo real.
Cuando lo presente a algunas personas que estaban en la industria de la programacion la sola respuesta que obtuve (ademas de un ligero meneo de cabeza y una seña con el dedo apuntando a la sien ) fue: " .... Y para
Que diablos sirve ....?"
Ademas , para comprobar los resultados en grandes cifras haria falta un mainframe.
Esto lo hacia en un viejo ( para aquella epoca no tanto ) “XT” CON 64 kb en RAM con sistema operativo DOS no recuerdo que versión y creo que gwbasic (si no era basica) como lenguaje de programación.
De casualidad entre a este foro de assembler porque he querido aprender algo de asm y he venido pensando que seria una buena cosa portar varios algoritmos que dearrolle en aquella epoca ( sin ningun uso practico real) del antiguo basic a assembler como una forma de entrenamiento y aprendizaje.
Y he aqui que me encuentro con esta solicitud de "chinho" ( Te pido, chinho, por favor que aclares que no somos la misma persona en busca de publicidad ).
Esto me ha hecho reconstruir el algoritmo ( de memoria pues no tengo ningun archivo de aquella epoca) y pasarlo a VBSCRIPT que es lo mas parecido al antiguo basic que pueda uno encontrar en estos tiempos.
El script GOGOL.vbs que anexo es un ejemplo de la operación de multiplicación , de el se puede deducir como se haria la suma y la resta.
La division -como ya dije - nunca la desarrolle totalmente aunque tengo varias ideas acerca de cómo podria hacerse.
Ejecutese en una ventana de consola (cmd) invocándolo con “ cscript.exe gogol.vbs ”
El script solo alcanza a manejar numeros (multiplicando y multiplicador) de hasta 254 cifras debido a las limitaciones del tamaño de los strings que se pueden introducir por via de consola ( orden “wscript.stdin.readline”) , Si se quieren manejar numeros mayores podria hacerse - por ejemplo - que el script los leyera de un archivo.
Si en assembler se puede hacer cualquier cosa que se pueda hacer con un lenguaje de alto nivel, entonces este algoritmo es portable a assembler.
Y en assembler no habria necesidad de declarar matrices bastaria con reservar determinada cantidad de memoria teniendo en cuenta que con este algoritmo cada cifra ( 0 – 9 ) ocuparia un byte por lo tanto un numero de 1000 cifras
(multiplicando ) no utilizaria mas que un kb, el multiplicador de 1000 cifras otro kb y el resultado algo mas de 2 kb: en total 4 kb.
Si quiere hacerlo con tamaño de megas tambien se puede. (Creo ....)
El script que anexo tiene varias fallas como por ejemplo un molesto punto al final que no logro quitar. Lo reconstrui en unas pocas horas despues de leer el post de chinho.
Quien haya conocido el antiguo basic vera claramente la programacion lineal ( no estructurada como se estila ahora).
Se que los verdaderos profesionales en esta materia hallaran la solucion “trivial” o falta de elegancia ; por eso cuando lo pongo a disposición del publico, tengo perfecta conciencia de que actuo como si abandonara a un hijo paralitico en la selva; solo pido que si alguien le encuentra un uso practico no deje de recordar donde lo hallo y mantenga el nombre que le he puesto: GOGOL.
TOMAS XORDAN
XOR AND