Buenas noches, me gustaría saber si mi solución esta bien planteada, ya que es muy diferente a la de la solución dada y ademas tengo unas preguntas para realizar:
1)Cuando hago cmp ds:[bx+si],0 esta bien poner el ds? Ya que en la solución no aparece.
2) Despues de hacer el call largos, podria hacerle pop ax directamente?
proc largos
push bp
mov bp,sp
push bx
push ax
push si
push dx
mov bx, [bp+4] ; bx= nodo_actual
cmp bx, 0
je null
xor si,si
xor ax,ax
loop:
cmp ds:[bx+si],0 ; poner el ds esta bien?
je fin1
inc si ; largo + 1
jmp loop
null:
xor ax, ax
jmp fin
fin1:
push [bx + 2] ; nodo_siguiente
call largos
pop dx
add ax,dx ; ax es lo que retorno
;dx = largos(act->sigui)
add ax, si ; largo
fin:
mov [ bp+4],ax ; pone el resultado abajo de la ip en el stack
pop dx
pop si
pop ax
pop bx
pop bp
ret
endp largos
Desde ya muchas gracias, saludos.
(Editado por Gustavo Brown [formateo de código] - envío original miércoles, 13 de diciembre de 2023, 20:24)