Reemplazar caracter

Iniciado por SheKeL_C$, 5 Abril 2015, 22:43 PM

0 Miembros y 1 Visitante están viendo este tema.

SheKeL_C$

Estoy empezando con ensamblador y haciendo pequeños projectos...

Lo que quiero es recibir el path del propio ejecutable:

Supongo que habra otras formas de hacerlo, mas rapidas o quizas mas eficaces, pero quiero ir teniendo soltura con asm

Código (cpp) [Seleccionar]
invoke GetModuleFileName, 0, addr temp, 256
mov esi, esp
push esi

;Solo el path
.if i == 1

xor eax,eax 
loop_len:
mov dl,[esi]
    .if dl == 5Ch; \
    mov eax, esi
    .elseif dl == 0
    jmp done
    .endif
     
inc esi
jmp loop_len

done:
; Aqui teniendo la posicion del ultimo \ quiero sobreescribirla con un caracter nulo para cuando coja "esi" solo me devuelva el path
mov eax, 0
.endif


EDIT:

He logrado hacerlo poniendo esto

mov ebx, 0
mov [eax], ebx 



No abro otro hilo ya que esta duda esta relacionada con lo anterior...

Esto es lo que tengo:
ESI: apunta a toda la cadena
EAX: Apunta a una posicion dentro de esa cadena

Como hago para que esi "apunte" a la direccion que esta en EAX

Ejemplo:

String original: "Mi casa tiene dos ventanas"
ESI apunta a "M" y sigue hasta encontrar un caracter nulo, por lo tanto obtendria la string original
Si reemplzazo el caracter "d" de la palabra "dos", obtendre a partir de ESI => "Mi casa tiene ", ahora lo que quiero obtener es "os ventanas"

ivancea96

mov esi,eax no funcionaría?

cpu2

Porque no explicas mejor el problema, es dificil ayudarte de esta forma.

Citar
Esto es lo que tengo:
ESI: apunta a toda la cadena
EAX: Apunta a una posicion dentro de esa cadena

Como hago para que esi "apunte" a la direccion que esta en EAX

Si es esa la duda, @ivancea96 ya te dio la respuesta, simplemente haz un push a ESI por si luego quieres recuperar la anterior direccion.

CitarEjemplo:

String original: "Mi casa tiene dos ventanas"
ESI apunta a "M" y sigue hasta encontrar un caracter nulo, por lo tanto obtendria la string original
Si reemplzazo el caracter "d" de la palabra "dos", obtendre a partir de ESI => "Mi casa tiene ", ahora lo que quiero obtener es "os ventanas"

Que se supone que EAX esta apuntando a la "d"?

Bueno como no entiendo mucho como lo tienes organizado, te digo una forma de hacer eso, recorre la cadena hasta enontrar la "d", eliminala si quieres o si no a partir de localizar la "d" copia el offset, pero sumando desde ese caracter logico.

Un saludo.