[2021][Febrero][Problema 2]

Re: [2021][Febrero][Problema 2]

de Gustavo Brown -
Número de respuestas: 0

Tu solución tiene varios errores:

En BX tenés el desplazamiento al nodo. DS:[BX] apunta al puntero al string, no al contenido del string.

Por lo tanto tenes que dereferenciar el puntero:

   mov BX, [BX]  ;  cargo en BX la dirección del primer byte de string

Luego donde pusiste

cmp ds:[bx+si],0 ; poner el ds esta bien?

está bien poner DS: pero no es necesario porque por defecto para ese acceso a memoria igualmente se utiliza el segmento DS

Lo que está mal es que no indicas que la comparación es de a byte. Deberias poner

cmp byte ptr ds:[bx+si],0 

o más sencillo

cmp byte ptr [bx+si],0 

Luego previo a donde pusiste

push [bx + 2] ; nodo_siguiente

deberías volver a cargar el puntero al nodo (puesto que más arriba lo sobreescribi con la direccion del inicio de BX):

mov BX, [BP-2]  ; cargo en BX la direccion de actual

Sobre tu otra pregunta, podrías hacer pop AX directamente.

Saludos,
  Gustavo