You are on page 1of 5

Apêndice UM Utilização dos simuladores e depuradores

As características e comandos de depuração aqui apresentadas são válidas para os simuladores dos pseudo-computadores Neander e Ahmes, estudados nesta disciplina. Estes comandos serão válidos também para outras máquinas utilizadas na disciplina subseqüente de Arquitetura e Organização de Computadores I. Estes simuladores foram desenvolvidos para computadores PC e compatíveis, e permitem a execução e depuração de programas em linguagem de máquina escritos para os computadores NEANDER e AHMES. Os simuladores desenvolvidos incorporam grande parte das funções encontradas em depuradores comerciais, tais como: • edição de memória, • execução passo a passo, • inserção de pontos de parada (break-points), • janela de memória e • visualização do conteúdo dos registradores. Exercícios usando os simuladores visam principalmente familiarizar o usuário com os conceitos básicos de arquitetura de computadores, através de programação em linguagem de máquina e simbólica, e com as técnicas de depuração de tais programas. A.1 Simulador Os simuladores existem atualemnte em duas versões: para DOS e para Windows. Embora estas duas versões sejam funcionalemnte equivalentes, recomenda-se fortemente o uso da versão Windows, pois a versão DOS não será mais atualizada. Após carregado o simulador é mostrada a tela de trabalho. Preste bastante atenção a ela. A tela de trabalho é formada por campos de edição, campos de informação estática (cujo conteúdo não se altera) e campos de informação dinâmica (cujo conteúdo se altera em resposta a uma ação do usuário). A.2 Formato da tela Os elementos na tela do simulador são os seguintes: • Janela de Dados (Memória) mostra o conteúdo de 16 posições da memória, interpretadas como dados, e permite eventualmente alterar tais valores. • Registradores para o computador NEANDER é mostrado o conteúdo do acumulador (AC), do registrador de status (bits N e Z), do apontador de instruções (PC) e do registrador de instruções (RI). Para o AHMES apresenta-se a mesma informação, sendo a única diferença o maior número de bits do registrador de status (bits N, Z, C, V e B). Os demais computadores possuem outros conjuntos de registradores. A-1

linha de mensagens Os demais são campos de edição: . • valores negativos não são aceitos (devem ser entrados em complemento de dois) • as teclas de edição são válidas para alterações e correções • a tecla ENTER termina a entrada do número. mostra os mnemônicos e os códigos das instruções. basta digitar ENTER . Para aceitar este valor.janela de dados . e permite eventualmente alterar tais valores. interpretadas como programa. de acordo com a situação atual. valem as seguintes regras: • valores maiores que 25510 (decimal) e FF16 (hexadecimal) não são aceitos. A.4 Comandos de operação Os comandos que permitem editar e depurar programas usando os simuladores são apresentados nas próximas seções. Quando é necessária a entrada de um endereço. Caso contrário.tabela de códigos de instrução (pode ser ativada ou apagada pela tecla F1) . termina a entrada do número e inicia a edição do próximo endereço.3 Entrada numérica Entradas numéricas são necessárias em duas situações distintas: para fornecer um endereço solicitado pelo simulador ou para editar posições de memória. a utilização da tecla ENTER incrementa automaticamente o endereço. • Tabela de códigos de instrução para ajudar a quem possui memória volátil. • Break-point um ponto qualquer do programa. ou seja. o início da digitação de um novo número anula o valor padrão.break-point .menu de comandos Os campos a seguir são de informação dinâmica: .registradores . o simulador fornece um valor padrão. escolhido pelo usuário como ponto de parada (o simulador para no endereço indicado. O caractere sublinhado em cada comando pode ser usado para ativação via teclado. sem executar a instrução apontada). O valor do break-point é inicializado com o endereço superior de memória (255 decimal ou FF hexa). Os campos listados abaixo são de informação estática: .janela de programa A. Durante a entrada de valores na memória. Na digitação de valores numéricos. A-2 .• Janela de Programa (Memória) mostra o conteúdo de 16 posições da memória. • Menu de comandos mostra os comandos aceitos pelo simulador/depurador.

válidos tanto para a janela de dados como para a janela de programa. ou a tecla F2. dados) podem ser representados tanto em hexadecimal como em decimal. independente do fato deste endereço ser realmente o início de uma instrução ou não.F” todos os valores numéricos aceitos e mostrados pelo simulador são hexadecimais. 4 . Você pode escolher a forma que melhor lhe convém. cujo conteúdo é o mesmo. mas endereços e operandos são somente visualizados na forma numérica. Esta característica não se constitui propriamente um erro. Por exemplo. O simulador começa sempre a operar em hexadecimal. mas é típica da arquitetura de von Neuman. que permite alterar um byte de cada vez. use os comandos de edição. Comando “Hexadecimal” ou Icone “0. Cabe ao programador (ou ao sistema operacional) garantir que o programa inicie em um endereço coerente.A . tem-se a janela da direita. em uma interpretação a nível de linguagem assembler.9” todos os valores numéricos aceitos e mostrados pelo simulador são decimais. Um computador deste tipo executa automaticamente as instruções a partir do endereço apontado pelo PC. Caso entretanto se deseje iniciar a interpretação simbólica sempre no início do programa (endereço zero) e não no início da janela de programa. 4 . sendo apresentado na forma de mnemônico. códigos de instruções. Ambas apresentam um campo de edição. pode-se utilizar para isto o comando “Mnemônicos relativos”. A-3 . em decimal ou hexadecimal (dependendo da base escolhida). que permite uma completa liberdade no posicionamento de dados de instruções. 3 Editando um programa na memória Para alterar o conteúdo da memória.. 4 . mas foi interpretado de forma diferente. o endereço inicial é zero. A visualização inicia no endereço inicial da janela. e tem-se um programa que soma três posições. A . e inclusive no início das instruções. considerem-se as duas janelas abaixo (mostradas somente com 10 posições.. A . Note-se que o código da instrução é “desmontado”. através dos seguintes comandos: Comando “Decimal” ou Icone “0. em decimal): Endereço 0 1 2 3 4 5 6 7 8 9 10 Dado 32 128 48 129 48 130 16 128 240 0 0 Simbólico LDA 128 ADD 129 ADD 130 STA 128 HLT NOP NOP Endereço 1 2 3 4 5 6 7 8 9 10 11 Dado 128 48 129 48 130 16 128 240 0 0 0 Simbólico JMP 48 JMP 48 JMP 16 JMP 240 NOP NOP NOP Na janela da esquerda. Ao deslocar-se esta janela de uma posição (com a seta para baixo). 1 Hexadecimal x decimal Todos os valores numéricos (endereços. 2 Visualização Simbólica A Janela de Programa possui uma coluna que permite visualizar as instruções em modo simbólico. ou seja.

as posições 11 a 16 receberão os conteúdos originais das posições 10 a 15. A . pode-se mover um bloco que inicie no endereço 10 e termine no endereço 15 para o endereço de destino 11.1 . 6 Zerando uma área de memória Uma determinada área de memória pode ser zerada usando o comando “Zerar Memória”. A . 5 Imprimindo porções da memória O comando “Salver Texto” permite que trechos de programas possam ser transcritos para um outro arquivo. A . Assim. A-4 . 4 . A . a fim de que o usuário complete esta informação com comentários e outros dados. A . O comando de impressão não envia os dados diretamente para um impressora. O simulador solicita o endereço inicial e o endereço final da área de memória a ser movida e o endereço inicial da área de destino. Os dois modos iniciam a execução a partir do valor atual do apontador de instruções (PC). 4 Inspecionando a memória O comando “Ir para” permite o deslocamento rápido para qualquer posição da janela de programa.Movimento do cursor na janela de memória durante edição As duas janelas podem ter seu tamanho redimensionado. a menos das posições que coincidam com o bloco destino. Observação: o bloco fonte não é alterado. mas sim armazena toda a informação que se deseja imprimir em um arquivo. O simulador solicita o endereço inicial e o endereço final da área de memória a ser zerada. Para o modo contínuo. através do comando “Rodar” (F9). algumas teclas também podem ser usadas para movimentação: Tecla seta para baixo ou enter seta para cima page up page down Significado posição posterior de memória posição anterior de memória volta 16 posições avança 16 posições Tabela A. e a movimentação dentro da janela também. 4 . Forneça-os. 4 . para permitir a visualização de mais de 16 posições. para fins de documentação. por exemplo. O formato da impressão segue a base atualmente sendo utilizada (decimal ou hexadecimal). O bloco sempre é deslocado de forma a manter a sua integridade na posição de destino. 4 . o formato segue exatamente aquele da Janela de Programa. 7 Movendo blocos Blocos podem ser movidos na memória através do comando “Copiar Memória”. Com isto.A escolha de uma das duas janelas para edição é feita com o mouse . 8 Executando um programa Você pode executar um programa em dois modos: passo a passo ou contínuo. ou seja. 4 . Este pode ser ajustado utilizando-se o comando “Alterar PC” ou “Zerar PC” (F10). Uma vez ativada uma janela. voce pode determinar um ponto de parada na execução do seu programa.

tecla F8. tecla F9 ou icone) o simulador executa continuamente um programa. ou iconed e passo a passo). o simulador solicita um endereço para inicializar o AC. o simulador executa a instrução apontada pelo PC. deve ser fornecido um nome de arquivo. parando logo após. o simulador solicita um endereço para inicializar o PC. Carregar carrega um arquivo para a memória do computador sendo simulado. caso contrário o simulador indica erro e o comando é anulado. Após o comando. 9 Salvando e carregando arquivos Para os comandos que seguem. Os simuladores adicionam. Passo (F8) cada vez que o comando é ativado (via menu. Alterar PC permite fornecer um valor inicial para o apontador de instruções (PC). BP B reak point permite especificar um endereço de parada.Alterar AC permite fornecer um valor inicial para o acumulador (AC). automaticamente. A-5 . o ponto de parada ou o comando ser ativado novamente (freio de emergência). Arquivos de simuladores diferentes podem ou não ser compatíveis entre si. 4 . o sufixo “. O arquivo deve conter uma memória compatível com o computador sendo simulado. A .mem”. Após o comando. a partir da posição indicada pelo PC. até encontrar uma instrução de halt (HLT). dependendo da compatibilidade entre as respectivas arquiteturas. Rodar (F9) após o comando “Rodar” (via menu. Salvar grava o conteúdo da memória do computador sendo simulado. No campo BP da janela de programa pode ser fornecido o endereço para o break point.