• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Gravecard

[Assembly] Programa que verifica se uma string está contida em outra

1 mensagem neste tópico

Bem a minha dúvida é a seguinte, estava a resolver uns exames de anos passados de Arquitectura de Computadores e tinha lá um exemplo de um exercício que era verificar se uma string introduzida pelo utilizador estava contida numa string já definida no segmento de dados. Era obrigatório o uso de uma função para ler uma string que já a fiz:

;***** FICHEIRO le_str2.asm *****

le_string       PROC

; le uma string para a posicao de memoria ds:si

;                                      finalizando com $

; Trata o caracter "BackSpace" (

    ; salvaguarda contexto

    push ax

    push bx

    push dx

    push si

    pushf

    mov bx, si  ; copia para bx o endereço do inicio do string

prox_caracter:

    mov ah, 7h      ; ler caracter sem fazer o echo

    int 21h         ; (al)

    cmp al, 13      ; se caracter = 13 fim

    je fim_string 

    cmp al, 8       ; salta se caracter = backspace

    je backspace

    mov ah, 2h 

    mov dl, al   ; escreve o caracter no ecran

    int 21h

    mov BYTE PTR [si], al   ; coloca caracter na memoria

    inc si                  ; incrementa ponteiro

    jmp prox_caracter

backspace:

    cmp bx, si   ; se o string esta' vazio nao faz nada

    je prox_caracter

    dec si      ; decrementa ponteiro

    mov ah, 2h

    mov dl, al    ; escreve o backspace no ecran

    int 21h

    mov dl, 32   ; apaga com space

    int 21h

    mov dl, 8    ; repoe a posicao do cursor

    int 21h

    jmp prox_caracter

fim_string:

    mov BYTE PTR [si], '$'   ; fim de string para a 09h

    ; restaura contexto

    popf

    pop si   

    pop dx 

    pop bx

    pop ax

    ret

le_string       ENDP

Agora a minha dúvida está na forma de comparar a string introduzida pelo utilizador com a já definida (no caso Feliz Ano Novo). Se alguém me puder dar uma luz, agradecia  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora