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
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"
mov esi,eax no funcionaría?
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.