|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - deldar
1
« en: Jueves 30 de Diciembre de 2004, 12:23 »
Es un problema muuuuy extraño. Seguramente lo que falla sea el propio nasm. En cualquier caso si lo que estas haciendo es una division cuyo divisor es potencia de dos(2,4,8,16,32...) puedes hacer lo mismo desplazando a la derecha el registro ejm:
56 : 32 32
00111000 : 2 e 5 ; o sea 5 desplazamientos a la derecha
resultado 00000001 resto es lo que se ha desbordado 00011000=24
Un Saludo.
2
« en: Miércoles 22 de Diciembre de 2004, 10:31 »
Si estas accediendo a memoria de video en modo texto (80x25) para pintar en la pantalla lo normal es que lo hagas con la direccion base 0B800 h 80 x 25 =2000 celdas y do bytes por posición , por fila tendremos 160 bytes. Para pintar accedenos con la dirección base y un desplazamiento que nos indica el byte al que accedemos, bien, pues ese desplazamiento es la clave, el desplazamiento irá de 0 a 4000. si dividimos el desplazamiento entre 160 ( 80x2 bytes ) nos dará como cociente el número de fila - 1 y en el resto el número de columna x 2. Ejemplo: fila 2 columna 25 = 210 210 : 160 = 1 (sumamos 1 y tendremos las filas) resto = 50 (dividimos entre 2 y tenemos las colunmas, 25) Con esto podemos situarnos en todo momento en pantalla. Si te da 0 o 159 la cuestion no es lo que tengas que hacer sino lo que no tienes que hacer. si te da cualquier cosa te mueves, si te da 0 o 159 no te mueves, vamos que te saltas el proceso de movimiento izquierda si es 0 o derecha si es 159. Un ejemplo de código te lo pondré en cuanto tenga ocasión. un saludo y feliz navidad
3
« en: Lunes 20 de Diciembre de 2004, 19:33 »
Depende de como estes pintando las palas, si lo haces en base a la memoria de video en modo texto obserba que hay 160 bytes por linea 0..159 por lo tanto si al dividir la posicion del comienzo de tu pala entre 160 el resto será 0 y estarás en el borde izquierda , si el resto es 159 estás en el estremo derecha.
Si estas usando otra tecnica indicame cual. lo del teclado ecesitaré conocer cueal es la int que usas.
Un saludo.
4
« en: Jueves 9 de Diciembre de 2004, 10:07 »
Despues de leer el código he observado algo extraño: MOV BX,0B800h ;metemos en BX la posición donde se sitúa MOV ES,BX ;empleamos el segmento extra MOV BX,150 ;desplazamiento el modo texto ADD CL,48 ;carácter a mostrar por pantalla ADD CL,AL MOV ES:[BX],CL
;MOSTRAMOS SEGUNDO DIGITO DE LOS MINUTOS MOV BX,0B800h ;metemos en BX la posición donde se sitúa MOV ES,BX ;empleamos el segmento extra MOV BX,152 ;desplazamiento el modo texto ADD CL,48 ;carácter a mostrar por pantalla ADD CL,AH MOV ES:[BX],CL CL mantiene valores de las operaciones anteriores. ¿Que tal si lo resuelves igual que con las horas?. Me explico: En lugar de ADD CL,48 utiliza MOV CL,48 Con este cambio queda: MOV BX,0B800h ;metemos en BX la posición donde se sitúa MOV ES,BX ;empleamos el segmento extra MOV BX,150 ;desplazamiento el modo texto MOV CL,48 ;*************************** Cambio ADD CL,AL MOV ES:[BX],CL
;MOSTRAMOS SEGUNDO DIGITO DE LOS MINUTOS MOV BX,0B800h ;metemos en BX la posición donde se sitúa MOV ES,BX ;empleamos el segmento extra MOV BX,152 ;desplazamiento el modo texto MOV CL,48 ;*************************** Cambio ADD CL,AH MOV ES:[BX],CL
6
« en: Sábado 20 de Noviembre de 2004, 14:04 »
Definitivamente Firefox ,esta bien esto de google sin barra de google pestañas en lugar de ventanas....
7
« en: Sábado 20 de Noviembre de 2004, 13:19 »
Primero , entiendo que con arreglo te refieres a vector o array ¿correcto? . Bien... pues con la suposición anterior te cuento : Primero hay que saber que al ser el tamaño de cada posición de caracter esto implica que cada posicion es un byte el desplazaminento siempre comienza en cero. En Masm creo recordar que se podía hacer igual que en un lenguaje de alto nivel: suponiendo el vecto "V" de "n" posiciones se podía plantear como: V[0], V[1]... o incluso utilizando un registro en lugar de los números: V[si] Hay otra forma de hacerlo, que es tomando la dirección donde comienza tu vector, y marcando el desplazamiento en un registro, Supongamos definido el vector "V" de "n" posiciones: lea si,V ; la primera posición del vector estará en el segmento ds desplazamiento si mov ax, byte ptr ds:[si] ; pasamos la primera posición del vector a "ax" inc si ;apuntamos a la segunda posición del vector mov byte ptr ds:[si],cx ; pasamos "cx" a la segunda posición del vector lea si,V ; esto para volver a la primera posición del vector en cualquier momento Un saludo.
8
« en: Sábado 20 de Noviembre de 2004, 12:35 »
Por Favor pide ayuda No Código
Saludos
9
« en: Sábado 20 de Noviembre de 2004, 12:33 »
Por lo que cuentan en el link si lo es (lo que es yo, no lo he visto nunca) pero sólo funcionaría con fasm, ¿has comprobado si te genera un .exe o un .com?. De lenguaje ensamblador hay muchos compiladores y aún mas simuladores e interpretes. En cuanto a las diferencias entre los distintos compiladores de ensamblador pues hay para todos los gustos: Arquitecturas que soportan, Formato de las instrucciones, Si amplian el conjunto de instrucciones hardware o no (y de que manera lo hacen). Estos suelen ser los mas importantes: sobre nasm: NASMsobre tasm: TASMsobre masm: MASM
10
« en: Lunes 15 de Noviembre de 2004, 10:30 »
Esta es una descripcion de la funcion que usas para mostrar la cadena por pantalla:
INT 21 - DOS 1+ - WRITE STRING TO STANDARD OUTPUT AH = 09h DS:DX -> '$'-terminated string Return: AL = 24h (the '$' terminating the string, despite official docs which state that nothing is returned) (at least DOS 3.3-5.0) Notes: ^C/^Break are checked, and INT 23 is called if either pressed standard output is always the screen under DOS 1.x, but may be redirected under DOS 2+ under the FlashTek X-32 DOS extender, the pointer is in DS:EDX SeeAlso: AH=02h,AH=06h"OUTPUT"
Tal y como indica la cadena debe terminar en "$" por lo que yo inicializaría la variable "cad" con el valor "$" y me aseguraria que la cadena es inferior al tope de "cad" -1 (o aumentaría en 1 cad) para asegurarme de que quede al menos un valor "$" en la cadena. P.D: esta interrupción muestra la cadena hasta encontrar el primer símbolo "$" con lo que si hay más el resto no se mostrarán.
Saludos. Deldar
11
« en: Lunes 15 de Noviembre de 2004, 10:13 »
Hola. Bueno ... una solucion rápida es comprobar que todo lo leido se encuentre entre 48 (ASCII del 0) y 57 (ASCII del 9) esta comprobacion se haria caracter a caracter y en cuanto lo capturas. Si todo lo que introduce son números el resultado será un número.
Saludos y suerte.
12
« en: Miércoles 10 de Noviembre de 2004, 10:29 »
¿que valor hay en la fila "5298...."? ¿has consultado la referencia para "TIMESTAMP" en los libros en pantalla?
Un saludo.
13
« en: Martes 2 de Noviembre de 2004, 10:11 »
Un placer ayudarte. No no utilizo Tasm sino Masm por eso plantee la solucion de forma teorica y no con un ejemplo. una lastima Saludos
14
« en: Viernes 29 de Octubre de 2004, 13:47 »
Una forma de evitarlo es que la clave principal de la BD sea autonuméric, con lo que es la BD la que se encarga de generar la clave. Una forma alternativa es "on error resume next" en el vbscript, este control de errores esta documentado en los manuales de microsoft.
Un saludo.
15
« en: Sábado 23 de Octubre de 2004, 10:57 »
Lo que ocurre es que tienes que imprimir dígito a dígito. el algoritmo para lograrlo biene a ser tal que así: Divides el número entre 10 y muestras el resto, con esto tienes las unidades y sumando 48 podrás mostrarlo. Si el cociente es mayor que 10 el cociente es el nuevo valor a dividir y repites el paso anterior. Si el cociente no es mayor que 10 entonces sumas 48 al cociente y lo muestras en pantalla
Un saludo.
16
« en: Viernes 22 de Octubre de 2004, 18:58 »
Además de lo dicho también sería interesante conocer el tipo de analizador que tienes que desarrollar, es decir, ascendente(LR-0,LR-1,LALR... ) ó descendente(LL1...).
17
« en: Lunes 18 de Octubre de 2004, 12:09 »
Lo primero que deberíamos conocer para ayudarte sería de que sistemas operativos estamos hablando aparte de xp porque las operaciones a realizar varian según el S.O
18
« en: Lunes 18 de Octubre de 2004, 12:02 »
A ver si esto te vale:
conn.open "metodo de acceso",,"ODBC;DATABASE=<nombre bd> ;UID=<login si lo tubiera> ;PWD=<password si lo tuvieras>;DSN=<DSN de la bd>"
19
« en: Sábado 9 de Octubre de 2004, 11:22 »
Se supone que hay dos formas una para un solo archivo y otra para todo el disco.
Empiezo por la primera: consiste en machacar tu archivo con información inutil por ejemplo editándolo, borrando el contenido y escribiendo toda suerte de tonterias, asi destruyes el comienzo del archivo y el resto es indistinguible del espacio vacio del disco.
La segunda forma: es eliminarlo y a continuación borrar el espacio en blanco del disco, esta opción suele aparecer en los defragmentadores (p.ejem: Defragmentador de norton utilities)
Esas son las que conozco pero tiene que haber más.
21
« en: Sábado 28 de Agosto de 2004, 11:11 »
Este documento deberia contestarte. Está sacado de los "libros en pantalla" de sql server 2000 , sólo añadir que también es compatible con windows 2003
22
« en: Martes 24 de Agosto de 2004, 09:59 »
No te preocupes ambos son archivos del S.O Las caracteristicas concretas de Desktop.ini no las recuerdo pero si recuerdo que Thumbs.mb es un fichero asociado a las carpertas con imagenes.
23
« en: Lunes 23 de Agosto de 2004, 10:20 »
No tienes que mover nada a ch. Cuando ejecutas: mov ah,2ch int 21 El resultado se obtiene en ch,cl,dh. Es decir en ch ya tienes la hora del sistema y puedes trabajar con ella.
Ahora bien, para cambiar la hora del sistema necesitas los datos de hora,minutos, segundos.Y entonces si tendrás que mover a ch,cl,dh los datos correspondientes para que al ejecutar:
mov ah,2dh int 21
Los datos nuevos pasen al sistema.
24
« en: Jueves 19 de Agosto de 2004, 18:38 »
Comandos: compilar: tasm miprograma.asm linkar: tlink <opciones> miprograma.obj ESE VALOR DE MEMORIA QUISIERA SABER CUAL ES. Repito: Verás AX,BX,CX,DX... en el modelo 80x86 son registros Los registros del procesador NO SON VARIABLES por lo que no tienen dirección de memoria (Al menos a la hora de programar , si lo que estas es haciendo un desensamblador indicalo porque la cosa cambia) En cuanto al valor, porque al decir "valor" preguntas por el contenido de ax, me remito a mi post anterior y al de Oerr. Un saludo .
25
« en: Jueves 19 de Agosto de 2004, 09:50 »
La únicas alternativa que veo son aguantar con lilo-grub pasarte a una distro en live-cd (knopix o algo similar).Lo de los disquetes de arranque francamente no me termina de gustar.
Un Saludo.
|
|
|