Você está na página 1de 36

LICENCIATURA EM ENGENHARIA INFORMTICA E DE COMPUTADORES

Arquitectura de Computadores

Guia de Laboratrio

2011 / 2012

INSTITUTO SUPERIOR TCNICO

Arquitectura de Computadores Guia de Laboratrio 2011/2012

Plano das aulas


1 Aula: 1 Trabalho

Introduo ao ambiente de laboratrio. Introduo linguagem de programao Assembly: instrues de transferncia de dados e modos de endereamento. Mtodos de teste e de correco de programas.
2 Aula: 2 Trabalho

Instrues aritmticas, lgicas e de salto. Concepo, teste e correco de pequenos programas.


3 Aula: 3 Trabalho

Noo de rotinas em Assembly e de mtodos de passagem de parmetros.


4 Aula: 4 Trabalho

Interaco com dispositivos de entrada e sada. Anlise do sistema de interrupes do processador P3.
5 Aula: Resoluo de Exerccios

Aula de preparao para o primeiro teste.


6 Aula: 1 parte do Projecto

O Projecto tem por objectivo avaliar a capacidade dos alunos de conceber, desenvolver e testar um programa em linguagem Assembly, utilizando os conceitos adquiridos nas aulas anteriores. Primeira abordagem ao projecto usando um fluxograma como forma de estruturar o programa a desenvolver.
7 Aula: 5 Trabalho

Introduo micro-programao. Anlise de uma instruo Assembly em termos de micro-programao. Modificao do funcionamento de uma instruo Assembly.
8 Aula: Apoio ao Projecto

Esclarecimento de dvidas e apoio ao desenvolvimento do projecto.


9 Aula: 2 parte do Projecto

Implementao de uma nova instruo Assembly que ser usada no projecto.


10 Aula: 3 parte do Projecto (concluso)

Visualizao e avaliao do estado de funcionamento do projecto.


11 Aula: Resoluo de Exerccios

Aula de preparao para o segundo teste.


12 Aula:

Discusso oral em que ser atribuda a classificao final da componente laboratorial.

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

1 Trabalho
Objectivos Introduo ao ambiente de laboratrio. Introduo linguagem de programao Assembly: instrues de transferncia de dados e modos de endereamento. Familiarizao com os mtodos de teste e de correco de programas. Tpicos
1. Funcionamento do laboratrio

1.1 Entrega da ficha do trabalho Os alunos devero ser portadores da ficha do trabalho em papel, devidamente preparada, para que a possam entregar no fim da aula de laboratrio. Notar que muitas questes podem (e devem) ser preparadas antecipadamente. Quando houver lugar entrega de listagens de programas, estas devem vir tambm j impressas, podendo ser corrigidas ou modificadas manualmente no laboratrio. 1.2 Estrutura de directorias e salvaguarda do trabalho realizado Os alunos iro usar espao temporrio nos discos dos computadores do laboratrio. Devem, por isso, ter o cuidado de copiar todo o trabalho que efectuarem para as suas reas pessoais. O corpo docente no se responsabiliza por trabalhos que tenham sido exclusivamente armazenados no PC do laboratrio.
2. Introduo ao ambiente de laboratrio

2.1 Ferramentas utilizadas para a programao em Assembly - Editor de texto: qualquer um dos existentes - Assembler: p3as 2.2 Ferramenta utilizada para o teste e execuo de programas - Simulador: p3sim
3. Introduo linguagem de programao Assembly

3.1 Estrutura de um programa 3.2 Directivas Assembly 3.3 Instrues de transferncia de dados Transferncias: - registo registo - registo memria - memria registo - memria memria Exemplificao dos modos de endereamento
4. Familiarizao com os mtodos de teste e correco de programas

Utilizao dos comandos: Janela Texto, Correr, Instruo, Escreve Registo e Escreve Memria. Nota: No final da aula dever ser entregue a Ficha 1 devidamente preenchida.

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

Enunciado
1. Comear uma sesso

Entre em sesso no PC, podendo optar por qualquer um dos sistemas operativos disponveis (Microsoft Windows ou Linux). Crie uma pasta temporria para o seu grupo e copie, para essa mesma pasta, os ficheiros aula1_1.as e aula1_2.as que esto disponveis na pgina da cadeira e se encontram listados no Anexo I.
2. Introduo ao ambiente de laboratrio

Utilizando o ficheiro aula1_1.as execute as seguintes funes: 2.1 Proceda assemblagem do programa, gerando assim o ficheiro executvel (aula1_1.exe) e o ficheiro de referncias (aula1_1.lis). Para isso proceda como se indica em seguida:
> p3as aula1_1.as

<enter>

obtendo:

p3as, Version 1.3, last modified Mar 20 2006 Assembling completed with success, object file: aula1_1.exe References file: aula1_1.lis

Examine o ficheiro aula1_1.lis. Anote o valor dos endereos correspondentes s etiquetas VarTexto1, Dummy, LeCar, Inicio e Halt. Desenhe o mapa de memria deste programa zonas da memria ocupadas pelo cdigo e pelos dados (a ttulo de exemplo, na ficha j se encontra indicada a zona ocupada pelos dados; recorda-se que o cdigo tem incio no endereo 0 devendo identificar em que endereo guardada a ltima instruo). Nota: Para visualizar a zona de cdigo no simulador usar o menu Definies escolher Zona de Memria e indicar o valor 0 no primeiro campo. 2.2 Edite o ficheiro aula1_1.as e insira ORIG 0064h imediatamente antes da seguinte linha do programa
Inicio: MOV R7, SP_INICIAL

Repita o procedimento do ponto anterior (2.1), anotando os novos valores das etiquetas Inicio e Halt, e desenhe novamente o mapa de memria do programa modificado. 2.3 Utilize o simulador p3sim para testar e executar o programa. Para isso, evoque o simulador da seguinte forma:
> p3sim

<enter>

Identifique a informao contida nas vrias janelas, bem como os diversos comandos disponveis. Seguidamente, efectue o carregamento do programa executvel aula1_1.exe, atravs da execuo da opo Carrega Programa, existente no menu Ficheiro. Verifique a alterao do contedo da janela de cdigo. Analise o cdigo desassemblado (que encontra na janela de cdigo) e compare-o com o do programa fonte (ficheiro aula1_1.as).

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

2.4. Antes de iniciar a execuo do programa, abra a janela de Entradas/Sadas. Para tal, seleccione a opo Janela Texto, existente no menu Ver. Seguidamente, execute o programa, seleccionando o boto Corre.
3. Introduo linguagem de programao Assembly

Utilizando o ficheiro aula1_2.as execute as seguintes funes: 3.1 No troo de programa que se encontra representado na Ficha 1 identifique: a) As zonas de definio de constantes, de dados e de cdigo; b) Incio e o fim do programa principal; c) As pseudo-instrues existentes. Descreva as suas funes. 3.2 Sem recorrer ao simulador, preencha a Tabela 1 (registos R0 a R3) da referida ficha. 3.3 Proceda gerao do ficheiro executvel e ao seu carregamento no simulador, utilizando os procedimentos descritos nas Seces 2.1 e 2.2. Execute o programa instruo a instruo, seleccionando o boto Instruo. Identifique os modos de endereamento presentes em cada instruo e preencha a Tabela 2 da Ficha 1. Justifique a diferena de comportamento do registo R0. 3.4 Indique que valor se encontra na posio de memria 8003h e justifique que valor esse. 3.5 Atravs da utilizao do comando Escreve Registo, do menu Depurao, inicialize os registos R1 a R7 com o valor FFFFh. Utilizando o comando Escreve Memria, do mesmo menu, inicialize as posies de memria correspondentes s variveis VarUmByte e VarOutroByte, tambm com o valor FFFFh. Repita a execuo do programa utilizando o comando Reinicia seguido de Corre e depois Parar. Compare a informao dos registos com a informao que registou na Tabela 1 e registe as alteraes verificadas na Tabela 3. 3.6 Introduza no referido programa um conjunto de instrues de transferncia de dados que permitam realizar as operaes que se descrevem nas alneas seguintes. a) Utilizando o modo de endereamento directo, copiar o contedo do registo R4 para a posio de memria VarOutroByte. b) Utilizando o modo de endereamento indirecto por registo, copiar o contedo do registo R6 para a posio de memria VarUmaWord. c) Copiar o contedo da posio de memria VarOutroByte para a posio de memria VarUmByte.

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

Ficha 1 - Respostas s questes do 1 Trabalho


Grupo: _____ N _________ N _________ N _________ Questes:
2. Introduo ao ambiente de laboratrio

Turno: Nome: Nome: Nome:

______ ______________________________________ ______________________________________ ______________________________________

2.1 Endereos das etiquetas: VarTexto1 = __________


LeCar

Dummy Halt

= __________

= __________

Inicio

= ___________ FFFFh

= __________

Mapa de memria:

80DFh (Dummy) Dados 8000h (VarTexto1)

__________ Cdigo 0000h 2.2 Novos endereos das etiquetas: Inicio = __________ Mapa de memria: FFFFh
Halt

= __________

0000h
Instituto Superior Tcnico Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

3. Introduo linguagem de programao Assembly

3.1 a) e b) Identifique a zona de definio de constantes, de dados (variveis) e de cdigo. Identifique o incio e o fim do programa.
; Programa aula1_2.as LetraA ConstUmByte ConstUmaWord EQU EQU EQU ORIG WORD WORD WORD STR ORIG MOV MOV MOV MOV MOV MOV MOV MOV 'A' 0fh 65535 ; caracter ASCII ; hexadecimal ; decimal

VarUmByte VarOutroByte VarUmaWord VarUmaString

8000h 12h 0fh 1234h 'Arquitectura de Computadores' 0000h R0, LetraA R1, ConstUmByte R2, ConstUmaWord R3, R2 R4, M[R1+VarOutroByte] R5, M[VarOutroByte] R6, M[SP] R7, M[PC+ConstUmByte]

Inicio:

; Aqui devera' colocar o seu codigo Halt: BR Halt

3.1 c) Identifique as pseudo-instrues e descreva a funo de cada uma. ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ 3.2 Por anlise do programa preencha a Tabela 1 (registos R0 a R3).
Tabela 1 - Contedo dos registos depois da execuo do programa "aula1_2.exe"

R0

R1

R2

R3

R4 -

R5 -

R6 -

R7 -

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

3.3 Preencha a Tabela 2.


Tabela 2 - Identificao dos modos de endereamento Instruo
MOV R0, LetraA MOV R1, ConstUmByte MOV R2, ConstUmaWord MOV R3, R2 MOV R4, M[R1+VarOutroByte] MOV R5, M[VarOutroByte] MOV R6, M[SP+3] MOV R7, M[PC+ConstUmByte]

Modo de endereamento

Comente o comportamento do registo R0: ________________________________________________________________ ________________________________________________________________ 3.4 Valor de M[8003h] = ________ Explique a que corresponde esse valor: ________________________________________________________________ ________________________________________________________________ 3.5 Proceda como indicado no enunciado e preencha a Tabela 3.
Tabela 3 - Contedo dos registos depois da execuo do programa "aula1_2.exe"

R0

R1

R2

R3

R4

R5

R6

R7

3.6 Indique instrues que satisfaam ao requerido no enunciado. a) _______________________________________________________________ ________________________________________________________________ b) _______________________________________________________________ ________________________________________________________________ c) _______________________________________________________________ ________________________________________________________________

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

2 Trabalho
Objectivos Instrues aritmticas, lgicas e de salto. Concepo, teste e correco de pequenos programas. Tpicos
1. Instrues aritmticas, lgicas e de salto 2. Programao Assembly

2.1 Anlise de um programa 2.2 Construo de pequenos programas a partir de uma especificao simples
3. Familiarizao com os mtodos de teste e de correco de programas

Utilizao dos comandos: Pontos de Paragem e Continua Nota: No final da aula dever ser entregue a Ficha 2 devidamente preenchida.

Enunciado
1. Instrues de salto. Anlise de um programa

Copie para uma pasta temporria o ficheiro aula2.as que est disponvel na pgina da cadeira e se encontra listado no Anexo I. 1.1 Por inspeco do referido ficheiro, identifique: a) e b) As instrues de salto incondicional e de salto condicional. Para cada instruo identificada indique em que condies que o salto ocorre e para onde. c) A funo realizada pelo programa desde o incio at etiqueta Meio. d) A funo realizada pelo programa desde a etiqueta Meio at Fim. 1.2 Com recurso ao simulador p3sim execute o programa at etiqueta Meio. Para tal, proceda como a seguir se indica: - Comece por localizar, na janela de cdigo, a linha correspondente a essa etiqueta (Meio), recorrendo informao existente no ficheiro de referncias (aula2.lis). - Introduza um ponto de paragem nessa linha. Para tal, seleccione a linha, seleccione o comando Pontos de Paragem, existente no menu Depurao, e seleccione os botes Adiciona e Fecha. Seguidamente, execute o programa, seleccionando o boto Corre. Confirme a funo identificada em 1.1.b), por anlise do contedo da janela de memria. 1.3 Finalize a execuo do programa, seleccionado o boto Continua at ser atingida a etiqueta Fim. Confirme a funo identificada em 1.1.c), por anlise do contedo da janela de memria.

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

10

1.4 Na janela onde se encontra o contedo da memria localize a zona de memria onde est codificada a instruo BR Fim (para visualizar a zona de cdigo no simulador usar o menu Definies escolher Zona de Memria e indicar o valor 0 no primeiro campo). Troque a instruo BR Fim pela instruo JMP Fim. Verifique novamente a codificao da instruo de salto. Justifique as alteraes observadas.
2. Instrues aritmticas e lgicas. Concepo de programas

2.1 Utilizando a linguagem Assembly do simulador P3, conceba um programa para realizar cada uma das funes que a seguir se descrevem. a) Soma de dois nmeros positivos de 32 bits. Os nmeros a somar devero estar em memria. Como cada posio de memria s contm 16 bits, cada nmero ocupar duas posies de memria. Assuma que o primeiro nmero comea na posio de memria com endereo Num1 e o segundo em Num2, devendo o resultado ser armazenado em duas posies de memria a partir do endereo Soma. Preencha os valores iniciais das posies de memria dos operandos atravs do comando Escreve Memria. NOTAS IMPORTANTES: - A palavra mais significativa de cada nmero ocupa a posio de memria de endereo mais elevado. - A operao de adio efectua-se atravs de registos, de acordo com o seguinte esquema: (R1,R2) (R1,R2) + (R3,R4)
(R1 e R3 contm as palavras mais significativas dos nmeros)

b) Descompactao da informao existente numa zona de memria. Cada nibble (conjunto de 4 bits) de uma palavra ser colocado numa posio de memria separada. NOTAS IMPORTANTES: - Existe uma posio de memria com o nmero de palavras a descompactar; - Tem que ser reservado espao em memria onde fiquem colocados os dados da descompactao. Exemplo:
DadosIniciais NumDados DadosFinais STR WORD TAB 1234h, 5678h 2 8

Em memria, com incio na posio DadosIniciais, fica: 1234 5678 Aps descompactao, a memria a partir da posio DadosFinais, fica: 0001 0002 0003 0004 0005 0006 0007 0008

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

11

Ficha 2 - Respostas s questes do 2 Trabalho


Grupo: _____ N _________ N _________ N _________ Questes:
1. Instrues de salto. Anlise de um programa

Turno: Nome: Nome: Nome:

______ ______________________________________ ______________________________________ ______________________________________

1.1 Analise o programa aula2.as e identifique: a) Instrues de salto incondicional (indique quando salta e para onde) ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ b) Instrues de salto condicional (indique quando salta e para onde) ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ c) Funo do programa at etiqueta Meio. ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ d) Funo do programa da etiqueta Meio at Fim. ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ 1.4 Indique qual a codificao das instrues BR Fim e JMP Fim e explique as diferenas. ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

12

2. Instrues aritmticas e lgicas. Concepo de programas

2.1 a) Soma de dois nmeros positivos de 32 bits. Listagem do programa desenvolvido (ou anexe folha):

b) Descompactao de palavras de 16 bits. Listagem do programa desenvolvido (ou anexe folha):

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

13

3 Trabalho
Objectivos Noo de rotinas em Assembly e de mtodos de passagem de parmetros. Tpicos
1. Rotinas e mtodos de passagem de parmetros. Instrues de manipulao da pilha.

1.1 Instrues Assembly associadas utilizao de rotinas 1.2 Instrues de manipulao da pilha. 1.3 Mtodos de passagem de parmetros.
2. Concepo de programas com rotinas que permitam aplicar os conceitos anteriores.

Nota: No final da aula dever ser entregue a Ficha 3 devidamente preenchida.

Enunciado
1. Anlise e alterao de um programa que usa rotinas.

1.1 Analise o programa aula3.as e identifique as rotinas existentes, as suas funcionalidades e os mtodos de passagem de parmetros utilizados. 1.2 Introduza um ponto de paragem no incio da rotina EscString, utilizando o procedimento descrito na alnea 1.2 do trabalho anterior. Execute o programa at ao ponto de paragem e, a partir da, execute a rotina EscString instruo a instruo, incluindo a rotina EscCar e respectivo retorno (RETN). Analise a evoluo da pilha. 1.3 Analise o programa e identifique o mtodo de passagem de parmetros da rotina CountBits. 1.4 Abra a Janela de Texto do simulador e execute o programa. Verifique que o nmero de bits a 1 da palavra processada est correcto (nmero introduzido premindo uma tecla entre 0 e 9). 1.5 Modifique o programa de modo a que a passagem de parmetros da rotina CountBits seja feita pela pilha. 1.6 Tomando como ponto de partida o programa da alnea anterior reescreva a rotina CountBits de modo a que o clculo do nmero de bits a 1 seja efectuado de forma recursiva (a rotina chama-se a si prpria). 1.7 Modifique a rotina EscNum de modo a escrever nmeros com dois dgitos. Para a testar, modifique o programa (de preferncia a verso recursiva) para passar a contar o nmero de bits a 0. Sugesto: Notar que basta complementar o parmetro de entrada, para que os bits a 0 sejam convertidos em 1 e viceversa, podendo pois usar a rotina CountBits j desenvolvida, sem qualquer alterao.

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

14

Ficha 3 - Respostas s questes do 3 Trabalho


Grupo: _____ N _________ N _________ N _________ Questes:
1. Anlise e alterao de um programa que usa rotinas.

Turno: Nome: Nome: Nome:

______ ______________________________________ ______________________________________ ______________________________________

1.3 Indique o mtodo de passagem de parmetros (entrada e sada) da rotina CountBits. ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ 1.5 Modifique o programa de modo a que a passagem de parmetros da rotina CountBits seja feita pela pilha. Apresente o cdigo relativo rotina e sua chamada (ou anexe folha).

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

15

1.6 Reescreva a rotina CountBits de modo a que o clculo do nmero de bits a 1 seja feito de forma recursiva (a passagem de parmetros deve ser feita pela pilha). Apresente o cdigo da nova rotina (ou anexe folha).

1.7 Modifique a rotina EscNum de modo a escrever nmeros com dois dgitos. Para a testar, modifique o programa (de preferncia a verso recursiva) para passar a contar o nmero de bits a 0. Sugesto: Notar que basta complementar o parmetro de entrada, para que os bits a 0 sejam convertidos em 1 e viceversa, podendo pois usar a rotina CountBits j desenvolvida, sem qualquer alterao. Indique apenas o cdigo da nova rotina EscNum (ou anexe listagem com o novo programa, com as alteraes identificadas).

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

16

4 Trabalho
Objectivos Interaco com os restantes dispositivos de entrada e sada. Aprofundamento do sistema de interrupes do processador P3. Tpicos
1. Interrupes

1.1 Interrupes na arquitectura P3 1.2 Instrues Assembly associadas s interrupes Nota: No final da aula dever ser entregue a Ficha 4 devidamente preenchida.

Enunciado
1. Interrupes

1.1 Copie para a directoria do grupo o ficheiro aula4.as que se encontra listado no Anexo I. 1.2 Analise o programa e identifique: a) O programa principal e a rotina de servio interrupo; b) A zona do programa que preenche a tabela de vectores de interrupo; c) A funo da rotina de servio interrupo. 1.3 Analise a rotina EscCar e estude o seu funcionamento. Indique o papel desempenhado pelo registo R1. Notar que esta rotina deve ser vista como uma curiosidade e no deve ser considerada um exemplo de programao a seguir. 1.4 Execute o programa e confirme a sua funcionalidade. 1.5 Justifique a existncia das instrues ENI e DSI na rotina EscCont. 1.6 Altere o contedo da tabela de vectores de interrupo correspondente ao boto 0 (I0) para o valor 10h. Que alteraes tem que efectuar no assembly para o programa ter o mesmo comportamento quando se executa.
2. Entradas/sadas e interrupes

2.1 Implemente um relgio digital usando os displays de 7 segmentos, em que os dois dgitos da esquerda representam os minutos e os dois dgitos da direita representam os segundos. 2.2 Altere o programa anterior para que ao clicar no boto 0 (I0) o valor do relgio passe a ser zero. 2.3 Altere o programa anterior para que ao clicar no boto 1 (I1) o relgio pare. O relgio retoma a contagem quando se clicar de novo no boto 1. NOTA: Existe a possibilidade de executar o programa desenvolvido numa placa dedicada que emula o funcionamento do P3. Contacte o seu docente para saber como proceder.

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

17

Ficha 4 - Respostas s questes do 4 Trabalho


Grupo: _____ N _________ N _________ N _________ Questes:
1. Interrupes

Turno: Nome: Nome: Nome:

______ ______________________________________ ______________________________________ ______________________________________

1.2 Analise o programa aula4.as. a) Identifique o programa principal e a rotina de servio interrupo (indique as respectivas etiquetas). ________________________________________________________________ ________________________________________________________________ b) Transcreva a parte do programa que preenche a tabela de vectores de interrupo. ________________________________________________________________ ________________________________________________________________ c) Indique a funo da rotina de servio interrupo. ________________________________________________________________ ________________________________________________________________ 1.3 Analise a rotina EscCar e indique o papel desempenhado pelo registo R1. ________________________________________________________________ 1.5 Justifique a existncia das instrues ENI e DSI na rotina EscCont. ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ 1.6 Altere o vector de interrupo correspondente ao boto 0 (I0) para o valor 10h. Que alteraes tem que efectuar no assembly para o programa ter o mesmo comportamento quando se executa. ________________________________________________________________ ________________________________________________________________

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

18

2. Entradas/sadas e interrupes - Relgio Digital (com todas as funcionalidades)

Apresente o cdigo desenvolvido ou anexe folha.

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

19

1 Parte do Projecto
Objectivos Avaliar a capacidade dos alunos de conceber, desenvolver e testar um programa em linguagem Assembly, utilizando os conceitos adquiridos nas aulas anteriores.

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

20

5 Trabalho
Objectivos Introduo microprogramao. Anlise do microprograma de uma instruo Assembly. Modificao do funcionamento de uma instruo Assembly. Tpicos
1. Introduo microprogramao

1.1 A microprogramao na arquitectura P3 1.2 Registos associados microprogramao


2. Anlise de uma instruo Assembly

2.1 2.2 2.3 2.4

Formatos e tipos de instrues Assembly Microinstrues Fluxograma de execuo de uma instruo Microprograma de uma instruo Assembly

3. Modificao de uma instruo Assembly

Nota: No final da aula dever ser entregue a Ficha 5 devidamente preenchida.

Enunciado
1. Introduo microprogramao. Anlise de uma instruo Assembly

1.1 Copie para a directoria de grupo o ficheiro aula5.as que se encontra listado no Anexo I. Proceda gerao do ficheiro executvel. 1.2 Seleccione no simulador a janela que contm a informao referente microprogramao. Para tal, seleccione a opo Ver Controlo existente no menu Ver. 1.3 Inicie a execuo do programa comeando por executar apenas as duas primeiras instrues (MOV R1,10h e MOV R2,6). Para isso, premir duas vezes no boto Instruo. 1.4 Prossiga a execuo do programa ciclo a ciclo de relgio, premindo uma vez o boto Clock. Tendo por base o contedo do registo RI identifique: a) O tipo de instruo Assembly. b) O contedo de cada um dos seus campos. c) O modo de endereamento utilizado, baseado nos valores obtidos na alnea anterior. 1.5 Continue com a execuo do programa, ciclo a ciclo de relgio, e preencha a Tabela 1 da Ficha 5. Para cada microinstruo identifique a que zona do Fluxograma 1 (representado na mesma ficha) est associada, descreva as aces realizadas usando Linguagem de Transferncia de Registos (RTL) e indique a sua codificao hexadecimal. Preencha apenas os valores dos registos quando eles mudam de valor; quando mantm o valor deixe os campos em branco. 1.6 Recorrendo ao conjunto de informao existente no Manual do Simulador do Processador P3, identifique o microprograma da instruo em causa
Instituto Superior Tcnico Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

21

(MOV M[R2+INDEX],R1). Preencha apenas as primeiras 6 linhas da Tabela 2 da Ficha 5 de acordo com a informao obtida. A tabela deve ser preenchida indicando as aces de cada microinstruo em linguagem de transferncia de registos. Relativamente codificao de cada microinstruo, devero ser assinalados apenas os sinais activos a um (1) e activos a zero (0), ficando em branco as posies que correspondem a sinais indiferentes (sinais que no interferem com a execuo do microprograma).
2. Modificao de uma instruo Assembly

Pretende-se modificar o microprograma analisado na pergunta 1.6, de forma a substituir o modo de endereamento indexado: MOV M[Rx+W], Ry pelo modo de endereamento indirecto por memria: MOV M[Rx+M[W]], Ry 2.1 Indique em que fase(s) do Fluxograma 1 presente na Ficha 5 que se efectuam as alteraes. Justifique. 2.2 Analise a arquitectura do P3 representada na Ficha 5. Assinale na figura os sinais que devem ser activados a um (1) ou a zero (0) de forma a implementar uma microinstruo que realize EA M[EA] . 2.3 Modifique o microprograma analisado em 1.6 de modo a implementar o endereamento indirecto por memria. Na Tabela 3 da Ficha 5 indique apenas as microinstrues novas/modificadas. Para cada uma dessas microinstrues indique o respectivo endereo e as respectivas aces usando linguagem de transferncia de registos. 2.4 Introduza no simulador as alteraes que efectuou no microcdigo. Para tal, proceda do seguinte modo: - Gere um ficheiro control.roms com a alterao a efectuar no microcdigo. Cada linha do ficheiro deve conter a seguinte informao:
<endereo da microinstruo que vai ser substituda> <nova microinstruo>

Notas: A. Os endereos e microinstrues devem estar em hexadecimal mas no devem incluir a letra h. Exemplo de uma linha:
024 000A009F

B. Introduza apenas as linhas que pretende modificar. - Efectue o carregamento do referido ficheiro no simulador, seleccionando a opo Carrega ROM de Controlo que existe no menu Ficheiro. - Execute o programa (para as duas primeiras instrues use o boto Instruo e, a partir da, execute ciclo a ciclo de relgio - boto Clock). Recorra informao da janela de microprogramao para efectuar o teste do microcdigo alterado. 2.5 Indique e justifique o contedo da posio de memria com o endereo 8008h aps a execuo do programa.

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

22

Ficha 5 - Respostas s questes do 5 Trabalho


Grupo: _____ N _________ N _________ N _________ Questes:
1. Introduo microprogramao. Anlise de uma instruo Assembly

Turno: Nome: Nome: Nome:

______ ______________________________________ ______________________________________ ______________________________________

1.4 (Nota: Consulte o anexo A do Manual do Simulador do Processador P3) Execute um ciclo da instruo MOV M[R2+INDEX],R1. Analise o registo RI e indique: a) Se o tipo de instruo Assembly de um ou dois operandos ________________________________________________________________ b) O contedo dos campos da instruo ________________________________________________________________ ________________________________________________________________ c) O modo de endereamento ________________________________________________________________ 1.5 Execute a instruo MOV M[R2+INDEX],R1 ciclo a ciclo de relgio e preencha a tabela seguinte. Para cada microinstruo identifique a que zona do Fluxograma 1 (ver pgina seguinte) est associada, descreva as aces realizadas usando RTL e indique a sua codificao hexadecimal. Preencha apenas os valores dos registos quando eles mudam de valor; quando mantm o valor deixe os campos em branco.
Tabela 1 Execuo de uma instruo ciclo a ciclo (valores em hexadecimal). Fluxograma Ling. de Transf. de Registos (RTL) Microinstruo CAR SBR RI R11
(SD)

R12
(EA)

R13
(RD)

R14
(SP)

R15
(PC)

IF

IR M[PC]

8060001F

000

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

23

IF

Carregamento da Instruo

OpCode

OpCode=00

OpCode=01

OpCode=10

OP2 OP1 Carregamento


do Operando Carregamento dos Operandos

OpCode=11

Carregamento do Operando

OP3

EX1 EX0
Execuo da Instruo Execuo da Instruo

EX2
Execuo da Instruo Execuo da Instruo

EX3

WB
(PUSH) Escrita do Resultado (TEST, CMP)

IH

Teste de Interrupes

Fluxograma 1 - Ciclo de execuo de uma instruo.

1.6 Microprograma da instruo MOV M[R2+INDEX],R1. Preencha apenas as primeiras 6 linhas da Tabela 2, localizada na prxima pgina. Indicar as aces de cada microinstruo em linguagem de transferncia de registos. Na codificao de cada microinstruo assinale apenas os uns (1) e os zeros (0). Deixe em branco as posies das indiferenas.

2. Modificao de uma instruo Assembly

2.1 Indique a fase do ciclo de instruo em que so efectuadas as alteraes (ver Fluxograma 1). ________________________________________________________________

Instituto Superior Tcnico

Prof. Renato Nunes

IAK F LS MCOND CC LI LF CONST / NA M5 SR1 SR2 WR MD MAD RAD

FM MA MB M2 MRB WM

CALU

RB

End. Simb.

Transferncia de Registos

End. ROM Controlo

Valor

(1)

IF0

RI M[PC]

(2)

(3)

(4)

Instituto Superior Tcnico

(5)

(6)

(7)

(8)

(9)

(10)

(11)

(12)

(13)

(14)

(15)

(16)

(17)

(18)

(19)

(20)

Arquitectura de Computadores Guia de Laboratrio 2011/2012

(21)

(22)

Tabela 2 - Microprogramao

(23)

(24)

(25)

(26)

(27)

(28)

(29)

(30)

(31)

(32)

(33)

(34)

Prof. Renato Nunes

(35)

24

Arquitectura de Computadores Guia de Laboratrio 2011/2012

25

2.2 Indique nas figuras seguintes o valor (1, 0 ou X) dos diversos sinais de modo a implementar a microinstruo que realiza EA M[EA] .

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

26

2.3 Indique as alteraes a efectuar ao microprograma analisado em 1.6. Indique o endereo das microinstrues novas/modificadas e as respectivas aces usando linguagem de transferncia de registos (RTL Register Transfer Language). Indique, tambm, a codificao (em hexadecimal) de cada microinstruo.
Tabela 3 Alteraes ao microprograma. Endereo (hex) Microinstruo (RTL) Microinstruo (codificao em hexadecimal)

2.5 Execute ciclo a ciclo de relgio a instruo MOV M[R2+INDEX],R1 (que implementa MOV M[R2+M[INDEX]],R1). Indique e justifique o contedo da posio de memria com o endereo 8008h aps a execuo do programa. ________________________________________________________________

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

27

2 Parte do Projecto
Objectivos Implementar uma nova instruo Assembly ver enunciado do projecto. Apresente o microprograma que realiza a instruo, usando linguagem de transferncia de registos (RTL). Apresente tambm um pequeno programa de teste que permita testar a nova instruo usando diferentes modos de endereamento.

Instituto Superior Tcnico

Prof. Renato Nunes

IAK F LS MCOND CC LI LF CONST / NA M5 SR1 SR2 WR MD MAD RAD

FM MA MB M2 MRB WM

CALU

RB

End. Simb.

Transferncia de Registos

End. ROM Controlo

Valor

(1)

IF0

RI M[PC]

(2)

(3)

(4)

Instituto Superior Tcnico ROM A: ____ _______

(5)

(6)

(7)

(8)

(9)

(10)

(11)

(12)

(13)

(14)

(15)

(16)

(17)

(18)

(19)

(20)

Arquitectura de Computadores Guia de Laboratrio 2011/2012

(21)

(22)

Tabela 1 Microprogramao.

(23)

(24)

(25)

(26)

(27)

(28)

(29)

(30)

(31)

(32)

(33)

(34)

Prof. Renato Nunes

(35)

28

Arquitectura de Computadores Guia de Laboratrio 2011/2012

29

Anexo I - Listagens dos programas


aula1_1.as
; Programa aula1_1.as ;-----------------------------------------------------------------------------; ZONA I: Definicao de constantes ; Pseudo-instrucao : EQU CR EQU 0Ah FIM_TEXTO EQU '@' IO_READ EQU FFFFh IO_WRITE EQU FFFEh IO_STATUS EQU FFFDh SP_INICIAL EQU FDFFh

;-----------------------------------------------------------------------------; ZONA II: definicao de variaveis ; Pseudo-instrucoes : WORD - palavra (16 bits) ; STR - sequencia de caracteres. ; Cada caracter ocupa 1 palavra ORIG 8000h VarTexto1 STR 'LEIC !!', FIM_TEXTO VarTexto2 STR ' Arquitectura de Computadores', FIM_TEXTO VarTexto3 STR '1o Ano - 2o Semestre', FIM_TEXTO VarMenu0 STR '** Instrucoes para a utilizacao do programa Aula1_1.as **', FIM_TEXTO VarMenu1 STR 'Visualizacao de uma mensagem - prima 1, 2 ou 3', FIM_TEXTO VarMenu2 STR 'Fim de execucao - prima outra tecla', FIM_TEXTO VarPrompt STR ' > ', FIM_TEXTO TextoFim STR 'Fim de execucao!', FIM_TEXTO VarPalavra WORD 1234h Dummy TAB 1 ;-----------------------------------------------------------------------------; ZONA III: codigo ; conjunto de instrucoes Assembly, ordenadas de forma a realizar ; as funcoes pretendidas ORIG JMP 0000h Inicio

; LeCar: Rotina que efectua a leitura de um caracter proveniente do teclado. ; Entradas: --; Saidas: R1 - caracter lido ; Efeitos: alteracao do registo R1 LeCar: CMP BR.Z MOV RET R0, M[IO_STATUS] LeCar R1, M[IO_READ]

; EscCar: Rotina que efectua a escrita de um caracter para o ecran. ; O caracter pode ser visualizado na janela de texto. ; Entradas: pilha - caracter a escrever ; Saidas: --; Efeitos: alteracao do registo R1 ; alteracao da posicao de memoria M[IO] EscCar: MOV MOV RETN R1, M[SP+2] M[IO_WRITE], R1 1

; MudaLinha: Rotina que efectua a escrita de um caracter de mudanca de linha. ; Entradas: --; Saidas: --; Efeitos: ---

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012


MudaLinha: PUSH PUSH CALL POP RET R1 CR EscCar R1

30

; EscString: Rotina que efectua a escrita de uma cadeia de caracter, terminada ; pelo caracter FIM_TEXTO. Pode-se definir como terminador qualquer ; caracter ASCII. ; Entradas: R2 - apontador para o inicio da cadeia de caracteres ; Saidas: --; Efeitos: --EscString: Ciclo: PUSH PUSH MOV CMP BR.Z PUSH CALL INC BR CALL POP POP RET R1 R2 R1, M[R2] R1, FIM_TEXTO FimEsc R1 EscCar R2 Ciclo MudaLinha R2 R1

FimEsc:

; EscMenu: Rotina que efectua a escrita do menu que contem as instrucoes de ; utilizacao do programa. ; Entradas: -; Saidas: --; Efeitos: --EscMenu: PUSH R2 CALL MudaLinha CALL MudaLinha MOV R2, VarMenu0 CALL EscString CALL MudaLinha MOV R2, VarMenu1 CALL EscString MOV R2, VarMenu2 CALL EscString CALL MudaLinha POP R2 RET ; EscPrompt: Rotina que efectua a escrita do prompt, que indica o inicio da ; leitura ; Entradas: -; Saidas: --; Efeitos: --EscPrompt: PUSH R2 CALL MudaLinha MOV R2, VarPrompt CALL EscString POP R2 RET

; ProgramaPrincipal: programa que recebe um caracter do teclado e, de acordo ; com o caracter recebido (1, 2 ou 3), imprime uma ; de tres mensagens. Caso receba um caracter diferente, ; termina a execucao. Inicio: MOV MOV CALL CALL CALL CALL CMP BR.Z CMP BR.Z CMP BR.NZ MOV R7, SP_INICIAL SP, R7 EscMenu EscPrompt LeCar MudaLinha R1, '1' Texto1 R1, '2' Texto2 R1, '3' EscFim R2, VarTexto3

Opcao:

Texto3:

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012


CALL BR MOV CALL BR MOV CALL BR MOV CALL BR EscString Opcao R2, VarTexto2 EscString Opcao R2, VarTexto1 EscString Opcao R2, TextoFim EscString Halt

31

Texto2:

Texto1:

EscFim: Halt:

aula1_2.as
; Programa aula1_2.as LetraA ConstUmByte ConstUmaWord EQU EQU EQU ORIG WORD WORD WORD STR ORIG MOV MOV MOV MOV MOV MOV MOV MOV 'A' 0fh 65535 ; caracter ASCII ; hexadecimal ; decimal

VarUmByte VarOutroByte VarUmaWord VarUmaString

8000h 12h 0fh 1234h 'Arquitectura de Computadores' 0000h R0, LetraA R1, ConstUmByte R2, ConstUmaWord R3, R2 R4, M[R1+VarOutroByte] R5, M[VarOutroByte] R6, M[SP] R7, M[PC+ConstUmByte]

Inicio:

; Aqui devera' colocar o seu codigo Halt: BR Halt

aula2.as
; Programa aula2.as ; NOTA: Este programa nao esta' comentado INTENCIONALMENTE !! FIM_STR EQU ORIG STR TAB ORIG MOV MOV MOV CMP BR.Z MOV INC INC BR MOV MOV DEC DEC CMP BR.NN BR Fim '@' 8000h 'Arquitectura de Computadores @' 30 0000h R1, VarStrDestino R2, VarStrOrigem R3, M[R2] R3, FIM_STR Meio M[R1], R0 R1 R2 Ciclo R3, M[R2] M[R1], R3 R2 R1 R1, VarStrDestino Meio

VarStrOrigem VarStrDestino

Inicio: Ciclo:

Meio:

Fim:

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

32

aula3.as
; Programa aula3.as ; ZONA I: Definicao de constantes ; Pseudo-instrucao : EQU CR EQU 0Ah FIM_TEXTO EQU '@' IO_READ EQU FFFFh IO_WRITE EQU FFFEh IO_STATUS EQU FFFDh SP_INICIAL EQU FDFFh

; ZONA II: definicao de variaveis ; Pseudo-instrucoes : WORD - palavra (16 bits) ; STR - sequencia de caracteres. ; Cada caracter ocupa 1 palavra ORIG 8000h VarTexto1 STR 'Pressione uma tecla entre 0 e 9: ', FIM_TEXTO VarTexto2 STR 'Numero de bits a 1 = ', FIM_TEXTO VarErro1 STR 'ERRO: Tecla Invalida', FIM_TEXTO

; ZONA III: codigo ; conjunto de instrucoes Assembly, ordenadas de forma a realizar ; as funcoes pretendidas ORIG JMP 0000h Inicio

; LeCar: Rotina que efectua a leitura de um caracter proveniente do teclado. ; Entradas: --; Saidas: R1 - caracter lido ; Efeitos: alteracao do registo R1 LeCar: CMP BR.Z MOV RET R0, M[IO_STATUS] LeCar R1, M[IO_READ]

; EscCar: Rotina que efectua a escrita de um caracter para o ecra. ; O caracter pode ser visualizado na janela de texto. ; Entradas: pilha - caracter a escrever ; Saidas: --; Efeitos: alteracao do registo R1 ; alteracao da posicao de memoria M[IO] EscCar: PUSH MOV MOV POP RETN R1 R1, M[SP+3] M[IO_WRITE], R1 R1 1

; MudaLinha: Rotina que efectua a escrita de um caracter de mudanca de linha. ; Entradas: --; Saidas: --; Efeitos: --MudaLinha: PUSH PUSH CALL POP RET R1 CR EscCar R1

; EscString: Rotina que efectua a escrita de uma cadeia de caracter, terminada ; pelo caracter FIM_TEXTO. Pode-se definir como terminador qualquer ; caracter ASCII. ; Entradas: R2 - apontador para o inicio da cadeia de caracteres ; Saidas: --; Efeitos: ---

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

33

EscString: Ciclo:

FimEsc:

PUSH PUSH MOV CMP BR.Z PUSH CALL INC BR POP POP RET

R1 R2 R1, M[R2] R1, FIM_TEXTO FimEsc R1 EscCar R2 Ciclo R2 R1

; EscNum: Rotina que efectua a escrita de um algarismo, fazendo a conversao ; necessaria para ASCII. ; Entradas: R1 - numero a escrever ; Saidas: --; Efeitos: --EscNum: PUSH ADD PUSH CALL POP RET R1 R1,'0' R1 EscCar R1

; PrintBits: Rotina que efectua a escrita da representacao em binario no ecra ; de uma palavra de 16 bits. ; Entradas: R1 palavra a imprimir ; Saidas: --; Efeitos: --PrintBits: PUSH R1 PUSH R2 PUSH R3 PUSH ' ' CALL EscCar PUSH '(' CALL EscCar MOV R2, 15 procbit: SHL R1, 1 MOV R3, '0' ADDC R3, R0 PUSH R3 CALL EscCar DEC R2 BR.NN procbit PUSH ')' CALL EscCar POP R3 POP R2 POP R1 RET

; CountBits: Rotina de calculo do nmero de bits a '1' numa palavra de 16 bits. ; Entradas: R1 - palavra a processar ; Saidas: R1 - resultado ; Efeitos: altera R2 CountBits: continua: MOV SHR ADDC CMP BR.NZ MOV RET R2, R0 R1, 1 R2, R0 R1, R0 continua R1, R2

; Programa Principal: programa que recebe um algarismo do teclado, ; retornando o numero de bits a '1' da correspondente representacao ; em binario. Caso receba um caracter invalido, retorna uma ; mensagem de erro. Inicio: MOV R7, SP_INICIAL

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012


MOV ProcWord: CALL MOV CALL CALL SUB CMP BR.N CMP BR.P CALL CALL CALL CALL MOV CALL CALL CALL JMP Erro: CALL MOV CALL JMP BR SP, R7

34

MudaLinha R2, VarTexto1 EscString LeCar ; Devolve em R1 o caracter lido (simbolo ASCII) R1,'0' ; Conversao do simbolo ASCII R1,0 Erro R1,9 Erro EscNum PrintBits MudaLinha CountBits R2, VarTexto2 EscString EscNum MudaLinha ProcWord MudaLinha R2, VarErro1 EscString ProcWord Fim ; Contagem do numero de bits a '1' ; Escrita do valor calculado no ecra ; Deteccao de condicao de erro

; Escrita do numero lido (R1) ; Escrita da representacao em binario ; do numero lido

Fim:

aula4.as
; Programa aula4.as EQU EQU EQU EQU EQU FDFFh FFFAh 0000000000000001b FFFEh 0800h

SP_INICIAL INT_MASK_ADDR INT_MASK IO_WRITE DELAY_COUNT

; Palavra de memoria que contem a variavel de contagem ORIG 8000h Contador WORD 0000h

; Tabela de interrupcoes ORIG FE00h INT0 WORD ResetCont

; Codigo ORIG JMP 0000h Inicio

; ResetCont: Rotina que faz o reset do contador ; Entradas: --; Saidas: --; Efeitos: alteracao do conteudo da posicao de memoria M[Contador] ResetCont: MOV M[Contador], R0 RTI ; ContHex: Rotina que incrementa o contador ; Entradas: M[Contador] - contador ; Saidas: --; Efeitos: alteracao do conteudo da posicao de memoria ContHex: INC M[Contador] RET

M[Contador]

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012

35

; HexAscii: Rotina que efectua a conversao de hexadecimal para ASCII ; Entradas: R1 - valor (hexadecimal) a converter ; Saidas: R1 - valor (ASCII) convertido ; Efeitos: alteracao do registo R1 HexAscii: CMP R1, 10 BR.NN Maior9 ADD R1, '0' BR FimHexAscii Maior9: SUB R1, 10 ADD R1, 'A' FimHexAscii: RET ; EscCont: Rotina que efectua a escrita do contador ; Entradas: --; Saidas: --; Efeitos: --EscCont: PUSH R2 DSI MOV R2, 4 Ciclo: CALL ProcNibble DEC R2 BR.NZ Ciclo ENI CALL EscBranco POP R2 RET ; ProcNibble: Rotina que efectua o processamento de cada nibble do contador ; Entradas: M[Contador] ; Saidas: M[Contador] ; Efeitos: --ProcNibble: PUSH R1 ROL M[Contador], 4 MOV R1, M[Contador] AND R1, 000fh CALL HexAscii PUSH R1 CALL EscCar POP R1 RET ; EscBranco: Rotina que ; Entradas: --; Saidas: --; Efeitos: --EscBranco: PUSH MOV PUSH CALL POP RET efectua a escrita de um espaco

R1 R1, ' ' R1 EscCar R1

; EscCar: Rotina que efectua a escrita de um caracter para o ecran. ; O caracter pode ser visualizado na janela de texto. ; Entradas: pilha - caracter a escrever ; Saidas: --; Efeitos: alteracao do registo R1 EscCar: POP R1 POP M[IO_WRITE] PUSH R1 RET ; Delay: Rotina que provoca um atraso ; Entradas: --; Sadas: ---; Efeitos: --Delay: PUSH R1 MOV R1, DELAY_COUNT Delay_L1: DEC R1 BR.NZ Delay_L1 POP R1 RET Inicio: MOV MOV MOV R7, SP_INICIAL SP, R7 R7, INT_MASK

Instituto Superior Tcnico

Prof. Renato Nunes

Arquitectura de Computadores Guia de Laboratrio 2011/2012


MOV ENI CALL CMP CALL.Z CALL BR M[INT_MASK_ADDR], R7 EscCont M[Contador],R0 Delay ContHex CicloCont

36

CicloCont:

aula5.as
; INDEX Programa aula5.as - estudo da microprogramacao EQU ORIG STR ORIG MOV MOV 8000h 8000h 8002h, 1, 2, 3, 4, 5, AAAAh, 7, 8 0000h R1, 10h R2, 6

VECTOR

Inicio:

Alterar:

Fim:

MOV M[R2+INDEX], R1 ; NOTA: A instrucao mantem-se mas o seu comportamento devera ; passar a ser equivalente a: MOV M[R2+M[INDEX]], R1 BR Fim

Instituto Superior Tcnico

Prof. Renato Nunes

Você também pode gostar