Foros del Web » Programación para mayores de 30 ;) » Programación General »

Ensamblador

Estas en el tema de Ensamblador en el foro de Programación General en Foros del Web. Una pregunta, hasta ahorita me estoy metiendo al mundo del ensamblador por pura necesidad ; estoy utilizado la version del ensamblador que es para el ...
  #1 (permalink)  
Antiguo 12/08/2005, 08:56
Avatar de alexeiiw  
Fecha de Ingreso: agosto-2005
Ubicación: Guatemala
Mensajes: 73
Antigüedad: 19 años, 3 meses
Puntos: 1
Ensamblador

Una pregunta, hasta ahorita me estoy metiendo al mundo del ensamblador por pura necesidad ; estoy utilizado la version del ensamblador que es para el procesador 8086, solo necesito tener la logica para lo siguiente

Necesito llenar un vector de n posiciones con una palabra, ejemplo
vector(4)

M A P A

y a ese mismo vector, necesito darle vuelva

A P A M

Como seria la logica para el programa, porque el registro BX no lo puedo apuntar dos veces hay algun comando que me haga esto, o tengo que almacenarlo en otro registro y luego moverlo?

Gracias...
  #2 (permalink)  
Antiguo 12/08/2005, 09:52
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 6 meses
Puntos: 74
¿Que datos vas a tener como constantes del vector? Si la respuesta es ninguno y seran vectores de cadenas entonces vas a tener que hacer una funcion tipo strlen.

¿Tenes que darlo vuelta en el mismo buffer o podes hacerlo en otro?
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 12/08/2005, 10:25
Avatar de alexeiiw  
Fecha de Ingreso: agosto-2005
Ubicación: Guatemala
Mensajes: 73
Antigüedad: 19 años, 3 meses
Puntos: 1
Cita:
Iniciado por Eternal Idol
¿Que datos vas a tener como constantes del vector? Si la respuesta es ninguno y seran vectores de cadenas entonces vas a tener que hacer una funcion tipo strlen.

¿Tenes que darlo vuelta en el mismo buffer o podes hacerlo en otro?
exacto no tengo constantes en el vector y el cambio tiene que ser dentro del mismo buffer, yo pensaba tal vez ponerlo en un registro que al cambiarlo de posicion me hiciera esa funcion pero aun no lo he logrado...

Gracias...
  #4 (permalink)  
Antiguo 12/08/2005, 11:15
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 6 meses
Puntos: 74
Aca te dejo un codigo para MASM un poco bruto pero que funciona bien. VECTOR4 puede ser definido asi por ejemplo: VECTOR4 db "ABCDE", 0.

Código:
mov si, offset VECTOR4
call strlen
  
mov si, offset VECTOR4
mov di, si
add di, ax
  
revertir:
  mov dx, di
  dec dx
  .if (di == si) || (dx == si)
    jmp listo
  .endif
  dec di
  lodsb
  mov ah, byte ptr [di]
  mov byte ptr [si-1], ah
  mov byte ptr [di], al
  jmp revertir
listo:
Vendria a ser aproximadamente esto:

Código:
  char vector[] = "ABCD";
  char *startPtr = vector;
  char *endPtr = vector;
  endPtr += strlen(vector);

  for (; startPtr != endPtr ;)
  { 
    endPtr--;		
    if (startPtr == endPtr) { break; }
    char temp = *startPtr;
    *startPtr = *endPtr;	
    *endPtr = temp;		
    startPtr++;   
  }
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 12/08/2005, 15:31
Avatar de alexeiiw  
Fecha de Ingreso: agosto-2005
Ubicación: Guatemala
Mensajes: 73
Antigüedad: 19 años, 3 meses
Puntos: 1
Gracias, lo voy a probar y te cuento

Saludos...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:32.