Skip to main content

Comparar comando

Este es el código de la función comparar_comando de DariOS

comparar_comando

Explicación de la función comparar_comando

La función comparar_comando se utiliza para comparar la cadena de entrada del usuario con una cadena conocida (cadena_<comando>). Si coinciden, se ejecuta el comando <comando>, si no, se muestra un error.


Propósito

Comparar el comando introducido en el buffer con comandos conocidos para ejecutar la acción correspondiente.


Lógica paso a paso

comparar_comando:
  • Etiqueta que marca el inicio de la función principal.
call comparar_comando_codigo
  • Llama a la subrutina comparar_comando_codigo que realiza la comparación.
ret
  • Finaliza la función y vuelve al llamador.

comparar_comando_codigo:
  • Subrutina que contiene la lógica de comparación.
mov si, buffer_shell
  • Carga en SI la dirección del buffer donde está el comando introducido por el usuario.
mov di, cadena_clear
  • Carga en DI la dirección de la cadena del comando clear con la que se va a comparar.
call comparar_cadena
  • Llama a la función comparar_cadena que compara las dos cadenas apuntadas por SI y DI.
  • El resultado de la comparación se guarda en el registro BL: 1 si son iguales, otro valor si no.
cmp bl, 1
  • Compara el resultado de la comparación con 1 (igualdad).
je clear
  • Si las cadenas coinciden, salta a la etiqueta <comando> para ejecutar ese comando.
jmp error_comando
  • Si no coinciden, salta a error_comando para manejar un comando no reconocido.
jmp shell
  • Salto a shell para esperar el siguiente comando.

Requisitos

  • Deben estar definidas las etiquetas y funciones: buffer_shell, cadena_<comando>, comparar_cadena, <comando>, error_comando y shell.
  • El registro BL es utilizado para el resultado de la comparación.

Uso típico

Se llama a comparar_comando para comprobar si el comando escrito es <comando> y actuar en consecuencia.