Título: explicacion loop Publicado por: omar_cdg en 9 Septiembre 2015, 02:03 am Hola amigos, estoy dando mis primeros pasos en asembler y quisiera que alguien me explique por que la salida del siguiente codigo es 40, y no 56. La verdad que no puedo encontrar la razon. Gracias
Código
Título: Re: explicacion loop Publicado por: someRandomCode en 9 Septiembre 2015, 02:21 am Código
Título: Re: explicacion loop Publicado por: omar_cdg en 9 Septiembre 2015, 02:31 am Hola, gracias. Por esta misam razón cuando n lleag a 32 %eax vale 32+24, no es así??
la salida debería ser, creo, es mi tercer programa, 56. Perdón mi ignorancia Título: Re: explicacion loop Publicado por: someRandomCode en 9 Septiembre 2015, 03:56 am Nop, n nunca se incrementa..
Solo se compara n con el valor de ecx, este ultimo es el que se incrementa Cuando se han dado 31(no 32, porque empezamos en 1 el valor de ecx) vueltas al loop vamos al siguiente tag. el tema es como se incrementa eax, que es la que al final le da el valor a r. eax = eax + ecx; o sea, primera vuelta: eax = 24; ecx = 1; eax = 24 + 1; segunda vuelta: eax =25; ecx = 2; eax = 25+2; ... A mi de seguirlo a ojo me parece que da algo asi como 520 Título: Re: explicacion loop Publicado por: omar_cdg en 9 Septiembre 2015, 04:42 am sí tenes razon, yo me equivoque, da como 500 y pico, hoy a la tarde saque la cuenta :p
igualmente no entiendo por que me sale 40 en la salida De todas formas agradezco mucho tu atención. Saludos Título: Re: explicacion loop Publicado por: someRandomCode en 9 Septiembre 2015, 16:05 pm A todo esto, que ensamblador estas usando?
No deberia cambiar el resultado, es solo curiosidad, porque ese codigo tal cual como esta NASM me lo rechaza.. Requiere bastantes cambios.. EDIT: antes de que no se entienda :P me da falla de segmentacion Título: Re: explicacion loop Publicado por: xv0 en 10 Septiembre 2015, 03:24 am @omar_cdg
Revisa lo que hace el salto jg y sabras porque no te da bien la suma, por otro lado el resultado sigue siendo incorrecto, tendria que devolver 24. A todo esto, que ensamblador estas usando? No deberia cambiar el resultado, es solo curiosidad, porque ese codigo tal cual como esta NASM me lo rechaza.. Requiere bastantes cambios.. EDIT: antes de que no se entienda :P me da falla de segmentacion Es la sintaxis de AT&T, ensamblalo con GAS. Un saludo. Modifico: Me acaba de dar bien el resultado, explica como consultas el resultado. Título: Re: explicacion loop Publicado por: someRandomCode en 10 Septiembre 2015, 05:00 am Ni con gcc ni con as lo puedo compilar y evitar que me haga una falla de segmentacion, que raro..
Por que deberia dar 24? Se me acaba de perder el tren de pensamientos Título: Re: explicacion loop Publicado por: xv0 en 10 Septiembre 2015, 15:16 pm Fue un error mio lo de 24, estuve mirando el cmp en los manuales, y este tenia la sintaxis de intel, y claro es invertido, y me confundi.
Me da como resultado 552, muy raro que te falle, donde precisamente? tracealo. Es de 64 bits el S.O.? Un saludo. Título: Re: explicacion loop Publicado por: someRandomCode en 10 Septiembre 2015, 15:56 pm El mio sisi, pero no deberia dar SIGSEGV..
EDITO: en endloop() es donde tengo la violacion de segmento Título: Re: explicacion loop Publicado por: xv0 en 11 Septiembre 2015, 00:30 am No podrás escribir, en la sección bss. Igualmente no hace falta utilizarla.
Un saludo. Título: Re: explicacion loop Publicado por: someRandomCode en 11 Septiembre 2015, 02:58 am Tenes razon, se me paso :P
Pero el resultado no deberia dar 40, da al final los 5XX? Título: Re: explicacion loop Publicado por: xv0 en 11 Septiembre 2015, 14:47 pm Si deve de dar los 552, compruebalo.
Un saludo. Título: Re: explicacion loop Publicado por: omar_cdg en 15 Septiembre 2015, 04:12 am Hola, perdon por la tardanza. Te explico. uso linux, ubuntu 14.04.
estoy usando la siguiente version A-32 (i386) (sintaxis AT&T) si bien mi maquina soporta 64 bits, por alguna razon estoy usando un SO de 32 igualmente mi procesador en un intel compilo con gcc que es el compilador por defecto que trae ubuntu, no sé si te sirve de algo estos datos. soy nuevo en ensamblador. gracias por preocuparte chicos agradezco muchisimo su aporte... uds, probaron el código?? qué resulado obtuvieron les doy los pasos que sigo para compilar y ejecutar gcc -g -o nombre_archivo nombre_archivo.s ./nombre_archivo echo $? 40 eso el lo que hago y esa es la salida Título: Re: explicacion loop Publicado por: xv0 en 17 Septiembre 2015, 01:31 am Si lo compruebo a traves de echo y esa variable tabien obtengo 40, pero si lo traceo tengo el resultado correcto, tienes strace? Si es asi compruebalo.
Un saludo. Título: Re: explicacion loop Publicado por: T. Collins en 17 Septiembre 2015, 03:51 am 552 % 256 = 40
|