A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

João Ferreira, Dez 2003STRINGS, 1/6 Definição de String String (sentido lato) -> um string é um conjunto de valores (não necessariamente interpretáveis.

Apresentações semelhantes


Apresentação em tema: "João Ferreira, Dez 2003STRINGS, 1/6 Definição de String String (sentido lato) -> um string é um conjunto de valores (não necessariamente interpretáveis."— Transcrição da apresentação:

1 João Ferreira, Dez 2003STRINGS, 1/6 Definição de String String (sentido lato) -> um string é um conjunto de valores (não necessariamente interpretáveis como código ASCII!) contíguo na memória. String de algarismos decimais 90765021 Ex.: Memória (bytes)

2 João Ferreira, Dez 2003STRINGS, 2/6 Instruções de manipulação de Strings movsb(w) (move string of bytes/words) cmpsb(w) (compare string of bytes/words) mov [di],[si] Origem: (ds:)si (source index) Destino: (es:)di (destination index) inc si inc di dec si dec di Flag DF? 0 (cld)1 (std) Funciona analogamente a movsb. Equivale a um cmp normal...

3 João Ferreira, Dez 2003STRINGS, 3/6 Processando strings rep -> Usado com uma instrução de manipulação de strings, repete-a ciclicamente usando CX como contador. Ex.: rep movsb ; copia CX bytes de um string apontado por SI para buffer apontado por DI repe (repne) -> Funcionam como rep apenas enquanto o byte actual da origem for = () ao byte actual do destino. Ex.: repe cmpsb ; verifica igualdade entre dois strings

4 João Ferreira, Dez 2003STRINGS, 4/6 Exemplo (Ex. 6, Folha 3) ; Programa para efectuar a cópia de um ; string. ; Serve como esqueleto para outros programas feitos pelos alunos. s_pilha segment para stack 'stack dw 100h dup(?) s_pilha ends s_dados segment para public 'data ; String origem str_origem db Eu sou um string!,0 buffer_dest db 255 dup (?) s_dados ends s_codigo segment para public 'code assume cs:s_codigo,ss:s_pilha,ds:s_dados main proc near INICIO: ; necessário e óbvio... mov AX,s_dados mov DS,AX ; Muito importante!: mov ES,AX ; ES aponta para ; o segmento de dados lea SI, str_origem lea DI, buffer_dest push SI push DI call copia_str ; fim de programa.exe mov ah,4ch int 21h main endp

5 João Ferreira, Dez 2003STRINGS, 5/6 Exemplo (cont.) copia_str proc near push BP mov BP,SP push SI push DI push CX mov SI, [BP + 6] mov DI, [BP + 4] push SI call tam_str pop CX ; Em CX está o tam da str inc CX ; Assim inclui-se o 0 rep movsb ; Copia-se string pop CX pop DI pop SI pop BP ret 4 copia_str endp s_codigo ends end main ; ou então end INICIO

6 João Ferreira, Dez 2003STRINGS, 6/6 Exercício Comparar strings -> Faça um programa que use uma rotina (passagem de parâmetros pela pilha) para comparar dois strings. Verificar se um substring se encontra num string -> Faça um programa que use uma rotina (passagem de parâmetros pela pilha) para este efeito. Conselho: Consulte-se sempre que possível os Norton Guides!


Carregar ppt "João Ferreira, Dez 2003STRINGS, 1/6 Definição de String String (sentido lato) -> um string é um conjunto de valores (não necessariamente interpretáveis."

Apresentações semelhantes


Anúncios Google