Título: [?] Inicializar vector y trabajar con el Publicado por: MeCraniDOS en 3 Julio 2014, 17:55 pm Hola ;D
Estoy intentando calcular la media de unos numeros para practicar un poco, pero tengo algunos fallos de concepto, he trabajado antes con ARM, pero las instrucciones en ASM son un poco diferente.. el codigo es este Código
Se que para los que sepan, es algo muy basico... hay alguna manera de inicializar el vector de una manera mas sencilla? y otra cosa, para ir sumando el valor del vector en un bucle com seria? Intentaba simular esto Código
No quiero codigos completos, solo una ayudita con las instrucciones :rolleyes: Saludos Título: Re: [?] Inicializar vector y trabajar con el Publicado por: Eternal Idol en 3 Julio 2014, 18:49 pm No se si entendi muy bien:
Código
Título: Re: [?] Inicializar vector y trabajar con el Publicado por: MeCraniDOS en 4 Julio 2014, 00:20 am No se si entendi muy bien: Le he hecho en C para que se entienda mejor Código
Entonces lo que quería saber era si se podía inicializar como lo he hecho en C Código
Eso equivale a esto en C Código
Y hacerlo asi en un :o Al final el código me ha quedado así con las modificaciones que me has dicho Eternal Código
Por cierto, dos cosas, la rutina for_div se puede simplificar? Es que en arm lo tenia que hacer asi porque no hay operacion de division, pero en asm he visto que si, pero solo pones el registro a dividir, no entre que valor lo quieres dividir :huh: :huh: Y la otra, que diferencia hay entre esto? Código
Código
Pensaba que db era para una unica variable, y rb (reserved byte) para vectores, ya que especificas cuanto espacio quieres reservar :rolleyes: Título: Re: [?] Inicializar vector y trabajar con el Publicado por: Eternal Idol en 4 Julio 2014, 09:02 am Le he hecho en C para que se entienda mejor Código
Entonces lo que quería saber era si se podía inicializar como lo he hecho en C Evidentemente entonces lo habia entendido bien. Por cierto, dos cosas, la rutina for_div se puede simplificar? Es que en arm lo tenia que hacer asi porque no hay operacion de division, pero en asm he visto que si, pero solo pones el registro a dividir, no entre que valor lo quieres dividir :huh: :huh: Código
Y la otra, que diferencia hay entre esto? Código
Código
Pensaba que db era para una unica variable, y rb (reserved byte) para vectores, ya que especificas cuanto espacio quieres reservar :rolleyes: Notese que estas usando char (byte, db/rb), si queres usar un int usa dword (y el add puede ser directo). db: char Vector[] = {7,8,5,2,9,1,0,3}; rb: char Vector[8]; Título: Re: [?] Inicializar vector y trabajar con el Publicado por: MeCraniDOS en 4 Julio 2014, 13:14 pm Notese que estas usando char (byte, db/rb), si queres usar un int usa dword (y el add puede ser directo). Al utilizar dword ocupo 4 bytes en la memoria, por lo que tendria que incrementar el contador de 4 en 4 :-\ Citar 00401000 07 00 00 00 08 00 00 00 ...... 00401008 05 00 00 00 02 00 00 00 ...... 00401010 09 00 00 00 01 00 00 00 ....... 00401018 00 00 00 00 03 00 00 00 ....... Lo de la division lo veo raro :rolleyes: Poniendo el codigo como me has dicho, los registros quedan de esta manera una vez realizada la operación: Citar EAX 00000001 ECX 00000008 EDX 00000007 EBX 7FFDF000 ESP 0007FF90 EBP 0007FF98 ESI 00000000 EDI 00000000 EIP 00402021 2_-_copi.00402021 Código
No saca muy bien el resultado... :silbar: En que estoy metiendo la pata? :huh: Código
Citar EAX 00000004 ECX 00000008 EDX 00000003 EBX 7FFDF000 ESP 0007FF8C EBP 0007FF98 ESI 00000000 EDI 00000000 EIP 00402022 2_-_copi.00402022 Solucionado ;D Título: Re: [?] Inicializar vector y trabajar con el Publicado por: Eternal Idol en 4 Julio 2014, 14:25 pm No se cual seria el problema al dividir que tenias ;D
Y si usas DWORD: Código
Título: Re: [?] Inicializar vector y trabajar con el Publicado por: MeCraniDOS en 4 Julio 2014, 14:44 pm No se cual seria el problema al dividir que tenias ;D Y si usas DWORD: Código
El problema era que estaba utilizando DWORD, y solo incementaba el contador en 1, por lo que sumaba el valor y luego 3 ceros hasta el siguiente numero, pero se soluciona multiplicando como has hecho ;D Otra cosita, utilizando DWORD, no malgastarias memoria? (En este caso, ya que los numeros no son de mas de dos cifras) :silbar: En este caso podría utilizar WORD? que ocupa 2 bytes y es numerico Código
Título: Re: [?] Inicializar vector y trabajar con el Publicado por: Eternal Idol en 4 Julio 2014, 15:38 pm El problema era que estaba utilizando DWORD, y solo incementaba el contador en 1, por lo que sumaba el valor y luego 3 ceros hasta el siguiente numero, pero se soluciona multiplicando como has hecho ;D Otra cosita, utilizando DWORD, no malgastarias memoria? (En este caso, ya que los numeros no son de mas de dos cifras) :silbar: En el codigo de C estabas usando int, que es un DWORD con signo. En este caso podría utilizar WORD? que ocupa 2 bytes y es numerico Un BYTE puede representar valores entre 0 y 255 asi que en este caso no necesitas un WORD tampoco ... y no, no podes usar add directamente con un WORD, vas a tener que pasarlo a un registro como con BYTE anteriormente; o usar el registro correspondiente en su lugar (al, ax, eax, rax). Título: Re: [?] Inicializar vector y trabajar con el Publicado por: MeCraniDOS en 4 Julio 2014, 22:22 pm En el codigo de C estabas usando int, que es un DWORD con signo. Un BYTE puede representar valores entre 0 y 255 asi que en este caso no necesitas un WORD tampoco ... y no, no podes usar add directamente con un WORD, vas a tener que pasarlo a un registro como con BYTE anteriormente; o usar el registro correspondiente en su lugar (al, ax, eax, rax). De acuerdo, muchas gracias Eternal ;D ;D Saludos Título: Re: [?] Inicializar vector y trabajar con el Publicado por: Eternal Idol en 5 Julio 2014, 01:05 am De nadas ::)
|