• Viernes 8 de Noviembre de 2024, 14:48

Mostrar Mensajes

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 - tirengarfio

Páginas: [1] 2
1
Python / Al ejecutar un script me aparece una linea en blanco
« en: Lunes 5 de Abril de 2010, 20:04 »
Hola,

tengo el siguiente script que me elimina cualquier cosa que haya entre lineas que contengan "//inicio-borrar-inicio" y "//fin-borrar-fin". Tambien borra esas mismas  lineas que contienen las susodichas cadenas.

Código: Text
  1. import re,fileinput,os
  2.  
  3. for path, dirs, files in os.walk(path):
  4.     for filename in files:
  5.         fullpath = os.path.join(path, filename)
  6.  
  7.         # open for reading first since we need to get the text out
  8.         f = open(fullpath,'r')
  9.  
  10.         # step 1
  11.         data = f.read()
  12.  
  13.         patter = re.compile('//inicio-borrar-inicio.*?//fin-borrar-fin', re.I | re.S)
  14.         data = patter.sub("", data)
  15.  
  16.  
  17.         # step 2
  18.         f.close()
  19.  
  20.         # *now* open for writing
  21.         f = open(fullpath, 'w')
  22.  
  23.         # step 3
  24.         f.write(data)
  25.         f.close()
  26.  
  27.  

Mi problema: tras ejecutar el script sobre esto por ejemplo:

Código: Text
  1.  
  2. public function preFetchAll(Doctrine_Event $event){
  3. //inicio-borrar-inicio
  4. $a = sfContext::getInstance()->getUser()->getAttribute("passw.formulario");
  5. var_dump($a);
  6. //fin-borrar-fin
  7. foreach ($this->_listeners as $listener) {
  8.     $listener->preFetchAll($event);
  9. }
  10. }
  11.  

el resultado es este:
Código: Text
  1.  
  2. public function preFetchAll(Doctrine_Event $event){
  3.  
  4. foreach ($this->_listeners as $listener) {
  5.     $listener->preFetchAll($event);
  6. }
  7. }
  8.  

Como podeis ver hay un linea en blanco entre "public function..." y "foreach..."

¿Alguien sabe como puedo hacer para que esa linea en blanco no aparezca?

Saludos

Javi

2
HTML / Codigo fuente distinto en Firebug y tras pulsar Ctrl+U
« en: Miércoles 30 de Diciembre de 2009, 02:04 »
Hola,

me he dado cuenta que (por lo menos en la pagina que cito a continuacion) el codigo fuente que aparece en Firebug es distinto del codigo fuente que me aparece si pulso Ctrl+U.

La pagina a la que me refiero es esta.

Por ejemplo, mientras en el codigo fuente me aparece esta etiqueta

[html:1vt0f7ux]
  1. <div id="testWrap">
  2.         <img src="castle.jpg" alt="Castle on a hill" id="testImage" width="500" height="333" /> </div>
  3.  
[/html:1vt0f7ux]

en Firebug aparece esto otro:

[html:1vt0f7ux]
  1. <div id="testWrap">
  2.             <div style="width: 500px; height: 333px;" class="imgCrop_wrap"><img src="castle.jpg" alt="Castle on a hill" id="testImage" width="500" height="333"><div class="imgCrop_dragArea"><div style="height: 0pt;" class="imgCrop_overlay imgCrop_north"><span></span></div><div style="width: 0pt; height: 0pt;" class="imgCrop_overlay imgCrop_east"><span></span></div><div style="height: 0pt;" class="imgCrop_overlay imgCrop_south"><span></span></div><div style="width: 0pt; height: 0pt;" class="imgCrop_overlay imgCrop_west"><span></span></div><div style="display: none;" class="imgCrop_selArea"><div class="imgCrop_marqueeHoriz imgCrop_marqueeNorth"><span></span></div><div class="imgCrop_marqueeVert imgCrop_marqueeEast"><span></span></div><div class="imgCrop_marqueeHoriz imgCrop_marqueeSouth"><span></span></div><div class="imgCrop_marqueeVert imgCrop_marqueeWest"><span></span></div><div class="imgCrop_handle imgCrop_handleN"></div><div class="imgCrop_handle imgCrop_handleNE"></div><div class="imgCrop_handle imgCrop_handleE"></div><div class="imgCrop_handle imgCrop_handleSE"></div><div class="imgCrop_handle imgCrop_handleS"></div><div class="imgCrop_handle imgCrop_handleSW"></div><div class="imgCrop_handle imgCrop_handleW"></div><div class="imgCrop_handle imgCrop_handleNW"></div><div class="imgCrop_clickArea"></div></div><div class="imgCrop_clickArea"></div></div></div></div>
[/html:1vt0f7ux]

Alguien sabe a que obedece esto?

Un saludo

Javi

3
PHP / Peticiones POST y GET: como se distinguen en una URL?
« en: Viernes 19 de Junio de 2009, 20:35 »
Hola,

estoy leyendo el manual de symfony (un framework PHP orientado a la creación de aplicaciones web).

En la sección 9.3.3 aparecen las siguientes palabras:

 "En ocasiones, los programadores web utilizan peticiones GET para realizar acciones más propias de una petición POST. Si se considera por ejemplo la siguiente URL:

http://www.ejemplo.com/index.php/carrit ... dir/id/100

Este tipo de petición modifica los datos de la aplicación, ya que añade un elemento al objeto que representa el carrito de la compra y que se almacena en la sesión del servidor o en una base de datos. Si los usuarios añaden esta URL a los favoritos de sus navegadores o si la URL se cachea o es indexada por un buscador, se pueden producir problemas en la base de datos y en las métricas del sitio web. En realidad, esta petición debería tratarse como una petición de tipo POST, ya que los robots que utilizan los buscadores no hacen peticiones POST para indexar las páginas."



Mi pregunta: ¿en que se nota que la la peticion que menciona es de tipo GET y no POST?


Ciao

4
C/C++ / Strcpy() y cadenas
« en: Jueves 24 de Julio de 2008, 18:48 »
Saludos,

cuando intento compilar este codigo

Código: Text
  1.  
  2. int main(int argc, char* argv[])
  3. {
  4.     char cad1[100]="javi";
  5.    
  6.     char * cad2;
  7.  
  8.     cad2 ="hola";
  9.  
  10.     strcpy( cad2, cad1);
  11.  
  12.     printf ("%s", cad1);
  13.  
  14.     return 0;
  15.  
  16.  
  17. }
  18.  
  19.  
  20.  

me da un error al ejecutarlo


pero cuando ejecuto este de aqui abajo no me da errores, por que?

Código: Text
  1.  
  2. int main(int argc, char* argv[])
  3. {
  4.     char cad1[100]="javi";
  5.    
  6.     char * cad2;
  7.  
  8.     cad2 ="hola";
  9.  
  10.     strcpy( cad1, cad2);  // SOLO CAMBIO ESTA LINEA
  11.  
  12.     printf ("%s", cad1);
  13.  
  14.     return 0;
  15.  
  16. }
  17.  
  18.  

Ciao

Javi

5
ASM (Ensamblador) / Escribiendo Caracteres En La Pantalla
« en: Lunes 17 de Marzo de 2008, 01:31 »
Hola,

el siguiente codigo imprime inicialmente un simbolo $ en mitad de la pantalla.

Despues, si presionas la letra "i", se imprime otro $ encima del primero, y si presionas de nuevo la "i", se deberia imprimir otro $ encima del segundo $, pero ese tercer $ no se imprime...

¿Por qué?


Bueno, a decir verdad, ese tercer $ se imprime, pero cuando pulso "i" una tercera vez... Mi objetivo es que se imprima cuando le doy a la "i" la segunda vez, no la tercera.




Código: Text
  1.  
  2. DOSSEG
  3.   .MODEL SMALL
  4.   .STACK 100h
  5.   .DATA
  6.  
  7.  
  8.   .CODE
  9.  
  10.  
  11. INICIO:
  12.  
  13.   mov ax, @data
  14.   mov ds, ax
  15.  
  16.  
  17.  
  18.   mov ax, 03h; Peticion para limpiar pantalla
  19.   int 10h
  20.  
  21. ;funcion de la interrupcion que nos permite posicionarnos
  22.   mov ah, 02h; colocar el cursor en una posicion definida
  23.   mov dh, 0Ah; fila
  24.   mov dl, 019h; columna
  25.  
  26.   int 10h; interrupcion de video
  27.  
  28.  
  29.  
  30.  
  31. bucle:
  32.  
  33.  
  34.   mov dl, 024h; Escribo el caracter &#34;&#036;&#34;
  35.   mov ah, 02h
  36.   int 21h
  37.  
  38.  
  39. bucle2:
  40.  
  41.   mov ah, 08h; Leo un caracter del teclado sin reproducirlo en la pantalla.
  42.   int 21h
  43.  
  44.  
  45.   cmp al, 069h; Compruebo si el caracter pulsado es la letra &#34;i&#34;.
  46.   je arriba
  47.  
  48.   cmp al, 06Bh; Compruebo si el caracter pulsado es la letra &#34;k&#34;.
  49.   je abajo
  50.  
  51.  
  52.   jmp bucle2
  53.  
  54.  
  55. arriba:
  56.  
  57.  
  58.  
  59.   mov ah, 02h; Colocar el cursor en una posicion definida
  60.   sub dh, 1  
  61.   mov dl, 026h; columna
  62.   mov bh,0; pagina de video activa generalmente la cero  
  63.   int 10h
  64.  
  65.  
  66.   jmp bucle
  67.  
  68. abajo:
  69.  
  70.   mov ah, 02h; Colocar el cursor en una posicion definida
  71.   add dh, 1  
  72.   mov dl, 026h; columna
  73.   mov bh,0; pagina de video activa generalmente la cero  
  74.   int 10h
  75.  
  76.  
  77.   jmp bucle
  78.  
  79.  
  80.  
  81.  
  82. FIN:
  83.  
  84.   mov ah, 4ch
  85.   int 21h
  86.   end INICIO
  87.  

Un saludo

JAvi

6
ASM (Ensamblador) / Problemilla Con Bx
« en: Lunes 17 de Marzo de 2008, 01:00 »
Saludos,

el codigo que tengo aqui abajo es el comienzo de un programa que deberia dibujar un cuadrado en la pantalla.


Como se ve, empiezo dibujando el vertice superior izquierdo del cuadrado. El problema es que si pongo las dos lineas del * no me funciona correctamente: el vertice no se me dibuja en la posicion (6,6) (columna, fila) sino en el (0,0).


¿Cual es el problema? He visto la pagina de Brown pero no aparece nada sobre que BX interfiera en las interrupciones que manejo.



Código: Text
  1.   .MODEL SMALL
  2.   .STACK 100h
  3.   .DATA
  4.  
  5.  
  6. ; Tomando como origen de coordenadas la esquina superior derecha de la ventana.
  7.  
  8.  six  DB 06h   &#59; Coordenada x de la esquina superior izquierda del cuadrado
  9.  siy  DB 06h  &#59; Coordenada y de la esquina superior izquierda del cuadrado
  10.  idx  DB 0Ah  &#59; Coordenada x de la esquina inferior derecha del cuadrado
  11.  idy  DB 0Ah  &#59; Coordenada y de la esquina inferior derecha del cuadrado
  12.  
  13.  
  14.   .CODE
  15.  
  16.  
  17. INICIO:
  18.  
  19.   mov ax, @data    
  20.   mov ds, ax
  21.  
  22.  
  23.   mov bh, six    &#59; *
  24.   mov bl, siy  &#59; *
  25.  
  26.   mov ch, idx
  27.   mov cl, idy
  28.  
  29.  
  30.  
  31.    
  32.   mov ax, 03h &#59; Peticion para limpiar pantalla
  33.   int 10h
  34.  
  35.  
  36.   mov ah, 02h &#59; colocar el cursor en el vertice superior izquierdo.
  37.   mov dh, 06h&#59; y  
  38.   mov dl, 06h &#59; x
  39.   int 10h &#59; interrupcion de video
  40.  
  41.  
  42.   mov dl, 024h&#59; Escribo el caracter &#34;&#036;&#34;
  43.   mov ah, 02h
  44.   int 21h
  45.  
  46.  
  47.  
  48.  
  49. FIN:
  50.  
  51.   mov ah, 4ch
  52.   int 21h
  53.   end INICIO
  54.  

Un saludo

Javi

7
ASM (Ensamblador) / Re: Funcion 02h (int 21h) Y La Funcion 09h (int 10h)
« en: Lunes 17 de Marzo de 2008, 00:31 »
Gracias Eternal

8
ASM (Ensamblador) / Funcion 02h (int 21h) Y La Funcion 09h (int 10h)
« en: Domingo 16 de Marzo de 2008, 23:15 »
Saludos,

tengo unas tablas con algunas de la funciones de las interrupciones 21h, 10h y 16h.

Hechandoles un ojo, veo que la funcion 02h (interrupcion 21h) y la funcion 09h (interrupcion 10h) son muy parecidas.

Si quiero es escribir un caracter sin tener en cuenta ni el color ni la pagina, ¿cual de estas dos debere usar? ¿será indiferente usar una u otra? ¿hay ciertas ocasiones en la que se aconseja usar una más una que otra?

Un saludo

Javi

9
ASM (Ensamblador) / Retorno De Carro
« en: Jueves 13 de Marzo de 2008, 22:14 »
Saludos,

este codigo de aqui abajo deberia de imprimir dos lineas una debajo de la otra,
pero, ¿porque no salta de linea?


Código: Text
  1. DOSSEG
  2.   .MODEL SMALL
  3.   .STACK 100h
  4.   .DATA
  5.  
  6.  
  7.   .CODE
  8.  
  9.  
  10. INICIO:
  11.  
  12.   mov ax, @data
  13.   mov ds, ax
  14.  
  15.  
  16.  
  17.   mov cx, 10
  18.  
  19. bucle1:
  20.  
  21.  
  22.   mov dl, 0h&#59; Escribimos el numero de espacios en blanco indicados por CX.
  23.   mov ah, 06h
  24.   int 21h  
  25.  
  26.   loop bucle1
  27.  
  28.  
  29.   mov cx, 10
  30.  
  31.  
  32. bucle2:
  33.  
  34.   mov dl, 5Fh  &#59; Imprimimos por pantalla el lado superior del cuadrado.
  35.   mov ah, 06h
  36.   int 21h  
  37.  
  38.   loop bucle2
  39.  
  40.  
  41.   mov dl, 0Dh
  42.   mov ah, 06h&#59; ¿¿¿¿¿¿¿¿¿¿¿No deberia saltar de linea????????????????
  43.   int 21h  
  44.  
  45.  
  46.   mov cx, 10
  47.  
  48. bucle3:
  49.  
  50.  
  51.  
  52.   mov dl, 0h&#59; Escribimos el numero de espacios en blanco indicados por CX.
  53.   mov ah, 06h  
  54.   int 21h  
  55.  
  56.   loop bucle3
  57.  
  58.  
  59.   mov cx, 10
  60.  
  61. bucle4:
  62.  
  63.   mov dl, 5Fh
  64.   mov ah, 06h&#59;
  65.   int 21h  
  66.  
  67.   loop bucle4
  68.  
  69.  
  70.  
  71. FIN:
  72.  
  73.   mov ah, 4ch
  74.   int 21h
  75.   end INICIO
  76.  


Ciao

10
ASM (Ensamblador) / Duda Sobre Registros
« en: Miércoles 12 de Marzo de 2008, 21:39 »
Saludos,

ejecutando paso a paso el codigo de aqui debajo, tras ejecutar la linea "int 21h(*)", el valor de al pasa a ser 24.

¿Alguien me sabe de decir por qué ocurre eso?


Código: Text
  1.  
  2. DOSSEG
  3.   .MODEL SMALL
  4.   .STACK 100h
  5.   .DATA
  6.  
  7. cadena   DB &#34;Has pulsado la tecla:&#036;&#34;
  8.  
  9.  
  10.   .CODE
  11.  
  12.  
  13. INICIO:
  14.  
  15.   mov ax, @data
  16.   mov ds, ax
  17.  
  18.  
  19.  
  20.   mov ah, 08h
  21.   int 21h
  22.  
  23.  
  24.  
  25.   lea dx, cadena
  26.   mov ah, 09h
  27.   int 21h (*)
  28.  
  29.  
  30.   mov dl, al
  31.   mov ah, 02h
  32.   int 21h
  33.  
  34.  
  35.  
  36.  
  37. FIN:
  38.  
  39.   mov ah, 4ch
  40.   int 21h
  41.   end INICIO
  42.  



Un saludo

Javi

11
ASM (Ensamblador) / Usando Mul
« en: Miércoles 12 de Marzo de 2008, 20:14 »
Saludos,

viendo como se va ejecutando paso a paso este codigo de aqui abajo con CV, me he dado cuenta que tras ejecutar la linea "mul tabla[1h]"   el resultado es:

DX: 0023
AX: 2800


¿El resultado no deberia de ser este?:

DX:0000
AX:2328

¿Que estoy haciendo mal?


Código: Text
  1.  
  2. DOSSEG
  3.   .MODEL SMALL
  4.   .STACK 100h
  5.   .DATA
  6.  
  7.  
  8.  
  9. tabla   DW 5h DUP (2h, 9h, 3h, 7h, 1h)  &#59; Trabajaremos con el rango 0-65535,
  10.           &#59; tabla1&#60;=50h
  11.  
  12.  
  13.   .CODE
  14.  
  15.  
  16. INICIO:
  17.  
  18.   mov ax, @data
  19.   mov ds, ax
  20.  
  21.  
  22.  
  23.   mov ax, 2710h    
  24.  
  25.   mul tabla[0h]&#59; Multiplicamos por 10.000 (2710h) el 1er elemento de tabla.
  26.     &#59; El resultado se guarda en DX AX
  27.  
  28.  
  29.   mov bx, ax&#59; Ahora vamos a mover el resultado almacenado en DXAX a BXCX.
  30.   mov cx, dx  
  31.  
  32.  
  33.    
  34.  
  35.  
  36.   mov ax, 3E8h&#59; Multiplicamos por 1.000 (3E8h) el 2º elemento de tabla.  
  37.  
  38.   mul tabla[1h]    
  39.  
  40.  
  41.  
  42. FIN:
  43.  
  44.   mov ah, 4ch
  45.   int 21h
  46.   end INICIO
  47.  


Un saludo

12
ASM (Ensamblador) / Re: Desplazar 16 Bits Un Dato Dd Añadiendo Ceros
« en: Martes 11 de Marzo de 2008, 10:33 »
hola,

shr no funciona con datos de 32 bits.

ya lo se...

multiplicando 4 veces por 10h lo consigo

EI: uniendo mensajes.

13
ASM (Ensamblador) / Desplazar 16 Bits Un Dato Dd Añadiendo Ceros
« en: Lunes 10 de Marzo de 2008, 23:07 »
Saludos,

¿alguien sabe alguna manera de desplazar hacia la izquierda 16 bits un dato dd añadiendo un cero a la derecha cada vez que se desplaza un bit?



0000 0000    0000 0000    0000 0000    0000 0001

Al final quedaria:

0000 0000    0000 0001    0000 0000    0000 0000


Un saludo

Javi

14
ASM (Ensamblador) / Les Si, [bp].p1
« en: Martes 26 de Febrero de 2008, 17:21 »
Saludos,


en un codigo que he visto, aparecela siguiente linea:



Código: Text
  1.  
  2. p1 dd ?
  3.  
  4.  
  5. .code
  6.  
  7. les si, [bp].p1
  8.  

¿Alguien me puede decir que quiere decir el punto de la ultima linea?

Ciao

15
ASM (Ensamblador) / Re: Contar El Numero De Veces Que Aparece Una Letra
« en: Viernes 22 de Febrero de 2008, 18:36 »
Citar
¿Quien dijo que hay un tabla1[4]? Esta fuera de los limites y simplemente estas accediendo a carac que justamente es 'a'  ;)


Ya se que esta fuera de los limites, pero ¿no te parece curioso que tabla1[4] albergue el mismo caracter que tabla1[3] siempre?

Citar
Incializa asi: tabla1   DB "Hola",0 y recorre las cadenas justo hasta encontrarte el 0 terminador de las mismas.

Ok, aqui abajo esta mi codigo haciendo lo que tu me dices. Pero en el caso de que la letra que estoy contando (la "a") sea la que termina la palabra (Hola), tu consejo no funciona, al menos como yo lo hago...


   
Citar
DOSSEG
   .MODEL SMALL
   .STACK 100h
   .DATA

tabla1  DB "Hola", 0  ; Una tabla de 0Ah caracteres
carac   DB "a"

   .CODE

INICIO:

   
   mov ax, @data
   mov ds, ax

   xor di, di


   mov bh, carac[0]


numero:   

   add cl, 1


bucle:

   mov bl, tabla1[di]   

   inc di

   cmp bl, carac
   je numero

   
   cmp tabla1[di], 0
   jnz bucle 
   

FIN:

   mov ah, 4ch
   int 21h
   end INICIO

16
ASM (Ensamblador) / Contar El Numero De Veces Que Aparece Una Letra
« en: Viernes 22 de Febrero de 2008, 14:52 »
Deberia decir "Hola Eternal" :),


he escrito un codigo que me cuenta el numero de letras "a" en la palabra "Hola".

El problema es que tabla1[4] es siempre igual que tabla1[3], con lo que la cuenta siempre es incorrecta.

Mis preguntas son dos:

- ¿Porque tabla1[4] es siempre igual a tabla1[3]? (Es que soy curioso...)

- ¿Hay alguna manera de  correctamente este ejercicio? Se me ocurre que la linea "sub cl, 1" se podria sustituir por "sub cl, 2", pero quiza haya alguna manera mas "seria"...


Código: Text
  1.  
  2.  
  3.   DOSSEG
  4.   .MODEL SMALL
  5.   .STACK 100h
  6.   .DATA
  7.  
  8. tabla1   DB &#34;Hola&#34;  &#59; Una tabla de 0Ah caracteres
  9. carac  DB &#34;a&#34;
  10.  
  11.   .CODE
  12.  
  13. INICIO:
  14.  
  15.  
  16.   mov ax, @data
  17.   mov ds, ax
  18.  
  19.   xor di, di
  20.  
  21.  
  22.   mov bh, carac[0]
  23.  
  24.  
  25. numero:  
  26.  
  27.   add cl, 1
  28.  
  29.  
  30.  
  31. bucle:
  32.  
  33.   mov bl, tabla1[di]  
  34.  
  35.   inc di
  36.  
  37.   cmp bl, carac
  38.   je numero
  39.  
  40.  
  41.   cmp di, 05h
  42.   jl bucle      
  43.  
  44.  
  45.  
  46.   sub cl, 1
  47.  
  48.  
  49.  
  50. FIN:
  51.  
  52.   mov ah, 4ch
  53.   int 21h
  54.   end INICIO
  55.  

Un saludo

Javier

17
ASM (Ensamblador) / Re: ¿0ah No Es Valido? Extraño...
« en: Viernes 22 de Febrero de 2008, 12:04 »
Ok, ya he descubierto cual es el fallo...

Incremento di en mal sitio...

18
ASM (Ensamblador) / ¿0ah No Es Valido? Extraño...
« en: Viernes 22 de Febrero de 2008, 11:57 »
Saludos,

tengo el siguiente bucle en un programita:


Código: Text
  1. bucle:
  2.   mov bl, tabla1[di]  
  3.  
  4.   inc di
  5.  
  6.   cmp bl, carac
  7.   je numero  
  8.  
  9.  
  10.  
  11.  
  12.   cmp di, 0Ah
  13.   jnz bucle
  14.  


Como veis, el bucle termina cuando di alcanza el valor 0Ah, pero el problema es que no termina cuando alcanza esa cantidad.....

He probado con otras cantidades y no tengo ningun problema...

¿Que puede estar pasando?


Un saludo

Javier

19
ASM (Ensamblador) / Re: El Rango De Db Y Sobre Los Numeros Con Signo
« en: Viernes 22 de Febrero de 2008, 11:50 »
Gracias Eternal.

Ok. Seguiré tu consejo.

20
ASM (Ensamblador) / El Rango De Db Y Sobre Los Numeros Con Signo
« en: Miércoles 20 de Febrero de 2008, 22:37 »
Hola,

en un codigo tengo este array:

Código: Text
  1. memo  DB 04h DUP (-4, 3h, 250, -250)
  2.  

Si es cierto que el rango de DB es [127, -128], ¿por que no me da error el poner numeros como 250 o -250 en mi tabla?.

Cuando supero 255 ó -256 si que se produce un error del tipo "Out of range".



Por otra parte, tengo un codigo que deberia contar el numero de datos negativos en mi tabla (-4 y -250) pero no lo hace. Es este:


Código: Text
  1.  
  2.   xor di, di
  3.  
  4. bucle2:
  5.  
  6.  
  7.   shl memo[di], 1
  8.   adc cl, 0; Al final del bucle, bl contendrá el numero de datos negativos
  9.  
  10.  
  11.   inc di
  12.  
  13.   cmp di, 04h
  14.   jnz bucle2
  15.  
  16.    
  17.   mov ch, 04h
  18.   sub ch, cl; Restamos el numero de datos negativos encontrados del  numero de
  19.    &#59; datos de la tabla (4). Así obtendremos el numero de datos positivos.
  20.  
  21.  



Un saludo

Javi

21
ASM (Ensamblador) / Re: "illegal Instruction" En Codeview
« en: Miércoles 20 de Febrero de 2008, 22:16 »
Gracias,

efectivamente estoy trabajando con 16 bits (8086) y ensamblando con MASM 5.1.

22
ASM (Ensamblador) / "illegal Instruction" En Codeview
« en: Miércoles 20 de Febrero de 2008, 13:07 »
Saludos,

tengo que escribir un codigo que localice el mayor y el menor de entre 16 datos de
un byte almacenados en una tabla, considerándolos como números sin
signo.


He escrito una parte. Esto:


Código: Text
  1.   DOSSEG
  2.   .MODEL SMALL
  3.   .STACK 100h
  4.   .DATA
  5.  
  6. memo1  DB 10h DUP (0h, 1h, 2h, 3h, 4h, 5h, 6h, 7h, 8h, 9h, 0Ah, 0Bh, 0Ch, 0Dh, 0Eh, 0Fh)
  7. masalto DB ?
  8. masbajo DB ?
  9.  
  10.  
  11.   .CODE
  12.  
  13. INICIO:
  14.  
  15.   mov ax,@data
  16.   mov ds,ax
  17.   xor di, di  &#59; Inicializamos a cero di
  18.  
  19.  
  20.  
  21. mayor:
  22.   mov masalto, bl
  23.   END mayor
  24.  
  25.  
  26.   mov masalto, memo1[di]
  27.  
  28.   mov masbajo, memo1[di]
  29.  
  30.  
  31.  
  32.  
  33. bucle:    
  34.   mov bl, memo1[di]&#59; mov memo2[di], memo1[di]&#34; esta prohibido, asi que
  35.   inc di    &#59; Incrementamos el contador
  36.  
  37.   cmp bl, masalto
  38.   jg mayor  
  39.  
  40.   cmp di, 10h  &#59; Comprobamos que el contador no haya llegado a 10h
  41.   jnz bucle    
  42.  
  43.  
  44. FIN:
  45.  
  46.   mov ah, 4ch
  47.   int 21h
  48.   END INICIO
  49.  
  50.  


No me da error al ensamblar/enlazar, pero al cargarlo en codeview y ejecutarlo me dice "Illegal instruction".

23
ASM (Ensamblador) / Re: Sobre Los Registros Aritmeticos
« en: Martes 19 de Febrero de 2008, 19:30 »
Cita de: "Eternal Idol"
Se les dio la gana; podian usar 8 bits de cualquier registro general.

 


Pero por ejemplo, el enlace de de la wikipedia que me has dejado, dice que solo se puede usar CX como contador de la instruccion loop.

A pesar de esa restriccion, ¿podria entonces usar CL o CH en mi codigo en vez de BL?

Gracias

Javi

24
ASM (Ensamblador) / Sobre Los Registros Aritmeticos
« en: Martes 19 de Febrero de 2008, 13:38 »
Saludos,

en este codigo que pongo aqui abajo, el acarreo de la suma se pasa a bl.

Segun he visto, el registro bl se usa en transferencias de datos entre la memoria y el procesador.

¿Por que se usa entonces bl si no estamos haciendo una transferencia entre la memoria y el procesador?¿Se podria haber usado cualquier otro registo aritmetico(bh, dl, dh...)?


Código: Text
  1.   DOSSEG
  2.   .MODEL SMALL
  3.   .STACK 100h
  4.   .DATA   ;Segmento de datos.
  5. dato1   DB 35h   ;Primer operando
  6. dato2   DB 47h   ;Segundo operando
  7. resul   DW ?   ;Para almacenar el resultado
  8.  
  9. .CODE
  10.  
  11. INICIO:
  12.   mov ax,@data
  13.  
  14.   mov ds,ax
  15.  
  16.   mov ah,dato1&#59;Primer operando
  17.  
  18.   mov al,dato2&#59;Segundo operando
  19.  
  20.   xor bl,bl&#59;Pone a cero BL. Donde se guardará el acarreo...ANTES DE LA SUMA!!!
  21.  
  22.   add al,ah&#59;Suma AL+AH y guarda el resultado en AL. CF se puede activar
  23.  
  24.   adc bl,0&#59;Esta es la manera de almacenar el valor del acarreo (CF) de la suma
  25.     ;(0 ó 1) en bl...
  26.  
  27.  
  28.   mov ah,bl&#59;En AX el resultado completo (2 bytes): SUMA + ACARREO.
  29.  
  30.   mov resul,ax&#59;Guarda el resultado
  31.   
  32. FIN:
  33.   mov ah,4ch
  34.   int 21h
  35.   END inicio
  36.  


Un saludo

Javier

25
ASM (Ensamblador) / Empezando A Programar En Ensamblador
« en: Viernes 15 de Febrero de 2008, 21:24 »
Hola,

¿que aplicaciones tengo que descargar para empezar a programar (compilar, linkar,...) en ensamblador (8086)?

Lo he intentado descargando esta de aqui (donde pone "masm32.zip"):

webster.cs.ucr.edu/AsmTools/MASM/index.html

y despues de instalarlo me aparece un icono en el Escritorio que pone "MASM32 Editor". Despues pego el codigo de un .asm y le doy "Project>Assemble ASM file" pero me sale una ventana que dice:
 

masm32\bin\assmbl.bat
No file loaded


Tengo Windows XP. No busco IDE's complicadas, tan solo algo como el link que he pegado arriba.


Javi

Páginas: [1] 2