segunda-feira, 4 de maio de 2009

Sobre o comando Debug do MS-DOS/Windows

Ao se começar a aprender uma linguagem de programação em assembly, é de suma importância aprender a usar um programa do tipo "debugger" (depurador, purificador, refinador ou debugador aportuguezado). Um debugger exibe o conteúdo da memória e permite a visualização dos registradores e variáveis enquanto eles são modificados. Você pode analisar um programa linha-a-linha (técnica chamada tracing) tornando mais fácil encontrar erros de lógica. Você pode usar o Debug.exe para testar instruções em assembler, tentar novas idéias de programação ou para cuidadosamente analisar seus programas. É requerida muita confiança para se escrever um programa em linguagem assembly e rodá-lo diretamente do DOS pela primeira vez! pois se você esquecer algum detalhe pode acabar com um programa se aventurando aondo não deveria, ou simplesmente travando, logo usar um programa como o Debug é fundamental para controlar, ou visualizar, o comportamento de seu programa assembly.

Funções do debugador(depurador):
* Montar programas curtos;
* ver o código-fonte de um programa junto com seu código de máquina;
* ver os registradores e "bandeiras" (flags) da CPU;
* rastrear ou executar um programa, observando as mudanças das variáveis;
* entrar com novos valores na memória;
* buscar por valores binários ou ASCII na memória;
* mover um bloco de memória de um logar para outro;
* preencher um bloco de memória;
* carregar e escrever arquivos de disco e setores.

Debug é o chamado depurador a nível de assembly porque ele só exibe mnemônicos em assembly e instruções de máquina. Mesmo se você usá-lo para depurar um programa em C++, por exemplo, você não verá o código-fonte do programa. Ao invés, verá uma desmontagem (disassembly) das instruções a nível de máquina do programa.

Para rastrear (analisar) ou executar um programa em linguagem de máquina com o Debug, digite o nome do programa como um parâmetro de linha de comando. Por exemplo, para depurar o programa chamado amostra.exe, digite o seguinte comando no prompt do DOS, sem as aspas: "debug amostra.exe". Se pudéssemos ver a memória no DOS após digitar tal comando, apareceria o DOS carregado na área mais baixa, seguido do Debug e o programa amostra.exe logo após o Debug.

Sumário dos comandos em Assembly:
Os comandos do Debug podem ser divididos em 4 categorias: criação/depuração de programas, manipulação de memória, miscelânea e entrada-saída:

1. Criação/depuração de programas

A - monta(assemble) em programa usando instruções mnemônicas;
G - executa o programa atualmente na memória;
R - exibe os conteúdos dos registradores e sinalizadores(flags);
P - continua após uma instrução, procedimento ou loop;
T - rastreia uma única instrução;
U - desmonta a memória em mnemônicos do montador;

2. Manipulação de memória

C - compara uma faixa de memória com uma outra;
D - despeja (mostra) os conteúdos da memória;
E - entra com bytes na memória;
F - preenche uma faixa de memória com um único valor;
M - move bytes de uma faixa de memória para outra;
S - busca por valor(es) específico(s) numa faixa de memória;

3. Miscelânea

H - desempenha adição e subtração em hexadecimal;
Q - sai do Debug e volta ao DOS;

4. Entrada-saída

I - entra com um byte de uma porta;
L - carrega dados do disco;
O - envia um byte a uma porta;
N - cria um nome de arquivo para uso com os comandos L e W;
W - escreve dados da memória para o disco.

Para maiores informações acesse:
http://kipirvine.com/asm/debug/Debug_Tutorial.pdf
http://mirror.href.com/thestarman/asm/debug/debug.htm/
http://www.krull.com.br/geo/prog/asm/tut01pt.htm

Nenhum comentário:

Postar um comentário