Anexo ao Trabalho de Programação 1998/1999

1  Programas

Tal como indicado no enunciado principal, uma das tarefas a realizar durante o desenvolvimento do trabalho da cadeira é a escrita de alguns programas no assembly da máquina XIM (ver abaixo).  Para que esses programas possam ser executados pelo simulador a desenvolver, é necessário traduzi-los para a linguagem máquina do XIM.  Para isso deve ser usado o assemblador disponibilizado aqui.  Para executar o assemblador, deve-se abrir uma janela "Command Prompt" no Window NT e dar o comando
ximasm divide.asm divide.xim
de modo a que o assemblador traduza o código assembly no ficheiro divide.asm gerando código máquina que será guardado no ficheiro divide.xim.  Claro está que os nomes dos ficheiros podem ser outros!  Mas pode começar por usar os ficheiro indicados para experimentar o assemblador.  Pode experimentar também o programa de ordenação ordena.asm e ordena.xim, que lê um número n seguido de n valores inteiros que depois escreve por ordem crescente.

Para possibilitar aos alunos a compreensão mais profunda do enunciado já disponibilizado, fornece-se também aqui uma versão executável dum simulador equivalente aos que os alunos devem produzir.  Experimente usá-lo para executar o programa divide.xim ou o programa ordena.xim.

Para obter os ficheiros indicados fazer shift-click no Netscape.  No #$%@ do IE, fazer right-click e escolher Save target as (mas tenha atenção que as extensões ficam .htm mesmo que se alterem na janela de Save!).

Nota: se não conseguiu correr os programas Xim disponibilizados (assembly [.asm] e código máquina [.xim]), isso deveu-se provavelmente a um erro na sua leitura pelo navegador WWW que usou.  Nesse caso peça a um dos docentas da cadeira uma versão em disquete.

2  Programas assembly a desenvolver

Há quatro enunciados diferentes, E0, E1, E2 e E3.  Cada grupo deverá resolver apenas um deles.  Se o número do grupo for n esse grupo deverá resolver o enunciado Em sendo m = n % 4.  Por exemplo, o grupo ETI13 deverá resolver o enunciado E1.  Os números dos grupos são os publicados na última pauta afixada.

Todos os programas deverão ser adequadamente comentados, nomeadamente contendo a PC a CO e a CI de cada ciclo usado.

Enunciado E0

Escreva um programa no assembly do XIM que leia um número inteiro n seguido de uma sequência de n números inteiros e escreva o maior desses n números inteiros.  Admita que n > 0.

Enunciado E1

Escreva um programa no assembly do XIM que leia um número inteiro n seguido de uma sequência de n números inteiros e de dois números inteiros min e max e escreva 1 se todos os n números da sequência se encontram entre min e max e 0 no caso contrário.

Enunciado E2

Escreva um programa no assembly do XIM que leia um número inteiro n seguido de uma sequência de n números inteiros e de um número inteiro x e escreva no ecrã o índice da primeira ocorrência de x na sequência de números inteiros introduzida.  Se x não existir na sequência o programa deve escrever no ecrã o número n.

Enunciado E3

Escreva um programa no assembly do XIM que leia um número inteiro n seguido de uma sequência de n números inteiros e escreva no ecrã o valor da soma de todos os números inteiros introduzidos.