segment .data
cadena db "Hola", 0
longitud_cadena db 4
tamanio_elemento db 1
caracter db "o"
segment .bss
nueva_cadena resb 5;nueva cadena con un tamaño máximo (en caso que no haya caracteres por eliminar) +1 para el caracter de fin de linea
segment .text
global _asm_main
_asm_main:
enter 0,0
pusha
;imprimimos la cadena original
mov eax, cadena
call print_string
;establecemos en cero los registros ya que trabajaremos con bl y al
mov eax,0h;almacenará cada caracter
mov ebx,0h;contador de indice de la nueva cadena(se incrementará)
mov ecx,0h;contador de indice de la cadena original(se decrementará)
mov edx,0h;contador de indice de la cadena original(se incrementará)
mov cl, byte[longitud_cadena];contador
bucle:
mov dl, byte[longitud_cadena];contador
sub dl,cl
mov al, byte[cadena+edx]
cmp al, byte[caracter]
jz fin_copiar_caracter;si el caracter es igual al buscado no copia el caracter en la nueva cadena
mov byte[nueva_cadena+ebx],al
inc ebx
fin_copiar_caracter:
loop bucle
mov byte[nueva_cadena+ebx],0h;caracter de fin de cadena
;imprime la nueva cadena
mov eax, nueva_cadena
call print_string
popa
mov eax, 0
leave
ret