Comparar comando
Este es el código de la función comparar_comando
de DariOS
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 comandoclear
con la que se va a comparar.
call comparar_cadena
- Llama a la función
comparar_cadena
que compara las dos cadenas apuntadas porSI
yDI
. - 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
yshell
. - 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.