Sunteți pe pagina 1din 150

AVSIM 51

8051 Family

Users Manual
Rev. 1.1d

January, 1985

Copyright

1986 Avocet Systems, Inc.


All Rights Reserved.

AVOCET SYSTEMS, INC.


120 Union St.
Rockport, Maine 04856 USA
Telephone 207/236-9055
Telex 467210 AVOCET CI
FAX 207/236-6713

The informations in this document is subject to change without notice.


Avocet software products are copyrighted by and shall remain property of Avocet
Systems, Inc. Use, duplication, or disclosure is subject to restrictions as stated in
Avocets applicable software license.
Avocet systems makes no warranty of any kind with regard to this material, including, but
not limited to, implied warranties of merchantability and fitness for a particular purpose,
except as stated in Avocets applicable software licence.
No part of this document may be copied or reproduced en any form without the prior
writen consent of Avocet systems, Inc.
The word Avocet and the depiction of a standing avocet are registered trademarks of
Avocet Systems, Inc.
CP/M is a trademark of Digital Research.
Intel is a trademark of Intel Corporation.
Motorola is a trademark of Motorola Semiconductor.
PC-DOS is a trademark o IBM Corp.
UNIX is a trademark of AT&T Information Systems
VAX and VMS are trademarks of Digital Equipment Co.
MSDOS is a trademark of Microsoft.
VEDIT is a trademark Compuview Products.
WORDSTAR is a trademark of Micropro.
Z80 is a trademark of Zilog, Inc.

ii

Contedo

iii

INTRODUO

1.1

Viso Geral das Caractersticas do AVSIM51

1.1.1

1.2

1.3

Requisitos do AVSIM51

1.2.1
1.2.2

3
3

O que Necessrio Saber


Leitura Recomendada

Manual do AVSIM51

1.3.1
1.3.2

4
4

Convenes Utilizadas no Manual


Como Utilizar o Manual

PRIMEIROS PASSOS

2.1

Instalao do AVSIM51

2.1.1

2.2

Novas Caractersticas do AVSIM51 Verso 1.2

Instalao

Operao do AVSIM51

2.2.1
2.2.2

9
10

Chaves de Opes
Argumentos Opcionais

2.3

Como o AVSIM51 Funciona

10

2.4

A Tela do AVSIM51

11

2.5

O Teclado do AVSIM51

16

2.5.1
2.5.2

16
19

Teclas de Funes
Utilizao as Teclas de Funes

TUTORIAL

22

3.1

Introduo

22

3.1.1

22

3.2

3.3

3.4

O Programa Demonstrativo

Iniciando o Tutorial

23

3.2.1
3.2.2
3.2.3
3.2.4

23
23
24
25

Instalando o Simulador
Executando o Simulador
A Tela do Simulador
Carregando o Programa Demonstrativo

Teclas de Simulao

26

3.3.1
3.3.2
3.3.3
3.3.4

27
27
28
29

As Teclas Go e Single-Step
A Tecla Undo
As Teclas do Cursor de Breakpoints
A Tecla para Comutao de Modo

O Modo Display

30

3.4.1

30

Movimentao do Cursor
iv

3.4.2
3.4.3
3.5

31
32

O Modo Commad

33

3.5.1
3.5.2
3.5.3
3.5.4
3.5.5

33
34
37
37
40

A Tela de Comandos
Configurao de Breakpoints e Passpoints
Exame de Memria e Breakpoints
Arquivos de Entrada e Sada (I/O Files)
Insero de Cdigos (Patch Code)

MODO DISPLAY

42

4.1

Controle do Cursor

42

4.1.1
4.1.2
4.1.3
4.1.4

43
44
44
46

4.2

Edio de Dados
Atualizao da Tela e Rastreamento (Trace)

Controle Bsico do Cursor


Modo de Rolamento
Teclas Expressas
Modo do Cursor

Edio da Tela

46

4.2.1
4.2.2

46
47

Teclas Vlidas
Teclas de Edio

MODO COMANDO

49

5.1

Menus de Comando

49

5.2

Entrada de Dados

51

5.2.1
5.2.2

51
54

Convenes para Entrada de Dados


Resultado de uma Avaliao Anterior

DESCRIO DOS COMANDOS

57

6.1

59

Dump
6.1.1
6.1.2

Absolute
Indirect

59
60

6.2

Expression

61

6.3

commandFile

62

6.3.1
6.3.2
6.3.3
6.3.4

62
62
63
63

Load
Open
Close
Restart

6.4

Help

64

6.5

IO File

65

6.5.1
6.5.2

Open
Close

65
70
v

6.6

Load
6.6.1
6.6.2
6.6.3
6.6.4

6.7

Avocet
Data
Program
Symbol Table

71
72
72
73

Memory
6.7.1
6.7.2
6.7.3
6.7.4
6.7.5

6.8

71

75
Clear
Fill
Move
Search
searchNext

75
76
77
78
79

Patch
6.8.1
6.8.2
6.8.3

80
Patch code
Open
Close

80
80
81

6.9

Quit

82

6.10

Reset

83

6.10.1
6.10.2
6.10.3
6.10.4
6.10.5
6.10.6
6.11

83
83
84
84
84
85

Set
6.11.1
6.11.2
6.11.3
6.11.4
6.11.5
6.11.6
6.11.7
6.11.8
6.11.9
6.11.10
6.11.11
6.11.12

6.12

Cpu
Disptrace
cYcles
All
Traplist
Breakpoints

86
Condition Breakpoint/Passpoint
Set Breakpoint Access Type
Conditional
Dynamic
Opcode
Sticky
Memory-map
Passpoint
opTions
setUp
cYcles
V-drive

View
6.12.1
6.12.2
6.12.3
6.12.4
6.12.5
6.12.6

86
87
89
92
92
93
93
94
95
95
96
96
97

Breakpoints
IO-files
Memory-map
Opc-traps
Passpts
Symbols

97
97
98
98
99
99
vi

6.13

eXecute

TPICOS AVANADOS

101

7.1

Breakpoints e Passpoints

101

7.1.1
7.1.2
7.1.3
7.1.4
7.1.5
7.1.6
7.1.7

102
103
103
105
105
106
106

7.2

Utilizao de Breakpoints
A Lista de Pontos de Parada
Condies
Durao
Tipo de Acesso
Cdigo de Operao
Passpoints

Arquivos de Entrada e Sada (I/O Files)

106

7.2.1

108

7.2.2

100

Entrada e Sada Manual e Arquivos de Entrada e


Sada
Acesso por Cdigo de Operao

110

SIMULAO DA CPU ALVO

111

8.1
8.2
8.3
8.4
8.5
8.6
8.7
8.8

111
111
112
113
114
114
114
115

Tecnologia
Registradores
Memria
Ports
Terminais Externos
Interrupes
Timers
EPROM

A MENSAGENS DE ERRO

116

SUMRIO DOS COMANDOS

121

B.1
B.2
B.3
B.4

121
123
124
125

Teclas de Funes
Controle Bsico do Cursor
Teclas Expressas
Teclas de Edio

C PROGRAMA DEMONSTRATIVO
C.1
C.2
C.3
D

Funo do Programa Demonstrativo


Instrues de Operao
Listagem do Programa
CONJUNTO DE INSTRUES DO 8051

vii

126
126
126
127
130

Captulo 1

INTRODUO
1.1 Viso Geral das Caractersticas do AVSIM51
O programa AVSIM51 foi projetado para simular completamente a famlia 8051 de
microprocessadores. Simula toda a arquitetura da CPU alvo, incluindo timers,
interrupes e ports de hardware, permitindo a depurao de programas que utilizem
todas as caractersticas do microprocessador. Sob o AVSIM51 o processo de depurao
isolado dos erros no programa que poderiam causar perda de controle em emuladores
circuitais (tais como sobreescrita no programa ou acesso a reas de memria no
existentes), tendo-se assim um ambiente totalmente controlado para depurao.
Entre as caractersticas do AVSIM51 esto includas as seguintes:

Completa simulao da CPU alvo, incluindo todos os timers, interrupes e ports


de hardware. Todos os perifricos exteriores ao chip so simulados externamente.

Apresentao na tela da condio de todos os registradores, flags, ports e reas de


memria selecionveis pelo usurio durante a execuo do programa.

Capacidade completa de depurao simblica, incluindo pontos de parada


(breakpoints) permanentes (sticky) e dinmicos, pontos de parada
condicional, pontos de passagem (passpoints), execuo passo a passo e
reverso passo a passo. Pode-se at mesmo reverter interrupes.

Assembler cruzado incremental, que permite a insero de cdigos (patches) e


seu teste imediato, sem a necessidade de abandonar-se o simulador. Os patches
podem ser salvos em arquivos em disco para uso posterior.

A execuo do simulador prova de perdas de controle devidas a erros no


programa que est sendo depurado. Saltos para reas de memria no existentes,
manipulao da pilha violando seus limites ou outros erros dessa natureza so
capturados e tratados como pontos de parada.

Interface com o usurio com interao completa atravs da tela do computador.


Qualquer registrador, port ou endereo de memria pode ser alterado diretamente.

Simulao direta de dispositivos de entrada e sada atravs da alterao de valores


em ports ou atravs de arquivos em disco criados previamente para simular dados
de entrada para o microprocessador. Dados de sada emitidos pelo programa
simulado podem ser salvos em arquivos em disco para posterior diagnstico.

Arquivos de Comando que permitem o registro de seqncias de comandos


digitados, para reutilizao em outras sesses de depurao. Um arquivo de
comandos pode ser carregado a qualquer momento para inicializar a CPU alvo e
configurar o ambiente de simulao.

1.1.1

Novas Caractersticas do AVSIM51 Verso 1.2

A Verso 1.2 do AVSIM51 contm caractersticas adicionais que so listadas


abaixo. Detalhes destas caractersticas podem ser encontrados em captulos especficos.

Linhas de comando com mais de um argumento. (Cap. 2)

Vrias chaves de opes foram adicionadas para dar um melhor suporte a PCs
no-IBM e no-DOS, incluindo o remapeamento do sinal sonoro bell, das
interrupes 23 e 24 do DOS e a utilizao do ANSI.SYS em lugar do IBM.BIOS.
(Cap. 2)

Suporte para os programas Top View e Windows. (Cap. 2)

Agora dado suporte para o comando PATH do MS-DOS. (Cap. 2)

dado suporte para uso do cursor na seleo da opo de um modo de comando.


Isto faz com que o AVSIM51 seja compatvel com sistemas dirigidos por mouse.
(Cap. 6)

O tamanho do buffer <UNDO>, que mantm um registro histrico das ltimas


instrues executadas pode ser configurado pelo usurio, permitindo a reverso de
0 a centenas de instrues. (Cap. 2)

Acesso a entrada e sada por cdigos de operao. Todos os acessos a um


endereo em particular disparam uma leitura ou escrita a um arquivo de entrada
ou sada para realizao de uma entrada ou sada de dado, respectivamente. Isso
simula de forma melhor a realizao de operaes de entrada e sada por
verificao de status (polled I/O), em adio entrada e sada comandada por
ciclos de mquina, que melhor para simulao de operaes de entrada e sada
dirigidas por interrupes. (Cap. 6, 7)

A tabela de smbolos pode ser listada atravs do comando View. (Cap. 6)

Agora h suporte para o formato AVMAC de tabela de smbolos. (Cap. 6)

O fragmento de cdigo agora mostrado em vdeo reverso em lugar da


intensidade luminosa maior, para consistncia com outros destaques indiretos com
intensidade luminosa maior e para permitir a execuo do AVSIM51 em sistemas
UNIX com apenas dois modos de destaque luminoso na tela: vdeo reverso e
piscante. (Cap. 2)

Agora o contador de ciclos de mquina pode ser editado. (Cap. 2)

O comando Patch foi revisto de modo que o endereo do patch tambm seja
escrito no arquivo de patches para uma melhor documentao de alteraes
feitas no programa. Novos labels so tambm acrescentados tabela de
smbolos. (Cap. 6)

At 14 arquivos de entrada e sada podem ser abertos agora. (Cap. 2)

As janelas de apresentao de reas de memria (Dump Areas) apresentam


agora o endereo do cursor. (Cap. 2)

Alm disso foram feitas alteraes para aumentar a velocidade de vrias funes do
AVSIM51.
1.2 Requisitos do AVSIM51
O AVSIM51 est disponvel para os seguintes sistemas operacionais: MS-DOS,
VAX-VMS e VAX-UNIX. A verso MS-DOS requer um microcomputador IBM PC, AT
ou plenamente compatvel, com no mnimo 128K de memria e um drive de disco.
O sistema hospedeiro deve tambm dar suporte para endereamento do cursor e
pelo menos dois atributos de vdeo piscante e vdeo reverso. Observe-se que o atributo
de vdeo no pode ocupar uma posio de caractere na tela. (Este requisito elimina
alguns novos terminais VT100.) Um teclado com conjunto de teclas de funo (contendo
no mnimo 10 teclas de funo) tambm recomendado.
1.2.1

O que Necessrio Saber

Neste manual assume-se que o usurio esteja familiarizado com o conjunto de


instrues e a arquitetura do microprocessador 8051. O Apndice D apresenta
sumariamente o conjunto de instrues do 8051 mas a inteno oferecer apenas uma
fonte de referncia, no uma descrio detalhada.
Assume-se tambm que o usurio tenha familiaridade suficiente com o sistema
operacional de seu computador para executar programas, formatar discos, copiar
programas, criar arquivos, utilizar diretrios, etc..
Finalmente, assume-se que o usurio esteja familiarizado com programao em
linguagem assembly e, em menor extenso, com a utilizao de editores de texto e
depuradores simblicos. Embora no seja necessrio saber como operar um depurador
para utilizar o AVSIM51, a experincia com depuradores ser de ajuda para obter-se o
domnio de seu uso. O AVSIM51 opera como um editor tela para textos, e a experincia
com tais editores mostrar-se- til para a familiarizao com o programa.
1.2.2

Leitura Recomendada

Recomenda-se os seguintes manuais de dados e manuais de usurio da Intel para


os microprocessadores 8051:
Intel Corp., Microcontroller Handbook, Number 210918-003, cobre os
microprocessadores 8051 e 8052.
Intel Corp., Microcontroller Users Manual, Nmero 210359-001, cobre os
microprocessadores 8051/8751.
Alm disso, deve-se tambm ter mo manuais/livros sobre o sistema operacional e
programao e depurao em linguagem assembly.
1.3

Manual do AVSIM51

Este manual descreve as caractersticas e a operao do AVSIM51, o


simulador/depurador simblico orientado tela, da Avocet Systems, para a famlia 8051
de microprocessadores. Ele descreve a operao do simulador, incluindo um tutorial para
novos usurios e a referncia completa para usurios experientes.

O restante deste captulo contm uma viso geral das caractersticas do AVSIM51
e descreve as convenes utilizadas no manual, os requisitos para o sistema hospedeiro e
o conhecimento prvio assumido.
1.3.1

Convenes Utilizadas no Manual


Utiliza-se neste manual as seguintes convenes:

Palavras chave: As palavras chaves so especificadas envolvidas por parnteses


angulares: <palavra chave>. Teclas com significao funcional especfica no
AVSIM51 so referenciadas pela funo que executam, em lugar da etiqueta que
aparece no teclado do computador. Por exemplo, a tecla que reverte um ciclo do
simulador denominada tecla <UNDO> ser referenciada como <UNDO> F9 ao
longo deste manual, pois em um IBM PC, a tecla F9 efetua tal funo. Em outros
sistemas operacionais inclui-se uma tabela de referncias cruzadas que apresenta o
mapeamento das teclas do AVSIM51 para o teclado do sistema.
Comandos: Todos os comandos do AVSIM51 so apresentados na fonte sans serif.
Cada comando tem um caractere para abreviao que apresentado em maisculo.
Para selecionar o comando digita-se este caractere. Por exemplo, para apresentar na
tela uma rea de memria, utiliza-se o comando Dump: digita-se D e prosseguese de acordo com os prompts emitidos pelo AVSIM51. De forma similar, para abrir
um arquivo de comandos, utiliza-se o comando commandFile: digita-se F e
segue-se de acordo com os prompts do AVSIM51.
Quando um comando inclui um submenu de opes, pode-se digitar as opes em
seqncia sem aguardar a apresentao do submenu na tela pelo AVSIM51. Por
exemplo, para abrir um arquivo de comandos, deve-se digitar F para entrar no menu
de arquivos de comando e ento digitar O para selecionar abertura (Open) no
submenu. Pode-se digitar as duas letras em seqncia, sem aguardar o submenu de
arquivos de comando na tela: FO, ou ento digitar separadamente os comandos, um
a um: F e depois O.
Entradas do Usurio: todos os dados a serem digitados pelo usurio so mostrados em
tipos dactilogrficos. Entra-se com a informao exatamente como mostrado.
Colchetes: Quando apresentada a sintaxe para um comando ou mnemnico, os
colchetes indicam que a parte envolvida opcional.
Elipses: Quando apresentada a sintaxe de um comando ou mnemnico, elipses ()
indicam que o item precedente ou a seqncia de itens precedentes pode ser repetida 0
ou mais vezes.
Espaos: necessrio utilizar no mnimo um caractere espao ou tabulador sempre
que mostrado um espao.
1.3.2

Como Utilizar o Manual

O manual est dividido em oito captulos. Deve-se ler os Captulos 1 e 2 antes de


comear a utilizar o AVSIM51. O Captulo 3, Tutorial, constitui uma introduo tutorial
ao AVSIM51. O Captulo e o Captulo 5 descrevem os dois modos de operao: o modo
Display e o modo Command. Deve-se ler esses captulos aps completar a leitura do
tutorial para aprimorar o conhecimento sobre o AVSIM51.

O Captulo 6 uma referncia detalhada para cada um dos comandos do


AVSIM51. Deve-se consult-lo quando se busca informaes sobre um comando
particular. O Captulo 7, Tpicos Avanados, contm uma apresentao mais
compreensiva do uso de breakpoints e arquivos de entrada e sada.
Os Apndices so uma referncia rpida para o AVSIM51. Deve-se consult-los
quando apropriado.

Captulo 2

PRIMEIROS PASSOS
2.1 Instalao do AVSIM51
O disco do AVSIM51 contm os seguintes arquivos:
AVSIM51.EXE
AVSIM51.OVR
AVSIM51.REG
AVSIM51.HLP
Esses quatro arquivos constituem o AVSIM51. O quarto arquivo, AVSIM51.HLP,
um arquivo de ajuda. Ele pode ser removido do disco de trabalho, mas nesse caso a
capacidade de ajuda oferecida pelo programa perdida. Os quatro arquivos ocupam um
pouco menos de 145K. Em um disco MS-DOS de 360K, isso deixa espao para um
editor de texto, o sistema operacional e vrios utilitrios. Recomenda-se o uso de um
segundo disco para o programa que a ser simulado.
Alguns outros arquivos (totalizando menos de 10K) so tambm includos com o
AVSIM51. So um conjunto de programas demonstrativos que podem ser utilizados com
o tutorial do Captulo 3 como um auxlio na aprendizagem do sistema. Aps terminar de
utiliz-los eles podem ser removidos do disco de trabalho.
2.1.1 Instalao
Dependendo da verso adquirida, o disco do AVSIM51 pode ou no estar
protegido contra cpias. No caso de uma verso protegida contra cpias deve-se
consultar as instrues includas para instalar os arquivos necessrios. Em verses no
protegidas, pode-se utilizar o comando disponvel para no sistema operacional para copiar
arquivos (por exemplo, COPY no sistema operacional DOS) para instalar os arquivos no
diretrio ou disco de trabalho.
Instalao em Disco Rgido. Em um sistema com disco rgido, cria-se um
subdiretrio e copia-se nele os arquivos do AVSIM51. Caso seja desejado, pode-se mover
para esse subdiretrio um editor de textos e quaisquer outros utilitrios a serem utilizados,
ou pode-se definir um caminho atravs da criao de uma varivel PATH ou AVPATH.
(Para criar uma varivel PATH ou AVPATH, veja-se o comando Set no manual do DOS.)
Todos os comandos do AVSIM51 que requerem nomes de arquivos como argumento
podem fazer uso de caminhos, de modo que no obrigatrio mover-se programas do
usurio para o subdiretrio do AVSIM51, apenas uma questo de convenincia.
Instalao em Floppy Disk: Em um sistema com discos flexveis, cria-se um
disco de trabalho formatando um disco virgem e copiando os arquivos do AVSIM51
nesse disco. Pode-se tambm copiar um editor de textos e outros utilitrios. (Caso se
queira dar a partida no sistema (boot) atravs desse disco, deve-se utilizar o comando
6

FORMAT do DOS com a opo /S. Para maiores informaes consulte-se o manual do
sistema operacional, se necessrio.)
O disco original do AVSIM51 deve ser mantido em local seguro.
Limitao no nmero de arquivos. At 14 arquivos de entrada e sada podem
estar abertos num mesmo instante. (Veja-se o Captulo 7, Tpicos Avanados, para
maiores informaes sobre arquivos de entrada e sada). Caso pretenda-se chegar a esse
nmero de arquivos, (ou se for recebida uma mensagem do DOS do tipo too many open
files), deve-se incluir no arquivo CONFIG.SYS do sistema a seguinte linha de comando,
onde nn no mnimo 18:
FILES=nn
se for utilizado um nmero de arquivos de entrada e sada menor, pode-se escolher nn
menor ou ento utilizar o nmero default de 8 arquivos.
Instalao no Top View e no Windows. Para utilizar o programa sob o Top View
da IBM Corporation ou o Windows da Microsoft Corporation, deve-se colocar a seguinte
informao no arquivo .PIF:
Memory: 128K minimum, 640K maximum
Window Size: 25 rows, 80 columns, offset 0,0
Range of vectors swaped: 23H to 24H
Program yes/no questions: Answer NO to ALL
Utilizao de Mouse. Caso seja utilizado um mouse, do usurio a
responsabilidade de configurar o mouse para simular as teclas de cursor. Alm disso,
pode-se considerar til configurar um mouse de trs botes como segue:

Boto

Tecla

1
2
3

Return
Esc
Ins

2.2 Operao do AVSIM51


Pode-se incluir o subdiretrio do AVSIM51 ao PATH do DOS, caso este seja
utilizado. Isto permite que se execute o AVSIM51 em qualquer subdiretrio. Pode-se
tambm incluir o subdiretrio em uma varivel de ambiente denominada AVPATH.
Contudo, o arquivo AVSIM51.EXE deve ser residente no disco ou diretrio default, ou
ento estar listado na varivel PATH, para que o simulador seja executado. Todos os
comando do AVSIM51 que tomam como parmetro o nome de em arquivo podem
especificar o caminho do arquivo, de modo que no necessrio mover os programas
para o subdiretrio do AVSIM51, salvo se houver convenincia nisso.
Para executar o AVSIM51, digita-se o seguinte:
AVSIM51 [ -chave_opcionais argumentos_opcionais] Return
As chaves opcionais permitem que se otimize o desempenho do AVSIM51 em
vrios microcomputadores no-IBM-PC. Os argumentos opcionais so uma seqncia de
7

comandos do AVSIM51 a serem executados quando o programa iniciado. Ambas as


opes so explicadas detalhadamente a seguir.
Uma vez o simulador tendo sido carregado, a informao de licena de uso
apresentada na tela e ento o sistema emite um prompt para a escolha da CPU a ser
simulada:
Intel 8051 Microprocessor Configurations
HMOS ROM
HMOS ROMless
A:8051/8751
C:8031
B: 8052/87C52
D:8022

CMOS ROM
D:80C51
E:80C31

Choose a CPU for simulation:


Intel 8051 Microprocessor Configurations
HMOS ROM
HMOS ROMless
A:8051/8751
C:8031
B: 8052/87C52
D:8022

CMOS ROM
D:80C51
E:80C31

Choose a CPU for simulation:

Digita-se a letra da CPU a ser simulada. A tela do AVSIM51 ento apresentada


como mostra a Figura 2.1.

LABEL
OPERATION
8051/8751 AVSIM 8051 Simulator/Debugger
V1.30
RESET
no
memory
CPU REGISTERS
FLAGS
SCL SPD DSP SKP CURSOR
0001H
no
memory
C Accumulator
AC F0 OV P OFF HI ON OFF MENU
0002H
no
memory
0 00000000:00:_
0 0 0 0
Cycles:
0003H
no
memory
addr
data
0004H
no
memory
PC:0000 FF FF FF FF Timers TH/TL TF/TR G/T/M1/M0
0005H
no
memory
SP: 07 00 00 00 00
T0: 00 00
0 0 0 0 0 0
0006H
no
memory
00 00 00 00
T1: 00 00
0 0 0 0 0 0
0007H
no
memory
DP:0000 FF FF FF FF
0008H
no
memory
R0:00:_ 00:_ RB:00 Ints A S T1 X1 T0 X0 Edg IT IE
0009H
no
memory
R1:00:_ 00:_
B:00 En 0 0 0 0 0 0
X0: 0 0
000AH
no
memory
R2:00
R4:00
R6:00 Pr
0 0 0 0 0
X1: 0 0
000BH
no
memory
R3:00
R5:00
R7:00 SBUF: In
Out PCON:0xxxxxxx
000CH
no
memory
Data Space
00:_ 00:_ SCON:00000000
000DH
no
memory
0000 00 00 00 00 00 00 00 00 ________ Ports
000EH
no
memory
0008 00 00 00 00 00 00 00 00 ________ P0
11111111
000FH
no
memory
0010 00 00 00 00 00 00 00 00 ________ FF:_:11111111
0010H
no
memory
0018 00 00 00 00 00 00 00 00 ________ P1
11111111
0011H
no
memory
Data Space
FF:_:11111111
0012H
no
memory
0020 00 00 00 00 00 00 00 00 ________ P2
11111111
0013H
no
memory
0028 00 00 00 00 00 00 00 00 ________ FF:_:11111111
0014H
no
memory
0030 00 00 00 00 00 00 00 00 ________ P3
11111111
0015H
no
memory
0038 00 00 00 00 00 00 00 00 ________ FF:_:11111111
>Select Command - or use arrow keys
Dump Expression commandFile Help IO Load
--space-- ESC to screen

Figura 2.1: A Tela do AVSIM51

Observe-se que a figura mostra a verso 8051 (opo do menu acima). Outras
verses do chip (opes B a E) correspondem a telas ligeiramente diferentes devido a
diferenas internas dos mesmos. Por exemplo, o chip 8052 (opo B) contm um timer
adicional (T2), e o 8031 (opo C) contm apenas dois ports (P1 e P3). Exceto por tais
variaes, os comandos do AVSIM51 descritos operam da mesma forma. Neste manual,
referencia-se a famlia de chips que o AVSIM51 pode acessar como 8051).
2.2.1

Chaves de Opes

A verso 1.1 do AVSIM51 contm um nmero de chaves de opo que otimizam


seu desempenho em vrios PCs e em vrias configuraes. Essas chaves so listadas
abaixo:
-s

comuta e emisso de sons de controle direto sobre o hardware para um simples


bell (ASCII 7). Utiliza-se s em sistemas no IBM-compatveis. Esta chave
desabilita a nica parte do cdigo que acessa o hardware diretamente. A
configurao default a de controle direto sobre o hardware.

-I

Desabilita interrupes 23h e 24h. Normalmente o AVSIM51 altera essas


interrupes. A interrupo 23h do AVSIM51 faz com que a resposta a Ctrl C
(Ctrl Break) seja melhor e previna uma sada prematura do programa. A
interrupo 24h do AVSIM51 permite um melhor controle dos erros do tipo disk
not reaky e write protected. Deve-se utilizar esta chave se o DOS reclamar
sobre o remapeamento de interrupes. A configurao default utiliza as
interrupes 23h e 24h.

-d0 escreve diretamente na tela, contornando o ROM BIOS. Esta configurao permite
um aumento da velocidade do simulador em at 70%. Deve ser utilizada somente
com adaptadores de vdeo IBM color graphics, IBM mono ou Hercules. esta
opo deve ser utilizada sob o Windows ou o Top View. A configurao -d1
utilizada como default.
-d1 escreve na tela utilizando o ROM BIOS. Esta a configurao default.
-d2 escreve na tela utilizando o ANSI.SYS. Deve-se utilizar esta chave se estiver
ocorrendo algum problema com o display do AVSIM51. O ANSI.SYS deve estar
instalado antes da invocao desta chave. Veja-se o manual do DOS para mais
informaes. A configurao default -d1.
-k

altera a configurao do teclado de modo que se possa utilizar a tecla shift em lugar
de Control para enviar caracteres de controle para o AVSIM51. ( necessrio
tambm que a tecla Caps Lock esteja ativada durante a execuo do programa.)
Esta opo provavelmente seja utilizada quando se opta por -d2; caso contrrio, a
digitao de um verdadeiro Control-S ou Control-Q afetar a apresentao da tela
do AVSIM51. (A opo k configura o AVSIM51 para tratar caracteres minsculos
como os caracteres de controle correspondentes, enquanto a resposta aos caracteres
maisculos permanece normal.)

Pode-se utilizar mais de uma chave por vez. Por exemplo, para desligar o som e utilizar o
driver ANSI.SYS, pode-se digitar o seguinte comando:
AVSIM51 s d2
2.2.2

Argumentos Opcionais
9

Quando se invoca o simulador, podem ser passados um ou mais argumentos de


linha de comando para que o AVSIM51 os execute. Aps o carregamento do AVSIM51,
os argumentos opcionais so lidos um por um (se houver algum) e interpretados como se
fossem uma srie de comandos digitados diretamente no teclado. O AVSIM51 executa
esses comandos um a um.
Cada argumento tratado como uma seqncia de comandos agrupados em cadeia
sem delimitadores. Considere-se a seguinte linha de comando:
AVSIM51 APOPAT.FIL FLDEMO.CMD Return
Sero passados ao simulador o argumento APOPAT.FIL FLDEMO.CMD. O
simulador interpreta essa cadeia de caracteres da seguinte forma:
1.

A responde ao primeiro prompt para a CPU a ser simulada e seleciona a CPU


8051/8751.

2.

P seleciona o menu Patch.

3.

O seleciona a opo Open patch.

4.

PAT.FIL o nome do arquivo patch.

5.

Aps a abertura de PAT.FIL, o AVSIM51 interpreta o prximo argumento da linha


de comando.

6.

F seleciona a opo commandFile.

7.

L seleciona o comando Load do menu CommandFile.

8.

DEMO.CMD responde ao prompt para o nome do arquivo a ser carregado. O


AVSIM51 carrega o arquivo de comandos DEMO.CMD a partir do diretrio
default e comea a execut-lo.

9.

Quando o simulador termina a execuo dos comandos contidos no arquivo


DEMO.CMD, o simulador passa a aguardar o prximo comando do usurio.

Esta caracterstica til quando se deseja estabelecer o mesmo ambiente de trabalho cada
vez que o AVSIM51 for invocado. especialmente til quando utilizada para carregar
arquivos de comandos.
2.3

Como o AVSIM51 Funciona

Quando o AVSIM51 executado, ele simula, em memria, todo o hardware do


chip alvo, incluindo todos os registradores, ports, memria e hardware perifrico. Podese executar cdigo compilado para o chip alvo e observar o estado da CPU medida que
o cdigo executado. O AVSIM51 cria uma completa CPU visual na qual pode-se
observar o cdigo sendo executado, um cdigo de operao por vez. Pode-se observar o
efeito de cada cdigo de operao em registradores, ports e endereos de memria da
CPU alvo.
O AVSIM51 contm tambm um completo depurador simblico. Pode-se
estabelecer breakpoints, passpoints, comandar execuo do cdigo passo a passo, reverter
uma operao e examinar e alterar registradores, memria e flags como em qualquer
depurador simblico. Contudo, como a CPU completa simulada em memria, pode-se
controlar partes do chip alvo s quais um depurador convencional no permite o acesso,
como timers, hardware de interrupes, ports, etc.. Alm disso, o AVSIM51 permite a
10

insero interativa de cdigo (patches) sem a necessidade de se abandonar o simulador


or recompilar o programa.
O significado disso para o programador que o AVSIM51 oferece um ambiente de
depurao extremamente amigvel. O AVSIM51 trata a tela como um editor de tela para
textos o faz, permitindo a movimentao para quase todas as partes do chip simulado e a
alterao de seu contedo. Pode-se ento executar o cdigo para examinar o resultado
das alteraes, reverter passos (com a tecla <UNDO> F9) e tentar outras alteraes.
Pode-se configurar o AVSIM51 para que automaticamente sejam salvos em um arquivo
os cdigos introduzidos durante a depurao (patches), liberando o usurio da
necessidade de memorizar exatamente os cdigos inseridos.
Para organizar as caractersticas disponveis o AVSIM51 apresenta dois modos de
operao:
Modo Display: No modo Display, o simulador opera como um editor de tela. Pode-se
mover o cursor para qualquer parte da CPU indicada em destaque na tela, como
registradores ou ports e alterar seu contedo da rea correspondente. (sob o
UNIX, com 2 atributos de vdeo, pode no ocorrer a indicao em destaque de
reas da tela.)
Modo Command: No modo Command, tem-se acesso a um conjunto de menus de
comando na base da tela. Esses comandos permitem que se carregue arquivos,
examine memria, que se efetue alteraes em fragmentos do programa
(patches), etc..
A comutao entre os dois modos de operao do AVSIM51 feita atravs do
acionamento da tecla <CHGMDE>. Esta tecla corresponde tecla Esc em verses do
AVSIM51 para o MS-DOS. Caso se esteja utilizando outro sistema operacional (como o
UNIX ou o VMS), deve-se consultar as informaes suplementares que acompanham o
simulador.
O modo Display coberto no Captulo 4. O modo Command coberto no
Captulo 5.
O simulador faz tambm uso de um conjunto de teclas de funes para permitir o
controle da execuo do programa. Tais teclas permitem que se comande a execuo
contnua ou no modo passo a passo, que passos sejam revertidos, que se selecione a
velocidade de simulao, as caractersticas da tela e o estabelecimento de breakpoints
dinmicos. As teclas de funes podem ser utilizadas em ambos os modos do simulador,
embora sua operao altere-se ligeiramente em cada modo. Tais diferenas so cobertas
nos captulos apropriados. Elas no alteram o como o programa executado, somente o
mtodo utilizado na sua execuo.
2.4

A Tela do AVSIM51

A tela do AVSIM51 funciona como uma verdadeira CPU visual. Ela simula
cada caracterstica da CPU alvo e apresenta seu contedo atual. Como resultado, a tela
repleta de informaes. Embora a princpio a tela possa parecer confusa, ela est
estruturada em regies distintas. Cada uma das regies apresenta uma parte da CPU alvo
ou informaes sobre o status do simulador. Uma vez que se capte sentido da
organizao das reas, a tela torna-se bastante til.

11

As regies da tela do AVSIM51 so mostradas na Figura 2.2, a figura de


referncia para esta seo. Observe-se que em outras verses do AVSIM51 a tela pode
apresentar-se ligeiramente diferente, especialmente no que se refere ao posicionamento de
ports e hardware perifrico.
Cada regio da tela apresenta o contedo de todo o hardware associado a uma rea
particular. Por exemplo, a regio Registers and Flags (nmero 1 na figura 2.2)
apresenta o contedo de cada registrador e de cada flag do 8051.
As regies que correspondem CPU alvo (1 a 7) apresentam dados em formatos
particulares, como bits binrios, dgitos hexadecimais (nibbles) ou caracteres ASCII.
Em algumas regies, como a Accumulator, os dados so apresentados em mais de um
formato. Isto permite que se examine o contedo destas reas no formato mais
conveniente para o objetivo que se tenha em vista. O cursor pode ser configurado para
mover-se sempre para uma representao particular, se ela for utilizada.
Dentro de uma regio, cada objeto, como um registrador ou terminal, tratado
como uma janela separada. Pode-se utilizar as teclas de cursor para movimentao do
mesmo entre janelas ou dentro de uma janela particular.

LABEL
OPERATION
8051/8751 AVSIM 8051 Simulator/Debugger
V1.30
RESET
no
memory
CPU REGISTERS
FLAGS
SCL SPD DSP SKP CURSOR
0001H
no
memory
C Accumulator
AC F0 OV P OFF HI ON OFF MENU
0002H
no
memory
0 00000000:00:_
0 0 0 0
Cycles:
0003H
no
memory
addr
data
0004H
no
memory
PC:0000 FF FF FF FF Timers TH/TL TF/TR G/T/M1/M0
0005H
no
memory
SP: 07 00 00 00 00
T0: 00 00
0 0 0 0 0 0
0006H
no
memory
00 00 00 00
T1: 00 00
0 0 0 0 0 0
0007H
no
memory
DP:0000 FF FF FF FF
0008H
no
memory
R0:00:_ 00:_ RB:00 Ints A S T1 X1 T0 X0 Edg IT IE
0009H
no
memory
R1:00:_ 00:_
B:00 En 0 0 0 0 0 0
X0: 0 0
000AH
no
memory
R2:00
R4:00
R6:00 Pr
0 0 0 0 0
X1: 0 0
000BH
no
memory
R3:00
R5:00
R7:00 SBUF: In
Out PCON:0xxxxxxx
000CH
no
memory
Data Space
00:_ 00:_ SCON:00000000
000DH
no
memory
0000 00 00 00 00 00 00 00 00 ________ Ports
000EH
no
memory
0008 00 00 00 00 00 00 00 00 ________ P0
11111111
000FH
no
memory
0010 00 00 00 00 00 00 00 00 ________ FF:_:11111111
0010H
no
memory
0018 00 00 00 00 00 00 00 00 ________ P1
11111111
0011H
no
memory
Data Space
FF:_:11111111
0012H
no
memory
0020 00 00 00 00 00 00 00 00 ________ P2
11111111
0013H
no
memory
0028 00 00 00 00 00 00 00 00 ________ FF:_:11111111
0014H
no
memory
0030 00 00 00 00 00 00 00 00 ________ P3
11111111
0015H
no
memory
0038 00 00 00 00 00 00 00 00 ________ FF:_:11111111
>Select Command - or use arrow keys
Dump Expression commandFile Help IO Load
--space-- ESC to screen

5
Figura 2.2: Regies da Tela do AVSIM51
12

3
4
6

1. Registers and Flags. Esta regio apresenta o contedo de cada registrador associado
CPU alvo e mostra o estado de cada um de seus flags.

Objeto de Tela

Smbolo

Tipo de janela

Tamanho

Comentrio

Accumulator

ACC

Binary
Hex
ASCII

8 bits
1 byte
1 byte

Carry

Binary

1 bit

Aux-Carry

AC

Binary

1 bit

User-Flag

F0

Binary

1 bit

Overflow

OV

Binary

1 bit

Parity

Binary

1 bit

Program Counter

PC

Hex

2 bytes

Program Memory

@PC

Hex

4 bytes

Stack Pointer

SP

Hex

1 byte

Stack Memory

@SP

Hex

8 bytes

@SP highlighted

Data Pointer

DP

Hex

2 bytes

Dados externos

Ext Data Ptr

@DP

Hex

4 bytes

@DP highlighted

B Register

Hex

1 byte

Register Bank

RB

Binary

2 bits

Controls Register
windows

Data Registers

R0-R7

Hex

1 byte

Controlled by RB

R0-R1

ASCII

1 byte

Flags:

Register Indirect

@R0-@R1 Hex

1 byte

ASCII

Display Only
@PC highlighted

Controlada por RB

1 byte

2. Program Fragment. Esta regio apresenta endereos, labels, cdigos de operao e


argumentos da poro do programa correntemente em execuo. O cdigo de
operao corrente apresentado em vdeo reverso. Alt F5 comuta a apresentao
entre nomes de smbolos e seus valores numricos.

Objeto de Tela
Program Fragment

Smbolo

Tipo de janela

Tamanho

Comentrio

Display Only

20 lines

@PC highlighted

13

3. Timer Hardware. Esta Janela mostra a configurao e o contedo corrente de cada


um dos timers da CPU alvo.

Objeto de Tela

Smbolo

Tipo de janela

Tamanho

Timers Counters
Flags:
Overflow
Run Control
Gating Control
Selector
Mode Control
8052 Registers:
Timer 2 Control
Reload Regs

TH/TL

Hex

TF
TR
G
C
B1/0

Binary
Binary
Binary
Binary
Binary

1bit
1bit
1bit
1bit
1bit

T2CON
RCAP2

Binary
Hex

8 bits
2 bytes

bytes

4. Interrupt Hardware. Esta rea mostra a configurao do hardware de interrupes


da CPU alvo.

Objeto de Tela
Enable Register:
All
Serial
Timers
External
Priority Register:
Serial
Timers
External
Priority FF
External Flags:
Trigger
Edge

Smbolo

Tipo de janela

Tamanho

Comentrio
@PC highlighed

A
S
T0/1/2
X0/1

Binary
Binary
Binary
Binary

1 bit
1 bit
1 bit
1 bit

S
T0/1/2
X0/1
IIP

Binary
Binary
Binary
Display Only

1 bit
1 bit
1 bit
2 chars

IT
IE

Binary
Binary

1 bit
1 bit

High/Low levels

5. Dump Memory Areas. Estas duas reas so utilizadas pelo comando Dump para
apresentar o contedo da memria em bytes hexadecimais e caracteres ASCII.
Quando o cursor est em uma rea de apresentao de memria, o endereo do cursor
mostrado no topo da rea como um offset em relao a um smbolo, se houver um
nas proximidades, ou como um endereo numrico. Observe-se que a posio do
cursor mostrada ao lado do cabealho da janela da rea de apresentao de memria.
O endereo o endereo absoluto ou um offset em relao a um label prximo.

14

Objeto de Tela

Smbolo

Tipo de janela

Tamanho

Comentrio

Dump Area 1

Dump Area 2

Hex
ASCII
Hex
ASCII

32 bytes
32 bytes
32 bytes
32 bytes

Indirect address
highlighted
Indirect address
highlighted

6. Serial Port. Esta rea mostra os contedos do buffer do receptor e do transmissor do


port serial em hexadecimal e em ASCII.

Objeto de Tela

Smbolo

Tipo de janela

Tamanho

Comentrio

Receive Buffer

SBUF
SBUFL

Control Register
Power Control
CMOS Registers:
Power Control

SCON
PCON
PCON

1 byte
1 byte
1 byte
1 byte
8 bits
1 bit
5 bits

In

Transmit Buffer

Hex
ASCII
Hex
ASCII
Binary
Binary
Binary

Out
Display Only
SMOD bit
SMOD/GF0/GF1/
PD/IDL

7. Ports. Esta rea mostra as configuraes dos latches e o contedo de cada um dos
ports da CPU alvo. As configuraes dos latches so mostradas ao lado dos nomes
dos ports. Os contedos dos ports so mostrados abaixo das configuraes dos
latches e so apresentados em nibbles hexadecimais, em caracteres ASCII e em
bits binrios.

Objeto de Tela

Smbolo

Tipo de janela

Tamanho

Port Latch
Port Pins

P0L-P3L
P0-P3

Binary
Hex
ASCII
Binary

8 bits
1 byte
1 byte
8 bits

Comentrio
Quasi-Biderectional

8. Command Area. Esta rea apresenta os menus utilizados para controlar o simulador.
Est localizada nas duas linhas do extremo inferior da tela.
9. Simulator Status. Esta rea apresenta o estado atual das configuraes do simulador,
como a velocidade de simulao e se a tela ser ou no atualizada. O contador de
cclos um pseudo-registrador que pode ser editado como qualquer outro. Pode-se
tambm estabelecer breakpoints no contador (utilizando o lable CYCLES). Para
zerar o contador move-se o cursor para o pseudo-registrador Cycles (com Alt Y) e
pressiona-se Ctrl Home.

Objeto de Tela

Smbolo

Tipo de janela
15

Tamanho

2.5

Scroll Mode

SCL

ON/OFF

Simulator Speed
Display Update

SPD
DSP

HI/MED/LO
ON/OFF

Subroutine Skip

SKP

ON/OFF

Cursor Mode

CURSR

HEX/BINARY/
ASCII/MENU

Cycles

Cycles

Decimal

Limits scrolling to one


window or screen.
Speed of simulation.
Update screen while
simulator is running.
Skips subroutines in
single-step mode.
Which radix cursor
will jump to. Set to
MENU in Cmd. Mode.
Displays number of
clock cycles elapsed.

O Teclado do AVSIM51

A verso MS-DOS/PC-DOS do AVSIM51 otimizada para um teclado no estilo


IBM-PC, que dotado de 10 teclas de funes, e um conjunto de teclas numricas e de
controle do cursor (keypad). A maior parte dos microcomputadores IBM-PC
compatveis tem teclados similares; aqueles que diferem tem geralmente um mapa de
converso. Deve-se consultar o guia do operador, se necessrio.
Para outros sistemas operacionais, a AVOCET fornece folhas de converso.
Neste manual, cada tecla referenciada pela sua funo em lugar do seu nome.
Por exemplo, a tecla que reverte a execuo de um cdigo de operao denominada
<UNDO>. Ela corresponde tecla F9 no teclado de um IBM-PC, embora outros teclados
possam utilizar outras teclas. De forma similar, a tecla que coloca o simulador no modo
de execuo contnua denominada <GO>. Esta corresponde tecla F1 no teclado do
IBM-PC.
O Apndice B apresenta um sumrio do uso de todas as teclas em todos os modos.
2.5.1

Teclas de Funes

O AVSIM51 utiliza as 10 teclas de funes do teclado do IBM-PC para


disponibilizar o controle bsico do simulador. Estas teclas permitem que se comute entre
execuo contnua e execuo passo a passo, que se estabelea breakpoints dinmicos e
que se reverta passos. Elas proporcionam as funes bsicas de um depurador de forma
simples e fcil de usar.
As teclas de funes podem ser utilizadas tano no modo Display quanto no
modo Command, mas com uma diferena. No modo Command, comanda-se a
execuo do programa pela CPU alvo com a tecla <GO>. Uma vez em execuo, o
programa pode ser paralisado atravs do acionamento de qualquer tecla. No modo
Display, uma vez a CPU colocada em execuo com <GO>, deve-se pressionar <GO>
novamente, ou comutar para o modo Command com <CHGMDE>, para paralisar a
simulao.
As teclas de funes e suas atribuies so listadas abaixo:
Nome da Tecla

Tecla do IBM-PC
16

Descrio da Tecla

<GO>

F1

Inicia e paralisa simulao


contnua da CPU alvo.

<BKUP>

F2

Movimenta o cursor de
breapoints para um
cdigo de operao acima
no fragmento de programa.
(Os breakpoints so
descritos na pgina
seguinte.)

<BKST>

F3

Estabelece um
breakpointdinmico, do
tipo R/W na posio do
cursor de breakpoints,
move ento a posio do
cursor de breakpoints para
a posio apontada pelo
valor atual do PC.

<BKDN>

F4

Movimenta o cursor de
breapoints para um
cdigo de operao abaixo
no fragmento de programa.

<SPD>

F5

Seleciona a velocidade (HI,


MEDium, LOW) qual a
simulao ocorrer.

<DSP>

F6

Inicia e paralisa a
atualizao contnua da tela.
Paralisa-se a atualizao
contnua para aumentar a
velocidade de simulao ou
se a inicia para examinar o
resultado de cada cdigo de
operao na CPU alvo.

<WMOD>

F7

Estabelece o tipo da janela


(BINary, HEX ou ASCII)
para a qual o cursor deve se
mover se a janela tiver mais
de um modo de
apresentao.

<SKP>

F8

Ativa (ON) ou desativa


(OFF) o salto sobre
subrotinas. No modo passo
a passo, quando esta opo
17

est em ON, o simulador


no no atualiza a tela a
cada exucuo de instruo
da subrotina. Quando a
opo est em OFF, o
simulador atualiza a tela a
cada execuo de instruo
da subrotina.
<UNDO>

F9

Reverte a execuo de um
cdigo de operao.
Restabelece ao estado
anterior toda a memria,
registradores, arquivos de
entrada e sada e contagem
de ciclos decorridos. O
valor do contador de
passpoints no revertido
ao estado anterior por esta
tecla. So revertidos todos
os comandos Reset CPU e
Execute e o efeito de
interrupes.

<SSTEP>

F10

Executa uma instruo do


programa a cada
acionamento. A presena de
breakpoints ignorada.

<TRACE>

Alt F6

Comuta a atualizao
individual de cada janela
entre ON e Off,
independentemente do
estado de DSP.

<SCLTOG>

Alt PgUp

Comuta o modo de rolagem


(Scroll Mode) entre ON
e OFF. Quando o modo
de rolagem est em OFF
(default), as teclas do cursor
fazem-no mover-se
livremente ao longo da tela.
Quando o modo de rolagem
est em ON, o cursor fica
restrito janela atual.

2.5.2

Utilizao das Teclas de Funes


18

Teclas de Simulao. As teclas bsicas de simulao so <GO> F1, <SSTEP>


F10 e <UNDO> F9. Quando se aciona <GO> F1, o simulador inicia a execuo do
programa. Comeando no endereo especificado no contador de programa (PC), o
AVSIM51 executa o programa do usurio instruo a instruo. Todos os registradores,
ports e memria so atualizados medida que o programa executado. Se o programa
atinge um breakpoint a execuo paralisada. Por default, toda a tela atualizada aps
a execuo de cada instruo.
Desativa-se a atualizao da tela e escolhe-se seletivamente quais janelas devem
ser atualizadas com <DSP> F6 e <TRACE> Alt F6. Veja-se abaixo a seo sobre
atualizao da tela para maiores informaes. Pode-se tambm selecionar a velocidade
qual a tela atualizada com a <SPD> F5. Esta tecla efetua a comutao entre as
velocidades de simulao baixa (LOw), mdia (MEDium) e alta (HIgh).
<SSTEP> F10 executa uma instruo (a do endereo indicado pelo PC) cada vez
que pressionada. Caso o programa seja paralisado em um breakpoint, utiliza-se
<SSTEP> F10 para avanar sobre ele.
Por default, o AVSIM51 executa subrotinas passo a passo. Caso no se deseje
avanar passo a passo ao longo de uma subrotina (por exemplo, se a subrotina estiver
funcionando corretamente e haja interesse apenas no corpo principal do programa),
utiliza-se <SKP> F8 para passar pela subrotina sem atualizar a tela a cada passo. Quando
SKP est em ON, o AVSIM51 avana a plena velocidade ao longo de cada subrotina.
Quando SKP est em OFF, pode-se avanar passo a passo ao longo de subrotinas.
Quando se SKP est em ON e se avana um passo com <SSTEP> F10 em uma
chamada de subrotina, a subrotina executa a plena velocidade e o simulador para
imediatamente antes da prxima instruo. Quando a execuo da subrotina finalizada
pode-se novamente avanar passo a passo ao longo do programa. Observe-se que a
subrotina executada normalmente todos os registradores, ports, etc. que se supe
sejam alterados pela subrotina tero valores corretos.
<UNDO> F9 faz exatamente o que o nome diz: as alteraes causadas pela
execuo da ltima instruo executada so desfeitas. O valor do PC restaurado ao da
instruo prvia; todos os ports, registradores e memria so voltam a ter os contedos
que tinham antes da execuo da instruo cuja execuo foi revertida. Se arquivos de
entrada e sada estiverem sendo utilizados, eles tambm voltam ao estado anterior.
Somente passpoints No so afetados por <UNDO> F9.
Pode-se configurar o tamanho da pilha que mantm o registro histrico da
execuo do programa para ser to grande ou pequena quanto se deseje atravs do
comando setUP Undo no menu principal de comandos. Quando essa opo
selecionada, o AVSIM51 emite um prompt solicitando o tamanho do buffer para a
histria da execuo do programa. Quando se tenta reverter um nmero de instrues
alm do que possvel com o registro histrico, o AVSIM51 emite uma mensagem de
alerta: Sorry CANT UNDO.
Teclas de Breakpoints. As teclas de breakpoint permitem que se configure
breakpoints temporrios (dinmicos) no fragmento do programa apresentado na tela.
Quando qualquer das teclas de cursor de breakpoint acionada, <BKUP> F2 ou
<BKDN> F4, o cursor de breakpoint passa a ser mostrado. O cursor de breakpoints
mostrado como um tringulo destacado. Pressiona-se <BKUP> F2 e <BKDN> F4 para
movimentar o cursor de breakpoint. Quando o mesmo estiver posicionado ao lado do
19

cdigo de operao que se quer capturar, pressiona-se <BKST> F3. O tringulo altera-se
para uma pequena seta.
Quando o programa for executado, ele ser paralisado quando o breakpoint for
atingido. Este breakpoint dinmico; isto , cancelado automaticamente aps
determinar uma paralisao do programa. Para estabelecer breakpoints permanentes
(sticky), e utilizar breakpoints condicionais ou breakpoints com atraso, utiliza-se o
menu Set. Veja-se o Captulo 6 para mais informaes sobre o menu Set e o Captulo
7 para mais informaes sobre breakpoints em geral.
Scroll Lock. Por default, o cursor do simulador move-se de uma janela para outra
medida que comando para alm de seus limites. Isto conveniente quando se deseja
alterar diferentes valores em diferentes janelas. Contudo, h situaes em que mais
conveniente restringir a movimentao do cursor a uma janela. Por exemplo, quando se
altera dados em uma rea de apresentao de memria, mais fcil fazer com que o a
teclas de movimentao para a direita faa o cursor deslocar-se para a prxima linha da
mesma janela do que desloc-lo para a rea de ports. Ou, caso se esteja simulando a
entrada de dados de um teclado para um port, pode-se fixar o cursor na janela ASCII do
port e digitar sem ter que constantemente moviment-lo de volta para o port.
A tecla <SCLTOG> Alt PgUp comuta o cursor entre os dois modos de operao.
Para restringir a movimentao do cursor ao interior da janela atual, digita-se <SCLTOG>
Alt PgUp. O cursor ficar ento restrito janela atual. Para desativar a restrio do
cursor digita-se Alt PgUp. Quando a restrio do cursor est ativada as reas de
apresentao de dados (dump areas) so roladas (ao se atingir o ltimo byte da rea, os
prximos 8 bytes so apresentados).
Pode-se utilizar teclas expressas (que so descritas no Captulo 4) para sair de
uma janela configurada com <SCLTOG> PgUp. A restrio do cursor ainda estar em
efeito, de forma que o cursor permanecer na nova janela at que se acione outra tecla
espressa para liberar o cursor.
Display Update. Por default, toda a tela do simulador automaticamente
atualizada aps a execuo de cada cdigo de operao. Contudo, isto requer um
considervel overhead, que pode diminuir a velocidade de simulao. Alm disso, h
situaes em que se deseja atualizar apenas poucas janelas, em lugar de toda a tela. O
AVSIM51 oferece essa opo ao usurio atravs da desativao seletiva ou total das
janelas na tela. <DSP> F6 comuta o modo de apresentao da janela entre atualizao e
no atualizao automtica. Quando a tela toda est em OFF, somente o Priority FF
e os marcadores de banco so atualizados. H tambm situaes em que se deseja
atualizar seletivamente a tela. Por exemplo, pode-se desativar a atualizao da janela de
fragmento de programa (que requer um grande overhead), mas manter a atualizao do
acumulador, dos flags e dos registradores. Para fazer isto, desativa-se a atualizao da
tela com <DSP> F6. Move-se ento o cursor para a janela que se quer manter com
atualizao automtica e aciona-se <TRACE> Alt F6. Quando o simulador
executado, ser efetuada a atualizao automtica apenas das janelas selecionadas para
rastreio com <TRACE> Alt F6.
Para desativar a atualizao de uma janela em particular, move-se o cursor para
ela e aciona-se <TRACE> Alt F6 novamente. Para ativar a atualizao de toda a tela
novamente, aciona-se <DSP> F6. Se repetidamente for desejada a atualizao do mesmo
conjunto de janelas, pode-se criar um arquivo de comandos para ativ-las. Abre-se um
20

arquivo de comandos com o nome apropriado (por exemplo, TRACE.ON) e com o


comando Reset Dsptrace desativa-se a atualizao automtica de todas as janelas que
esto sendo rastreadas. Ativa-se ento cada uma das janelas que se quer rastrear e fechase o arquivo quando se houver terminado. Sempre que se desejar ter atualizao
automtica apenas das referidas janelas, basta utilizar-se o arquivo de comandos.
Como o cursor no pode ser posicionado sobre a janela de latches de P0, P1, P2
e P3, o flag de rastreio dessas janelas configurado com o mesmo estado da
correspondente janela de terminais.
No prximo Captulo, Tutorial, ser demonstrado o uso dessas teclas, bem como
de ambos os modos de operao do simulador.

21

Captulo 3

TUTORIAL
Este captulo oferece uma pequena introduo tutorial ao AVSIM51. Recomendase a leitura dos Captulos 1 e 2 antes de utilizar este tutorial.
O tutorial utiliza programas demonstrativos includos no disco de distribuio do
AVSIM51. Caso estes arquivos tenham sido excluidos do disco de trabalho, eles devem
ser copiados do disco de distribuio para o disco de trabalho antes de utilizar-se o
tutorial. No se deve utilizar o disco de distribuio como disco de trabalho.
NOTA:
Neste tutorial, referencia-se endereos fixos para partes do programa demonstrativo. Em
alguns casos, esses endereos podem ter sido alterados quando o programa demonstrativo
foi atualizado. Se o simulador no aceitar os endereos indicados, deve-se obter os
endereos no prprio programa demonstrativo e utiliz-los em lugar dos indicados neste
captulo.
3.1

Introduo

3.1.1

O Programa Demonstrativo

O programa demonstrativo, DEMO1.ASM, includo no disco de distribuio,


um pequeno programa que utiliza algumas das caractersticas do chip controlador 8051
para demonstrar caractersticas do simulador. O arquivo fonte completo est includo no
Apndice C. O programa efetua o seguinte:
1. A funo principal do programa simular uma procisso de luzes no Port 1.
Assume-se que cada bit no port esteja conectado a uma lmpada ou LED. Um padro
introduzido no Port 2 atravs de 8 chaves de comutao, uma para cada bit. Este
padro copiado no Port 1, fazendo com que os LEDs acendam. O padro ento
rotacionado um bit para a direita, com o bit no extremo direito sendo reintroduzido na
posio do bit do extremo esquerdo da cadeia de 8 bits. Esta rotao do padro
continua a uma velocidade constante e modificada apenas por interrupes. O efeito
da rotao fazer com que as luzes paream estar perseguindo umas s outras.
Por convenincia, a verso 8051 do simulador utilizada na demonstrao.
Alternativamente, qualquer outro chip da famlia, exceto o 8031/C31/C32 que no
possui o Port 2, pode executar o programa DEMO1.ASM.
2. O Timer 0 configurado no modo Timer e conta continuamente no sentido crescente.
Quando ocorre transbordamento, o sentido de rotao da procisso de luzes
invertido. O timer ento recarregado com o inverso do valor da seqncia no Port 2
e comea a contar novamente.
22

3. Uma segunda tarefa executada em plano de fundo, utilizando o receptor do port


serial. Esta tarefa implementa um buffer de teclado: um caractere ASCII
assumido como digitado no teclado e introduzido nos bits 6-0 do port Receptor Serial,
e a interrupo gerada pelo receptor (RI) comutada para nvel alto. Isto inicia uma
rotina de atendimento a interrupo do port serial, que captura o caractere ASCII e o
transfere para um buffer (que apresentado em uma rea de apresentao de
memria). Se o caractere 0D hexadecimal, o buffer reinicializado com zeros
para um efeito visual. Uma vez o cdigo da tecla tendo sido armazenado no buffer,
a interrupo termina e o outro processamento continua.
3.2 Iniciando o Tutorial
3.2.1 Instalando o Simulador
Antes de iniciar , deve-se instalar o simulador de acordo com as instrues do
Captulo 2. Os arquivos demonstrativos no devem ser excludos do disco de trabalho ou
do subdiretrio no qual o AVSIM51 estiver instalado.
Caso esteja sendo utilizada uma cpia do simulador instalada anteriormente, devese assegurar que os arquivos demonstrativos estejam presentes no disco de trabalho. O
modo mais simples de fazer isso em um sistema MS-DOS colocar o disco de trabalho
no drive B: e o disco de distribuio no drive A: e digitar:
copy a:demo*.* b:/v Return
Veja-se o Captulo 2 para uma lista completa dos arquivos presentes no disco de
distribuio.
3.2.2 Executando o Simulador
No MS-DOS: Se estiver sendo utilizado um sistema com dois floppy-disks,
coloca-se o disco de trabalho no drive A. se estiver sendo utilizado um sistema com disco
rgido, desloca-se para o diretrio onde foi instalado o AVSIM51.
Em sistemas VMS ou UNIX: Veja-se o Apndice B no final deste manual para
instrues de operao.
Digita-se
AVSIM51 Return
Aparece a tela de abertura:
Intel 8051 Microprocessor Configurations
HMOS ROM

HMOS ROMless

CMOS ROM

A: 8051/8751

C: 8031

D: 80C51

B: 8052/8752

D: 8032

E:80C31

Choose a CPU for simulation:

23

Digita-se A para selecionar o 8051. (No h necessidade do acionamento de


Return. O AVSIM51 agir imediatamente. Exceto para a entrada de dados, no h
necessidade do acionamento de Return para ativar comandos do AVSIM51.)
A tela do simulador aparecer como mostrado abaixo:

LABEL
OPERATION
8051/8751 AVSIM 8051 Simulator/Debugger
V1.30
RESET
no
memory
CPU REGISTERS
FLAGS
SCL SPD DSP SKP CURSOR
0001H
no
memory
C Accumulator
AC F0 OV P OFF HI ON OFF MENU
0002H
no
memory
0 00000000:00:_
0 0 0 0
Cycles:
0003H
no
memory
addr
data
0004H
no
memory
PC:0000 FF FF FF FF Timers TH/TL TF/TR G/T/M1/M0
0005H
no
memory
SP: 07 00 00 00 00
T0: 00 00
0 0 0 0 0 0
0006H
no
memory
00 00 00 00
T1: 00 00
0 0 0 0 0 0
0007H
no
memory
DP:0000 FF FF FF FF
0008H
no
memory
R0:00:_ 00:_ RB:00 Ints A S T1 X1 T0 X0 Edg IT IE
0009H
no
memory
R1:00:_ 00:_
B:00 En 0 0 0 0 0 0
X0: 0 0
000AH
no
memory
R2:00
R4:00
R6:00 Pr
0 0 0 0 0
X1: 0 0
000BH
no
memory
R3:00
R5:00
R7:00 SBUF: In
Out PCON:0xxxxxxx
000CH
no
memory
Data Space
00:_ 00:_ SCON:00000000
000DH
no
memory
0000 00 00 00 00 00 00 00 00 ________ Ports
000EH
no
memory
0008 00 00 00 00 00 00 00 00 ________ P0
11111111
000FH
no
memory
0010 00 00 00 00 00 00 00 00 ________ FF:_:11111111
0010H
no
memory
0018 00 00 00 00 00 00 00 00 ________ P1
11111111
0011H
no
memory
Data Space
FF:_:11111111
0012H
no
memory
0020 00 00 00 00 00 00 00 00 ________ P2
11111111
0013H
no
memory
0028 00 00 00 00 00 00 00 00 ________ FF:_:11111111
0014H
no
memory
0030 00 00 00 00 00 00 00 00 ________ P3
11111111
0015H
no
memory
0038 00 00 00 00 00 00 00 00 ________ FF:_:11111111
>Select Command - or use arrow keys
Dump Expression commandFile Help IO Load
--space-- ESC to screen

5
Figura 3.1. A tela do AVSIM51.

3.2.3 A Tela do Simulador


As partes da tela do simulador foram explicadas em detalhe no Captulo 2.
Resumidamente, h nove reas principais. Imagine-se a tela dividida em nove reas
como indica a Figura 3.1:
1.

Registers and Flags. Esta regio, localizada na regio superior central (# 2,5),
apresenta o contedo de cada registrador da CPU alvo e o estado de cada um de seus
flags.

2.

Program Fragment. Esta regio, coluna da esquerda (# 1,4,7), apresenta endereos,


labels, cdigos de operao e argumentos da poro do programa atualmente em
execuo.

24

3
4
6

3.

Timer Hardware. Esta rea, na poro direita central (# 3), apresenta as


configuraes e os contedos atuais de cada um dos timers da CPU alvo.

4.

Interrupt Hardware. Esta rea, na poro direita central da tela (# 4), apresenta as
configuraes do hardware de interrupes da CPU alvo.

5.

Dump Memory Areas. Estas duas reas, na poro central inferior (#5), so
utilizadas pelo comando Dump para apresentar o contedo de 32 bytes de memria
em nibbles hexadecimais e caracteres ASCII. Algumas verses do 8051 podem
mostrar apenas 16 nibbles hexadecimais e 16 bytes ASCII quando so selecionados
perifricos adicionais.

6.

Serial Port. Esta rea, na poro direita mdia, (# 6), mostra o contedo dos
buffers do receptor e do transmissor do port serial em hexadecimal e em ASCII.

7.

Ports. Esta rea, na poro direita inferior (# 7), mostra a configurao dos latches
e o contedo de cada um dos ports da CPU alvo. As configuraes dos latches so
mostradas ao lado dos nomes dos ports. O contedo de cada port colocado abaixo
da configurao correspondente dos latches e mostrado como nibbles
hexadecimais, caracteres ASCII e bits binrios.

8.

Command Area. Esta rea, nas duas linhas na borda inferior da tela (# 8), apresenta
os menus utilizados para controlar o simulador. A rea de comandos fica vazia
quando o simulador est no modo Display.

9.

Simulator Status. Esta rea, na poro superior direita (# 9), apresenta o status atual
das configuraes do simulador, como a velocidade de simulao e se h ou no
atualizao automtica da tela.

3.2.4 Carregando o Programa Demonstrativo


O programa demonstrativo, DEMO1.ASM, deve ainda estar no diretrio de
trabalho. Juntamente com o programa demonstrativo est disponvel um arquivo batch,
RUN_DEMP.BAT, que carrega o programa demonstrativo atual e efetua algumas
operaes adicionais, como o acoplamento de vrios arquivos, configurao da memria,
etc..
O arquivo RUN_DEMO.BAT na verdade contm uma nica linha:
AVSIM51 afidemo.cmd
Este arquivo, carrega o arquivo de comandos, DEMO.CMD. Os arquivos de
comandos so discutidos no Captulo 6, na seo commandFile, mas, resumidamente,
so arquivos que contm comandos para o AVSIM51. Carrega-se um arquivo de
comando File Load e o AVSIM51 executa ento cada comando no arquivo como se
fosse digitado diretamente atravs do teclado.
Antes de ir adiante, importante explicar como se sai do simulador. No modo
Command digita-se Q, de Quit. Aparece ento o menu Quit. Este menu tem
apenas uma opo: Exit. Digita-se E para sair. (A segunda tecla acionada permite
que se mude de idia. Se for o caso, isto , se a tecla Q foi digitada por engano, digitase Ctrl C e a operao ser abortada.)
De passagem, observe-se que Ctrl C aborta qualquer menu de comando. (Caso
se esteja no modo Display, o AVSIM51 emite um beep quando a tecla Q
25

pressionada. Digita-se Esc para comutar para o modo Command e ento novamente
Q.)
Agora tudo est preparado para a continuao do trabalho. Para carregar o
arquivo de comandos efetua-se os seguintes passos:

Digita-se F e o menu CommandFile aparecer na parte inferior da tela.

Digita-se L e o simulador emitir um prompt solicitando o nome do arquivo a ser


carregado.

Digita-se DEMO.CMD Return e o arquivo de comandos ser carregado e ter sua


execuo iniciada.

Espera-se por alguns instantes a execuo do arquivo de comandos. Observe-se


que vrios registradores so atualizados durante a simulao. Contudo, nem toda a tela
atualizada; o AVSIM51 permite que se escolha seletivamente as reas da tela a serem
atualizadas. (A atualizao seletiva reduz o overhead e aumenta a velocidade de
simulao.) Posteriormente neste tutorial ser demonstrado como selecionar reas de tela
para atualizao.
Observe-se o port P2 e ver-se- o padro luminoso sendo alterado. O buffer do
port serial na rea inferior de dados apresenta os caracteres medida que vo sendo
recebidos do teclado.
Aps observar a execuo do programa por algum tempo paralisa-se a simulao.

Pressiona-se <GO> para paralisar a simulao. (<GO> corresponde tecla F1 no


IBM-PC). Veja-se o Apndice B para a traduo das teclas caso o AVSIM51 esteja
sendo executado sob o UNIX ou o VMS.)

Observe-se que toda a tela atualizada quando a simulao paralisada. O


programa demonstrativo atualizado e o cursor do contador de programa pra na parte do
programa demonstrativo que estava sendo executada quando a simulao foi paralisada.
Para garantir que o simulador esteja no estado adequado para o restante deste
tutorial, deve-se reinicializar a CPU (comando Reset Cpu). Isto ter o efeito de
reinicializar todos os registradores e ports aos seus estados iniciais. O contador de ciclos,
contudo, no ser reinicializado por este comando.
Os comandos seguintes reinicializam a CPU. Estes comandos sero explicados
mais detalhadamente adiante neste tutorial.

Se o menu de comandos no estiver sendo apresentado na base da tela e estiver sendo


utilizado um IBM-PC ou clone do IBM-PC, pressiona-se a tecla Esc. (Ou, se estiver
sendo utilizado o sistema UNIX ou o VMS, veja-se o Apndice B para a tecla correta
a ser utilizada.) O menu de comandos aparecer.

Digita-se R e o menu Reset ser mostrado.

Digita-se C e a CPU ser reinicializada.

Digita-se Esc novamente.

3.3 Teclas de Simulao

26

O AVSIM51 utiliza um conjunto de teclas para o controle dos elementos bsicos


da simulao: execuo passo a passo e a velocidade plena, reverso de passos,
estabelecimento de breakpoints e tela. Estes elementos so mapeados nas 10 teclas de
funes em um IBM-PC, embora estas tambm estejam presentes em outros terminais.
(Veja-se o Apndice B para uma lista completa das teclas em outras mquinas.)
Como foi mencionado anteriormente as teclas so referenciadas pela sua funo
em lugar da letra que marcada no teclado. Por exemplo, a tecla que determina o incio da
simulao a velocidade plena pelo AVSIM51 denominada <GO>. Contudo ela ser
referenciada por <GO> F1, pois no IBM-PC corresponde tecla de funo F1.
H trs teclas bsicas que devem ser conhecidas para executar a simulao:

Nome da Tecla

Tecla no IBM-PC

Funo

<GO>

F1

Executa a simulao a plena velocidade


(modo contnuo de execuo).

<SSTEP>

F10

Executa a simulao no modo passo a


passo.

<UNDO>

F9

Reverte os efeitos de um cdigo de


operao.

3.3.1 As Teclas Go e Single-Step


Quando pressionada a tecla GO> F1, o simulador executa o programa a
velocidade plena, no modo contnuo. Ele executa cada cdigo de operao na seqncia,
lendo e escrevendo em ports, processando interrupes, alterando registradores, flags e
memria. A plena velocidade, no modo contnuo, o simulador comporta-se exatamente
como o chip alvo.
A tecla <SSTEP> F10, por outro lado, executa um cdigo de operao cada vez
que pressionada. Isto permite que, uma por vez, sees particulares de cdigo do
programa sejam testadas.
Como o simulador j foi reinicializado, os registradores foram zerados e a
primeira linha de programa destacada na tela: RESET AJMP MAIN. O simulador est
pronto para que se exercite os seguintes comandos:

Digita-se <SSTEP> F10 uma vez. O simulador executar um cdigo de operao.


Observe-se o acumulador sendo zerado.

Quando <SSTEP> F10 pressionada uma vez mais, o cdigo de operao no


endereo 0103H (MOV P1,A) ser executado e o port P1 passar a conter zeros.

3.3.2 A Tecla Undo


A tecla Undo constitui mais uma das importantes caractersticas do depurador
do AVSIM51. Quando <UNDO> F9 pressionada, o simulalor reverte a execuo da
ltima instruo. Todos os registradores, flags, memria e arquivos de entrada e sada so
27

revertidos aos seus estados anteriores. Pode-se estabelecer o nmero mximo de


instrues que podem ser revertidas atravs da configurao do tamanho do buffer onde
mantido o registro histrico da execuo das instrues mais recentes com o comando
setUp Undo.
Aqui est um exemplo. Observe-se que a seguinte linha de cdigo est destacada
no fragmento de programa:
1003H CLR F0

Pressiona-se <UNDO> F9 e o simulador reverter a execuo da instruo MOV


P1,A. O contedo do port P1 ir de 0h a FFh, seu valor prvio. (Se for
repetidamente pressionada <UNDO> F9, mais instrues sero revertidas.)

<SSTEP> F10 e <UNDO> F9 permitem que se avance e retroceda ao longo de


uma poro particular do programa e examine seus efeitos. Isso associado habilidade
do AVSIM51 em editar registradores, flags e memria e possibilidade de insero de
diferentes patches, constitui uma poderosa ferramenta de depurao.
3.3.3

As Teclas do Cursor de Breakpoints

Uma caracterstica bsica de qualquer depurador sua habilidade em permitir o


estabelecimento de breakpoints. Um breakpoint essencialmente um comando para
o simulador (ou depurador) paralisar o programa quando um ponto particular do mesmo
for atingido. Quando um breakpoint atingido, e todas as condies a ele associadas
so satisfeitas, o programa paralisado. Quando isso ocorre, diz-se que o breakpoint
determinou uma parada (trap) no programa. A maior parte dos depuradores permite
que se estabelea determinados tipos de breakpoints: um registrador ou clula de
memria atingindo um determinado valor, o programa atingindo um particular cdigo de
operao, etc.. O AVSIM51 inclui um grande conjunto de breakpoints. Eles sero
introduzidos posteriormente neste tutorial e so descritos no Captulo 6, Descrio dos
Comandos, quando se apresenta o comando Set, e no Captulo 7, na seo intitulada
Breakpoints.
As teclas do simulador permite que se configure breakpoints simples, ativveis
uma nica vez. Um breakpoint de vez nica automaticamente cancelado aps a
primeira parada no programa por ele provocada. O oposto de um Breakpoint de vez
nica ou dinmico (dynamic) o breakpoint permanente ou fixo (sticky). Um
breakpoint permanente permanece ativo at que seja explicitamente removido. H trs
teclas utilizadas na configurao de breakpoints:
Nome da Tecla

Tecla no IBM-PC

Funo

<BKUP>

F2

Movimenta o cursor de breakpoints para um


cdigo acima no fragmento de programa.

<BKST>

F3

Introduz um breakpoint dinmico do tipo R/W


(escrita e leitura) na posio atual do cursor de
breakpoints e ento posiciona o cursor de
breakpoints na no local indicado pelo valor
atual do PC.

<BKDN>

F4

Movimenta o cursor de breakpoints um cdigo


28

abaixo no fragmento de programa.


Para mover o cursor de breakpoints, utiliza-se <BKUP> F2 e <BKDN> F4.
Observe-se que o cursor aparece em destaque na tela como um tringulo. Quando se
pressiona <BKST> F3, o tringulo em destaque transforma-se em uma pequena seta
apontando para o cdigo de operao. Executando-se o simulador, a simulao ser
paralisada quando o programa atingir esse breakpoint.
O cursor de breakpoints estabelece um breakpoint dinmico incondicional;
isto , sempre que o cdigo de operao for atingido, o programa ser paralisado.
Breakpoints permanentes, bem como breakpoints condicionais, so configurados com
o comando Set. O comando Set ser abordado posteriormente neste tutorial.

Pressiona-se <BKDN> F4; o tringulo do cursor de breakpoints mostrado na tela.

Mantm-se pressionada <BKDN> F4 at que o tringulo se posicione ao lado da


linha:
0120H LCALL GETSW
Esta linha chama a subrotina GETSW, que l o port P1. Observe-se que no
possvel mover o cursor para alm da ltima linha do fragmento de programa, em
ambos os sentidos. Estes breakpoints so restritos ao fragmento de programa
correntemente apresentado na tela.

Pressiona-se <BKST> F3. O tringulo transforma-se numa seta.

Pressiona-se <Go> F1. A simulao prosseguir at ser atingido o cdigo LCALL.


(No programa em questo, isso ocorre exatamente antes da chamada subrotina
GETSW.)

Nesse ponto, quando o programa foi paralisado, pode-se examinar memria,


registradores, etc., para ver em que estado est a CPU. Pode-se reverter alguns passos,
alterar o contedo de um registrador particular e avanar passo a passo atravs do cdigo
novamente. (Observe-se o programa tendo sido paralisado por um breakpoint
dinmico, este breakpoint automaticamente removido e no mais determinar
paralisaes no programa.)
3.3.4 A Tecla para Comutao de Modo
A tecla para alterao de modo tambm uma importante tecla na operao do
AVSIM51. Esta tecla, Esc em um IBM-PC, efetua a comutao entre os dois modos
bsicos de operao do AVSIM51: o modo Display e o modo Command.
Qual a diferena entre estes dois modos de operao? No modo Display, o
simulador funciona como um editor de tela. Pode-se mover para qualquer rea destacada
na tela (exceto para o fragmento de programa) e alterar o contedo da rea. O modo
display, combinado com <SSTEP> F10 e <UNDO> F9, oferece um modo rpido de teste
para um programa utilizando diferentes valores. Simplesmente altera-se o valor de um
registrador, endereo ou port, reverte-se alguns passos e ento avana-se passo a passo
atravs do cdigo relevante.
No modo Display, contudo, as opes so mais limitadas. Breakpoints
podem ser estabelecidos apenas atravs das teclas de funes. No possvel carregar um
programa, utilizar arquivos de entrada e sada ou mesmo abandonar o simulador. Essas
29

opes esto disponveis apenas no modo Command. O modo Command inclui um


conjunto de menus que permitem um controle muito maior sobre o simulador. Utiliza-se
o modo Command para carregar programas, configurar e remover diversos tipos de
breakpoints, examinar memria, etc.. No modo Command, contudo, no se pode
editar diretamente o contedo da tela, embora o comando EXpression permita que se
altere simbolicamente o valor corrente.
O modo mais simples de manter um uso metdico dos dois modos de operao o
seguinte:

Utilizar-se o modo Display para editar valores em registradores, ports, flags ou


endereos.

Utilizar o modo Command para controlar o simulador (utilizar arquivos, configurar


breakpoints, introduzir cdigos (patches), configurar apresentao de reas de
memria na tela (Dump Areas), etc.).

<CNGMDE> Esc efetua a comutao ente os dois modos de operao. Pode-se


executar o simulador e utilizar as teclas de funo de simulao (como <GO> F1 e
<UNDO> F9), em ambos os modos.
Nas sees restantes deste tutorial, sero demonstradas algumas das capacidades
de cada modo. importante observar-se que este tutorial breve e tem apenas o objetivo
de apresentar os princpios bsicos de operao do AVSIM51. Deve-se consultar os
Captulos 4 e 5 para uma cobertura mais aprofundada das caractersticas e capacidades do
modo Display e do modo Command.
3.4

O Modo Display

No modo Display, pode-se mover livremente atravs da tela do simulador,


utilizando as teclas de cursor. Alm disso, pode-se editar qualquer campo que aparea
destacado na tela, com exceo do fragmento de programa, o qual precisa ser editado com
o comando Patch. (Pode-se tambm editar diretamente o programa entrando com
cdigos hexadecimais apropriados na janela @PC, mas a maior parte dos usurios
provavelmente prefira o uso de mnemnicos de linguagem assembly.) Nesta seo, ser
explicado como movimentar o cursor e como editar o contedo dos registradores, ports e
posies de memria simulados.
3.4.1

Movimentao do Cursor

As teclas bsicas para movimentao do cursor so as teclas marcadas com setas,


presentes na maioria dos teclados:
Tecla

Funo

Movimenta o cursor um caractere para a


esquerda.

Movimenta o cursor um caractere para a direita.

Movimenta o cursor uma linha para cima.

Movimenta o cursor uma linha para baixo.


30

Quando se movimenta o cursor, ele salta de janela destacada para janela


destacada. e fazem o cursor deslocar-se para o extremo oposto da tela quando seus
limites so atingidos (wrap around). (A movimentao para alm da ltima linha da
tela do simulador faz com que o cursor reaparea na mesma coluna da primeira linha da
tela, e vice-versa.)
Experimentando com essas teclas pode parecer desconcertante ver o cursor
saltando entre janelas mas, tendo em mente que o cursor pra apenas em um caractere que
pode ser alterado, os saltos sero mais fceis de seguir.
O AVSIM51 faz uso tambm de um conjunto de teclas expressas que movem o
cursor para flags ou registradores especficos. Por exemplo, Ctrl A determina um salto
para o Acumulador e Ctrl P para o Contador de Programa. Essas teclas so vistas no
Captulo 4 e tambm nas tabelas do Apndice B.
Duas caractersticas adicionais do controle do cursor no AVSIM51 so o
travamento de rolagem (scrooll lock) e o controle de base. Essas caractersticas so
explicadas no Captulo 4.
3.4.2 Edio de Dados
A edio de uma janela uma operao simples: move-se o cursor para a janela e
digita-se a informao correta. Quando o cursor est em uma janela, o AVSIM51 permite
apenas a entrada de caracteres vlidos para aquela janela. Por exemplo, se a janela mostra
nmeros hexadecimais, sero permitida apenas a entrada de 0-9, a-f e A-F. Qualquer
outro caractere digitado faz com que o simulador emita um beep. Caso isso acontea
redigita-se o caractere correto.
O programa demonstrativo coloca o numero de uma tecla no registrador P2.
Coloca ento esse nmero no registrador P1 e rotaciona-o. O contedo do flag F0
determina o sentido, esquerdo ou direito, em que a rotao ocorre.
Pode-se agora experimentar fazer alteraes tanto no caractere quanto no sentido
de rotao:
(Caso o modo atual seja Command, o menu de comandos estar visvel na base
da tela do simulador. Se for o modo Display, as duas ltimas linhas na base da tela
estaro em branco.)

Digita-se CHGMDE> Esc at que o simulador entre no modo Display.

Com as teclas de setas move-se o cursor para a rea de apresentao binria do


registrador P2.

Independentemente do nmero presente no port, escreve-se sobre ele o nmero


binrio 01100110. (O caractere ASCII ao lado do nmero binrio altera-se para
f.)

Pressiona-se <GO> F1 e o simulador executar o programa. Observe-se o nmero da


tecla sendo rotacionado.

O programa demonstrativo testa tambm a condio do flag F0 sempre que o


nmero presente no port P1 tiver que ser rotacionado. Se o flag F0 estiver em nvel alto
31

(1), ento o nmero rotacionado para a esquerda. Se o flag F0 estiver em nvel baixo
(0), ento a rotao para a direita.

Com o programa em execuo pode-se examinar o estado do flag F0 e o sentido em


que a rotao est ocorrendo.

Paralisa-se o simulador com mais um pressionamento da tecla <GO> F1.

Move-se o cursor para o flag F0. Isto pode ser feito com as teclas de setas ou com a
tecla expressa Ctrl F para uma movimentao direta para o flag F0.

Se o flag tiver valor 1 digita-se 0. Caso contrrio digita-se 1.

Pressiona-se <GO> F1 e o simulador prossegue na execuo do programa. Pode-se


observar que o sentido da rotao foi invertido.

Pressiona-se <GO> F1 novamente e o simulador novamente paralisado.

O cursor deve reaparecer na janela do flag F0; se isto no ocorrer movimenta-se-o


para l.

Outro mtodo para alterao de valores consiste no uso das teclas + e . Estas
teclas fazer com que o valor sob o cursor seja incrementado ou decrementado, em
qualquer tipo de janela, seja ela ASCII, hexadecimal ou binria. No caso de F0 qualquer
das duas teclas comutar o bit.

Digita-se + para comutar o bit de F0. Seu valor ser alterado para o complemento.

Move-se o cursor para o port P2 e posiciona-se-o na janela ASCII.

Digita-se e o f ser decrementado para um e. A janela binria altera-se


consistentemente a ASCII.

Digita-se <GO> F1 novamente e um novos padro de bits poder ser observado em


rotao.

Paralisa-se a simulao.

3.4.3 Atualizao da Tela e Rastreamento (Trace)


Como se pode observar nos exerccios anteriores, a tela do simulador atualizada
enquanto a simulao executada. Isso til, pois pode-se acompanhar o progresso do
programa e seu efeito em registradores e ports. Pode-se utilizar <SPD> F5, F4 em um
IBM-PC, para comutar entre as velocidades baixa (Low), mdia (Medium)e alta
High.
Contudo, h situaes em que mesmo a velocidade alta baixa demais ou, por
uma razo ou outra, deseja-se acompanhar o que ocorre com certos registradores, ports,
etc.. Como a atualizao da tela completa diminui em muito a velocidade de simulao, o
AVSIM51 inclui uma tecla para ativar ou desativar a atualizao da tela: <DSP> F6.
includa tambm uma outra tecla, <TRACE> ALT F6, para seletivamente ativar ou
desativar a atualizao de janelas especficas durante a simulao quando a atualizao da
tela como um todo foi desativada.
Quando a atualizao da tela est ativada, a janela DSP, no canto superior direito
da tela apresenta-se em ON; e quando est desativada em OFF.
32

Quando a atualizao de tela est desativada (janela DSP em OFF), a tela no


atualizada quando a simulao estiver em curso. Quando a simulao paralisada, a tela
ento atualizada para mostrar o estado corrente do simulador.
<TRACE> Alt F6 controla a atualizao de janelas especficas quando a
atualizao da tela como um todo esta desativada. (Quando a atualizao da tela como
um todo est ativada, todas as janelas so atualizadas, independentemente de sua
configurao de atualizao individual.)
No programa demonstrativo, foram seletivamente ativadas algumas janelas. Para
o restante deste tutorial, contudo, deve-se reativar a atualizao da tela como um todo.

Digita-se <DSP> F6 e a janela DSP apresentar-se- em ON. Todas as janelas sero


automaticamente atualizada durante o curso da simulao.

3.5

Modo Command

3.5.1

A Tela de Comandos

O menu de comandos j foi anteriormente utilizado neste tutorial para reinicializar


a CPU. Os menus aparecem apenas quando se est no modo de comandos Command
Mode. Observe-se que nos menus os comandos aparecem na forma de mnemnicos com
apenas um caractere maisculo e os demais minsculos. O caractere maisculo uma
abreviatura para o comando. Para ativar um comando, simplesmente digita-se sua
abreviatura. (No necessrio o pressionamento de Return; o AVSIM51 responde
imediatamente aps a digitao da abreviatura.)
Quando um menu muito extenso para caber em uma nica linha, sua ltima
opo mostrada na linha -- space -- . Digitando-se a barra de espaos pode-se ver
ento as outras opes.
Quando selecionado um comando, o AVSIM51 responde imediatamente.
Alguns comandos no tm opes; outros apresentam submenus de opes. Quando um
menu apresenta opes, seu submenu substitui o menu de comandos. Por exemplo,
quando se pressiona R (de Reset), o submenu Reset apresentado em lugar do
menu de comandos, mostrando o que pode ser escolhido para ser reinicializado.
Para abortar um comando ou sair de um submenu, digita-se Ctrl C. O comando
abortado e o AVSIM51 volta para o nvel mais alto de menu de comandos.
H outro mtodo para ativar um comando do AVSIM51. Este outro mtodo utiliza
as teclas de movimentao do cursor , , , , Home e End para percorrer as opes
dos menus. As teclas e movem o cursor uma opo para a esquerda. e
movem-no uma opo para a direita. A tecla Home move o cursor para a primeira opo
do menu; a tecla End move-o para a ltima opo do menu. O comando corrente a
mostrado em vdeo reverso e uma breve mensagem explicativa mostrada na linha de
mensagens. Pressiona-se Return para ativar a opo destacada na tela. As teclas tambm
permitem que se percorra as opes de um menu mesmo quando ele tem duas partes.

Pressiona-se M para selecionar o submenu Memory. O submenu Memory


aparece na tela.

Pressiona-se <CNGMDE> Esc e comuta-se para o modo Display.

33

Pressiona-se <CNGMDE> Esc novamente e comuta-se o simulador de volta ao modo


Command. Pode-se observar o menu Memory, que reaparece inalterado.
Observe-se que sempre possvel efetuar a comutao entre os modos Display e
Command sem alterar qualquer informao.

Pressiona-se Ctrl C e abandona-se o menu Memory. O simulador est agora no


nvel mais alto de menus de comando.

3.5.2 Configurao de Breakpoints e Passpoints


Embora as teclas de breakpoints sejam teis no estabelecimento de
breakpoints temporrios, o AVSIM51 inclui tambm um conjunto completo de
breakpoints no menu de comando Set. O AVSIM51 apresenta o seguinte conjunto de
breakpoints e passpoints:

Breakpoint
Type

Unconditional

Sticky

Dynamic Delay

Access Type
R/W
Value

R/W
Value

W-O
Value

W-O
Range

Value

Mask

Range

Indirect

Conditional

Opcode

Breakpoints e passpoints so discutidos mais profundamente no Captulo 7.


Resumidamente, um breakpoint determina uma parada na execuo do programa em
um ponto pr-estabelecido. Um passpoint mantm uma contagem do nmero de vezes
que uma condio particular ocorreu na execuo do programa. Os passpoints so teis
para se determinar onde um programa est despendendo a maior parte do tempo, dando
desta forma uma indicao de partes do programa que pode-se tentar otimizar.
Nesta seo sero feitos exerccios com vrios tipos de breakpoints e
passpoints que tem como objetivo propiciar alguma prtica com estas caractersticas do
AVSIM51. Sero estabelecidos os seguintes pontos:
1. Um passpoint no incio da rotao para a direita e para a esquerda, de forma que se
possa examinar quantas vezes o nmero rotacionado em cada direo.
2. Um breakpoint na subrotina de atendimento a interrupes, de forma que se possa
observar a execuo dessa subrotina.
34

3. Um breakpoint no nmero rotacionado, de forma que o programa possa ser


paralisado quando um determinado padro for atingido.
Para estabelecer o primeiro passpoint:

Digita-se S e o menu Set. O menu Set aparece na tela. Observe-se que a


presena de -- space -- indica que h mais opes do que as que esto sendo
mostradas.

Pressiona-se a barra de espaos. A segunda parte do menu Set apresentada na


tela.

Seleciona-se P e o sistema emite um prompt para a entrada do tipo do


passpoint.

Pode-se fazer uma das escolhas abaixo:


A: contar todas as tentativas de leitura ou escrita em um endereo particular.
B: contar todas as tentativas de leitura ou escrita em uma faixa de endereos.
C: Contar apenas as tentativas de escrita em um endereo particular.
D: Contar somente as tentativas de escrita em uma faixa de endereos.

Digita-se A para contar as tentativas de leitura ou escrita em um endereo


particular.

O sistema emite um prompt solicitando o endereo dos passpoint. Pode-se entrar


com o endereo numrico, com uma expresso que avaliada fornece o endereo
numrico ou com o nome do endereo na tabela de smbolos. Neste caso, a ltima
escolha (o nome do endereo na tabela de smbolos) a mais conveniente, pois
deseja-se contar o nmero de vezes que o programa efetua um salto para a posio
ROTATE. Pode-se de forma igualmente simples entrar com o endereo e isto ser
necessrio todas as vezes que no houver um label para o endereo desejado.
Simplesmente entra-se com o endereo em hexadecimal.

Digita-se ROTATE Return. Aqui necessrio pressionar Return, pois se est entrando
com dado e o AVSIM51 no tem meios de dizer quando a entrada de dado terminou.
(Por outro lado, quando se est entrando com um comando, suficiente entrar com a
abreviatura do comando, pois os comandos do AVSIM51 consistem sempre em uma
nica letra.)

O simulador emite uma mensagem comunicando o estabelecimento do passpoint.

Para estabelecer o segundo passpoint em ROTLEFT:

Digita-se S

Digita-se P

Digita-se A

Digita-se ROTLEFT Return e o simulador comunica que o segundo passpoint foi


estabelecido.

Para estabelecer um breakpoint dinmico no incio da subrotina de interrupes:


35

Digita-se S

Digita-se D. O simulador emite um prompt solicitando a entrada do tipo do


breakpoint.

Digita-se A. O simulador solicita o endereo do breakpoint. Como a subrotina tem


um endereo simblico, o mais simples utiliz-lo.

Entra-se com SERIAL Return. O simulador informa que o breakpoint foi


estabelecido.

Finalmente, estabelece-se o breakpoint que testa o valor sendo rotacionado.


Previamente, o este valor foi alterado para o ASCII e e agora deve ser restaurado ao
ASCII f. Configura-se ento o breakpoint:

Digita-se <CNGMDE> Esc para comutar para o modo Display.

Move-se o cursor para P2.

Altera-se o valor para o ASCII f (hex 66 ou binrio 01100110). Pode-se utilizar a


base preferida. (As demais formas sero automaticamente atualizadas.)

Aps essas aes, estabelece-se o ltimo breakpoint:

Digita-se S

Digita-se C

O menu de breakpoints codicionais apresentado. H quatro opes para


breakpoints condicionais:

Tipo

Operao

Indireto (Indirect)

Utiliza o valor de um registrador ou um endereo


somado a um deslocamento (offset) para determinar o
endereo do breakpoint.

Mascarado (Mask)

Efetua comparao com o valor afetado por uma


mscara de bits especificada pelo usurio.

Faixa (Range)

Efetua a comparao com uma faixa de valores


especificada pelo usurio.

Valor (Value)

Efetua a comparao com um valor particular.

Digita-se V para selecionar um breakpoint do tipo Value. O simulador solicita


a especificao do valor.

Digita-se o ASCII f e pressiona-se Return.

O simulador solicita o endereo. Deseja-se paralisar o programa quando o valor que


est sendo rotacionado atingir o valor f (66h ou 01100110b). Tem-se algumas
possibilidades para o local onde a paralisao deve ser feita: quando o valor entrar no
36

acumulador, imediatamente antes do nmero ser enviado para o port ou quando


chegar ao prprio port.

Digita-se P1 para associar o breakpoint ao prprio port. O simulador informa que o


breakpoint foi estabelecido.

Neste ponto, todos os breakpoints e passpoints foram estabelecidos.


Pressiona-se <GO> F1 e deixa-se o simulador em execuo. O simulador ser paralisado
no cdigo de operao que coloca o valor 66h no Port P1.
Para reiniciar o simulador aps a parada, pressiona-se <SSTEP> F10 para avanar
um passo na execuo atravs do breakpoint. Sempre que a subrotina de interrupo
for chamada, o programa ser paralisado.
Observe-se que os passpoints estaro fazendo as contagens, embora no estejam
sendo vistos na tela os valores. No prximo passo sero vistas as contagens dos
passpoints.
3.5.3

Visualizao de Passpoints e Breakpoints

O comando View do AVSIM51 permite o exame das contagens dos


passpoints, dos breakpoints, do mapa de memria e dos arquivos de entrada e sada
acoplados ao simulador:

Pressiona-se <GO> F1 e deixa-se o simulador executando o programa por algum


tempo. Se algum breakpoint paralisar a execuo, avana-se sobre ele com
<SSTEP> F10 e pressiona-se <GO> F1 novamente.

Aps o programa estar em em execuo por algum tempo, pressiona-se <GO> F1 e


paralisa-se a simulao.

Pressiona-se <CNGMDE> Esc at que o simulador entre no modo Command.

Digita-se V para selecionar o menu View.

Digita-se P para examinar as contagens dos passpoints. A contagem de ambos os


passpoints mostrada. Os valores das contagens dependem do tempo durante a
qual a simulao ocorreu, mas pode-se ver o nmero de vezes que o padro de bits foi
rotacionado para a direita e para a esquerda.

Pressiona-se qualquer tecla para retornar ao menu principal de comandos.


A seguir pode-se verificar os breakpoints que foram estabelecidos:

Digita-se V

Digita-se B. Os breakpoints so apresentados.

Quando a visualizao dos breakpoints houver terminado, pressiona-se qualquer


tecla para retornar ao menu principal de comandos.

3.5.4

Arquivos de Entrada e Sada (I/O Files)

Um dos maiores problemas na simulao de um chip de microprocessador


encontrar um meio de simular entrada e sada de dados para seus ports. O AVSIM51
utiliza dois mtodos para simular entrada e sada. O primeiro baseia-se no uso do modo
Display com a digitao direta de dados de entrada nas janelas dos ports de entrada.
37

Este mtodo eficiente para o teste de combinaes particulares de dados mas pouco
eficiente para o teste de seqncias de dados extensas.
O segundo mtodo de simulao de entrada e sada utiliza arquivos de entrada e
sada (I/O files), que precisam ser criados antes da partida do AVSIM51. O simulador
permite que se acople esses arquivos a um port (ou ports); ento, medida que a
simulao prossegue, o AVSIM51 l dados do arquivo e os coloca no port como se eles
estivessem sendo diretamente recebidos pelo mesmo. De modo semelhante, o AVSIM51
captura sadas de dados de ports e os armazena em arquivos para um futuro exame.
O AVSIM51 inclui trs tipos de entrada e sada simulada:
Byte I/O (Entrada e Sada por Bytes): O arquivo de entrada byte a byte enviado a um
port especfico. Um arquivo de sada captura, tambm byte a byte os dados
enviados por um port.
Bit I/O (Entrada e Sada por Bits): Bits especficos, de cada byte do arquivo de entrada
so enviados a bits especficos de um port (ou registrador). Bits especficos (de
um ou mais ports) e so armazenados como bytes em um arquivo de sada.
Opcode I/O (Entrada e Sada por Cdigo de Operao): O AVSIM51 l ou escreve
dados de um arquivo seqencial de bytes utilizando como gatilho um cdigo de
operao especfico. Bytes podem ser lidos ou escritos em ports especficos,
registradores ou endereos de memria selecionados.
O AVSIM51 permite que sejam abertos arquivos de entrada e sada em pares, um
de entrada e um de sada. Isto associa os dois arquivos de modo que pode-se transferir
dados de um arquivo de entrada para um arquivo de sada. Quando aberto apenas um
arquivo de entrada ou um arquivo de sada isoladamente, o AVSIM51 efetua leituras ou
escritas de dados independentemente de qualquer outro arquivo que tenha sido aberto.
A utilizao de arquivos de entrada e sada explicada em detalhes no Captulo 7.
O programa demonstrativo utiliza um arquivo de entrada: DEMO.MSG. Esse arquivo
contm texto que enviado ao port serial. O contedo do arquivo uma cadeia de bytes.
H vrios meios para criao de um arquivo de entrada; por exemplo, possvel a
utilizao de um editor de textos, ou a construo de um programa para produzir o
arquivo requerido. A nica restrio de que o arquivo seja seqencial. Processadores
de texto podem inserir na seqncia de bytes cdigos de formatao que sero
interpretados como dados pelo simulador. A sada de um programa deve ser uma
seqncia de bytes sem vrgulas ou outros delimitadores separando os bytes.
Neste tutorial, sero utilizados dois arquivos de sada: o primeiro, lights, captura
o contedo do port P1 medida que enviado; o segundo, msg, recebe copias os 7 bits
menos significativos dos bytes de DEMO.MSG.
Inicialmente, necessrio configurar lights:

Paralisa-se o simulador, se este estiver em execuo, e muda-se para o modo


Display.

Digita-se I para selecionar o menu de arquivos de entrada e sada (I/O files). O


simulados solicita o nome do arquivo de entrada.

Digita-se Return para saltar a questo, pois no se deseja abrir um arquivo de entrada.
O simulador solicita o nome do arquivo de sada.
38

Digita-se lights Return para abrir o arquivo lights. O simulador solicita a taxa de
entrada/sada. Esta consiste no nmero de ciclos de mquina simulados entre cada
transferncia de entrada/sada (I/O rate).

Entra-se com 200 Return. O simulador pergunta se devem ser mapeados bits ou bytes
(Mapbits ou mapBytes) para o arquivo.

Digita-se B para mapear o byte completo. O simulador solicitar ento o endereo


e o sentido da transferncia.

Digita-se p1, out Return. O simulador responde que o arquivo foi configurado.

Agora preciso estabelecer o segundo arquivo de entrada e sada, msg, um


arquivo que vai capturar os sete bits menos significativos da mensagem em SBUF:

Digita-se I para selecionar o menu de arquivos de entrada e sada. O simulador


solicitar o nome do arquivo.

Digita-se Return para saltar esta questo, pois no se deseja abrir um arquivo de
entrada. O simulador perqunta o nome do arquivo de sada.

Digita-se msg Return para abrir o arquivo msg.

Pressiona-se O. O simulador pergunta a taxa de entrada/sada (I/O rate).

Entra-se com 100 Return. O simulador pergunta se devem ser mapeados bits ou bytes
(Mapbits ou mapBytes) para o arquivo.

Digita-se M para mapear bits especficos do registrador.

O simulador solicitar ento quatro informaes: o bit de entrada (I/O bit); para
onde ele deve ser enviado (Memory bit); o endereo para onde deve ser enviado
(address); o sentido da transferncia (IN ou OUT). Como foi aberto apenas o
arquivo de sada, o sentido da transferncia opcional.
Deseja-se estabelecer a seguinte correspondncia: o bit do arquivo de entrada deve
ser enviado ao mesmo bit do arquivo de sada. O AVSIM51 espera que se especifique
para onde para onde bits especficos devem ser enviados. Como um arquivo de sada est
aberto, cada bit ser enviado do arquivo de entrada para o Memory Bit e tambm para o
arquivo de sada. O modo mais simples de estabelecer esta correspondncia enviar cada
bit de entrada para SBUF.
Para enviar os bits ao arquivo de sada, msg, digita-se a seguinte srie de
especificaes:

0,0,sbuf Return

1,1,sbuf Return

2,2,sbuf Return

3,3,sbuf Return

4,4,sbuf Return

5,5,sbuf Return

6,6,sbuf Return
39

Return
Observe-se que quando se entra com Return em uma linha vazia, o simulador
responde que o arquivo foi configurado. O ltimo Return em uma linha vazia assinala
que foi terminada a especificao do arquivo.

Pressiona-se <GO> F1 e deixa-se o simulador em execuo por algum tempo.

Pressiona-se <GO> F1 novamente para paralisar a simulao. Abandona-se a


simulao com QE.

Uma vez voltando ao prompt do sistema operacional, pode-se examinar os


contedos dos arquivos lights e msg:
No MS-DOS, digitando-se type lights Return pode-se examinar os caracteres ASCII
que representam os padres enviados ao port P1.
Quando terminar a listagem de lights, digitando-se no MS-DOS type msg Return
pode-se ver o texto de DEMO.MSG sendo listado. (O comprimento desse arquivo vai
depender de quanto de DEMO.MSG foi lido antes de se abandonar o simulador.)
3.5.5

Insero de Cdigos Patch Code

Como ltimo passo neste tutorial do AVSIM51, ser apresentado o mtodo de


insero de cdigos no programa (patch codes). No h necessidade de abandonar o
simulador para fazer alteraes ou de recompilar o cdigo; o simulador inclui um crossassembler incremental que compila o cdigo diretamente. Pode-se tambm salvar os
patches em um arquivo, eliminando a necessidade de se escrever ou lembrar cada
patch utilizado. O arquivo pode ser posteriormente inserido no arquivo com o cdigo
fonte do programa em assembly.
necessrio utilizar mnemnicos vlidos do 8051 com a sintaxe padronizada. O
Captulo 6 contm explicaes detalhadas sobre essa sintaxe.. Pode-se tambm criar
labels, que sero inseridos na tabela de smbolos.
O procedimento patch simples: altera-se o PC para o endereo onde se quer
colocar o cdigo patch; entra-se ento com o comando Patch. O cdigo fornecido
pelo usurio substituir o cdigo naquela posio.
Para introduzir patches na subrotina GETSW de forma que ela escreva o
contedo de P1 no acumulador em lugar de escrev-lo em P2 procede-se como abaixo.
Como o comando Patch introduz cdigo na posio corrente do contador de
programa, deve-se inicialmente colocar o endereo adequado no PC.

No modo Display move-se o cursor para o PC. (Pode-se utilizar a tecla rpida
CTRL P ou as teclas do cursor.)

Entra-se com o endereo GETSW:


Pressiona-se <CHGMDE> Esc para entrar no modo Command.
Pressiona-se E para entrar com uma expresso.
Ao prompt, entra-se com o label GETSW. Observa-se a atualizao
automtica do fragmento de programa apresentado na tela.
40

Pressiona-se <CHGMDE> Esc para retornar ao modo Command.

Digita-se P para entrar com o patch.

O menu Patch ento apresentado. Pode-se entrar diretamente com o patch


ou, se se desejar registrar os patches, abrir um arquivo de patches:

Digita-se O. O simulador solicita o nome do arquivo de patches.

Entra-se com patch.tst Return. O simulador solicita o mnemnico.

Entra-se com mov a,p1 Return. O patch inserido no fragmento de programa. O


PC atualizado para o endereo do prximo cdigo, de modo que se possa continuar
adicionando patches.

Pressiona-se Return para terminar a entrada de patches.

Pressiona-se <GO> F1 e observa-se o programa em execuo.

Quando se houver terminado abandona-se o simulador.

Ao prompt do sistema pode-se examinar o contedo de patch.tst. Este conter o


patch introduzido. Observe-se que o endereo do patch aparece no arquivo,
embora ele seja mostrado abaixo como xxxxh, pois o endereos em arquivos
particulares podem mudar de verso para verso do AVSIM51. Em cada caso
particular o endereo correto ser apresentado:
xxxxh mov a,p1

H vrias caractersticas adicionais que no foram discutidas neste captulo. Recomendase a leitura dos Captulos 4 e 5 para ver todo o conjunto de capacidades dos modos
Display e Command do AVSIM51 e recorrer-se ao Captulo 6 para uma explicao de
cada menu de comando. Finalmente, veja-se o Captulo 7 para informaes adicionais
sobre o uso de arquivos de entrada e sada e breakpoints.

41

Captulo 4

O MODO DISPLAY
No modo Display, o AVSIM51 comporta-se como um editor de tela. Pode-se
controlar o simulador utilizando as teclas de funes descritas no Captulo 2, Primeiros
Passos, para colocar um programa em execuo contnua, executar instrues passo a
passo, reverter instrues e configurar breakpoints no programa. Alm disso, pode-se
editar diretamente qualquer rea da tela apresentada em destaque. O modo Display
conveniente para inserir diferentes valores em registradores, ports ou memria e ver seu
efeito no programa. No modo Display pode-se mover livremente o cursor quase que
para qualquer rea da tela. Pode-se at efetuar a simulao em plano de fundo ao mesmo
tempo em que se edita a tela.
O modo Command, por outro lado, oferece um conjunto mais poderoso de tipos
de breakpoints e a habilidade de introduzir cdigos patch, carregar arquivos, etc.. A
transio entre os modos Display e Command feita com o pressionamento da tecla
<CHGMDE> Esc.
Este captulo mostra como mover o cursor para as vrias janelas, como editar
essas janelas e como as vrias teclas podem auxiliar no controle do simulador. O captulo
est dividido nas seguintes sees:
Controle do Cursor: Como controlar o cursor, incluindo os vrios tipos disponveis de
controle.
Edio da Tela: Como editar a tela, incluindo os valores permitidos e as teclas especiais
de edio.
4.1

Controle do Cursor

No modo Display, o cursor pode mover-se para qualquer janela da tela. Pode-se
alterar quase todos os valores mostrados em destaque na tela digitando novos valores
sobre os atuais. Para alterar o valor no Acumulador, por exemplo, move-se o cursor para
o Acumulador e digita-se o novo valor sobre o antigo. As nicas excees a esta regra
so a janela de status do simulador, que pode ser configurada com as teclas de funes, e
o fragmento de programa, que pode ser alterado apenas atravs do comando Patch. A
maior parte das reas mostradas em destaque permite que se entre com dados em valores
hexadecimais ou cdigos ASCII, sendo que em algumas permitida tambm a entrada de
dados em binrio. Entra-se com os dados na base preferida; as apresentaes nas outras
bases so automaticamente atualizadas.
Normalmente, o cursor move-se livremente de janela para janela. Pode-se
contudo restringir o cursor a uma janela particular, se assim for desejado. Pode-se
tambm utilizar um conjunto de teclas expressas para uma rpida movimentao para
uma janela especfica.

42

4.1.1

Controle Bsico do Cursor

O conjunto bsico de teclas de controle do cursor utilizado utilizadas pelo


AVSIM51 listado abaixo:

Nome da Tecla

Tecla no IBM-PC

Funo

keypad 4

Move o cursor um caractere


para a esquerda.

keypad 5

Move o cursor um caractere


para a direita.

keypad 8

Move o cursor uma linha


para cima.

keypad 2

Move o cursor uma linha


para baixo.

Home

keypad 7

Move o cursor para o


primeiro caractere na janela
atual.

End

keypad 1

Move o cursor para o ltimo


caractere na janela atual.

PgUp

keypad 9

Em uma rea de
apresentao de memria
(Dump Area), rola para
cima uma janela de dados.
No PC, apresenta as
prximas linhas de cdigo.

PgDn

keypad 3

Em uma rea de
apresentao de memria
(Dump Area), rola para
baixo uma janela de dados.
No PC, apresenta a linha
anterior de cdigo.

As teclas e determinam a volta para o extremo oposto (wrap around). Por


exemplo, se a tecla for repetidamente pressionada at o cursor atingir a ltima linha da
tela do simulador, ele saltar para a primeira linha da tela, na mesma coluna. As teclas
e funcionam da mesma forma; ocorrendo a volta para o extremo oposto, na direo
horizontal. Por exemplo, se a tecla for pressionada repetidamente, o cursor se mover
um caractere para a direita, a cada pressionamento, at atingir uma janela destacada na
43

tela. Se no houver janelas na linha, o cursor saltar para a prxima linha da tela. (Se o
cursor estiver na ltima linha da tela, ele saltar para a primeira linha.)
4.1.2

Modo de Rolamento

As teclas bsicas do cursor movimentam-no para cima e para baixo, para a


esquerda e para a direita, na tela, independentemente da janela particular em que ele
estiver. Esta caracterstica til, mas h ocasies em que conveniente restringir o
cursor a uma janela. Por exemplo, pode-se estar simulando um teclado e escrevendo uma
longa cadeia de caracteres atravs de um port. Neste caso, conveniente evitar que o
cursor efetue o rolamento para fora do port em que se est trabalhando.
O AVSIM51 oferece um mtodo para trancar o cursor em uma janela particular.
A tecla <SCLTOG>, CTRL PgUp no teclado do IBM-PC, ativa e desativa o modo de
rolamento do cursor (Sroll Mode). Quando o modo de rolamento est em OFF (o
default), as teclas do cursor movem-no livremente ao longo da tela. Quando o modo de
rolamento est em ON os movimentos do cursor ficam restritos a uma janela.
Para configurar o modo de rolamento, deve-se move-lo para a janela em que se
quer tranc-lo e pressiona-se a tecla <SCLTOG>. Para liberar o cursor, pressiona-se
<SCLTOG> novamente.
A janela SCL na regio de status do simulador (no canto superior direito da tela de
simulao) apresenta o estado atual do trancamento do cursor.
Quando o modo de rolamento est em ON, as teclas do cursor no so capazes
de mov-lo para for a da janela atual. Caso esta seja uma janela de registrador e se tente
mover o cursor para for a dela, o simulador emitir um beep e o cursor no se mover.
Caso seja uma janela de dados, os dados sero rolados quando o cursor atingir o incio ou
o final da janela. Quando for conveniente pode-se comutar o modo de rolamento para
OFF e permitir que o cursor mova-se outra vez livremente ao longo da tela.
4.1.3

Teclas Expressas

O uso apenas das teclas de cursor para movimentao de uma janela para outra
pode tornar-se tedioso, especialmente se as duas janelas estiverem distantes uma da outra
na tela. Para estes casos o AVSIM51 inclui um conjunto de teclas expressas, que
movem o cursor rapidamente de uma janela para a prxima. (Pode-se mover o cursor
entre janelas mesmo quando o modo de rolamento est em ON.)
As teclas expressas so listadas abaixo. Elas podem ser encontradas tambm na
tela de ajuda do comando Help. A tecla Return tambm funciona como uma tecla
expressa: quando ela pressionada, o cursor salta para a ltima janela em que dados
foram editados. Pode-se utilizar Return para ficar alternando o cursor entre duas janelas;
por exemplo, aps editar uma janela, pode-se pressionar Return para retornar janela
anterior. Se Return for novamente pressionada, o cursor saltar de volta para a primeira
janela.

44

4.1.4

IBM-PC Key

Destination

Ctrl

Next window to the right

Ctrl

Previous window to the left

Return

Last window edited

Ctrl A

Accumulator

Ctrl P

Program Counter

Ctrl S

Stack Pointer

Ctrl R

Register Bank

Alt 0 a 7

Registers 0 through 7

Ctrl D

Data Pointer

Ctrl C

Carry Flag

Ctrl X

Auxiliary Carry Flag

Ctrl F

User Flag

Ctrl O

Overflow Flag

Ctrl B

Register B

Ctrl I

Interrupt Enable Flag

Ctrl T

Timer 0

Alt A

Memory Dump Area 1

Alt B

Memory Dump Area 2

Alt P

Port 0 (Port 1 on 8031/2)

Alt Q

Port 2 (Port 3 on 8031/2)

Alt C

Serial Port Receiver Buffer

Alt S

Serial Port Control Register

Alt Y

Cycles Register

Modo do Cursor
45

A maior parte das janelas na tela do simulador apresenta os dados em mais de uma
base. A janela do acumulador, por exemplo, mostra seu contedo na forma binria,
hexadecimal e de caractere ASCII. H ocasies em que conveniente saltar sempre para
um tipo particular de base, se ela for disponvel em uma janela. Por exemplo, se
estiverem sendo editados bits especficos, pode-se preferir saltar para uma janela binria.
Se estiverem sendo enviados dados ASCII atravs de um port, pode ser mais interessante
saltar para uma apresentao ASCII, de modo a ser possvel uma rpida digitao dos
caracteres.
O AVSIM51 inclui uma Chave de Modo do Cursor, que funciona somente com
teclas expressas. A Chave de Modo do Cursor configura a rea da janela para a qual
ocorre o salto do cursor. (A Chave de Modo do Cursor no tem efeito sobre a
movimentao do cursor com as teclas de setas.) A janela CURSOR na regio de status
do simulador mostra o modo atual do cursor.

Nome da Tecla

Tecla no IBM-PC

Descrio

<CNGMDE>

F7

Comuta entre os trs modos do cursor:


BINARIO, HEX, ASCII.

Quando o modo do cursor binrio e ocorre um salto para uma janela que no tem
apresentao binria, por default, o cursor posiciona-se na rea de apresentao
hexadecimal. O reverso tambm verdadeiro: se o modo do cursor hexadecimal e a
janela no tem apresentao hexadecimal, o cursor salta para a apresentao binria.
Janelas sem apresentao ASCII tm apenas uma forma de apresentao, neste caso o
modo do cursor irrelevante.
4.2

Edio da Tela

Para editar dados na tela move-se o cursor para o dado que se quer alterar e digitase o novo valor. O cursor avana com cada tecla pressionada at atingir a borda direita da
janela. Se o Modo de Rolamento (Scroll Mode) estiver em OFF (o default), o cursor
move-se ento para a prxima janela. Se o Modo de Rolamento estiver em ON e o
cursor estiver em uma janela de registrador, o simulador emitir um beep e o dado na
posio do cursor ser substitudo pelo valor digitado. Se o Modo de Rolamento estiver
em ON e o cursor estiver em uma rea de apresentao de dados, toda a rea
apresentada ser rolada e o cursor mover-se- para o prximo byte da janela.
Sempre que se altera um valor uma janela, a alterao imediatamente mostrada
em todas as janelas relacionadas com o objeto alterado. Por exemplo, quando se muda o
caractere ASCII contido no acumulador, os valores binrio e hexadecimal no acumulador
mudam para os valores equivalentes em binrio e decimal do caractere ASCII digitado.
Esta caracterstica tambm til para se efetuar uma converso imediata entre as formas
hexadecimal, binria e ASCII.
4.2.1

Teclas Vlidas
As teclas vlidas para cada tipo de dado so:

46

Tipo de Dado

Valore Vlidos

Binrio

0, 1

Hexadecimal

0 9, A F, a f

ASCII

Qualquer valor ASCII

Observe-se que algumas teclas ASCII podem ser interpretadas como aes, em
lugar de caracteres ASCII. Por exemplo, no IBM-PC, a tecla ESCAPE, ASCII 27, efetua
a comutao para o modo Command. Para entrar com um ASCII 27, pode-se entrar
com o valor hexadecimal 1B ou com o caractere ASCII ! e decrement-lo seis vezes.
A incrementao e decrementao de dados discutida na prxima seo.
Quando se entra com uma tecla invlida (por exemplo, G em uma janela
hexadecimal), mostrada na base da tela a mensagem de erro BAD KEY e o cursor
posiciona-se sobre o valor incorreto. Redigita-se ento os dados, com teclas vlidas.
Quando se entra com valores vlidos em um registrador que tem alguns bits do
tipo apenas leitura ou se o registrador no extenso o suficiente para armazenar o valor,
somente os valores que podem ser alterados so modificados. Os demais retero seus
valores fixos.
4.2.2

Teclas de Edio

O AVSIM51 inclui um conjunto de funes para acelerar o processo de edio.


Essas funes so controladas pelas teclas mostradas na tabela a seguir.
As teclas + e incrementam ou decrementam um objeto, independentemente de
onde o cursor esteja posicionado. Por exemplo, se o acumulador contiver o valor
01010101, o pressionamento de + incrementar o byte para 01010110,
independentemente de o cursor estar sobre a parte mais ou menos significativa do byte.
Registradores de 16 bits so tambm incrementados como um nmero de 16 bits, no
como dois bytes independentes..
A tecla Toggle, Ins no teclado do IBM-PC, efetua a comutao de um nibble
hexadecimal ou um byte ASCII para seu complemento lgico. Comuta tambm bits
isolados : um 0 torna-se 1 e um 1 torna-se 0. Nibbles hexadecimais ou bytes ASCII,
por outro lado, so comutados completamente: o nibble hexadecimal C (1101 em
binrio) comutado para 2 (0010 em binrio). O byte ASCII A (65 em decimal, ou
0100001 em binrio) comutado para o caractere ASCII IBM estendido 190 (10111110
em binrio). Esta caracterstica particularmente til para comutar nveis lgicos em
terminais de ports de entrada e sada.

47

Nome da Tecla

Tecla no IBM-PC

Descrio

Increment

Soma 1 ao valor de um byte ou


endereo word. Comuta um bit. No
PC, avana para o prximo cdigo.

Decrement

Subtrai 1 do valor de um byte ou


endereo word. Comuta um bit. No
PC, volta ao cdigo anterior.

Clear-to-End

Ctrl End

Zera todos os bytes, a partir da


posio do cursor, at o final da
janela. Valores hexadecimais e
binrios tornam-se zeros. Valores
ASCII tornam-se espaos (20H).

Clear-Window

Ctrl Home

Zera toda a janela. Valores


hexadecimais e binrios tornam-se
zeros e janelas ASCII so
preenchidas com espaos (20H).

Toggle

Ins
(0 do keypad)

Comuta o bit/nibble/byte ASCII sob


o cursor para o seu complemento
lgico.

48

Captulo 5

O MODO COMMAND
O modo Command d acesso aos menus de comando na base da tela. Estes
menus permitem o controle do ambiente do simulador: pode-se salvar ou carregar
arquivos, apresentar contedo de reas de memria, inserir cdigos de instruo,
manipular breakpoints e passpoints, etc. No modo Command no se pode editar o
contedo da tela diretamente, como no modo Display, mas pode-se exercer um maior
controle sobre o ambiente do simulador.
Este captulo esta constitudo pelas duas seguintes sees:
Menus de comando: Uma explicao da estrutura do menu de comando e de como
utilizar os menus de comandos.
Entrada de dados: Uma explicao sobre o uso das teclas de edio e as convenes que
devem ser utilizadas na entrada de dados.
Uma descrio completa de cada menu e submenu apresentada no Captulo 6:
Descrio dos Comandos.
5.1

Menus de Comando

No modo Comamnd, o cursor permanece nas duas linhas inferiores da tela. A


janela de status do CURSOR, na regio da tela que mostra o Status do Simulador indica
MENU quando se est no modo Command. Quando se entra pela primeira vez no
modo Command, as duas linhas da base da tela indicam:
>
Dump Expression commandFile Help IO Load space ESC to screen
A primeira dessas duas linhas, contendo o smbolo >, uma rea de mensagens.
Toda a informao do AVSIM51 apresentada nessa linha, bem como qualquer
solicitao de informao, como o nome de um arquivo, um endereo ou um cdigo de
operao. Mensagens de erro do AVSIM51 so tambm apresentadas na mesma linha.
A segunda linha, ltima da tela, contm o Menu de Comando Corrente. Cada
palavra um comando. Cada comando abreviado e sua abreviao mostrada em
caractere maisculo.. Por exemplo:
Comando

Abreviao

Dump
commandFile

D
F

49

H dois mtodos de entrada dos comandos: Pelo Nome: digitando a letra de abreviatura
do comando; Apontando: utilizando o cursor ou o mouse para apontar o comando e
ento acionando a tecla Return.
Pelo nome: Para selecionar um comando pelo nome, digita-se sua abreviatura.
No h necessidade de acionar a tecla Return. O AVSIM51 responde imediatamente
quando digitada a abreviao. Quando acionada uma tecla invlida o simulador emite
um beep e ignora a entrada. Reentra-se ento com uma abreviatura vlida. Se um
comando altera uma das janelas, como Reset Cpu, a janela imediatamente atualizada.
Quando um menu muito grande para caber completamente na te tela, a ltima
mensagem de comando -- space --. Para ver a prxima parte do menu aciona-se a
barra de espaos do teclado. A prxima parte do menu substitui a parte original. Pode-se
voltar para a primeira parte do menu atravs de um novo acionamento da barra de
espaos.
Apontando: Utiliza-se as teclas de cursor ( , , , , Home e End) para
caminhar atravs de cada opo. As teclas e movem o cursor uma opo para a
esquerda e para a direita respectivamente. As teclas e movem-no uma opo para
cima e para baixo respectivamente. A tecla Home posiciona o cursor sobre a primeira
opo do menu e a tecla End posiciona-o sobre a ltima. O comando corrente
apresentado na tela em vdeo reverso e uma breve mensagem apresentada na linha de
mensagens. Pressiona-se a tecla Return quando o cursor estiver sobre o comando
desejado. As teclas movimentam o cursor ao longo das diversas opes mesmo quando
um menu composto por vrias partes.
Pode-se utilizar qualquer um dos mtodos alternativos para entrar com um
comando. Essa caracterstica permite uma rpida seleo das opes com que se est
familiarizado e saltar sobre aquelas com que no se est familiarizado.
Quando uma opo selecionada atravs de apontamento, o AVSIM51 memoriza
a ltima opo selecionada. Quando se retorna quele menu, o opo por ltimo
selecionada aparece destacada na tela.
Desejando-se selecionar novamente aquele menu, pode-se simplesmente
pressionar a tecla Return. Essa caracterstica permite a utilizao repetitiva de um mesmo
comando simplesmente atravs da tecla Return, sem a necessidade de uma nova seleo a
cada vez que o comando for desejado. Por exemplo, se uma srie de breakpoints
condicionais com utilizao de mscaras de bit for desejada, o simulador mantm em sua
memria o fato de haver sido selecionado o comando Set Conditionl Mask. Quando o
comando for terminado pode-se ento voltar ao nvel superior de menus.
Para abortar um menu de comandos, deve-se acionar Ctrl C. Para comutar o
modo de operao para o modo Display deve-se acionar a tecla <CNGMDE> Esc.
Quando se retorna ao modo Command, o retorno ocorre para o mesmo ponto no mesmo
menu de comandos quando se estava quando o modo Command foi abandonado.
Inicia-se a simulao no modo Command pressionando a tecla <GO> F1. Com
a simulao em curso pode-se pressionar qualquer tecla para paralis-la. (Como a tecla
pode tambm invocar alguma ao, a melhor tecla a ser utilizada a tecla <GO> F1 ou
<SSTEP> F10.) As demais teclas atuam da mesma forma como no modo Display.
5.2

Entrada de Dados
50

Alguns comandos so executados imediatamente, no requerendo qualquer


entrada. Outros, para serem executados, requerem a entrada de dados, tais como o nome
de um arquivo para ser carregado, um endereo para uma rea de apresentao de
memria, um cdigo de operao ou uma expresso. Para entrar com dados deve-se
digitar a informao e acionar a tecla Return. O AVSIM51 executar o comando e
retornar ao menu de nvel superior.
Se dados incorretos forem fornecidos, o simulador emitir um beep e
apresentar uma mensagem de erro. Pode-se ento redigitar a linha completa ou utilizar
um dos comandos de edio de linha para corrigir o erro.
5.2.1

Convenes para a Entrada de Dados

Nomes de arquivos
Sempre que o AVSIM51 solicitar um nome de arquivo, pode-se indicar qualquer
nome de arquivo com a forma adotada no sistema operacional. Pode-se colocar um
prefixo indicador de drive, se necessrio. Se o sistema operacional suportar uma estrutura
de diretrios, pode-se indicar um prefixo indicador de um caminho (path). Entra-se
com o nome do arquivo (e o caminho) com caracteres maisculos ou minsculos e
aciona-se a tecla Return. Se o nome do arquivo no for encontrado em um diretrio do
drive corrente (ou indicado), as variveis de ambiente PATH e AVPATH so consultadas
para buscas alternativas.
Exemplos de formas legais de nomes de arquivos no MS-DOS:
myprog
YOURPROG.HEX
b:hisprogl.asm
c:\Testdir\Her_file.lst
Constantes
Constantes so nmeros, cadeias de caracteres ou smbolos utilizados no
programa como dados ou endereos. Por exemplo, pode-se desejar atribuir o valor
constante 20H ao smbolo SPACE. Ou pode-se utilizar o nome simblico ERRMSG
para o endereo do manipulador de uma mensagem de erro utilizado pelo programa.
As constantes so manipuladas internamente como valores de 16 bits. Elas
sofrem um mascaramento para sada se o destino dos dados tiver comprimento inferior a
16 bits. Por exemplo, o valor 20H armazenado internamente como o nmero de 16 bits
0020H. Quando este valor transferido para um registrador de 8 bits, somente os 8 bits
menos significativos (20H) so colocados no registrador; os 8 bits mais significativos
(00H) so descartados.
Pode-se utilizar qualquer caractere ASCII apropriado para esse tipo de constante.
Por exemplo, fica-se limitado a 09, AF, e af para dados hexadecimais e 09 para
dados decimais, mas pode-se utilizar qualquer caractere alfanumrico ou sinal de
pontuao em uma cadeia de caracteres. Excetuando-se indicao em contrrio, pode-se
utilizar caracteres maisculos ou minsculos de forma intercambivel.
Os nmeros so assumidos como estando no sistema decimal, salvo se um
especificador de base for utilizado. O AVSIM51 permite a especificao de base tanto na
forma de um prefixo quanto na forma de um sufixo.
51

Base

Prefixo
Especificador

Exemplo

Sufixo
Especificador

Exemplo

Binria

%10101011

B ou b

01010100b

Octal

O377

Q ou q

377q

Hexadecimal

$AE0F

H ou h

E10Dh

NOTA: Para compatibilidade com a sintaxe do Cross-Assembler da AVOCET, pode-se


utilizar o prefixo especificador de base octal, @, em mnemnicos. Em uma expresso, @
o operador de endereamento indireto. Por exemplo:
O377

avaliado como o nmero octal 377 (base)

MOV A,@R0

Copia o conteudo apontado pelo registrador R0 no


acumulador (endereamento indireto

MOV A,#@377

Copia o valor octal 377 no acumulador (base)

@PC

o contedo do contador de programa (PC)


(endereamento indireto)

As constantes so avaliadas na seguinte ordem:


1. Smbolos predefinidos. Alguns smbolos so predefinidos em AVSIM.REG. Eles
incluem a especificao de vrios registradores e ports, bem como o espao de
endereamento. Note-se que ACC representa o acumulador e R0 a R7 representam os
registradores; por exemplo, R0 D:0. Pode-se listar o ARQUIVO AVSIM.REG para
obter uma listagem completa dos smbolos predefinidos.
2. Smbolos definidos pelo usurio. Esses smbolos so tomados de todas as tabelas de
smbolos correntemente carregadas. Um smbolo definido pelo usurio precisa ser
delimitado por um espao, um tab, um operador ou um caractere teminador
(usualmente a combinao return/linefeed). Novos smbolos tem precedncia sobre
smbolos previamente definidos com o mesmo nome. Como o AVSIM51.REG
carregado em primeiro lugar, pode-se redefinir smbolos com o mesmo nome nas
prprias tabelas de smbolos do usurio. Todos os smbolos so truncados em 8
caracteres de comprimento. Pode-se utilizar smbolos de qualquer comprimento, mas
deve-se estar seguro de que sejam nicos em seus 8 primeiros caracteres.
Se existirem smbolos com caracteres maisculos e minsculos na tabela de
smbolos, ento deve-se diferenciar o caso para entrar com o nome do smbolo.
Contudo, se todos os smbolos forem do mesmo caso (todos maisculos ou todos
minsculos), ento o caso no importante durante a entrada de dados para comandos
como Patch ou Expression. Todos os smbolos em AVSIM51.REG esto
definidos com caracteres maisculos.
3. Cadeias de caracteres ASCII. Uma cadeia de caracteres ASCII constituda por um
ou mais caracteres ASCII delimitados por aspas simples () ou duplas(). O caractere

52

mais esquerda ocupa os 8 primeiros bits da cadeia. Exemplos de cadeias bem


formadas incluem o seguinte:
a1
AB
He is gone.
!@#$%!!!, she said.
4. Valor corrente do contador de programa. Um smbolo $ indica o valor corrente do
contador de programa. Este o endereo mostrado na janela Program Counter (PC)
na tela do simulador.
Operadores
O AVSIM51 d suporte para um pequeno conjunto de operadores que podem ser
utilizados em expresses:
Smbolo

Ao

Descrio

Adio

Soma de dois nmeros.

Subtrao

Subtrao de dois nmeros

Negao

Nega um nmero (-5 o negativo de 5).

Endereamento indireto

Avalia o endereo do byte de seu


argumento e retorna com o contedo de tal
endereo. Salvo especificao em
contrrio, o espao de endereamento de
dados (Data space) utilizado. Por
exemplo @ALABEL indica o valor
contido no endereo ALABEL.

()

Ordem de avaliao

Especifica a ordem de avaliao de uma


expresso. Expresses no interior de
parnteses so avaliadas em primeiro lugar.
Pode-se aninhar parnteses at 4 nveis de
profundidade.

Expresses
As expresses so compostas por uma ou mais constantes conectadas por
operadores. Onde um valor constante puder ser utilizado, pode-se substitu-lo por uma
expresso. O seguinte contm exemplos de expresses vlidas (assumindo @BUF = 23):
Expresso

Valor

123

@BUF + 1

24
53

A tabela abaixo demonstra a sintaxe das expresses:

5.2.2

Sintaxe da expresso

Exemplo

constante [ operador constante [ . . . ] ]

ALABEL
20H (BFBASE 1)

expresso [, expresso [ . . . ] ]

MAIN, AB, $ 1, 0a

O Resultado de uma Avaliao Anterior

O smbolo ponto (.) contm o resultado da expresso anteriormente avaliada. A


expresso . + 100 tem valor igual a valor da expresso prvia + 100. No comando
expresso, . pr-carregado com o valor corrente sob o cursor; isto , . + 1 igual ao
valor no modo Display incrementado de 1.
Pode-se utilizar o smbolo . em qualquer expresso, mas ele particularmente
til no clculo de endereos. Pode-se especificar uma faixa (range) com start address
e count, em lugar de start address e end address. Por exemplo, quando o AVSIM51
solicita start address e end address, pode-se entrar com o seguinte:
Start Address: 100H
End Address: . + 100H
ou
Start Address: 100H
End Address: 200H
Espao de Endereamento
Sempre que um endereo requisitado, o espao de endereo default assumido
pelo prompt do AVSIM51. Pode-se substituir o default atravs da especificao e um
espao de endereamento diferente.
O seguinte demonstra a sintaxe do endereamento:
Sintaxe do Endereamento

Exemplo

[ Espao de endereamento: ] expresso

D:BFBASE
D:SPACE + 20

Sempre que o AVSIM51 solicita um endereo, pode-se explicitamente indicar o


espao de endereamento:

54

Tipo

Espao de
Endereamento

Exemplo

Cdigo

C:MAIN

Dados (memria interna de dados)

D:BFBASE

Externo (memria externa de dados)

X:@A

Pode-se tambm utilizar a seguinte sintaxe na indicao do espao de


endereamento de um smbolo:
Tipo

Sufixo

Exemplo

Cdigo

.C

MAIN.C

Dados (memria interna de dados)

.D

BFBASE.D

Externo (memria externa de dados)

.X

A.X

Quando esta ltima sintaxe utilizada, pode-se utilizar o smbolos no AVSIM51


sem indicar o espao de endereamento (a letra que o precede e os dois pontos). Se o
smbolo foi inicialmente definido como BFBASE.D, ento, em referncias posteriores ele
pode ser especificado como BFBASE em lugar de D:BFBASE.
Isto permite a especificao do espao de endereamento para o simulador no
cdigo fonte do programa do usurio. De outra forma isso no seria disponvel na tabela
de smbolos de um arquivo de listagem de programa fonte do AVMAC ou do XASM.
Registradores
O nome simblico de um registrador avaliado como o endereo do registrador.
Para referenciar seu contedo, necessrio utilizar-se o operador de endereamento
indireto, @. Por exemplo, para uma referncia a um port, deve-se utilizar @port. Para
referir-se ao endereo de um port deve-se utilizar port.
@PC equivalente ao smbolo $ do assembler. Ambos referem-se ao valor
corrente do contador de programa o endereo do prximo cdigo de operao a ser
executado. estes smbolos so intercambiveis.
Mnemnicos do Cross-Assembler da Avocet
O simulador aceita a seguinte sintaxe de mnemnicos do Cross-Assembler da
Avocet:
[label:] operao [operando [,operando [,operando]]] [;comentrio]
Note-se que uma expresso pode freqentemente ser utilizada como operando.
Por exemplo, considere-se o seguinte fragmento:
55

MAIN:

CLR F0
;inicio da rotina
MOV A,#10011001B
DJNZ R3,$+3

A sintaxe padro do Cross-Assembler Avocet aceita pelo simulador com as


seguintes restries:
1. Todo label deve ser seguido por :. O label ser ento introduzido na tabela de
smbolos.
2. O resultado Resultado Prvio representado pelo smbolo . no tem contexto
durante a compilao e portanto ilegal como em um argumento de cdigo em
assembly.
3. O operador de Endereamento Indireto (@) no reconhecido pelo assembler.
@ um prefixo de especificao de base octal apenas em um argumento em
assembly.
4. H suporte apenas para o seguinte subconjunto de operadores do Cross-Assembler da
Avocet: +, , ().

56

Captulo 6

DESCRIO DOS COMANDOS


Este Captulo descreve cada um dos comandos do AVSIM51. H uma seo para
cada comando do Menu Principal de Comandos (Main Command Menu). Se um
comando chama um submenu, o submenu tambm includo na seo. (Observe-se que
para o leitor que j tenha lido o tutorial, parte da informao presente neste captulo
poder j parecer familiar).
Cada comando abreviado por uma letra. Sempre que possvel, a abreviatura a
primeira letra do comando. Quando h conflito entre nomes de comandos, ento uma
outra letra utilizada como abreviatura de um dos comandos. A abreviatura
apresentada em caractere maisculo no menu e no texto deste manual. Por exemplo:
Comando

Abreviatura

Dump

commandFile

Para invocar um comando digita-se sua abreviatura. No h necessidade da


digitao de Return, o AVSIM51 responde imediatamente quando se digita a abreviatura.
Se uma tecla invlida digitada, o simulador emite um beep e ignora a entrada.
Reentra-se ento com uma abreviatura vlida. Se um comando altera uma das janelas,
como por exemplo, Reset Cpu, a janela atualizada imediatamente.
Pode-se tambm apontar o comando, utilizando as teclas do cursor. medida que
o cursor movimentado, o comando apontado mostrado na tela em vdeo reverso.
Pressiona-se Return para selecionar o comando desejado.
Para sair de um comando deve-se digitar Ctrl C. O comando ser abortado e o
AVSIM51 volta para o menu principal de comandos.
Quando um menu muito extenso para caber em uma linha, apenas parte
mostrada. Para ver a outra parte pressiona-se a barra de espaos. Para voltar para a
primeira parte, pressiona-se novamente a barra de espaos.
O menu principal de comandos tem o seguinte aspecto:
Dump
Memory

Expression
Patch

CommandFile

Quit Reset

Help

IO

Load

Set setUp View

57

-- space --

eXecute

-- space --

O restante deste captulo descreve em detalhe cada um dos comandos. H uma


seo dedicada a cada um dos comandos do menu principal de comandos. Para facilidade
de referncia, as sees so organizadas em ordem alfabtica.
Nos exemplos deste captulo, as entradas do operador so mostradas em negrito,
prompts e mensagens do AVSIM51 so mostrados em caracteres normais e explicaes
so mostradas em itlico.

58

6.1

Dump
Abreviatura: D

O comando Dump apresenta o contedo da memria em uma das duas janelas de


apresentao de reas de memria (memory dump areas). Cada uma dessas reas
apresenta 32 bytes da memria nos formatos hexadecimal e ASCII. A rea superior a
Dump Area 1. A rea inferior a Dump Area 2.
Pode-se especificar um endereo direto para apresentao de memria em uma
rea de dump. possvel tambm especificar endereamento indireto, utilizando o
contedo de uma posio de memria (ou registrador) acrescido de um offset do endereo
a ser apresentado na tela. Quando o contedo da posio de memria ou do registrador
alterado, a rea de memria apresentada tambm muda. O endereamento indireto til
quando se est percorrendo uma tabela e se quer manter visvel na tela o contedo da
entrada atual. Configura-se Dump no modo indireto com o registrador ou ndice que
est sendo utilizado para percorrer a tabela; configura-se ento o offset como 0 ou outro
valor apropriado. medida que a tabela percorrida, o valor corrente sempre aparecer
destacado na tela.
Quando seleciona-se Dump, o AVSIM51 emite um prompt solicitando o nmero
da rea de dump. Entra-se um dos nmeros (1 ou 2). O menu do comando Dump
aparecer ento:

DUMP: Absolute Indirect


6.1.1

Absolute
Abreviatura: A

O modo Absolute Dump apresenta diretamente o contedo de memria.


emitido um prompt solicitando o endereo inicial do espao da rea de dados que se
quer mostrar na tela. O AVSIM51 apresentar ento na rea de dump o contedo do
endereo fornecido e dos 31 bytes seguintes. Pode-se fornecer como endereo inicial um
endereo simplesmente ou uma expresso.
Por exemplo:
>D1A
DUMP Start Address: 20h Return
Apresenta na Dump Area 1 o contedo das posies de memria 0020h a 003Fh.
Se R0 contiver o valor 10h, ento:
>D2A
DUMP Start Address: @R0 + 17 Return
Adiciona 17 decimal ao contedo atual do registrador R0, 10h, e ento apresenta o
contedo da memria de dados a partir do endereo 0021h at 0040h, na Dump Area 2.

59

6.1.2

Indirect
Abreviatura: I

O modo Indirect Dump apresenta posies de memria, utilizando o contedo de


um endereo (ou registrador) acrescido de um offset para calcular o endereo a ser
apresentado na Dump Area. Pode-se fornecer um endereo ou nome de registrador e um
offset numrico. O AVSIM51 somar o contedo corrente do endereo ou registrador ao
offset, e ento tratar o resultado como endereo para apresentao de contedo na Dump
Area. O offset tratado como um valor de 16 bits.
Quando se utiliza um Indirect Dump, o AVSIM51 mantm sempre o espao de
apresentao na Dump Area atualizado em funo das alteraes no contedo do
endereo ou registrador. O endereo calculado destacado na tela.
Por exemplo:
>D1I
Enter Expression in Data Space: R2
Index OFFSET: 0h
O byte @R2 destacado. medida que o contedo de R2 alterado, a Dump Area
ajustada de modo a ser mantida na tela a regio apontada por @R2.
Se TABLE1 for um label vlido, ento:
D2I
Enter Expression in Data Space: R1
Index OFFSET: TABLE1
O byte contido no endereo TABLE1 + @R1 destacado na Dump Area. Se @R1
incrementado, o prximo byte da tabela passa a ser o destacado.
Quando se est trabalhando no Modo Indireto do 8051, usualmente se utiliza os
registradores R0 ou R1 com um offset de 0.

60

6.2

Expression
Abreviatura: E

O comando Expression permite que se entre com dados na posio corrente do


cursor de tela. Estando-se no modo Command, aciona-se <CNGMDE> Esc para
comutar para o modo Display, move-se o cursor, comuta-se de volta para o Command
Mode e entra-se com o dado ou expresso.
Quando seleciona-se essa opo, o sistema solicita a expresso de entrada. Digitase o dado ou expresso e ento Return. O valor ou expresso ser armazenado na posio
do cursor na tela.
Se a expresso resultar em um valor maior que a capacidade da posio, os bits
em excesso so desconsiderados. Caso o contador de programa (PC) seja atualizado, o
novo fragmento de programa ser apresentado.
Utiliza-se esta funo para alterar valores em registradores ou memria. Para
alterar cdigo utiliza-se o comando Patch.
Por exemplo:
Se o cursor da tela estiver sobre o PC:
>E
Enter Expression: Fh+1
a expresso alterar o contedo do PC para 0010h.

61

6.3

commandFile
Abreviatura: F

Uma seqncia de comandos para o AVSIM51 pode estar contida em um arquivo


de comando (command file). Quando um arquivo de comando criado, o AVSIM51
abre o arquivo. Todas as teclas pressionadas so armazenadas no arquivo at que ele seja
fechado. Quando se executa o arquivo, o AVSIM51 interpreta cada tecla pressionamento
de tecla registrado no arquivo como se esta estivesse sendo diretamente digitada no
terminal. Os arquivos de comando so mais teis quando se quer configurar um ambiente
padronizado ou uma srie de breakpoints, mas eles podem ser utilizados sempre que se
tiver a necessidade de digitar a mesma srie de teclas mltiplas vezes. Os arquivos de
comando podem ser aninhados em at cinco nveis de profundidade.
O menu CommandFile apresentado da seguinte forma:

COMMAND FILE: Load

SAVE: Open Close Restart

Cada um destes comandos discutido em subsees a seguir


6.3.1

Load
Abreviatura: L

O comando Load l o arquivo de comando salvo previamente e executa os


comandos. Quando se seleciona Load, o AVSIM51 emite um prompt solicitando o
nome do arquivo. Entra-se ento com o nome do arquivo (incluindo o drive e o caminho,
se necessrio) e pressiona-se a tecla Return.
O AVSIM51 carregar o arquivo e executar os comandos nele presentes. Os
comandos e mensagens sero apresentados a grande velocidade na tela at que o
AVSIM51 atinja o final do arquivo.
Por exemplo:
> FL
Enter filename: startfil.sav Return
O arquivo de comandos startfil.sav carregado e executado.
Este um comando til para se utilizar como uma opo de linha de comando
quando se d a partida no AVSIM51. Veja-se o Captulo 2, Primeiros Passos, para mais
informaes.
6.3.2

Open
Abreviatura: O

O comando Open abre o arquivo de comandos especificado e inicia o registro de


teclas acionadas. Quando se seleciona Open, o AVSIM51 emite um prompt solicitando
62

o nome do arquivo. Entra-se ento com o nome, incluindo drive e caminho se necessrio,
e pressiona-se Return.
Por exemplo:
> FO
Enter filename: startfil.sav Return
O arquivo de comandos startfil.sav aberto. Todas as teclas, tomando como primeira
a prxima, so armazenadas em startfil.sav at que este arquivo seja fechado.
6.3.3

Close
Abreviatura: C

O comando Close fecha o arquivo de comandos correntemente aberto, se houver


um arquivo de comandos aberto.
Por exemplo:
Se o arquivo de comandos startfil.sav estiver aberto:
> FC
O arquivo de comandos startfil.sav fechado.
6.3.4

Restart
Abreviatura: R

O comando Restart fecha o arquivo de comandos, se houver um aberto, ento


reabre-o, apagando todos os registros de teclas no arquivo. O comando til quando se
cometeu algum engano e deseja-se apagar o antigo arquivo e recomear.
Por exemplo:
Se o arquivo de comandos startfil.sav estiver aberto:
> FR
A antiga verso de startfil.sav apagada e uma nova verso aberta.
Arquivos de comando podem ser editados com um editor de texto, contudo isso
pode ser difcil, especialmente se houver registro de teclas de controle no mesmo.
Usualmente mais fcil usar o comando Restart. Erros podem ser deixados no arquivo,
mas sero executados cada vez que o arquivo de comandos for executado.

63

6.4

Help
Abreviatura: H

O comando Help apresenta uma tela com mensagens de ajuda. Quando Help
selecionado, o menu Help apresenta:

HELP Command

Display

Simulation Avocet

Seleciona-se ento, com a abreviatura, o tpico sobre o qual deseja-se ajuda:


Commands: Explica os comandos do Menu Principal de Comandos.
Display: explica as opes do Modo Display.
Simulation: Explica a utilizao das teclas de funo.
Avocet: D informaes sobre os simuladores correntemente disponveis e as datas para
as quais esto planejados lanamentos.
Demo: Lista as restries da verso demonstrativa do AVSIM51 (apenas nas verses
demonstrativas).
No caso do texto ser muito extenso para caber em uma nica pgina, a linha no extremo
inferior da tela indica:
Press any key to continue, Ctrl C to return.
Pressiona-se ento qualquer tecla para ver a prxima tela de texto. Quando a ltima tela
apresentada, o pressionamento de qualquer tecla determina o retorno para a tela do
simulador. Pressiona-se Ctrl C para abandonar a tela de ajuda e retornar ao simulador.
O comando Help disponvel apenas se o arquivo AVSIM51.HLP estiver presente
no drive de disco default ou no caminho especificado por PATH ou AVPATH. Se
AVSIM51.HLP no estiver presente no disco default ou no PATH (AVPATH) e o
comando Help for selecionado, o AVSIM51 apresentar a seguinte mensagem:
NO HELP FILE

64

6.5

IO File
Abreviatura: I

O menu do IO Command permite a simulao de entrada e sada de dispositivos


externos para ports e bits de ports do 8051 com utilizao de arquivos seqenciais. Podese utilizar esses comandos para simular entrada e sada em trs modos diferentes:
Bit I/O: Leitura ou escrita de bits especficos de um arquivo seqencial a uma taxa
determinada (cada n ciclos). Os bits podem ser lidos ou escritos em ports
especficos, registradores e endereos de memria selecionados.
Byte I/O: Leitura ou escrita em um arquivo seqencial de bytes a uma taxa determinada
(cada n ciclos). Os bytes podem ser lidos ou escritos em ports especficos,
registradores e endereos de memria selecionados.
Opcode I/O: Leitura ou escrita em um arquivo seqencial de bytes utilizando leitura ou
escrita em um endereo particular como gatilho. Os bytes podem ser lidos ou
escritos em ports especficos, registradores e endereos de memria selecionados.
Os dois primeiros tipos de entrada e sada, bit I/O e byte I/O, so os mais
apropriados para entrada e sada dirigidas por interrupes. O ltimo tipo, Opcode I/O,
mais apropriado para entrada e sada por polling.
Quando o AVSIM51 l um arquivo, independentemente do tipo de entrada e sada
utilizada, cada byte processado como se viesse de um dispositivo externo. De modo
similar, pode-se acoplar arquivos para receber dados enviados a um port (ou bits
especficos do port). Essa sada tratada como se fosse enviada a um dispositivo externo,
mas na realidade salva em um arquivo de sada para posterior exame. Pode-se tambm
especificar a velocidade na qual a entrada e sada de bit ou byte deve ocorrer tanto em Bit
I/O como em Byte I/O.
Os arquivos podem ser criados de vrias formas com uso de um editor de texto,
com um programa, ou como sada de um chip alvo. Desde que o arquivo seja um arquivo
seqencial, o AVSIM51 poder utiliz-lo. Verses do AVSIM51 posteriores 1.1
ignoram qualquer caractere extra aps um marcador de final de arquivo (Ctrl Z), de
modo que qualquer editor de textos ou word processor pode ser utilizado com o
programa.
Veja-se o Captulo 7, Tpicos Avanados, para mais informaes sobre o uso de
arquivos de entrada e sada.
O menu I/O apresentado na tela como:

IO FILE:
6.5.1

Open

Open
Abreviatura: O

65

Close

O comando Open ordena ao AVSIM51 que abra um arquivo de entrada e sada.


Utiliza-se este comando para abrir tanto arquivos de entrada como arquivos de sada.
Quando Open selecionado o AVSIM51 emite um prompt solicitando toda a
informao necessria.

Enter filename:
IO Imput File
Se o objetivo for criar um arquivo de entrada, o nome do arquivo deve ser
digitado. (Observe-se que h suporte para o caminho do arquivo). Se no for o caso de
criao de arquivo de entrada, digita-se Return.
Caso se tenha entrado com um nome de arquivo o AVSIM51 emitira um novo
prompt:

Replay input file at EOF Y or N


Se for escolhida a opo Y, ento quando o AVSIM51 atingir o final do arquivo,
este ser repetidamente relido a partir de seu incio. Caso seja escolhida a opo N, o
AVSIM51 paralisar a simulao ao atingir o final do arquivo.
Utilizando-se ou no um arquivo de entrada, o AVSIM51 sempre emitir um
prompt por um arquivo de sada:

Enter filename:
IO Output File
Se for planejado emitir dados para um arquivo de sada, digita-se aqui o nome do
arquivo. (Observe-se que aqui tambm dado suporte para o caminho do arquivo.
possvel tambm ter-se um arquivo de entrada e um arquivo de sada abertos ao mesmo
tempo.) Caso no seja necessrio um arquivo de sada digita-se Return.
O AVSIM51 emite ento um prompt solicitando o mtodo de gatilhamento:

IO TRIGGER:

Cycles

Opcode access

Neste ponto necessrio escolher um entre dois tipos de gatilhamento:


1. Gatilhamento peridico a cada determinado nmero de ciclos,
independentemente da ocorrncia da execuo de uma instruo de leitura ou
escrita. (Esta escolha til na simulao de interrupes.)
66

2. Pode-se ler ou escrever em um arquivo em disco toda vez que for executada
pelo 8051 uma instruo de entrada ou sada. (Esta escolha til para a
simulao de um ambiente onde se interroga (efetua-se polling de) uma
linha serial.)
Digita-se C para a opo ciclos, se for desejado o gatilhamento de entrada e sada
peridico a cada determinado nmero de ciclos. Digita-se O para gatilhamento por
cdigo de operao. Os prompts variaro dependendo do tipo de gatilhamento
selecionado. Veja-se abaixo as subsees apropriadas.
Cycles
Caso seja selecionada a opo Cycles, ocorrer a seguinte seqncia:

Enter decimal number:


IO RATE: Cycles per transfer
Entra-se ento com o nmero de ciclos de mquina simulados entre os bytes a
serem transferidos. O nmero dever ser decimal positivo. (Para uma freqncia interna
de clock de 1Mhz, uma taxa IO RATE de 200 corresponde a 5 Khz. Observe-se que a
taxa de transferncias baseada em ciclos de clock e no sincronizada com eventos
externos. Veja-se o Captulo para mais informaes sobre taxas de transferncia de
entrada e sada.)
O AVSIM51 emitir ento um prompt pelo mtodo de transferncia de entrada e
sada:

IO TRANSFER:

Mapbits

mapByte

Digita-se M para bits especficos de cada byte, ou B para utilizar bytes inteiros.
Dependendo da escolha, veja-se abaixo a subseo apropriada.
Mapbits
Escolhendo-se mapear bits especficos, o sistema emitir o seguinte prompt:

Enter expression:

IO Bit,

Memory Bit, Address,

Dir:IN/OUT

Especifica-se da seguinte forma os bits a serem utilizados:


IO Bit: O I/O Bit o bit a ser lido de (ou escrito no) arquivo de entrada e sada.
entra-se com um nmero de bit de 0 e 7, onde 0 corresponde ao bit menos
significativo. Os bits podem ser especificados simbolicamente (p. ex., INT0,
RI, T1).

67

Memory Bit: O Memory Bit o bit do port (ou registrador) para onde o bit do
arquivo de entrada e sada ser enviado. Entra-se com um nmero de bit de 0
a 7, onde 0 corresponde ao bit menos significativo. Os bits podem ser
especificados simbolicamente.
Address: Address o endereo de memria, registrador ou port, que constitui a
fonte ou o destino do bit de entrada e sada.
Dir:IN/OUT: serve para especificar o sentido em que flui o bit. IN especifica que
o bit vai do arquivo de entrada e sada para o bit de memria cujo endereo foi
especificado. Se um arquivo de sada estiver aberto, o bit ser enviado
tambm para o arquivo de sada. OUT especifica que o bit de memria ser
enviado para o bit de entrada e sada do arquivo de sada. Se apenas um nome
de arquivo foi especificado, o especificador de sentido opcional.
Deve-se separar os dados com virgulas. Por exemplo, entra-se com uma
seqncia de bits como: 0, 4, P1, IN Return.
Se o memory bit tiver um nome simblico, como RI do registrador SCON,
pode-se especificar o nome diretamente. Veja-se o exemplo abaixo:

Bit de I/O

Mem Bit

Addr.

Dest.

Descrio

0,

4,

P1,

IN

Envia o bit 0 do dado de entrada para o bit 4


do port P1

1,

RI

IN

Envia o bit 1 do dado de entrada para o bit


RI do registrador SCON.

mapByte
Caso se escolha o mapeamento de bytes inteiros, o sistema emitir o seguinte
prompt:

IO TRANSFER: Address,

Dir:IN/OUT

Especifica-se os bytes da seguinte forma:


Address: Address o endereo de memria, port ou registrador, que constitui a
fonte ou o destino de um byte de entrada e sada.
Dir:IN/OUT: A escolha IN envia os bytes do arquivo de entrada e sada para o
endereo especificado. OUT envia os bytes do endereo especificado para o
arquivo de sada.
Separa-se os dados com vrgulas. Por exemplo, entra-se com um conjunto de
bytes como: P1, IN Return.
68

Addr.

Dir.

Descrio

P1,

IN

Envia cada byte do arquivo de entrada para o port P1.

SBUFL,

OUT

Envia cada byte do Transmissor do Port Serial para o


arquivo de sada.

Opcode access
Opcode seleciona o acesso ao arquivo de entrada e sada por cdigo de operao.
Todos os cdigos de operao que referenciarem o endereo especificado disparam uma
leitura do arquivo de entrada ou uma escrita no arquivo de sada. Quando esta opo
selecionada, o sistema emite o seguinte prompt:

IO TRANSFER: Address,

Dir:IN/OUT

Especifica-se o byte da seguinte forma:


Address: Address um endereo de memria, registrador ou port, que constitui
a fonte ou destino de um byte de entrada e sada.
Dir:IN/OUT: o especificador de sentido. IN determina o envio de bytes de do
arquivo de entrada para o endereo especificado. OUT determina o envio de
bytes do endereo especificado para o arquivo de sada.
Utiliza-se o mesmo formato que em mapByte. Uma entrada de byte para o
endereo ocorre antes que o endereo seja lido; e uma sada de byte ocorre aps ocorrer
uma operao de escrita no endereo.

69

6.5.2

Close
Abreviatura: C

O comando Close determina o fechamento do arquivo de entrada e sada. Quando


selecionado este comando, o AVSIM51 apresenta cada par de arquivos de entrada e
sada aberto, um par por vez. Digita-se Y para fechar os arquivos e N para deix-los
abertos.

70

6.6

Load
Abreviatura: L

O menu do comando Load permite o carregamento de diversos tipos de arquivos


no espao de memria do simulador. Os seguintes tipos de arquivos podem ser
carregados:
Avocet: Programa e tabela de smbolos gerados pelos cross-assemblers XASM ou
AVMAC51 da Avocet.
Data: Programa, no formato Motorola (.MIK) ou Intel (.HEX), carregado como
RAM (isto , dados que podem ser modificados pelo programa do usurio).
Program: Programa, no formato Motorola (.MIK) ou Intel (.HEX), carregado
como ROM (isto , dados que no podem ser alterados pelo programa do
usurio).
Symbol Table: Tabela de smbolos que carregada em adio a smbolos
previamente carregados.
Quando este comando selecionado, o Load Menu apresenta-se como:

LOAD: Avocet (Symbos and Prog)

Data(RAM)

Program(ROM)

Symbol-table
O carregamento de programa ou dados determinam a escrita sobre programa ou
dado existentes nos mesmos endereos. O carregamento de uma tabela de smbolos
adiciona aos smbolos j presentes no simulador os novos smbolos definidos na tabela.
6.6.1

Avocet
Abreviatura: A

O comando Avocet carrega uma tabela de smbolos e um mdulo objeto criado


pelos cross-assemblers XASM ou AVMAC da Avocet. Estes devem ter sido criados por
cross-assembler da Avocet; utiliza-se os comandos Program e Symbol Table para carregar
mdulos preparados por outros cross-assemblers.
Quando esse comando selecionado, o simulador emite um prompt solicitando
o nome do arquivo de fonte/objeto/tabela de smbolos sem extenso. O simulador
inicialmente procura por uma tabela de smbolos com o nome filename.SYM ou
filename.PRN e o carrega. Um arquivo com a extenso .SYM dispara automaticamente a
definio de todos os SG memory ranges. Aps a busca por um arquivo .SYM ou
.PRN, o AVSIM51 busca um mdulo objeto com o nome filename.MIK out
filename.MOT (para microprocessadores Motorola) ou filename.HEX e o carrega como
ROM.
Quando se utiliza um cross-assembler Avocet, pode-se habilitar a tabela de
smbolos para um carregamento rpido, compilando-se com as chaves apropriadas do
cross-assembler:

71

XASM sourcefilename XN
ou
AVMAC51 sourcefilename AP
AVLINK hexfilename=sourcefilename -- SYMBOLS
Por exemplo:
> LA
Load filename: MYPROG Return
O simulador busca MYPROG.SYM ou MYPROG.PRN e carrega os smbolos. Ento
busca MYPROG.MIK ou MYPROG.MOT ou MYPROG.HEX e carrega aquele que for
encontrado. Se esses arquivos no puderem ser encontrados, uma mensagem de erro
emitida.
6.6.2

Data
Abreviatura: D

O comando Data carrega um modulo objeto no formato Motorola (.MIK) ou Intel


(.HEX). A memria alocada medida que o arquivo carregado e assinalada como
RAM. Dados em RAM podem ser alterados pelo programa do usurio. (Observe-se que
checksums no so utilizados durante o carregamento.)
Por exemplo:
> LD
Load filename: MYPROG Return
O simulador busca MYPROG.MIK ou MYPROG.HEX e carrega aquele que for
encontrado. O arquivo carregado como RAM e pode ser alterado pelo programa do
usurio.
6.6.3

Program
Abreviatura: P

O comando Program carrega um mdulo objeto no formato Motorola S-record


(.MIK) ou Intel Hex (.Hex). (Observe-se que checksums no so utilizados.) A memria
alocada medida que o arquivo carregado e assinalada como ROM. Dados em ROM
no podem ser alterados pelo programa do usurio; uma tentativa de escrita nesta regio
de memria determinar uma parada na simulao e a emisso de uma mensagem de erro.
Pode-se, naturalmente, alterar esses dados, utilizando-se os comandos Patch ou
Expression ou ainda as teclas de edio no modo Display.
Por exemplo:
72

> LP
Load filename: MYPROG Return
O simulador busca MYPROG.MIK ou MYPROG.HEX e carrega aquele que for
encontrado. O programa armazenado como ROM e no pode ser modificado pelo
programa do usurio.
6.6.4

Symbol table
Abreviatura: S

O comando Symbol table carrega uma tabela de smbolos no simulador. Todos os


smbolos so adicionados aos smbolos j existentes. Quaisquer smbolos com os
mesmos nomes de smbolos j existentes sero sobreescritos, isto , prevalece a ltima
entrada. O simulador carrega a tabela de smbolos, AVSIM51.REG, durante sua partida
inicial. Se os smbolos neste arquivo apresentarem algum conflito com smbolos do
programa do usurio, pode-se editar AVSIM51.REG. Todos os smbolos so truncados
em oito caracteres. Os smbolos podem ser mais longos mas deve-se assegurar que so
nicos no domnio dos oito primeiros caracteres. Os smbolos devem obedecer um
formato especfico: nome do smbolo (qualquer comprimento, sem caracteres brancos),
seguido por um caractere branco ou tab, seguido pelo endereo hexadecimal do smbolo:
Sintaxe:
[smbolo] [valor hexadecimal] [[smbolo] [valor hexadecimal] . . . ] CR, LF
Entradas legais na tabela de smbolos:
ACC.R
P0.R
R0.D
MYVAL.D

E0
[TAB]80
60
1F

Entradas invlidas na tabela de smbolos:


BAD VAL.D
R3.D

2F
03,

R4.D

04

O primeiro smbolo malformado contm um caractere ilegal (espao).


O segundo utiliza uma vrgula para separar entradas.
Os smbolos podem conter apenas caracteres alfanumricos, pontos ou sublinha
_, e espaos no podem aparecer entre os demais caracteres. Quando uma linha no
tem esse formato, ento ela ignorada quando o primeiro caractere no hexadecimal
encontrado e o carregamento prossegue com a prxima linha. Pode-se incluir mais de um
smbolo em uma linha; contudo, se a linha contiver um smbolo invlido, a linha ser
ignorada a partir daquele ponto.

73

Por exemplo:
> LS
Enter Filename: ASYMTAB.PRN Return
O simulador busca o arquivo ASYMTAB.PRN e o carrega.
A tabela de smbolos utilizada durante o processo de desassemblagem. Podese tambm utilizar os smbolos em qualquer comando no qual uma expresso possa ser
usada.
Informao sobre os espaos de endereamento normalmente no est contida na
listagem da tabela de smbolos; o AVSIM51 oferece um meio para incluir esta
informao. Utiliza-se um ponto e um sufixo de espao de endereamento para
especific-lo:

Nome do Smbolo

Espao de Endereamento

Interpretao

MAIN.C

CODE

C:MAIN

BFBASE.D

DATA

D:BFBASE

AVAL.X

EXTERNAL

X:VAL

O espao de endereamento por default CODE, de modo que a maior parte dos
labels no requer uma especificao explcita de espao de endereamento.

74

6.7

Memory
Abreviatura: M

O comando Memory permite que se trabalhe com o espao de memria simulada


que o programa utiliza. Pode-se zerar o espao de memria, modificar seu contedo e
buscar um padro utilizando o menu do comando Memory. O menu do comando
Memory apresenta-se como:

MEMORY:

6.7.1

Clear

Fill

Move Search

searchNext

Clear
Abreviatura: C

O comando Clear preenche com zeros uma poro do espao de endereamento


Data com (0, ASCII 30h). As pores deste espao de memria que estiverem visveis
nas janelas de dump de espao de memria apresentaro imediatamente as alteraes.
Quando dado o comando Clear, o AVSIM51 emite um prompt solicitando os
limites inferior e superior da regio de memria que se deseja zerar. O comando Clear
inclusivo: os limites inferior e superior de endereos de memria tambm so zerados,
juntamente com os endereos entre eles.
Se todo o espao de memria do 8051 houver sido alocado, o comando Clear pode
ser utilizado para fazer um wrap around de memria. Se o segundo endereo for menor
que o primeiro, o AVSIM51 zera a memria do primeiro endereo at o topo da memria
e de 00h at o segundo endereo.
Por exemplo:
> MC
Enter expression in Data Address Space: 08h Return
CLEAR MEMORY: LOWER ADDRESS
Enter expression in Data Address Space: 017h Return
CLEAR MEMORY: UPPER ADDRESS
O AVSIM51 zera memria de 08h a017h, inclusivamente.
Se todo o espao de endereamento houver sido alocado:
> MC
Enter expression in Data Address Space: 1Fh Return
CLEAR MEMORY: LOWER ADDRESS
Enter expression in Data Address Space: 10h Return
CLEAR MEMORY: UPPER ADDRESS
O AVSIM51 zera memria de 001Fh ao topo da memria e de 0000h a 0010h.
75

6.7.2

Fill
Abreviatura: F

O comando Fill preenche uma parte da memria com um valor de byte


especificado. As pores de memria que estiverem sendo mostradas na tela so
imediatamente atualizadas para mostrar as alteraes.
Quando dado este comando, o AVSIM51 emite um prompt solicitando dois
endereos e um valor para preenchimento. A regio de memria que vai do primeiro
endereo ao segundo endereo ento preenchida com os 8 bits menos significativos do
valor de preenchimento. Se o valor da segunda expresso for menor que o da primeira, o
AVSIM51 preenche memria do primeiro endereo ao topo e de 00h ao segundo
endereo. Este processo de wrap around ocorre somente quando todo o espao de
endereamento houver sido alocado; caso contrrio, o comando Fill ser abortado quando
o topo da memria for atingido.
Por exemplo:
> MF
Enter expression in Data Address Space: 08h Return
FILL MEMORY: LOWER ADDRESS
Enter expression in Data Address Space: 017h Return
FILL MEMORY: UPPER ADDRESS
Enter expression: 65 Return
FILL VALUE
O AVSIM51 preenche cada byte de 0008h a 0017h com 65 decimal (que corresponde a
41h ou A ASCII.
Se o registrador R0 contiver o valor 9, e o todo o espao de endereamento de memria
houver sido alocado:
> MF
Enter expression in Data Address Space: 1F Return
FILL MEMORY: LOWER ADDRESS
Enter expression in Data Address Space: 10h Return
FILL MEMORY: UPPER ADDRESS
Enter expression: @R0 + 2Eh Return
FILL VALUE
O AVSIM51 avalia a expresso @R0 + 2Eh (41h), e preenche a memria de 1Fh ao topo
e de 0000h a 0010h com 41h (A em ASCII).

76

6.7.3

Move
Abreviatura: M

O comando Move copia o contedo de uma regio de memria para outra posio.
Se a faixa de endereos de destino estiver sendo visvel na tela em uma rea de
apresentao de memria, a tela apresentar imediatamente os novos valores.
Quando dado o comando Move, o AVSIM51 emite um prompt solicitando os
limites inferior e superior da regio a ser copiada e o endereo inicial do destino. O bloco
completo de memria ento copiado para a regio com endereo inicial especificado.
Se o endereo superior da regio a ser copiada for inferior ao primeiro, o AVSIM51 efetua
a cpia do primeiro endereo ao topo da memria e de 0000h ao segundo endereo
Todo o bloco de memria copiado, mesmo que o endereo destino cair entre os
limites do bloco a ser copiado. Se o bloco de memria for muito grande para caber entre
o endereo inicial de destino e o topo da memria, ento a parte restante copiada a partir
do endereo 0000h.
Por exemplo:
> MM
Enter expression in Data Address Space: 08h Return
MOVE MEMORY: LOWER ADDRESS
Enter expression in Data Address space: 17h Return
MOVE MEMORY: UPPER ADDRESS
Enter expression in Data Address Space: 10h Return
MOVE MEMORY: DESTINATION ADDRESS
O AVSIM51 copia o contedo de 0008h a 0017h em 0010h a 0019h.
> MM
Enter expression in Data Address Space: 07h Return
MOVE MEMORY: LOWER ADDRESS
Enter expression in Data Address space: 08h Return
MOVE MEMORY: UPPER ADDRESS
Enter expression in Data Address Space: 10h Return
MOVE MEMORY: DESTINATION ADDRESS
O AVSIM51 trata a poro de memria de 17h ao topo e de 0000h a 0008h como um
bloco nico de memria. Ento feita a cpia deste bloco a partir do endereo 0010h.

77

6.7.4

Search
Abreviatura: S

O comando Search busca em uma regio especificada de memria um padro de


contedo especificado. Se o padro encontrado, o AVSIM51 apresenta a mensagem
Found at address na janela de mensagens. Se o cursor da tela estiver em um rea de
apresentao de memria, o endereo do padro movido para a posio do cursor na
rea. Se o cursor da tela estiver na janela do PC (Program Counter), o PC ajustado para
o endereo do padro.
Quando se entra com dado para a busca, as expresses devem ser separadas por
vrgulas. Cada expresso deve ser avalivel com comprimento de um byte. As cadeias
devem ser delimitadas por aspas simples ou duplas e podem ter qualquer comprimento.
Por exemplo:
Para buscar:

Entra-se com:

1Ah

1Ah

FFFFh

FFh,FFh

ABCD

ABCD ou ABCD

Im here

Im here

Se o limite superior do endereo da rea de memria for menor que o primeiro


endereo, o AVSIM51 efetua a busca a partir do primeiro endereo at o topo da memria
e de 0000h ao segundo endereo. Para endereos 0,0 a busca efetuada em todo o
espao de endereamento.
Por exemplo:
> MS
Enter expression in Data Address Space: 00h Return
SEARCH MEMORY: LOWER ADDRESS
Enter expression in Data Address Space: 20h Return
SEARCH MEMORY: UPPER ADDRESS
Enter search expressions: 13,10 Return
SEARCH DATA
o avsim51 EFETUA UMA BUSCA DE 0000H A0020H pelo par CR LF ( carriage
return-line feed). Se o par for encontrado, e o curso estiver em uma rea de
apresentao de memria, a rea imediatamente atualizada, com CR apresentado sob o
cursor.

78

6.7.5

searchNext
Abreviatura: N

O comando searchNext continua a busca na memria pelo padro de contedo


especificado previamente. Este comando apenas funciona se o comando Search foi
previamente utilizado. Caso contrrio, o simulador relatar que no foi especificado um
padro para a busca.
Esse comando funciona exatamente da mesma forma que o comando Search.
Quando atingido o topo da faixa de memria especificada, ocorre o wrap around para
o incio da memria.

79

6.8

Patch
Abreviatura: P

Quando se invoca este comando, o AVSIM51 invoca um cross-assembler


incremental e o menu do comando Patch aparece:

PATCH:
6.8.1

Patch code

Open output file

Close file

Patch code
Abreviatura: P

O comando Patch code carrega diretamente o cross-assembler. Quando se invoca


o
o comando Patch code, o AVSIM51 emite um prompt solicitando um cdigo de
operao. Utiliza-se ento a sintaxe do cross-assembler da Avocet:
[label:] operation [expr [, expr [, expr]]] [;comment]
Smbolos e labels previamente definidos podem ser utilizados, ou pode-se
adicionar outros. Os Labels so incorporados tabela de smbolos, bem como escritos no
arquivo de patches (se um estiver aberto).
Se um arquivo de patches foi previamente aberto, ele permanece aberto e todo o
cdigo patch ser adicionado ao mesmo. O cdigo compilado e colocado in line na
posio atual do contador de programa. Observer-se que o contador de programa
atualizado quando se entra com mnemnicos. (Contudo, caso se queira executar o novo
cdigo imediatamente, necessrio reinicializar o PC.)
Para alterar o endereo de destino do cdigo patch, comuta-se para o modo
Display pressionando <CNGMDE> Esc, altera-se o valor do PC e volta-se ao modo
Command para entrar com o mnemnico.
O exemplo abaixo demonstra a utilizao do comando Patch:
> PP
Enter mnemonic: MOV a,#10001110B Return
Return
A operao MOV a,#10001110B colocada na posio indicada pelo valor atual do PC.
O segundo Return determina a sada do comando Patch, com o retorno ao menu
princiapal de comandos. O valor do PC o endereo da prxima instruo.
6.8.2

Open
Abreviatura: O

O comando Open abre um arquivo especificado pelo usurio. Todos os cdigos


inseridos com o comando Patch code so escritos nesse arquivo at que o arquivo seja
fechado com o comando Close, ou at que se encerre a operao do simulador (com o
80

comando Quit). Todos os labels, cdigos de operao, operandos, e comentrios so


adicionados ao arquivo, de forma que se pode manter um registro completo dos patches
inseridos. Alm disso, os endereos dos patches tambm so escritos no arquivo para
uma melhor documentao de quaisquer alteraes. Termina a utilizao do simulador,
pode-se, com um editor de textos, adicionar os patches bem sucedidos ao cdigo fonte
original, editando o que for necessrio.
Quando se invoca esse comando, o AVSIM51 emite um prompt solicitando um
nome de arquivo. Entra-se com o nome do arquivo, incluindo qualquer identificao de
drive e caminho e pressiona-se Return. Se existir um arquivo com o mesmo nome no
diretrio especificado, o AVSIM51 o apaga e cria um novo arquivo. Se um arquivo de
patches j estiver aberto, o comando o fechar antes de abrir o arquivo especificado.
Apenas um arquivo de patches pode estar aberto por vez.
Por exemplo:
> PO
Enter filename: C:MYDIR\PATCHES.FIL
O arquivo \MYDIR\PATCHES.FIL aberto no drive C:. Qualquer arquivo de patches
que estiver aberto ser fechado. Se PATCHES.Fil j existir em C:\MYDIR, ele ser
apagado e um novo PATCHES.FIL ser criado.
6.8.3

Close
Abreviatura: C

O comando Close fecha o arquivo de patches, se houver um aberto. Se no


houver arquivo de patches aberto, o comando no tem efeito.
Observe-se que no necessrio que se utilize esse comando para fechar um
arquivo de patches. Quando se sai do simulador com o comando Quit, qualquer arquivo
de patches que estiver aberto automaticamente fechado. Esse comando til quando se
deseja manter em arquivos separados diferentes seqncias de patches.

81

6.9

Quit
Abreviatura: Q

O comando Quit determina o encerramento da execuo do simulador e o retorno


ao sistema operacional. Todos os arquivos abertos, incluindo arquivos de entrada e sada,
arquivos de comando e arquivos de patches, etc., so fechados antes da volta ao sistema
operacional.
Quando o comando invocado, o AVSIM51 apresenta o menu Quit:

QUIT: EXIT
Caso se queira realmente deixar o simulador, digita-se E. Caso contrrio (se a
opo foi escolhida por equvoco) digita-se Ctrl C . O comando Quit abortado e
volta-se ao menu principal de comandos.

82

6.10

Reset
Abreviatura: R

O menu do comando Reset permite que se inicialize a CPU simulada, vrias


condies do simulador e breakpoints. Quando se invoca o comando, o menu Reset
aparece na tela:

RESET: Cpu

Disptrace

cYcles

BREAKPOINTS: All Traplist

Breakpoints

6.10.1 Cpu
Abreviatura: C
O comando Cpu efetua uma ativao do terminal reset da CPU. Todos os
dispositivos internos so inicializados de acordo com as especificaes do fabricante.
Ports de I/O so configurados como entradas, interrupes so canceladas e o contador
de programa dirigido para o endereo de inicializao.
6.10.2 Disptrace
Abreviatura: D
O comando Disptrace reinicializa todas as janelas de rastreamento da tela que
tenham sido ativadas pelo usurio. Observe-se que no modo Display, todas as janelas so
automaticamente atualizadas, a menos que o flag Update Display (DSP) esteja
desativado. Quando DSP est desativado, apenas as janelas que tenham sido
explicitamente configuradas para atualizao so apresentadas. O comando Disptrace
comuta os modos de atualizao de todas as janelas para OFF.
Para desativar uma janela, efetua-se a comutao, no modo Display, com o
comando <TRACE> Alt F6. Utiliza-se esse comando para o colocar o modo de
apresentao de todas as janelas em OFF. (Veja-se o Captulo 4, Modo Display, para mais
informaes sobre as caractersticas da atualizao da tela.)

83

6.10.3 cYcles
Abreviatura:Y
O comando cYcles desativa o contador de ciclos de mquina no canto superior
direito da tela do simulador. Para ativ-lo novamente, utiliza-se o comando Set cYcles.
Quando essa opo selecionada, o contador Cycles na tela aparece
esmaecidamente na tela. O contador de ciclos de mquina no atualizado durante a
execuo do simulador.
6.10.4 All
Abreviatura: A
O comando All remove todos os breakpoints e passpoints. Para remover
seletivamente breakpoints e passpoints, deve-se utilizar o comando Traplist ou
Breakpoints. Esses comandos so descritos adiante.
Quando a opo All selecionada, cada breakpoint ou passpoint
momentaneamente apresentado na tela medida que removido.
6.10.5 Traplist
Abreviatura: T
Quando um breakpoint causa uma parada, ele adicionado lista de paradas
(Trap List). Pode-se remover seletivamente um breakpoint da Trap List com o
comando Traplist (por exemplo, se uma parada em um determinado endereo no for
mais necessria). Quando a simulao tiver prosseguimento, a Traplist ser esvaziada.
Para se usar Traplist, o comando deve ser invocado imediatamente aps a ocorrncia da
parada.
Quando o comando Traplist invocado, o menu Reset Breakpoint apresentado.
esse menu permite que se remova o breakpoint ou passpoint apresentado, que ele seja
deixado ativo, ou que se remova todos os breakpoints restantes. O menu Reset
Breakpoints apresentado na tela tanto pelo comando Traplist como pelo comando
Brakpoints. (O comando Brakpoints discutido na prxima subseo.)
O comando Reset Breakpoints contm as seguintes trs opes:
Kill: Remove o breakpoint ou passpoint que est sendo apresentado na linha de comando.
Aps a remoo do breakpoint (ou passpoint), o prximo da lista apresentado na
tela. A qualquer momento que se queira abortar este comando, digita-se Ctrl C.
All: Remove todos os breakpoints e passpoints restantes, incluindo aquele que est sendo
apresentado. medida que cada breakpoint ou passpoint removido, ele
apresentado momentaneamente na tela.
Next: Avana para o prximo breakpoint ou passpoint na lista atual. Quando o AVSIM51
atinge o final da lista, apresentada a mensagem List Empty e ocorre o retorno ao
menu principal de comandos.

84

6.10.6 Breakpoints
Abreviatura: B
O comando Breakpoints permite a remoo seletiva de breakpoints e passpoints.
Quando se invoca esse comando, o AVSIM51 apresenta na tela a lista de todos os
breakpoints e passpoints para que a seleo possa ser feita. A lista organizada pelo tipo
de endereo/acesso dos breakpoints, e os breakpoints so mostrados na ordem em que
foram inseridos.
Quando se invoca o comando, o AVSIM51 apresenta o menu Set Breakpoint
Access Type para que seja feita a seleo do tipo de breakpoint a ser apresentado. (Vejase a seo sobre Set para informaes sobre o menu.) Seleciona-se ento o tipo de
breakpoint ou passpoint que se deseja remover. O simulador apresentar ento o primeiro
breakpoint relativo quele tipo e o menu Reset Breakpoint descrito acima. Esse menu
permite que o breakpoint seja removido, que se remova os demais breakpoints ou que se
apresente o prximo breakpoint.

85

6.11

Set
Abreviatura: S

Este menu permite que se configure um nmero de tipos de breakpoints e


passpoints, bem como o contador de ciclos, o mapa de memria, etc. Observe-se que
nesta seo utiliza-se o termo breakpoint com o significado de breakpoint ou
passpoint, salvo observao em contrrio. Veja-se tambm o Captulo 7, Tpicos
Avanados, para maiores informaes sobre breakpoints e passpoints.
Observe-se que um breakpoint ou passpoint pode ser configurado para um
endereo de memria ou registrador. Qualquer tipo de breakpoint que possa ser
configurado para um endereo de memria aceita tambm uma abreviatura de registrador.
Nesta seo utilizado o termo endereo de memria ou endereo com o significado
endereo de memria ou registrador, salvo observao em contrrio. A lista completa
dos smbolos de registradores pode ser vista com o comando View Symbols Register.
Quando se invoca o comando Set, o menu Set apresentado na tela.
Presssionando-se a barra de espaos comuta-se a apresentao entre o menu Set e o menu
Set Breakpoint, os quais so apresentados abaixo:

SET: Memory-map

Passpoint opTions

SET BREAKPOINT: Conditional

cYcles

Dynamic

V-drive

Opcode

space

Sticky

space

Vrias dessas opes apresentam menus adicionais: o menu Condition


Breakpoint/Passpoint o menu Set Breakpoint Access Type. Os menus so listados abaixo.
Como esses menus so acessados por distintos comandos, torna-se necessria uma
consulta freqente medida que se l esta seo. Sugere-se a seguinte orientao:
1. Quando se busca uma opo do menu Set: examinar a seo numerada com o nome
da opo.
2. Quando se busca uma opo de um dos submenus: ver o nmero da seo da opo e
seguir as instrues l apresentadas. Por exemplo, para configurar um breakpoint
condicional, examinar a seo denominada Conditional.
6.11.1 Conditional Breakpoint/ Passpoint
O menu Conditional Breakpoint/Passpoint permite a seleo entre breakpoints e
passpoints, e a do breakpoint ser permanente (sticky) ou dinmico (dynamic).
O menu Conditional Breakpoint/Passpoint apresentado na forma:

CONDITION:

Passpoint BREAKPOINT: Dynamic Sticky

86

Passpoints
Abreviatura: P
O comando Passpoint configura o breakpoint como passpoint. Em lugar de causar
paradas, os passpoints mantm um registro do nmero de vezes que o programa acessa
um determinado endereo de passpoint. Utiliza-se o comando View Passpoints para
examinar os valores dos registros dos passpoints. Quando esse comando invocado, o
AVSIM51 apresenta o menu Set Breakpoint Access Type para que seja feita a seleo do
tipo de acesso e do endereo do passpoint.
Dynamic
Abreviatura: D
O comando Dynamic aplica-se condio (breakpoint dinmico) ao breakpoint
que est sendo configurado. Um breakpoint dinmico removido aps causar uma
parada. Quando se invoca esse comando, o AVSIM51 apresenta o menu Set Breakpoint
Access Type para que seja feita uma seleo do tipo de acesso e do endereo para o
breakpoint.
Sticky
Abreviatura: S
O comando Sticky aplica essa condio (breakpoint fixo) ao breakpoint que est
sendo configurado. Um breakpoint permanente permanece ativo at que seja removido
pelo comando Reset Breakpoint. Quando se invoca o comando Sticky, o AVSIM51
apresenta o menu Set Breakpoint Access Type para que seja feita a seleo do tipo de
acesso e do endereo para o breakpoint.
6.11.2 Set Breakpoint Access Type
O menu Set Breakpoint Access Type apresentado quando se seleciona um
breakpoint ou passpoint condicional, permanente ou dinmico. Permite que se
especifique o tipo de accesso a ser capturado Write ou Read/Write. O menu permite a
escolha de uma faixa de endereos a ser testada tanto um endereo como uma faixa de
endereos. Pode-se tambm especificar opcionalmente um atraso para o breakpoint, que
determinar uma parada aps um determinado nmero de acessos. Por exemplo, um
atraso de 9 determinar uma parada acesso cuja ordem mltiplo de 10; isto , sofrer um
atraso de nove vezes e determinar uma parada na dcima vez.
O menu Set Breakpoint Access Type apresentado de forma ligeiramente
diferente, na dependncia de se estar configurando o tipo de acesso de um passpoint, de
um breakpoint permanente ou de um breakpoint dinmico. A diferena apenas
cosmtica, e apenas identifica o tipo de breakpoint que est sendo configurado; todas as
variaes do menu funcionam da mesma forma:

87

Tipo do Breakpoint

Label do Menu

Passpoint

PASS

Sticky Breakpoint

Bkpt

Dynamic Breakpoint

Dyn Bkpt

Bkpt: A R/W point B R/W range


C Write point

D Write Range

Quando esse menu apresentado, tem-se a opo de introduzir um atraso.


Observe-se que atrasos podem ser inseridos apenas para o caso de breakpoints, e estes
devem ser nmeros decimais. Entra-se com o nmero e seleciona-se uma das opes do
menu. Caso no seja desejado um atraso, pode-se selecionar diretamente a opo do
menu, pois o valor de default do atraso 0.
A R/W point
Abreviatura: A
Um breakpoint R/W point ativado quando ocorre uma operao de leitura ou
escrita no endereo especificado. Quando se invoca esse comando, o AVSIM51 emite um
prompt solicitando o endereo para o breakpoint ou passpoint. Entra-se com o
endereo e pressiona-se Return. O breakpoint estar ento completamente configurado e
volta-se ao menu principal de comandos.
B R/W range
Abreviatura: B
Um breakpoint R/W range ativado quando ocorre uma operao de leitura ou
escrita em um endereo no intervalo de endereos especificado. Quando se invoca esse
comando o AVSIM51 emite um prompt solicitando os limites inferior e superior de
endereo que se quer estabelecer para o breakpoint. Entra-se com cada um destes
endereos e pressiona-se Return. O breakpoint estar ento completamente configurado e
volta-se ao menu principal de comandos.
C R/O point
Abreviatura: C
Um breakpoint W/O point ativado apenas quando ocorre uma operao de
escrita no endereo especificado. O breakpoint no ativado quando o endereo
acessado nas operaes de leitura. Quando se invoca esse comando, o AVSIM51 emite
um prompt solicitando um endereo para o breakpoint ou passpoint. Entra-se com o
endereo e pressiona-se Return. O breakpoint estar ento completamente configurado e
volta-se ao menu principal de comandos.
88

D R/O range
Abreviatura: D
Um breakpoint W-O range ativado somente quando ocorre uma operao de
escrita em um endereo na faixa de endereos especificada. O breakpoint no ativado
nas operaes de leitura. Quando este comando invocado, o AVSIM51 emite um
prompt solicitando os limites inferior e superior da faixa de endereos que se quer
estabelecer para o breakpoint. Entra-se ento com cada um desses endereos e pressionase Return. O breakpoint estar ento completamente configurado e volta-se ao menu
principal de comandos.
O breakpoint ou passpoint ser ativado se o programa fizer um acesso a um
endereo entre os limites:
limite inferior <= endereo <= limite superior
6.11.3 Conditional
Abreviatura: C
O comando Conditional permite que se estabelea uma condio a ser satisfeita
para que um breakpoint seja ativado. Pode-se configurar essa condio utilizando-se uma
mscara de bits, uma faixa de valores, ou valor nico. O AVSIM51 permite tambm que
se especifique indiretamente um endereo de teste.
Quando o AVSIM51 atinge o endereo de um breakpoint condicional, a condio
associada ao breakpoint testada em funo do valor contido no endereo. Se o valor
satisfizer o critrio estabelecido na condio, o breakpoint ativado. Caso contrrio, o
simulador prossegue na execuo do programa.
Quando o comando invocado, o menu Select Condition apresentado, Aps a
condio para o breakpoint ter sido especificada, apresentado o menu Condition
Breakpoint/Passpoint apresentado. Quando selecionado o tipo breakpoint/passpoint
nesse menu, o prximo menu (Select Breakpoint Access Type) apresentado. Neste
ponto o tipo de acesso para gatilhamento do breakpoint deve ser selecionado.
O menu Select Conditon tem a seguinte forma:

SET CONDITION: Indirect

Mask

Range Value

Indirect
Abreviatura: I
O comando Indirect permite a especificao indireta do endereo. Deve ser
especificado um valor de teste, um endereo base e um valor de offset. Quando o
simulador acessa o endereo base, o offset adicionado ao contedo do endereo para
formar um novo endereo. O Simulador testa ento o contedo do novo endereo. Se a
condio for satisfeita no teste, o breakpoint ativado. Caso contrrio, a execuo do
programa continua normalmente.
Quando se invoca esse comando, o AVSIM51 emite um prompt solicitando o
valor de teste, e depois o valor do offset e a expresso do endereo base. Uma vez
89

especificados esses valores, o AVSIM51 prossegue com o menu Condition


Breakpoint/Passpoint.
Por exemplo:
> SCI
Enter Expression: 05 Return
CONDITION: Expression = Value of BYTE at
(address at Bkpt Address + Offset)
Enter Expression: 01h Return
CONDITION: Expression = Offset Value in Data Space
(Observe-se que o se o endereo de breakpoint for R0 R1, ento a expresso do
endereo usualmente 0.)
Mask
Abreviatura: M
O comando Mask permite que se defina uma mscara de bits como condio.
Quando o AVSIM51 atinge o breakpoint, o valor contido no endereo comparado com a
mscara. O breakpoint ativado se todos os bits da mscara com valores 1 ou 0 forem
iguais aos bits correspondentes do contedo do endereo. Caso contrrio a execuo
prossegue.
Quando esse comando invocado, o AVSIM51 emite um prompt solicitando a
mscara. Entra-se com um padro de bits. Os bits que no devem ser levados em conta
no teste devem ser representados por x. Por exemplo, 1xxxxxx0 corresponde a todos
os nmeros negativos pares. Uma vez especificada a mscara, o simulador prossegue
com o menu Condition Breakpoint/Passpoint.
Por exemplo:
> SCN
Enter Mask: 1xxxxxx1 Return
FORMAT: 0, 1, OR x
A mscara de bits configurada para que a condio seja satisfeita para todos os
nmeros negativos mpares.
A mscara deve ser especificada como um byte binrio. O bit de ordem mais
significativa o bit mais esquerda. No permitido o uso de expresses.
Range
Abreviatura: R
O comando Range permite a especificao de uma faixa de valores para uma
condio. Especifica-se limites inferior e superior para a faixa. Quando o AVSIM51
atinge o breakpoint, o valor do contedo do endereo do breakpoint testado em relao
faixa de valores. O breakpoint ativado quando as seguintes condies so satisfeitas:
90

limite inferior <= valor no endereo do breakpoint <= limite superior


Caso contrrio, a execuo prossegue.
Quando se invoca esse comando, o AVSIM51 emite um prompt solicitando os
limites inferior e superior. Se o limite superior for menor que o limite inferior, ento o
breakpoint ser ativado quando as seguintes condies forem satisfeitas:
limite inferior <= valor OU valor <= limite superior
Os limites podem ser constantes ou expresses. Uma vez especificados os limites,
o simulador prossegue com o menu Condition Breakpoint/Passpoint.
Por exemplo:
> SCR
Enter Expression: 10 Return
CONDITION: Expression = LOW limit of the Value
of BYTE ata Bkpt Address
Enter Expression: 20 Return
CONDITION: Expression = HIGH limit of the Value
of BYTE at Bkpt Address
O breakpoint determinar uma parada se o valor contido no endereo estiver no
intervalo de 10 a 20 inclusivamente.
> SCR
Enter Expression: 40 Return
CONDITION: Expression = LOW limit of the Value
of BYTE ata Bkpt Address
Enter Expression: 30 Return
CONDITION: Expression = HIGH limit of the Value
of BYTE at Bkpt Address
O breakpoint determinar uma parada se o valor contido no endereo for menor ou igual
a 30 ou maior ou igual a 40 (isto , se no estiver no intervalo 31 39).

91

Value
Abreviatura: V
O comando Value permite a especificao de um valor como condio. Quando o
AVSIM51 atinge o breakpoint, o valor do contedo do endereo comparado com o valor
da condio. O breakpoint ativado quando os dois valores so iguais. Caso contrrio, a
execuo continua.
Quando esse comando invocado, o AVSIM51 emite um prompt solicitando o
valor. O valor pode ser uma constante ou uma expresso. Uma vez especificado o valor,
o simulador prossegue com o menu Condition Breakpoint/Passpoint.
Por exemplo:
> SV
Enter Expression: 11 Return
CONDITION: Expression = Value of BYTE
at Bkpt Address
O breakpoint determinar uma parada quando o valor contido em seu endereo for 11.
Quando se deseja especificar uma faixa contgua de valores, utiliza-se o comando Range.
Quando se deseja testar bits em posies especificas utiliza-se o comando Mask.
6.11.4 Dynamic
Abreviatura: D
O comando Dynamic permite que se estabelea breakpoints dinmicos
incondicionais. Um breakpoint dinmico um breakpoint de vez nica
automaticamente cancelado aps provocar a primeira parada. Quando se deseja
breakpoints que permaneam no sistema at que sejam explicitamente removidos, utilizase o comando Sticky, com o qual so criados breakpoints permanentes (sticky). O
comando Dynamic permite a criao de um breakpoint que determina uma parada quando
um determinado endereo (ou uma faixa de endereos) atingida. Pode-se tambm
agregar uma condio, como endereo contendo um valor particular ou um padro de
bits. Para isto utiliza-se o comando Conditional.
Quando se invoca esse comando, o sistema apresenta o menu Set Breakpoint
Access Type para que seja selecionado o tipo de acesso (Read/Write, Write-Only) e a
extenso da regio do breakpoint (um endereo um uma faixa de endereos) que
determina a parada.
6.11.5 Opcode
Abreviatura: O
O comando Opcode permite que estabelea um cdigo de operao como
condio. Sempre que o programa atingir uma instruo especificada, o breakpoint
determinar uma parada, antes que a instruo seja executada. Os breakpoints de cdigo
de operao so do tipo dinmico; isto , so automaticamente removidos logo aps
determinarem uma parada. Entra-se com o cdigo de operao obedecendo a sintaxe
padro do assembler. Observe-se que somente o cdigo de operao utilizado para
92

determinar a parada. Quaisquer valores especificados como operandos no so utilizados,


mas precisam ser vlidos para que o assembler possa analisar a instruo .
Para que ocorra uma parada em uma instruo do tipo mover dado imediato para o
Acumulador, digita-se o seguinte:
MOV A,FFh
Observe-se que o valor utilizado aqui irrelevante; qualquer valor suficiente.
6.11.6 Sticky
Abreviatura: S
O comando Sticky permite a criao de breakpoints permanentes incondicionais.
Breakpoints fixos so breakpoints permanentes permanecem no sistema at que
sejam explicitamente removidos com o comando Reset Breakpoint. Para criar
breakpoints de vez nica, isto , um breakpoint que seja automaticamente removido
aps causar a primeira parada, utiliza-se o comando Dynamic. O comando Sticky
permite a criao de um breakpoint que determina uma parada quando um determinado
endereo (ou faixa de endereos) atingido. Pode-se agregar ao breakpoint uma
condio, como a de um endereo conter um determinado valor ou padro de bits. Para
isto utiliza-se o comando Conditional.
Quando um breakpoint permanente encontrado pelo simulador, a execuo do
programa paralisada. Para prosseguir com a execuo, avana-se uma instruo atravs
do breakpoint com <SSTEP> F10, e ento pressiona-se <GO> F1 ou <SSTEP> F10.
Para remover um breakpoint fixo, utiliza-se os comandos reset breakpoint no
menu Reset.
Quando se invoca o comando Sticky, o sistema apresenta o menu Set Breakpoint
Access Type para que seja selecionado o tipo de acesso (Read/Write, Write-Only) e a
extenso da faixa de endereos para disparo do breakpoint (um endereo ou uma faixa de
endereos.
6.11.7 Memory-map
Abreviatura: M
O comando set Memory-map permite a alocao de memria RAM ou ROM sem
o carregamento de um arquivo. Normalmente o tamanho do arquivo determina a
extenso da memria RAM ou ROM (ou a RAM predefinida por um chip com memria
RAM residente). O comando til para a definio de espaos maiores de RAM, por
exemplo, para alocar mais memria que o programa est correntemente utilizando para
pilha (stack), armazenamento de dados, etc. A rea de memria alocada preenchida
com zeros.
Quando este comando invocado, o AVSIM51 apresenta o menu Set Memory:

MEMORY MAP:

random-Access
93

read-Only

random-Access
Abreviatura: A
O comando random-Access aloca a rea de memria como RAM. Em memria
RAM os dados podem ser lidos e tambm escritos. No so criados breakpoints. Quando
esta opo selecionada, o AVSIM51 emite um prompt solicitando os limites inferior e
superior de endereos da rea de memria a ser alocada. Esses endereos devem estar
dentro do espao de endereamento da CPU alvo.
read-Only
Abreviatura: O
O comando read-Only aloca a rea de memria como ROM. O programa poder
efetuar leituras na rea, mas no poder efetuar escritas. Automaticamente criado para a
rea alocada um breakpoint Write-Only, e qualquer tentativa do programa em escrever
nesta rea determina uma parada. O breakpoint no pode ser removido atravs do
comando Reset. (No modo Display, naturalmente, pode-se editar dados nesse espao de
ROM de forma direta.)
Quando o comando invocado, o AVSIM51 emite um prompt solicitando os
limites inferior e superior de endereos da rea de memria a ser alocada. Os endereos
devem estar dentro do espao de endereos da CPU alvo.
6.11.8 Passpoint
Abreviatura: P
O comando Passpoint permite a criao de passpoints incondicionais. Um
passpoint corresponde a um contador de 32 bits que mantm um registro do nmero de
vezes que o programa acessou um determinado endereo. Em lugar de determinar uma
parada no programa quando este atinge o passpoint, simplesmente o contador a ele
associado incrementado.
Para examinar o nmero de vezes que um passpoint particular foi atingido, podese utilizar o comando View Passpoints (apresentado nesta seo). Todos os passpoints
so permanentes (sticky); isto , so permanentes at que sejam explicitamente
removidos com o comando Reset Breakpoints. Observe-se que o contador de um
passpoint NO zerado ou decrementado quando se utiliza o comando <UNDO> F9.
A opo Passpoint permite a criao de passpoints que sejam incrementados
quando um determinado endereo (ou faixa de endereos) acessado. Caso se queira
agregar uma condio ao passpoint, como um endereo contendo um valor particular ou
um padro de bits, utiliza-se o comando Conditional.
Quando a opo Passpoint invocada, o sistema apresenta o menu Set Breakpoint
Access Type para que sejam selecionados o tipo de acesso (Read/Write, Write-Only) e a
regio do breakpoint (um endereo ou uma faixa de endereos) que determinar a
incrementao do contador do passpoint.

94

6.11.9 opTions
Abreviatura: T
O comando opTion estabelece o chip a ser simulado, de modo que memria
externa seja acessada utilizando o valor no Port P2 como byte mais significativo do
endereo.
Quando opTion selecionada, o AVSIM51 apresenta o menu Option:

> Set chip configuration


SET OPTION: Page
Ao se pressionar P, o AVSIM51 responde com:

> Page Port P2


Change External Data Drive with Port P2 form No to: Yes

No

A escolha Y, para Yes, determina a utilizao do Port P2 para emisso do byte mais
significativo do endereo externo. A escolha N, para No, determinar sempre o
endereamento da pgina 0.
6.11.10 setUp
Abreviatura: U
O menu setUp tem uma opo, Undo, que permite a configurao do nmero
passos do buffer de reverso de instrues do comando Undo. Por default, o buffer
configurado para aproximadamente 20 instrues. Caso seja desejado pode-se aumentlo at praticamente qualquer tamanho. Como o buffer mantido na memria, fica-se com
a limitao da memria disponvel. Em um PC com 640K, pode-se configurar o buffer do
comando Undo para 1000 instrues, o que suficiente para praticamente qualquer
aplicao.
Quando o comando setUp invocado, o AVSIM51 apresenta o menu Setup:

SETUP: Undo
Seleciona-se Undo. O sistema apresenta o tamanho corrente do buffer do comando
Undo (onde xx aproximadamente o nmero corrente de passos):
UNDO SIZE:

History holds xx steps

95

Entra-se com o novo nmero e pressiona-se Return. O sistema arredondar o


nmero de passos para cima at o mltiplo de 20 mais prximo. Por exemplo, 43 passos
sero arredondados para 60 passos. Uma histria de 137 passos ter o nmero de passos
arredondado para 140 passos.
6.11.11 cYcles
Abreviatura: Y
O comando cYcles ativa o contador de ciclos de mquina decorridos (um
registrador de 16 bits). O contador de ciclos de mquina apresentado no canto superior
direito da tela. A execuo de cada instruo incrementa o contador de ciclos de um
nmero apropriado de ciclos de mquina. A contagem decrementada de um nmero
apropriado de ciclos quando se utiliza o comando <UNDO> F9. Para editar o contador de
ciclos, move-se o cursor para sua janela com Alt Y, e edita-se em decimal. Para
desativar o contador de ciclos, utiliza-se o comando Reset Cycles.
6.11.12 V-drive
Abreviatura: V
O comando V-drive permite a especificao do drive de disco que o AVSIM51
utilizar para manter um arquivo de memria virtual. Memria virtual utilizada
somente quando no h memria RAM suficiente no sistema hospedeiro. O AVSIM51
pode fazer uso de at 640K, antes de requerer um drive para memria virtual. O drive ao
qual se est acoplado (logged) correntemente utilizado como default. Caso haja um
disco rgido no sistema, recomenda-se a utilizao do mesmo como drive para
implementao da memria virtual, pois isso aumenta a velocidade do simulador quando
memria virtual utilizada. Pode-se invocar o drive de memria virtual sob o Windows,
Top View, ou programas utilitrios similares, mas no se pode executar dois AVSIMs
simultaneamente com o mesmo V-drive.
Quando esta opo selecionada, o AVSIM51 emite um prompt solicitando a
letra identificadora do drive. Entra-se com a letra (sem os dois pontos). O arquivo de
memria virtual, VIRTUAL.000, ser criado automaticamente, se necessrio. Ele ser no
mximo de tamanho igual ao dobro do tamanho dos espaos de cdigo e memria externa
de dados. Quando se est utilizando uma configurao de 8051 com uso pleno de seu
espao de endereamento, incluindo espao externo, o nmero total de bytes utilizado
de aproximadamente 256K.
Deve-se assegurar que h espao suficiente antes de comear. O AVSIM51
abortado se ocorre falta espao no disco especificado para implementao de memria
virtual.
Digita-se Ctrl C para deixar o drive de memria virtual inalterado.

96

6.12

View
Abreviatura: V

O comando View permite a apresentao do mapa de memria corrente, a


configurao de arquivos de I/O, as configuraes dos breakpoints e as contagens dos
passpoints. O comando utiliza toda a tela para apresentao das informaes; quando se
sai do comando View a tela do simulador restaurada com seu contedo anterior.
Quando se invoca o comando View, o AVSIM51 apresenta o menu View:

VIEW: Breakpoints

IO-files

Memory-map

Opc-traps

Passpts

Symbols

O simulador apresenta uma tela repleta de informaes por vez. Caso seja
pressionada qualquer tecla enquanto uma tela esteja sendo listada, o simulador saltar
imediatamente para a prxima tela. Pressiona-se Ctrl C para abortar a apresentao.
6.12.1 Breakpoints
Abreviatura: B
O comando Breakpoints apresenta todos os breakpoints criados pelo usurio, em
ordem crescente de endereos. Os breakpoints so listados na tela nas seguintes colunas:
BKPT Addr

EndAddr Access

Life

Delay/Count

Conditions

Address: Endereo inicial do breakpoint. Apresentado simbolicamente, se possvel.


EndAddr: Endereo final da faixa de endereos do breakpoint. Coincide com o
endereo inicial, se o breakpoint estiver associado a um nico endereo.
Access: Os tipos de acesso so Read/Write (R/W) ou Write-Only (W-O).
Life: Os tipos para life so sticky (permanente) ou dynamic (vez nica).
Delay/Count: Mostra o atraso, se houver um, e o nmero de vezes que o programa
passou pelo breakpoint ou passpoint.
Condition: Se o breakpoint for condicional, o tipo e a descrio da condio so
apresentados.
6.12.2 IO-files
Abreviatura: I
O comando IO-files apresenta todos os arquivos de entrada e sada abertos. As
descries dos arquivos so mostradas nas seguintes colunas:
IO:

InputFILE

MEM:

Replay

Bit Address

Dirn

Bit
Rate/Timer
97

outputFILE

InputFILE: Mostrado na forma em que foi criado.


Replay: Voltar ao incio quando EOF (End of File) for atingido. O flag Y ou N.
Bit: Indica os bits de I/O configurados, de 0 a 7, onde 7 o mais significativo.
Dirn: Indica o sentido em que fluem os dados. IN (de input file) ou OUT (de
output file).
Rate/Timer: Apresenta os ciclos de mquina por transferncia de I/O e a contagem
corrente dos ciclos de mquina transcorridos desde a ltima transferncia.
OutputFILE: Mostrado na forma em que foi criado.
6.12.3 Memory-map
Abreviatura: M
O comando Memory-map apresenta o mapa de memria do espao de
endereamento da CPU alvo. O mapa apresentado sob o seguinte cabealho:
MEMORY MAP Label Addr

EndAddr Type

As regies de memria definidas so listadas em ordem de crescente de


endereos. Espaos de endereo alocados separadamente so listados individualmente.
Para cada espao de endereamento indicado seu mximo tamanho possvel.
Label: Caso sejam definidos, os labels so apresentados.
AddrStart: Endereo inicial de uma regio contgua de memria listado simbolicamente
e em hexadecimal.
EndAddr: Endereo final de uma regio.
Type: ROM se for protegida contra escrita.
6.12.4 Opc-traps
Abreviatura: O
O comando Opc-traps lista todos os cdigos de operao que sero capturados por
breakpoints. Os cdigos de operao so listados com seus mnemnicos em assembly e
so ordenados pelos seus valores hexadecimais. Quaisquer operandos apresentados com
os cdigos de operao so arbitrrios e no so utilizados na deciso de captura. Os
cdigos de operao so apresentados sob o seguinte cabealho:
Opcode Traps: Operation Address Mode

98

6.12.5 Passpts
Abreviatura: P
O comando Passpts apresenta todos os passpoints criados pelo usurio, em ordem
crescente de endereos. Os endereos so apresentados simbolicamente, se estiverem
presentes na tabela de smbolos. Os passpoints so apresentados nas seguintes colunas:
PASS Addr

EndAddr Access

Count Condition

PASS: O passpoint.
Addr: Endereo inicial, apresentado simbolicamente, se possvel.
EndAddr: Endereo final.
Access: Os tipos de acesso so Read/Write (R/W) ou Write-Only (W-O).
Count: O nmero total de passagens pelo passpoint.
Condition: Se o passpoint for condicional, o tipo e a descrio da condio so
apresentados.
6.12.6 Symbols
Abreviatura: S
O comando Symbols apresenta todos os smbolos estabelecidos pelo usurio sob a
forma por ele selecionada . As opes so as seguintes:
VIEW SYMBOLS: Alpha

Registers

Numbers

Memory

Alpha: So listados todos os smbolos definidos pelo usurio e seus endereos.


Registers: So mostrados todos os nomes de registradores e os endereos a eles
atribudos.
Numbers: Os valores e seus nomes produzidos por um assembler AVMAC so
mostrados. A lista organizada por valores.
Memory: So apresentados os smbolos e endereos no espao de memria. A lista
organizada alfabeticamente por nomes de smbolos.

99

6.13

eXecute
Abreviatura: X

O comando eXecute permite a execuo imediata de uma instruo da CPU alvo.


semelhante utilizao dos modos Immediate ou Direct dos interpretadores
BASIC. O comando eXecute processa instrues diretamente do menu de comando; no
necessria a insero preliminar de um patch no espao de memria. Pode-se utilizar
o comando <UNDO> F9 para reverter as alteraes feitas por eXecute. Por exemplo,
ACALL label determina o empilhamento do valor atual do PC no stack e ento o
carregamento do PC com o valor de label.
Quando a opo selecionada, o AVSIM51 emite um prompt solicitando um
mnemnico. Entra-se com o mnemnico e pressiona-se Return. As alteraes efetuadas
pela instruo aparecero na tela. O PC no alterado, salvo se o cdigo de operao o
afetar diretamente.
Observe-se as diferenas entre Patch e eXecute. Patch permite a insero de
cdigos de operao e labels para o 8051. O comando eXecute permite a entrada de dado
(ou expresso) para avaliao imediata e insero em um registrador ou memria.

100

Captulo 7

TPICOS AVANADOS
Este captulo cobre alguns dos conceitos e caractersticas mais avanados de
breakpoints, passpoints e I/O files. Os comandos em so descritos no Captulo 6,
Descrio dos Comandos. Contudo, o Captulo 7 oferece orientaes e sugestes para
um uso mais efetivo dessas caractersticas, de modo a permitir uma melhor utilizao das
capacidades avanadas do AVSIM51.
7.1

Breakpoints e Passpoints

A depurao de um programa um processo em que se executa o programa,


localiza-se os erros e testa-se a soluo. Certamente a lgica e a intuio ajudam; e
quanto mais um programador pratica depurao de cdigo mais aumenta sua habilidade
para faz-lo. Embora seja possvel depurar cdigo sem o auxlio de ferramentas como
depuradores (debuggers), um bom depurador aumenta a velocidade do processo e o
torna mais efetivo. O AVSIM51 tem todas as caractersticas bsicas dos depuradores
alm de vrias outras ausentes em muitos depuradores.
Um dos componentes mais bsicos em um debugger sua habilidade em
estabelecer e cancelar breakpoints. Um breakpoint paralisa a execuo do programa
quando este atinge um determinado endereo, quando executa uma instruo particular,
ou quando uma certa condio ocorre. Normalmente um breakpoint estabelecido em
um endereo onde se imagina existir um erro no programa. Quando o programa atinge o
breakpoint, o AVSIM51 paralisa a simulao, permitindo que o usurio examine o estado
do programa e descubra a causa do erro.
Passpoints so semelhantes a breakpoints. Contudo, em lugar de determinar uma
paralisao da execuo quando atingido, o passpoint mantm uma contagem do
nmero de vezes que o programa acessou um cdigo ou uma posio de memria em
particular, produzindo assim um perfil do cdigo do programa. Este perfil constitui um
auxlio para a otimizao do programa.
A maior parte dos debuggers exige que os breakpoints sejam estabelecidos
algumas instrues antes da rea suspeita com problema, para assegurar que o local do
problema no seja perdido. Com o AVSIM51, breakpoints podem ser estabelecidos em
quaisquer pontos prximos rea onde se suspeita haver um problema. Com o comando
Undo, possvel parar em uma instruo desejada e reverter ou avanar passo a passo a
execuo do programa atravs da rea com problema, uma instruo por vez. Enquanto
na maior parte dos debuggers existe apenas a possibilidade de paralisao em um
endereo ou cdigo particular, o AVSIM51 permite o estabelecimento de breakpoints com
base em:
Condies: Paralisao da simulao quando um registrador ou endereo contiver um
valor especificado, estiver dentro de uma faixa de valores, ou combinar com uma
determinada mscara de bits.
101

Durao: Os breakpoints podem ser permanentes (sticky), isto , ativos at que


cancelados explicitamente, ou dinmicos (dynamic), isto vlidos uma nica
vez.
Tipo de Acesso: Paralisao da simulao quando um registrador ou endereo lido ou
escrito (R/W) ou escrito (WO). Um breakpoint WO ignora qualquer
operao de leitura feita na posio.
Distintos tipos de breakpoints podem ser utilizados em combinao; por exemplo,
pode-se estabelecer um breakpoint dinmico condicional utilizando acessos Write-Only
para paralisar a simulao em um endereo especfico. A tabela a seguir ilustra as
potenciais combinaes:

Tipo do
Breakpoint

Uncondicional

Fixo
Sticky

Dinmico
Dynamic

Atraso
Delay

Tipo de Acesso
R/W

R/W

W-O

W-O

Value

Range

Value

Range

Value

Mask

Range

Indirect

Condicional

Opcode

Pode-se tambm especificar um atraso (delay); isto , pode-se determinar uma


paralisao apenas no n-simo acesso. Um delay de 4 ignorar o breakpoint nos 4
primeiros acessos e paralisar a simulao no quinto acesso, no dcimo acesso, no dcimo
quinto acesso, e assim por diante. Por default no h delays, de forma que essa
caracterstica pode ser ignorada at que se torne necessria.
O nmero de breakpoints no limitado isto , enquanto o simulador obtiver
memria no computador hospedeiro, novos breakpoints podero ser estabelecidos. O
simulador/depurador foi projetado de modo a evitar degradao da velocidade de
simulao quando regies da memria alvo sem breakpoints estiverem sendo acessadas
mesmo com centenas de breakpoints instalados. Como as listas de breakpoints tanto
por tipo de endereo como acesso so separadas, a velocidade de simulao no pode ser
afetada mesmo dentro de uma regio com breakpoint. Por exemplo, durante um acesso
para leitura em uma faixa de memria (Range) com breakpoint WriteOnly, no se
incorre em qualquer overhead extra.
7.1.1

Utilizao de Breakpoints

O AVSIM51 inclui um conjunto de comandos para o estabelecimento de


breakpoints Set, e um outro conjunto de comandos para cancel-los Reset. Pode102

se tambm utilizar o comando View para listar todos os breakpoints estabelecidos


correntemente.
Para estabelecer um breakpoint, deve-se inicialmente decidir qual tipo de
breakpoint necessrio, e ento utilizar o comando Set adequado. Por exemplo, para
estabelecer um breakpoint simples, incondicional permanente, deve-se selecionar a opo
Sticky. Para estabelecer um breakpoint condicional dinmico, deve-se selecionar a opo
Conditional. O AVSIM51 ir ento requisitar a informao necessria.
Uma vez que os breakpoints estejam estabelecidos, o simulador pode ser posto em
execuo. Pode-se utilizar o comando <GO> F1 para execuo em velocidade normal, e
o programa ser paralisado nos breakpoints. Pode-se tambm comandar a simulao no
modo passo a passo; no modo passo a passo, o simulador sinalizar cada ocorrncia de
um breakpoint mas permitir que se avance a simulao do programa atravs do mesmo.
Quando uma paralisao ocorre, deve-se examinar as causas suspeitas para o
problema. Os registradores contm valores vlidos? Est uma interrupo interferindo
com a rotina principal? Est o cdigo efetuando as operaes desejadas? Deve-se efetuar
experincias com alterao de valores ou execuo de cdigos de operao que estejam
faltando (utilizando o comando eXecute). Pode-se tambm utilizar um cdigo patch, e
ento utilizar uma combinao de comandos <UNDO> F9 e <SSTEP> F10 para caminhar
para frente e para trs na execuo do programa atravs da rea com problema, para
encontrar o bug.
7.1.2

A Lista de Pontos de Parada

Quando uma parada ocorre, a execuo do programa paralisada antes da


instruo que disparou o breakpoint. O AVSIM51 reporta a parada na janela de
mensagens e acrescenta o breakpoint lista de paradas (Traplist), que a lista de
breakpoints que determinaram a parada corrente. Se o breakpoint for dinmico, o
AVSIM51 cancela-o. Breakpoints permanentes (Sticky) sero disparados novamente se a
tecla <GO> F1 for acionada; assim, para passar sobre o breakpoint, utilize <SSTEP> F10
e ento pressione <GO> F1.
A lista de paradas til para que se possa ver os breakpoints que causaram a
parada corrente. Ela tambm til para o cancelamento de um ponto de parada
permanente (Sticky). O comando Reset Traplist ir seletivamente cancelar qualquer
breakpoint na lista. Isto permite a remoo de um breakpoint permanente aps o mesmo
ter causado a paralisao desejada e no ser mais necessrio. Se for desejada a
eliminao de um breakpoint, pode-se utilizar o comando Reset Traplist imediatamente
aps a parada.
7.1.3

Condies

A maior parte dos simuladores permite o estabelecimento de breakpoints


incondicionais, isto , breakpoints que paralisam a simulao quando um determinado
endereo alcanado. O AVSIM51 permite tambm o estabelecimento de uma srie de
condies que devem ser satisfeitas antes que um breakpoint seja ativado. Quando o
simulador atinge um breakpoint condicional, feito um teste da condio estabelecida.
Se a condio satisfeita a parada ocorre. Se a condio no satisfeita, a execuo
prossegue com prxima instruo. Se um atraso (delay) foi estabelecido e a condio

103

satisfeita, o simulador decrementa o atraso e, se a contagem do atraso for zero, o


simulador paralisa a execuo.
O AVSIM51 prov as seguintes condies:
Value:

Define um valor de 8 bits que ser comparado com o contedo de um endereo


ou registrador com breakpoint. A condio satisfeita quando esse valor igual
ao contedo. Por exemplo, pode-se estabelecer um breakpoint que ocorra
sempre que o contedo do registrador R0 contiver o valor 01.

Range: Define uma faixa de valores de 8 bits: o limite inferior e o limite superior.
Quando o contedo de um endereo ou registrador com breakpoint situa-se
nessa faixa (incluindo os limites inferior e superior), a condio satisfeita e
ocorrer uma parada. Por exemplo, se for definido um range de 0EH a 06H
para o stack pointer, pode-se capturar circunstncias em que sejam utilizados
mais que 3 nveis de espao de pilha. A abordagem alternativa seria estabelecer
um breakpoint em um endereo especfico; contudo, isso determinaria uma
parada em acessos ao endereo pela execuo de qualquer instruo (no apenas
para endereamento pelo stack pointer).
Mask:

Define uma mscara de 8 bits utilizando 1s e 0s; se no se quiser levar em


conta o valor 1 ou 0 de algum bit, pode-se utilizar x. A condio satisfeita
quando os bits especificados na mscara (1s e 0s) coincidirem com os bits do
contedo do endereo ou registrador com breakpoint. Por exemplo, um
breakpoint mascarado com 1xxxxxx0 determina uma parada para todos os
resultados que sejam nmeros negativos pares.
Uma outra utilizao das mscaras aquela com a qual se pode capturar
um evento externo que determinou a ativao do interrupt flag 0 do
microcontrolador. Para efetivamente capturar o incio de uma rotina de
atendimento a interrupo, deve-se mascarar o pseudo-registrador Interrupt-InProgress com xxxxxxHL (onde H corresponde a alta prioridade e L a baixa
prioridade).

Indirect: similar ao breakpoint value, mas permite a especificao indireta do


endereo de breakpoint. Especifica-se um endereo ou registrador e um offset
de 16 bits. O offset adicionado ao contedo do registrador (ndice) para
produzir o endereo alvo. Quando o contedo desse endereo coincide com o
valor especificado, ocorre uma parada. Pode-se utilizar esse tipo de parada para
paralisar a execuo em um valor particular quando se est varrendo uma tabela
indexada por um registrador. Nesse caso, o offset o endereo base da tabela.
Por exemplo, se o registrador R0 for utilizado para indexar um buffer,
pode-se testar quando um caractere ASCII particular for lido para o buffer com
um breakpoint indireto por valor. Se o caractere desejado para o teste for t,
deve-se estabelecer os seguintes valores:
Value of BYTE = t
Offset Value = 0
Address or Register = R0

104

7.1.4

Durao

H casos em que se quer estabelecer breakpoints mais ou menos permanentes;


isto , quer-se determinar uma parada toda a vez que as condies do breakpoint forem
satisfeitas, at que se decida o contrrio. H tambm casos em que se deseja paralisar a
execuo apenas quando um breakpoint atingido pela primeira vez. O AVSIM51
permite o estabelecimento de cada um desses tipos de breakpoint.
Breakpoints permanentes (sticky) ficam ativos at que sejam removidos
explicitamente. Breakpoints dinmicos determinam parada uma nica vez; a simulao
paralisada na primeira ocorrncia das condies do breakpoint, e ento este removido.
O AVSIM51 estabelece automaticamente vrios breakpoints permanentes durante
sua partida. Primeiramente, todo acesso a um endereo de memria que no tenha sido
previamente definido (RAM ou ROM) determina uma parada na simulao. Em segundo
lugar, toda regio de memria definida como sendo ROM associada a um breakpoint do
tipo Write-Only. Nenhum desses breakpoints pode ser estabelecido ou cancelado pelo
usurio. Esses breakpoints asseguram que qualquer instruo que tente acessar memria
no existente, ou que tente escrever em ROM, ser capturada.
Observe-se que esses breakpoints foram projetados para capturar erros de
programao. Pode-se tambm manipular reas de ROM diretamente. No modo Display,
pode-se alter-las nas reas de apresentao de memria (dump areas). No modo
Command pode-se utilizar os comandos Memory para modificar reas de memria.
Quando o programa efetua um salto para um endereo de memria no existente,
pode-se desfazer o salto para descobrir que parte do programa determinou o erro. Como
possvel tambm desfazer uma interrupo; pode-se utilizar esses breakpoints para
investigar as interaes entre a rotina de interrupo e a rotina principal.
7.1.5

Tipo de Acesso

O AVSIM51 permite a especificao de breakpoints como Read/Write ou WriteOnly. Breakpoints Read/Write paralisam a execuo quando efetuado qualquer acesso
ao endereo ou registrador; Breakpoints Write/Only paralisam a execuo apenas nas
tentativas de Escrita no endereo ou registrador. O AVSIM51 automaticamente coloca
breakpoints Write-Only em todo o espao de endereamento com ROM, de forma que
qualquer tentativa de escrita em ROM capturada e toda operao de leitura ignorada
pelo breakpoint.
Pode-se especificar um endereo ou uma faixa de endereos, associados a
breakpoints. Pode-se tambm incluir delays para captura dos acessos associados a
breakpoints
Utilizando-se as teclas de cursor do breakpoint, pode-se estabelecer breakpoints
Read/Write em endereos pontuais no fragmento de programa que esteja sendo
apresentado. As teclas de cursor para breakpoint so descritas no Captulo 2, Primeiros
Passos, na seo O Teclado do AVSIM51.
Utiliza-se as teclas <BKUP> F2 e <BKDN> F4 para mover o cursor de breakpoint
para cima e para baixo ao longo do fragmento de programa e estabelecer um breakpoint
na posio atual do cursor com <BKST> F3. O breakpoint ser assinalado com uma seta.
Trata-se de um breakpoint em endereo pontual, Read/Write, dinmico, que paralisar a
execuo quando for atingido pelo programa. Para estabelecer um desses breakpoints em
105

uma poro do programa que no esteja sendo apresentada, altera-se o PC para o


endereo em que se deseja colocar o breakpoint. A tela ser ento atualizada,
apresentando a parte do programa requisitada. Estabelece-se o breakpoint e altera-se
novamente o PC, se necessrio, antes de executar novamente o programa.
7.1.6

Cdigos de Operao

Alm de associar breakpoints a endereos de memria e registradores, pode-se


tambm associar breakpoints a cdigos de operao. Quando o AVSIM51 atinge um
cdigo de operao com breakpoint, independentemente de onde ele ocorra, a execuo
ser paralisada. O cdigo de operao inclui tanto informao sobre a operao como
sobre o modo de endereamento. Contudo, os valores de quaisquer operandos do cdigo
de operao so ignorados. Breakpoints em cdigos de operao so particularmente
teis em saltos para o final de subrotinas ou interrupes. Se essa caracterstica estiver
sendo utilizada com freqncia, pode-se criar um pequeno arquivo de comandos para
estabelecer breakpoints em retornos de subrotinas.
necessrio fornecer cdigos de operao vlidos com amostras do modo de
endereamento e dos argumentos, mas apenas o byte do cdigo de operao utilizado.
Por exemplo, entra-se com JNZ $ para capturar qualquer instruo JNZ, ou DJNZ
R7,$ para capturar qualquer instruo DJNZ R7.
Os breakpoints de cdigo de operao so dinmicos; isto , so cancelados aps
ativados uma vez. Observe-se que nenhum delay pode ser especificado.
7.1.7

Passpoints

Os passpoints so idnticos aos breakpoints, com uma exceo em lugar de


determinar uma parada na execuo quando as condies so satisfeitas, um contador de
32 bits incrementado. Isto permite que se monitore comportamentos como utilizao de
memria ou subrotinas, sem interferncia na execuo do programa. Os passpoints so
estabelecidos e cancelados da mesma forma em que o so os breakpoints permanentes
(sticky). As contagens correntes podem ser vistas selecionando-se View Passpoints.
7.2

Arquivos de Entrada e Sada (I/O Files)

A maior parte dos programas usualmente responde a entradas externas (Inputs)


e gera algum tipo de sada (Outputs). A vantagem de se utilizar um emulador circuital
em relao ao uso de tcnicas de simulao que no primeiro caso o ambiente externo
com o qual o microcomputador interage est conectado e operacional. O emulador
circuital utiliza os verdadeiros circuitos de entrada e sada do microcomputador para
operaes de entrada e sada. Contudo, esses ports precisam ser manipulados para se
testar as funes do programa, o que s vezes difcil, ou mesmo impossvel.
Um ambiente simulado deve oferecer algum tipo de entrada e sada simulada
para permitir o teste da resposta da CPU a dispositivos externos. O AVSIM51 inclui duas
tcnicas para simulao de operaes de entrada e sada: entrada e sada interativa
(Interactive I/O) e entrada e sada por arquivos (File I/O).
A entrada e sada interativa permite que se manipule diretamente os ports de I/O
enquanto a simulao do programa prossegue em plano de fundo. A vantagem desta
tcnica que se pode criar qualquer combinao de entradas que desejada, algumas das
quais podem ser muito difceis de se obter prontamente em um circuito real.
106

A entrada e sada por arquivos permite que se simule sinais de entrada originrios
de dispositivos externos a partir de um arquivo seqencial de dados. O AVSIM51 utiliza
um arquivo de entrada e sada (I/O File) que organizado como um seqncia de dados
de 8 bits. Dados que normalmente tem comprimento de 8 bits, como sadas de teclado,
ou conversores A/D, podem ser acoplados a um port. Pode-se tambm acoplar qualquer
ou todos os I/O bits dos dados do arquivo a qualquer bit de qualquer port, a qualquer
endereo definido na memria alvo, ou ao pseudo-registrador PINS. Uma taxa
temporal estabelece a velocidade de entrada e sada (em ciclos de mquina da CPU alvo)
com que a seqncia de dados do arquivo varrida.
Em geral, os microprocessadores utilizam duas formas de entrada e sada:
dirigida por interrupes (interrupt driven) e por interrogao do perifrico
(polling). A entrada e sada dirigida por interrupes til em situaes onde deve
ocorrer entrada e sada enquanto outros processos estejam sendo executados, ou seja,
imediatamente, dados de entrada precisem ser processados ou dados de sada precisem ser
fornecidos. Os processos so interrompidos enquanto as operaes de entrada e sada so
efetuadas e prosseguem aps o trmino da rotina de entrada e sada. Na entrada e sada
por polling, por outro lado, mais til quando as operaes de entrada e sada podem
ser efetuadas a qualquer momento, mas os dados podem ser ignorados at que o programa
esteja pronto para process-los.
O AVSIM51 permite a simulao dessas duas formas de entrada e sada. Na
entrada e sada dirigida por interrupes a entrada e sada de dados pode ser sincronizada
com ciclos de mquina da CPU. Pode-se escolher nmeros de ciclos de mquina
suficientemente pequenos para capturar quase que qualquer nmero de interrupes.
Observe-se, contudo, que as operaes de entrada e sada so efetuadas a uma taxa
preestabelecida e no so sincronizadas com eventos internos. Pode-se fazer
experimentos com o nmero de ciclos para determinar aquele que melhor aproxima a taxa
necessria.
No AVSIM51 a entrada e sada por polling simulada atravs do acesso por
cdigos de operaes. O simulador permite que se acople um arquivo de entrada ou sada
a um registrador ou port. Sempre que um cdigo de operao efetuar a escrita ou leitura
direcionada para esse registrador ou port, o arquivo acessado.
Pode-se escolher diversos meios para criar um arquivo de sada: atravs de um
programa (em qualquer linguagem) ou com um editor de textos. A nica restrio de
que seja um arquivo seqencial. No devem ser includos caracteres carriage return aos
dados ou utilizar editores de texto que coloquem caracteres de controle no arquivo, pois
estes seriam interpretados como dados pelo AVSIM51. A maior parte dos editores de
texto permite que se salve um arquivo como uma simples seqncia de caracteres ASCII,
sem a incluso de qualquer caractere de controle. Pode-se utilizar esta opo para criar
arquivos de sada para o AVSIM51. Um mesmo arquivo pode ser aberto mais de uma vez
e utilizado tanto para entrada de bytes como para entrada de bits.
O simulador pode ser configurado para paralisar a execuo do programa ou
voltar para o incio de um arquivo de entrada quando seu final for atingido. Por exemplo,
para simular uma onda quadrada de 1 KHz, pode-se criar um arquivo texto contendo a
cadeia 01 (isto , 30H, 31H) e acoplar o bit menos significativo dos caracteres do
arquivo a um terminal de entrada do microcomputador que esteja sendo simulado.
Configura-se ento uma taxa de releitura de clock-speed/2000 e ativa-se a opo
rewind at end-of-file (EOF) com a escolha Y. Enquanto simulao efetuada, o
107

terminal de entrada recebe repetidamente nveis lgicos alto e baixo a uma taxa simulada
de 1KHz.
Para simular a recepo de dados ASCII no buffer do port serial, acopla-se os 7
bits menos significativos de um arquivo de entrada ao port SBUF, e o bit mais
significativo ao bit RI de SCON. O envio de dados com o bit mais significativo em nvel
alto de um arquivo de entrada para SBUF, dispara automaticamente uma interrupo.
Este arranjo utilizado no programa demonstrativo includo no disco de distribuio.
Da mesma forma que se pode ler dados de um dispositivo de entrada para a CPU
simulada, pode-se tambm enviar dados para dispositivos externos. Esses dados de sada
podem ser salvos em um arquivo e examinados ou utilizados posteriormente. Uma
seqncia de dados de 8 bits produzida a uma taxa de sada (I/O rate) especificada.
Para formar um byte de sada, pode-se combinar bits de diferentes ports. Por exemplo,
pode-se combinar os 4 bits menos significativos de P1 com os 4 bits mais significativos
de P2 para formar um byte de sada. Cada byte de sada conter ento 4 bits mais
significativos originrios P2 e 4 bits menos significativos originrios de P1. Observe-se
que possvel remapear os bits: pode-se facilmente enviar os 4 bits mais significativos de
P2 para quaisquer 4 bits do arquivo de sada.
O simulador permite tambm que se designe dois arquivos para entrada e sada
mista mixed I/O. Quando se designa um arquivo para entrada e para sada, em cada
leitura os bits de entrada so copiados para os bits da memria que foram selecionados
e mesclados com bits de memria de sada para criar uma seqncia de dados de sada.
Esse esquema permite que se utilize bits de entrada como sinais para registro quando
posteriormente se analisar a seqncia de sada.
Uma limitao dos arquivos de entrada e sada a necessidade de se preparar os
arquivos de entrada antes do incio da sesso de simulao. Isso exclui a possibilidade da
simulao de um verdadeiro feedback de dispositivos externos. necessrio antecipar
respostas da CPU quando se prepara arquivos de entrada, e confirmar se o feedback
antecipado correto, aps o fato, pela anlise dos dados de sada. Naturalmente pode-se
utilizar os dados de sada de uma execuo como entrada em outra execuo.
Com a tecla <UNDO> F9 pode-se avanar e retroceder livremente atravs de
seqncias de interrupes controladas por entrada e sada. Observe-se que a tecla
<UNDO> F9 reverte corretamente qualquer transferncia de arquivo de entrada e sada
que tenha ocorrido durante a execuo da instruo. (A nica exceo aquela em um
arquivo de entrada automaticamente fechado quando seu final atingido. Nesse caso, a
tecla <UNDO> F9 no pode reabrir o arquivo.)
7.2.1

Entrada e Sada Manual e Arquivos de Entrada e Sada

Quando se define um arquivo de entrada e sada, o simulador requisita as


informaes necessrias: o nome do arquivo, se a opo voltar quando o final for atingido
(rewind at EOF) deve ser ativada, e o padro de mapeamento. H dois padres bsicos
de mapeamento: mapeamento por bytes e mapeamento por bits.

108

Entrada e Sada Manual


A entrada e sada manual de dados feita no modo Display. Simplesmente
move-se o cursor para os terminais de entrada e sada onde se deseja atuar. Ento, entrase com os 0s e1s ou com o byte ASCII da entrada que se deseja simular. (No caso de
entrada como byte ASCII, deve-se colocar Scroll Lock em ON para fixar o cursor na
janela do port.) A prxima operao de leitura receber o dado colocado manualmente no
port. Pode-se simplesmente repetir este processo, utilizando qualquer combinao de bits
que for necessria.
Mapeamento por Bytes
O Comando mapByte permite que se envie um byte completo de um arquivo de
entrada para um port. Cada vez que o simulador l o arquivo de entrada (uma vez por
I/O Rate estabelecido), o prximo byte do arquivo de entrada enviado ao port.
Os argumentos para o comando mapByte so:
mapByte Address, Direction
Como endereo de port, pode-se entrar com qualquer endereo legal de port. No 8051
esses endereos so P0 a P3 e SBUF, embora alguns membros da famlia possam no ser
dotados desses ports especficos.
Direction especifica se o byte vai ser lido de um arquivo de entrada (IN) ou
escrito em um arquivo de sada (OUT). Por exemplo, veja-se a seguinte especificao de
byte:

Port Address

Direction

Descrio

P1

IN

Envia o byte de entrada ao port P1.

P3

OUT

Envia o contedo de P3 ao arquivo de sada.

Mapeamento por Bits


O comando Mapbits permite que envie bits especficos a terminais especficos de
ports, registradores, etc. Cada vez que o simulador l o arquivo de entrada (uma vez por
I/O Rate estabelecido), os bits especificados do prximo byte do arquivo so enviados
aos terminais especificados.
Os argumentos do comando Mapbits so:

Mapbits I/O bit (0-7), Memory bit (0-7), Address, Direction (IN/OUT)
Uma segunda sintaxe permitida quando o smbolo de um bit houver sido
definido, onde o memory bit est no espao B::
109

Mapbits I/O bit (0-7), Memory bit symbol, Direction (IN/OUT)


Por exemplo:

I/O Bit

Mem Bit

Address

Direction

Resultado

7,

3,

P1,

OUT

Envia o bit 3 do port P1 ao bit 7 da


seqncia de sada.

7,

RI,

IN

Envia o bit 7 do dado de entrada ao


terminal RI de SCON.

7.2.2

Acesso por Cdigo de Operao

Os acessos a arquivos de entrada e sada por cdigos de operao permitem que se


acople arquivos de entrada e sada a endereos. Todos os cdigos de operao que
acessem o endereo especificado gatilham uma operao de leitura de um arquivo de
entrada (um cdigo de operao de leitura) ou uma escrita no arquivo de sada (um
cdigo de operao de escrita). Os argumentos do acesso por cdigos de operao so
similares aos do comando mapBytes:

IO TRANSFER: Address, Dir: IN/OUT


e especificam o byte da seguinte forma:
Address: O endereo de memria consiste nos ports ou pseudo-registrador PINS para
onde um byte de entrada ser enviado ou de onde um byte de sada vir.
Dir: IN/OUT: Direction IN envia os bytes do arquivo de entrada para o endereo
especificado. Direction OUT envia os bytes do endereo especificado para o arquivo
de sada.
Uma entrada de um byte feita imediatamente antes da execuo de uma
operao de leitura e a escrita do byte no arquivo de sada feita imediatamente aps a
execuo de uma operao de escrita no endereo. O melhor modo de se aprender a
utilizar arquivos de entrada e sada a experimentao com os mesmos.

110

Captulo 8

SIMULAO DA CPU ALVO


Tentou-se simular com detalhes meticulosos as facilidades do hardware residentes
no chip. Para os leitores intimamente familiarizados com as especificaes do famlia
8051 de microprocessadores, feita uma reviso das especificaes do dispositivo
simulado. Se os ports de IO, os temporizadores, etc. comportarem-se de modo inesperado
deve-se ler cuidadosamente a seo apropriada abaixo.
8.1

Tecnologia
Dispositivos HMOS: suporte para todo o hardware residente no chip.
Dispositivos CMOS: Caractersticas idnticas s dos dispositivos HMOS.

8.2

Registradores
PC: Este registrador de 16 bits acessa a memria de programa.
DP: Este registrador de 16 bits acessa a memria externa de dados.
PSW: Este registrador composto por CY/AC/F0/RB/OV/P e pode ser
referenciado como um byte para arquivos de entrada e sada ou
breakpoints. O seletor de banco de registradores (RS0, RS1) controla a
janela Data Register no display: R0-R7 so atualizados para mostrar o
banco de registradores selecionado. Uma marca aparece ao lado dos
nomes dos registradores para indicar o banco selecionado. As marcas
utilizadas para assinalar o banco selecionado (bancos 0-3) so mostradas
em PINS abaixo.
PINS: Este um pseudo-registrador contendo o seguinte:

Banco de Registradores

Smbolo

RB0

RB1

RB2

RB3

Por exemplo, quando o banco 2 de registradores esta selecionado, o


registrador R1 assinalado com R1. Os marcadores de seleo de banco
de registrador so atualizados mesmo quando o display est em OFF. O
bit de paridade no pode ser editado, pois ele sempre indica a paridade do
contedo do acumulador.
111

CMOS: O bit IDL (PCON.0), quando alterado interativamente, ou por uma


instruo de programa, paralisa a simulao exceto a atividade do clock e
dos arquivos entrada e sada. Qualquer interrupo habilitada (ativada
manualmente ou por arquivos de entrada e sada) zera este bit e reinicia a
simulao. O bit IDL tambm zerado pelo comando Reset Cpu.
8.3

Memria
RAM: O espao de endereamento de memria de dados (Data Address Space)
pr-definido pela srie do chip: de 128 bytes ou de 256 bytes.
ROM: O espao de endereamento ROM 0 FFFFH alocado somente na
medida em que os mdulos objeto o requeiram. O carregamento de
programas configura automaticamente breakpoints do tipo Write-Only na
faixa de endereos correspondente a cada mdulo: todas as tentativas de
escrita acima do topo da memria alocada geram paralisaes pelos
breakpoints.
Embora a maior parte dos programas de aplicao testados no
AVSIM51 utilizem apenas a memria residente no prprio chip, o
simulador tem capacidade para alocar o espao total de endereamento de
cdigo e 64K de espao de endereamento de memria externa de dados

mesmo em um sistema com 128K. Para simular o restante da memria


necessria, um subsistema de gerenciamento de memria virtual (VM)
includo no AVSIM51.
O subsistema de gerenciamento de memria virtual efetua o swap
out da pgina de memria do sistema alvo recentemente menos usada
(LRU) da RAM do computador hospedeiro para um arquivo em disco, e
ento efetua o swap in das pginas referenciadas na medida em que se
tornem necessrias durante a operao do programa. O gerenciamento da
memria virtual automaticamente invocado durante a alocao de
memria, tanto pelo comando Set Memory como pelo comando Load,
sempre que ocorre uma depleo de memria disponvel no computador
hospedeiro. Deve-se selecionar o drive a ser utilizado como Memria
Virtual antes que o gerenciador de memria virtual (VM) seja invocado.
Utiliza-se o comando Set Virtual-memory para configurar o uso de
memria virtual.
O espao disponvel em disco para o arquivo de memria virtual
tem um tamanho mximo de:
2 * (espao de cdigo alocado + espao de dados externo alocado)
A alocao de espao ocorre apenas em pginas de 256 bytes. Atualmente
a VM invocada se mais de 11K bytes so alocados quando o AVSIM51
executado em um hospedeiro com 128K de memria. Se o AVSIM51
executado em um hospedeiro com mais de 128K de memria, a quantidade
extra de memria utilizada antes que VM seja invocada.
Para utilizar acessos memria externa de dados com uso do port
P2 como sada para o byte de ordem superior dos endereos, deve-se

112

inicialmente informar o AVSIM51. Para isso utiliza-se o comando


SetOption, descrito no Captulo 6, Descrio dos Comandos.
8.4

Ports

O AVSIM51 d suporte para uma multiplicidade de caractersticas dos ports de


I/O. Os buffers de recepo e transmisso da interface serial so implementados na tela
como duas janelas separadas. Todos os dados enviados atravs da interface serial
aparecem na janela de sada (SBUFL). A recepo de dados ocorre independentemente
da transmisso, seja interativamente seja de arquivos de entrada. A interrupo Receive
(RI) simulada com o envio de dado para a janela de entrada SBUF e ento RI ativada.
O programa demonstrativo ilustra essa tcnica, acoplando os 7 bits menos
significativos de um arquivo de entrada ao SBUF, e o bit mais significativo a RI. O bit
mais significativo de todos os bytes do arquivo de entrada DEMO.MSG de nvel alto
para simular uma interrupo para cada caractere ASCII recebido.
Observe-se que a taxa de transmisso (baud rate) no estabelecida dentro do
simulador. Deve-se selecionar um I/O rate para todos os arquivos que aproximam o fluxo
serial de dados.
Os Ports P0, P1, P2 e P3 so implementados como quasi-bidirecionais; isto ,
eles simulam tanto entradas como sadas. O estado dos latches internos mostrado na
tela para que melhor se entenda que estados os terminais podem ter. Essencialmente, os
terminais apresentam o resultado de um AND lgico de nveis lgicos externos com
nveis lgicos de latches internos. Geralmente, os dados dos latches so utilizados
por cdigos de operao read/modify/write, enquanto os nveis dos terminais so lidos
por cdigos de operao.
As regras para simulao da interao terminal/latch so:

Latch

Terminal

Permitido 1 ou 0

Forado 0 (o teminal uma sada)

Transio 0/1

1 (o terminal liberado e flutua alto)

Os latches de ports no podem ser editados interativamente; eles devem ser


estabelecidos pelo programa do usurio. A digitao sobre os ports no modo Display
pode no configur-los corretamente. O latch do port 0 zerado por qualquer acesso ao
barramento externo de dados, exatamente como seria de se esperar que ocorresse com um
dispositivo real. Contudo, acessos ao espao de cdigo alm de 4K no afetam o Port 0
no simulador.
Como os Ports 0 e 2 so utilizados inteiramente para acessos aos barramentos
externos no caso das sries 8031/C31/32, eles no so apresentados nestas verses do
AVSIM51.

113

8.5

Terminais Externos

Os terminais do Port 1 (T2/T2EX) e do Port 3 (INT0/INT1/T0/T1) podem ser


configurados para controle dos timers e de interrupes, alm de sua funo geral de port.
Quando configurados dessa forma, a atividade nos bits apropriados desses ports controla
funes adicionais. Observe-se que os bits RXD/TXD/RD/WR no tm suporte (veja-se
acima, o port serial). Lembre-se que o terminal RESET simulado apenas pelo comando
Reset Cpu.
8.7

Interrupes

Toda a arquitetura de interrupes externas e dos timers da famlia 8051 est


implementada no AVSIM51. Os bits nos registradores P1, P3, TCON, T2CON, SCON,
IE e IP esto envolvidos na estrutura de interrupes. Esses bits podem ser alterados
interativamente na tela para controlar a operao das interrupes. Alm disso, dois flipflops, no registrador interno IIP, so apresentados na tela e indicam o nvel atual de
interrupo ativa. Na rea de prioridade, a tela tem quatro estados: , L, H ou
HL. A rea de prioridade atualizada mesmo com DSP em OFF.
importante lembrar que alguns flags de interrupes no 8051 so zerados pelo
hardware quando a interrupes so atendidas, enquanto outros precisam ser zerados por
software. Se isto for esquecido, o processador ficar bloqueado na rotina de interrupo.
De forma semelhante, faltando em sair de uma rotina de interrupo com o cdigo de
operao RETI deixar o flip-flop IIP em nvel alto, proibindo subsequentes atendimentos
a interrupes.
As interrupes externas podem ser configuradas para gatilhamento atravs de ITx
na borda de descida ou por nvel. Se o gatilhamento for por nvel, o bit IEx ser
inversamente controlado pelo terminal INTx.
tambm necessrio lembrar que uma interrupo atrasada sob determinadas
circunstncias:
Se EA estiver baixo.
Se uma interrupo do mesmo nvel estiver sendo correntemente atendida.
Se a instruo corrente for RETI ou se ela referencia IE ou IP.
8.7

Timers

Todos os registradores e bits de controle dos Timers so apresentados na tela. Os


Timers 0 e 1 podem ser programados para operar nos modos 0, 1, 2 ou 3. Quando a
configurao de um Timer for a de timer, os ciclos de mquina so contados durante a
simulao e so adequadamente revertidos atravs do comando <UNDO> F9. Se um
Timer configurado como um contador, a incrementao ocorre na borda de subida dos
sinais aplicados aos terminais de entrada T0 ou T1. Lembre-se que o bit de controle do
timer TRx deve ser ativado para que se habilite o registro da contagem. Embora
endereados como registradores, os bits TCON e TMOD so individualmente
apresentados na tela para convenincia.
8052: Os registradores do Timer 2 T2CON, TH2/TL2 e RCAP2H/RCAP2L so
implementados. O Timer pode ser configurado para operao em 3 modos pelos
bits RCLK, TCLK e CPRL2.
114

8.8

EPROM

As verses EPROM dos dispositivos no tm diferenas funcionais em relao


verso ROM e a elas no dado suporte separadamente.

115

Apndice A

MENSAGENS DE ERRO
Neste apndice so listadas em ordem alfabtica as mensagens de erro.
BAD HEX Char in line: <x> char: <y>
Tipo:

Alerta

Causa:

Durante o carregamento de uma tabela de smbolos, um caractere nohexadecimal foi lido na linha indicada enquanto o simulador fazia sua
anlise buscando um caractere hexadecimal.

Soluo: Editar a linha indicada e remover o caractere incorreto. As entradas da


tabela de smbolos devem ser separadas apenas por espaos ou tabulaes.
Os smbolos so restritos a cadeias de caracteres alfanumricos sem espaos
no seu interior.
BAD KEY
Tipo:

Alerta

Causa:

A ltima tecla pressionada invlida na janela atual, por exemplo, quando se


entra com um 2 em uma janela binria.

Soluo: Redigitar a tecla correta. Consultar o manual se no houver certeza sobre


quais as teclas vlidas na janela atual.
Cant find AVSIM51.OVR
Tipo:

ERRO FATAL

Causa:

O simulador foi iniciado sem o arquivo indicado no disco default ou no


PATH.

Soluo: Copiar o AVSIM51.OVR no disco de trabalho e comear novamente.


Cant find <filename>
Tipo:

Alerta

Causa:

O arquivo solicitado no foi encontrado.

Soluo: Verificar se o arquivo est presente no disco default. Verificar se o arquivo


est presente no disco especificado. Verificar se o diretrio de trabalho foi
includo no PATH.
Cant find Object Module <x>
116

Tipo:

Alerta

Causa:

Durante um comando Load Avocet filename, no foi encontrado um


arquivo com o nome filename.MIK ou fileneme.HEX.

Soluo: Redigitar o nome do arquivo se este foi digitado incorretamente. Verificar se


o pathname est correto (se um foi utilizado no comando). Corrigi-lo se for
o caso. Verificar se o arquivo est presente no disco. Inclu-lo se no
estiver.
Cant open VIRTUAL.@@@
Tipo:

ERRO FATAL

Causa:

O AVSIM51 invocou a memria virtual mas o drive especificado no est


disponvel.

Soluo: Reiniciar o simulador e utilizar o comando Set Virtual-drive para


especificar o drive a ser usado. Isto deve ser feito antes que o programa
invoque a memria virtual. O maior tamanho possvel de VIRTUAL.@@@
igual ao dobro da mxima memria do chip.
Cant read Object Module <x>
Tipo:

Alerta

Causa:

O mdulo objeto especificado no est no formato MIKBUG da Motorola


ou HEX da Intel (Observe-se que o formato MIKBUG da Motorola recebe
suporte apenas para chips da Motorola.)

Soluo: Utilizar o formato apropriado. Verificar se o arquivo especificado um


arquivo objeto.
Command File OUTPUT ERROR
Tipo:

Alerta

Causa:

O arquivo de comandos no foi capaz de escrever no disco.

Soluo: Verificar se o disco est cheio ou protegido contra escrita. Se for o caso,
utilizar outro disco ou apagar arquivos desnecessrios de um disco cheio.
I/O File OUTPUT ERROR
Tipo:

Alerta

Causa:

O arquivo de entrada e sada no pode ser escrito no disco.

Soluo: Verificar se o disco est cheio ou protegido contra escrita. Se for o caso
utilizar outro disco.
Invalid Address Mode
Tipo:

Alerta

117

Causa:

Foi especificado um modo de endereamento invlido para um cdigo de


operao.

Soluo: Utilizar um modo vlido de endereamento. Consultar um Manual de


Referncia para o 8051 se no houver segurana sobre os modos de
endereamento.
Invalid Argument
Tipo:

Alerta

Causa:

O argumento fornecido em uma expresso no um smbolo ou um nmero


vlido na base especificada ou a sintaxe da expresso est incorreta.

Soluo: Redigitar um smbolo ou expresso vlido.


Invalid Operation
Tipo:

Alerta

Causa:

O mnemnico fornecido no contm um cdigo de operao vlido.

Soluo: Redigitar o cdigo correto. Consultar um Manual de Referncia para o 8051


se houver insegurana sobre o cdigo de operao.
Missing Argument
Tipo:

Alerta

Causa:

Ou foi fornecido um operador sem argumento ou a sintaxe da expresso est


incorreta.

Soluo: Redigitar a expresso.


NO HELP FILE
Tipo:

Alerta

Causa:

Entrou-se com o comando Help mas o AVSIM51.HLP no est presente


no disco default ou no PATH.

Soluo: Copiar o arquivo AVSIM51.HLP para o disco de trabalho ou utilizar o


manual.
NO SPACE remove a trap and try again
Tipo:

Alerta

Causa:

O espao da heap est cheio. O comando digitado requer mais espao na


heap e no pode ser executado.

Soluo: Cancelar um breakpoint, fechar um arquivo de entrada e sada ou reduzir o


tamanho do registro histrico para liberar algum espao.
Out of Memory Need <x>
Tipo:

ERRO FATAL
118

Causa:

Tentou-se executar o AVSIM51 em um sistema com menos de 128K de


memria ou em um sistema multitarefa com menos de 128K especificados
para o AVSIM51.

Soluo: necessrio adquirir mais memria para o sistema ou utilizar um


computador com pelo menos 128K. Em um sistema operacional multitarefa,
especificar pelo menos 128K para o AVSIM51.
Out Of Range: <x>
Tipo:

Alerta

Causa:

Foi especificado um endereo que no est no espao de endereamento do


chip alvo ou foi especificado um registrador que no permitido na
expresso.

Soluo: Especificar um endereo situado na faixa que vai de 0 ao Espao de


endereamento 1.
Sorry, CANT UNDO
Tipo:

Alerta

Causa:

O limite de reverso histrica foi excedido ou foi ativado <UNDO> F9 antes


da execuo de qualquer cdigo e portanto no h histria a reverter.

Soluo: No h soluo.
Sorry, Virtual Memory is already in operation
Tipo:

Alerta

Causa:

O programa invocou a memria virtual antes de que fosse especificado um


drive virtual.

Soluo: Reiniciar o simulador e especificar um drive virtual com o comando Set


Virtual drive antes de que o programa necessite utiliz-lo. (Se for
estabelecido um drive virtual antes de executar um programa, este problema
pode ser eliminado.)
SYMBOL TABLE TOO BIG at symbol:symbolname
Tipo:

Alerta

Causa:

A tabela de smbolos exauriu o espao de memria.

Soluo: Utilizar menos smbolos ou executar o AVSIM51 sem smbolos atravs da


remoo da tabela de smbolos do disco onde reside o programa. Acima de
200 smbolos podem ser utilizados em um sistema com 128K.
TOO MANY OPEN FILES Close one and try again
Tipo:

Alerta

119

Causa:

Foi atingido o limite do nmero de arquivos que podem estar


simultaneamente abertos nesta verso do AVSIM51. O limite de 14
arquivos sob o MS-DOS.

Soluo: Fechar um arquivo e tentar a operao novamente. Se no for utilizado o


comando Help haver espao para mais um arquivo. No MS-DOS, devese assegurar que o arquivo CONFIG.SYS contm a linha files=18.
UNDEFINED ADDRESS: <x>
Tipo:

Alerta

Causa:

Foi feita uma tentativa de leitura de leitura ou escrita em uma regio de


memria no existente.

Soluo: Utilizar o comando View Memory para ver que espao de memria foi
definido e ento especificar um endereo vlido.
UPPER Address <x> is lower than LOWER Address <y>
Tipo:

Alerta

Causa:

Este comando no permite a especificao de uma faixa de endereos que


determine a volta do topo para o incio no endereamento (wrap around).

Soluo: Alguns comandos permitem a especificao de um endereo inicial maior


que o endereo final. Nesse caso, o comando assume duas faixas de
endereamento: a que vai do endereo inicial ao topo da memria e a que vai
do inicio da memria ao endereo final. No caso do comando que emitiu
esta mensagem de erro, tal possibilidade no existe. Redigitar o endereo,
mantendo o endereo final maior que o endereo inicial.
Virtual Memory -- Out of Space
Tipo:

ERRO FATAL

Causa:

O drive especificado para memria virtual est cheio.

Soluo: a memria virtual necessita no mximo 2 * (espao de cdigo + espao


externo de dados) onde a alocao em blocos de 256 bytes.

120

Apndice B

Sumrio dos Comandos


B.1 Teclas de Funes
Nome da Tecla

Tecla do IBM-PC

Descrio do Comando

<GO>

F1

Inicia e paralisa simulao


da CPU alvo

<BKUP>

F2

Move o cursor de
breakpoints um cdigo de
operao para cima no
fragmento de programa. (O
cursor de breakpoints
descrito na prxima pgina.)

<BKST>

F3

Registra um breakpoint
R/W dinmico na posio
do cursor de breakpoints,
depois move o cursor de
breakpoints para o valor
corrente do PC.

<BKDN>

F4

Move o cursor de
breakpoints um cdigo de
operao para baixo no
fragmento de programa.

<SPD>

F5

Seleciona a velocidade de
simulao (HI, MEdium,
LOW).

<DSP>

F6

Inicia ou paralisa a
atualizao contnua do
display. Paralisa a
atualizao para aumentar a
velocidade de simulao ou
a inicia para a visualizao
dos resultados da execuo
de cada instruo da CPU
alvo.

121

<WMOD>

F7

Seleciona o tipo de janela


(BINary, HEX, ou ASCII)
para onde o cursor se move
se a janela apresentar dados
em mais de uma forma.

<SKP>

F8

Comuta a chave para o salto


ou no sobre subrotinas. No
modo passo a passo, com a
chave em ON, o simulador
no executa passo a passo as
instrues de subrotinas
(elas so executadas em
um nico passo). Quando a
chave est em OFF, o
simulador executa passo a
passo as instrues das
subrotinas.

<UNDO>

F9

Reverte a execuo de um
cdigo de operao.
Restaura o estado anterior
de toda a memria,
registradores, os arquivos de
entrada e sada e contador
de ciclos transcorridos. Os
contadores de pontos de
passagem (passpoints)
no so restaurados com
este comando. So
revertidos comandos de
execuo e Reset CPU.
Interrupes tambm so
revertidas.

<SSTEP>

F10

Executa passo a passo, um


cdigo de operao em cada
acionamento da tecla.
Ignora breakpoints.

<TRACE>

Alt F6

Comuta para ON ou OFF a


atualizao de janelas
individuais quando o modo
de atualizao contnua est
em OFF.

122

<SCLTOG>

Ctrl PgUp

Comuta o modo do scroll


da tela para ON ou OFF.
Quando o modo do scroll
est em OFF (o default) as
teclas fazem o cursor
mover-se livremente entre
as diversas janelas. Quando
o modo do scroll est em
ON, os movimentos do
cursor restringem-se a uma
janela.

B.2 Controle Bsico do Cursor


Nome da Tecla

Tecla do IBM-PC

Descrio do Comando

keypad 4

Movimenta o cursor um
caractere para a esquerda.

keypad 6

Movimenta o cursor um
caractere para a direita.

keypad 8

Movimenta o cursor para a


linha anterior.

keypad 2

Movimenta o cursor para a


prxima linha.

Home

keypad 7

Movimenta o cursor para o


primeiro caractere da janela
corrente.

End

keypad 1

Movimenta o cursor para o


ltimo caractere da janela
corrente.

PgUp

keypad 9

Em uma janela de rea de


dump (apresentao de
memria), rola (scrolls)
uma janela de dados para
cima (20 linhas).

PgDn

keypad 3

Em uma janela de rea de


dump (apresentao de
memria), rola (scrolls)
uma janela de dados para
baixo (20 linhas).
123

B.3 Teclas Expressas


Tecla do IBM-PC

Destino

Return

ltima janela visitada

Ctrl

Prxima janela direita

Ctrl

Prxima janela esquerda

Ctrl A

Accumulator

Ctrl P

Program Counter

Ctrl S

Stack Pointer

Ctrl R

Register Bank

Ctrl 0 a 7

Registers 0 through 7

Ctrl D

Data Pointer

Ctrl C

Carry Flag

Ctrl X

Auxiliary Carry Flag

Ctrl F

User Flag

Ctrl O

Overflow Flag

Ctrl B

Register B

Ctrl I

Interrupt Enable Flag

Ctrl T

Timer 0

Alt A

Memory Dump Area 1

Alt B

Memory Dump Area 2

Alt P

Port 0 (Port 1 no 8031/2)

Alt Q

Port 2 (Port 3 no 8031/2)

Alt C

Serial Port Receiver Buffer

Alt S

Serial Port Control Register

Alt Y

Cycles Register

B.4 Teclas de Edio


124

Nome da Tecla

Tecla do IBM-PC

Descrio do Comando

Increment

Adiciona 1 ao valor de um
byte ou endereo word.
Comuta um bit. No PC,
avana para o prximo
cdigo.

Decrement

Subtrai 1 do valor de um
byte ou endereo word.
Comuta um bit. No PC,
retrocede para o cdigo
anterior.

Clear-to End

Ctrl End

Zera todos os bits da


posio do cursor ao final
da janela. Valores
hexadecimais ou binrios
so zerados. caracteres
ASCII assumem o cdigo
do caractere espao
(20H)..

Clear-Window

Ctrl Home

Zera toda a janela. Valores


hexadecimais ou binrios
so zerados. Caracteres
ASCII assumem o cdigo
do caractere espao
(20H).

Togle

Ins

Comuta o bit/nibble/ASCII
sob o cursor para seu
complemento lgico
(complemento de um).

(keypad 0)

125

APNDICE C

Programa Demonstrativo
C.1

Funo do Programa Demonstrativo

O programa demonstrativo DEMO!.ASM ilustra algumas das caractersticas


visuais e interativas do simulador/depurador da Avocet para o 8051. A funo principal
do programa apresentar uma procisso de luzes no Port 1, onde cada bit est ligado a
uma lmpada ou LED. Um padro de bits inserido no Port 2 atravs de quatro chaves
de comutao (uma para cada bit). O padro copiado no Port 1 e ento rotacionado um
bit para a direita, com o bit mais direita indo para a posio mais esquerda da cadeia
de 8 bits. Essa evoluo cclica continua indefinidamente a uma velocidade constante,
modificada apenas por interrupes.
Para convenincia, a verso 8051 selecionada para a demonstrao.
Alternativamente, qualquer outra verso, exceto 8031/C31/32 (que no so munidos do
Port 2), pode executar o programa DEMO1.ASM.
Interrupes:
1. O Timer 0 configurado no modo Timer. Ele conta continuamente no sentido
crescente. Quando ocorre overflow, o sentido de rotao da procisso de
luzes revertido. O programa ento complementa o nmero que est sendo
rotacionado (00101000 torna-se 11010111). O timer carregado ento com o
novo nmero e a contagem reiniciada.
2.

C.2

Uma segunda tarefa executada em plano de fundo, utilizando o port receptor


serial. Essa tarefa efetua a simulao de uma bufferizao de teclado: o
port Serial Receive alimentado com um caractere ASCII e a interrupo de
recepo (RI) gatilhada para nvel alto. Isso inicia uma rotina de interrupo
serial, que captura o caractere ASCII e ento o transfere para um buffer (que
apresentado na rea de apresentao 1 Dump Area 1). Se o caractere
for 0Dh, o buffer reinicializado e preenchido com zeros para um efeito
visual. Quando o caractere colocado no buffer, a interrupo termina e a
outra tarefa continua.

Instrues de Operao
1. Para iniciar o ambiente da demonstrao, Digite RUN_DEMO ao prompt do
sistema operacional. Aps alguns momentos durante os quais ocorre o
carregamento do simulador e do programa exemplo, a execuo ter incio.
2. Se o simulador j estiver em execuo, carrega-se o arquivo de comandos
DEMO.CMD. Isto carregar o programa e o colocar em execuo.

126

C.3

Listagem do Programa

;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;

Demo Program for 8051


Written by Ken Anderson
May 1985
This program is intended to demonstrate features of
the 8051 CPU that are easily visualized on Avocets
AVSIM51 Simulator.
The functions of this program include:
1.

MAIN routine reads the bit pattern from PORT 2


and cycles it on the LEDs attached to PORT1
(like a light chaser) where HI bits represet
LIGHT ON (or vice-versa, of course).
The light chaser rotates alternately to the right,
then to the left at a rate corresponding to
the binary value of PORT 2s bit pattern.

2.

Timer 0 interrupt routine changes the rotation direction


on each countdown.

3.

Timer 1 and Serial Port are supporting a second task:


On receive interrupt, read ASCII character in serial port,
and buffer it.
Special character <CR> clears the buffer contents
for visual effect in the simulator.

On occasion, the stack (07) will overflow into Bank 2 space, if


an interrupt occurs at a bad time watch for it!
Variable Map

BFSIZE
RETURN
;

EQU
31
EQU
0DH
Register Usage:

; Maximum Buffer size


; Carriage Return

;
;
;
;
;
;
;
;
;
;
;

B
F0

; temporary for input char


; direction flag

Bank 0
R2
R3

; Pattern read from PORT 2


; dynamic pattern

Bank 2
R0
R3
B

; INT routine Buffer index next free position


; loop counter for buffer clear
; PIO B Int routine Buffer counter

DEFSEG BUFBASE,CLASS=XDATA,START=20H
SEG BUFBASE
; External Data Address Space
DS BUFFSIZE
EQU 20H

BFBASE
;

; INT routine Buffer space in Data Space


; BUFBASE

Vectors are stored at zero-memory

127

;
;
;
;
;
;

Note: Separate segments for each contiguous portion of memory


allows AVSIM51 to pre-allocate exact ranges of memory
that are actually in use. Using ORG within a segment
will mistakenly AVSIM51 to allocate memory that
is not used by the program, and hence will not trap
undesired references to that memory.
DEFSEG ZERO,START=0
SEG ZERO
JMP MAIN

; RESET

DEFSEG SINT1,START=SINT,CLASS=CODE
SEG SINT1
JMP SERIAL

; Serial interrupts

DEFSEG TMR0,START=TIMER0,CLASS=CODE
SEG TMR0
JMP T0INT

; Timer 0 interrupt routine

DEFSEG MAINSEG,CLASS=CODE,START=100H
SEG MAINSEG
MAIN:

NEWPTRN:

ROTATE:

ROTLEFT:
SETP1:

GETSYM:

CLR A
MOV P1,A
CLR F0
SETB RS1
MOV R0,#BUFBASE
CLR RS1
MOV SCON,#50H
MOV TMOD,#20H
MOV TH1,#0FDH
MOV TL1,TH1
MOV IP,#10H
MOV IE,#92H
MOV TCON,#50H
CALL GETSYM
MOV R2,A
MOV R3,A
MOV P1,A
CPL A
MOV TH0,A
MOV A,R3
JB F0,ROTLEFT
RRA
JMP SETP1
RL A
MOV R3,A
MOV P1,A
CALL GETSYM
XRL A,R2
JMP NEWPTRN
MOV A,P2
RET

; start with lights OFF (0s)


; stasrt pattern to ratate rightwards
; init buffer ptr
;
;
;
;
;
;
;
;
;
;
;
;

Serial Port Mode 1


Timer 1 Mode 2, Timer 0 Mode 0
Baud Rate 9.6KHz
preset first pass
Serial Port has High Priority
Interrupts ENABLED from serial & timer 0
Enable timers
get light chaser pattern
save it to test switch setting changes
save dynamic pattern too
set new pattern on lights
reset timer counter to value

;
;
;
;
;

get light pattern


select rotate direction
rotate right
update P!
rotate left

; compare to pattern: switches modified?


; start up again
; read switch bank

128

T0INT:

SERIAL:

CLEAR:

BUFCHAR:

SAVEPTR:
EXIT:

PUSH ACC
CPL F0
MOV A,R2
CPL A
MOV TH0,A
POP ACC
RETI

; Timer 0 Interrupt
; rotate direction
; use binary value of switch pattern
; to reset timer count

PUSH ACC
; Serial Port interrupt assume receiver
PUSH PSW
CLR RI
; Clear interrupt flag
MOV PSW,#10H
; switch to bank 2
MOV A,SBUF
; Get char
MOV B,A
XRL A,#RETURN
; Special key CR?
JNZ BUFCHAR
; no
MOV A,#BFSIZE
; compute loop counter
CLR C
SUBB A,R0
CPL A
JZ EXIT
; skip if at BUFBASE
MOV R3,A
; into R3
CLR A
DEC R0
; clear buffer
MOVX @R0,A
; above Buffer Base Address
DJNZ R3,CLEAR
; loop
SJMP EXIT
MOV A,@(BFSIZE+BFBASE) ; Get Buffer End
CLR C
JNC EXIT
; No, if BUFPTR > BFSIZE + BFBASE
MOV A,B
MOVX @R0,A
; save char
INC R0
; advance to next free position
POP PSW
POP ACC
RETI
; done
END

129

Apndice D

CONJUNTO DE INSTRUES
DO 8051
Este captulo descreve a sintaxe das instrues do 8051. Uma discusso completa
da arquitetura e da semntica (isto , o que as instrues fazem) est alm do escopo deste
manual; consultar o Captulo 1, Leitura Recomendada, para indicaes sobre
informaes adicionais.
O texto foi extrado de uma listagem real de sada do assembler, mostrando todos
os mnemnicos de instrues, os modos de endereamento disponveis para cada um e os
cdigos hexadecimais associados. Smbolos de tempo de compilao foram utilizados
para indicar onde elementos sintticos especficos so permitidos. DATA representa
espao de endereamento de memria de dados (0..255). BIT um endereo (0..255)
definido aqui com o operador ponto .. BIG utilizado onde um item de dado ou
endereo arbitrrio de 16 bits aceitvel, enquanto SMALL indica um item de dado
restrito a 8 bits (0..255).
O smbolo do contador de locaes $ utilizado como endereo alvo em vrias
instrues jump e call. Observe-se que na forma relativa dessas instrues, o contador de
locaes sempre referencia o primeiro byte da instruo atual, enquanto o deslocamento
computado com relao ao primeiro byte da prxima instruo. Assim, um jump relativo
que salta para si prprio tem deslocamento igual a 2 (FE hexadecimal).

130

Avocet
07:26:40
test 8051
Page 1

8051 Assembler V2.45, #00503

=0025
=0020
=4455
=0005
=0007
0000 02#
0001 02# 05# 05 78#
0005 E0"
0006 0000X
0008 0000X
000A
000C
000D
000E
000F
0010
0011
0012
0013
0014
0015
0016

24 05
26
27
28
29
2A
2B
2C
2D
2E
2F
25 25

0018
001A
001B
001C
001D
001E
001F
0020
0021
0022
0023
0024

34 05
36
37
38
39
3A
3B
3C
3D
3E
3F
35 25

0026 0000X
0028 0000X
002A
002C
002D
002E
002F
0030

54 05
56
57
58
59
5A

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

Chip=8051

1/22/101

$paginate title(test 8051)


$subtitle(Test file for the 8051 AVMAC)
DATAD
BITAD
BIG
SMALL
ZORCH

EQU
EQU
EQU
EQU
EQU

25H
20H
4455H
5
7

DB
DB
DB

20H.2
20H.2,20H.5,5,2FH.0
ACC

ACALL $
ACALL FWREF
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD

A,#SMALL
A,@R0
A,@R1
A,R0
A,R1
A,R2
A,R3
A,R4
A,R5
A,R6
A,R7
A,DATAD

ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC
ADDC

A,#SMALL
A,@R0
A,@R1
A,R0
A,R1
A,R2
A,R3
A,R4
A,R5
A,R6
A,R7
A,DATAD

AJMP
AJMP

$
FWREF

ANL
ANL
ANL
ANL
ANL
ANL

A,#SMALL
A,@R0
A,@R1
A,R0
A,R1
A,R2
131

Avocet
8051 Assembler V2.45, #00503
07:26:40
test 8051
Page 2
Test file for the 8051 AVMAC

0031
0032
0033
0034
0035
0036
0038
003A
003C
003F

5B
5C
5D
5E
5F
55
82
B0
53
52

25
01
01
25 05
25

0041
0044
0047
004A

12
12
12
12

0041'
00C6'
0849'
0191'

004D
0050
0053
0056
0059
005C
005F
0062
0065
0068
006B
006E

B6
B7
B4
B5
B8
B9
BA
BB
BC
BD
BE
BF

05
05
05
25
05
05
05
05
05
05
05
05

0071 E4
0072 C3
0073 C2 01
0075 F4
0076 B3
0077 B2 01
0079 D4
007A
007B
007C
007D
007E
007F
0080
0081
0082
0083
0084
0085

16
17
14
18
19
1A
1B
1C
1D
1E
1F
15 25

FD'
FD'
FD'
FD'
FD'
FD'
FD'
FD'
FD'
FD'
FD'
FD'

52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102

Chip=8051

ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL
ANL

A,R3
A,R4
A,R5
A,R6
A,R7
A,DATAD
C,BITAD.1
C,/BITAD.1
DATAD,#SMALL
DATAD,A

CALL
CALL
CALL
CALL

$
$+2+128
$+2+2048
FWREF

CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE

@R0,#SMALL,$
@R1,#SMALL,$
A,#SMALL,$
A,DATAD,$
R0,#SMALL,$
R1,#SMALL,$
R2,#SMALL,$
R3,#SMALL,$
R4,#SMALL,$
R5,#SMALL,$
R6,#SMALL,$
R7,#SMALL,$

CLR
CLR
CLR

A
C
BITAD.1

CPL
CPL
CPL

A
C
BITAD.1

DA

DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC
DEC

@R0
@R1
A
R0
R1
R2
R3
R4
R5
R6
R7
DATAD
132

1/22/101

Avocet
8051 Assembler V2.45, #00503
07:26:40
test 8051
Page 3
Test file for the 8051 AVMAC

0087 84
0088
008A
008C
008E
0090
0092
0094
0096
0098

D8
D9
DA
DB
DC
DD
DE
DF
D5

FE'
FE'
FE'
FE'
FE'
FE'
FE'
FE'
25 FD'

009B
009C
009D
009E
009F
00A0
00A1
00A2
00A3
00A4
00A5
00A6
00A8

06
07
04
08
09
0A
0B
0C
0D
0E
0F
05 25
A3

00A9 20 01# FD'


00AC 10 01# FD'
00AF 40 FE'
00B1
00B2
00B4
00B7
00BA

73
80
02
02
02

FE'
0136'
08B9'
0191'

00BD
00C0
00C2
00C4

30
50
70
60

01# FD'
FE'
FE'
FE'

Chip=8051

103
104
DIV
AB
105
106
DJNZ R0,$
107
DJNZ R1,$
108
DJNZ R2,$
109
DJNZ R3,$
110
DJNZ R4,$
111
DJNZ R5,$
112
DJNZ R6,$
113
DJNZ R7,$
114
DJNZ DATAD,$
115
116
INC
@R0
117
INC
@R1
118
INC
A
119
INC
R0
120
INC
R1
121
INC
R2
122
INC
R3
123
INC
R4
124
INC
R5
125
INC
R6
126
INC
R7
127
INC
DATAD
128
INC
DPTR
129
130
JB
BITAD.1,$
131
JBC
BITAD.1,$
132
JC
$
133
134
JMP
@A+DPTR
135
JMP
$
136
JMP
$+2+128
137
JMP
$+2+2048
138
JMP
FWREF
139
140
JNB
BITAD.1,$
141
JNC
$
142
JNZ
$
143
JZ
$
144
145 $subtitle(Part 2)

133

1/22/101

Avocet
07:26:40
test 8051
Page 4
Part 2

8051 Assembler V2.45, #00503

00C6 12 4455
00C9 02 4455
00CC
00CE
00D0
00D1
00D2
00D4
00D6
00D8
00D9
00DA
00DB
00DC
00DD
00DE
00DF
00E0
00E1
00E2
00E4
00E6
00E9
00EB
00ED
00EF
00F1
00F3
00F5
00F7
00F9
00FA
00FB
00FC
00FD
00FE
00FF
0100
0101
0103
0105
0107
0109
010B
010D
010F
0111
0113

76
77
F6
F7
A6
A7
74
E6
E7
E8
E9
EA
EB
EC
ED
EE
EF
E5
A2
90
78
79
7A
7B
7C
7D
7E
7F
F8
F9
FA
FB
FC
FD
FE
FF
A8
A9
AA
AB
AC
AD
AE
AF
92
75

05
05
25
25
05

25
01
4455
05
05
05
05
05
05
05
05

25
25
25
25
25
25
25
25
01
25 05

146 $ej
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196

Chip=8051

LCALL BIG
LJMP BIG
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV

@R0,#SMALL
@R1,#SMALL
@R0,A
@R1,A
@R0,DATAD
@R1,DATAD
A,#SMALL
A,@R0
A,@R1
A,R0
A,R1
A,R2
A,R3
A,R4
A,R5
A,R6
A,R7
A,DATAD
C,BITAD.1
DPTR,#BIG
R0,#SMALL
R1,#SMALL
R2,#SMALL
R3,#SMALL
R4,#SMALL
R5,#SMALL
R6,#SMALL
R7,#SMALL
R0,A
R1,A
R2,A
R3,A
R4,A
R5,A
R6,A
R7,A
R0,DATAD
R1,DATAD
R2,DATAD
R3,DATAD
R4,DATAD
R5,DATAD
R6,DATAD
R7,DATAD
BITAD.1,C
DATAD,#SMALL
134

1/22/101

Avocet
07:26:40
test 8051
Page 5
Part 2

0116
0118
011A
011C
011E
0120
0122
0124
0126
0128
012A
012C

86
87
F5
88
89
8A
8B
8C
8D
8E
8F
85

8051 Assembler V2.45, #00503

25
25
25
25
25
25
25
25
25
25
25
25 2A

012F 93
0130 83
0131
0132
0133
0134
0135
0136

F0
F2
F3
E0
E2
E3

0137 A4
0138 00
0139
013B
013C
013D
013E
013F
0140
0141
0142
0143
0144
0145
0147
0149
014B
014E

44
46
47
48
49
4A
4B
4C
4D
4E
4F
45
72
A0
43
42

05

25
01
01
25 05
25

0150 D0 25
0152 C0 25
0154
0155
0156
0157
0158

22
32
23
33
03

197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247

Chip=8051

MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV

DATAD,@R0
DATAD,@R1
DATAD,A
DATAD,R0
DATAD,R1
DATAD,R2
DATAD,R3
DATAD,R4
DATAD,R5
DATAD,R6
DATAD,R7
DATAD+5,DATAD

MOVC
MOVC

A,@A+DPTR
A,@A+PC

MOVX
MOVX
MOVX
MOVX
MOVX
MOVX

@DPTR,A
@R0,A
@R1,A
A,@DPTR
A,@R0
A,@R1

MUL
NOP

AB

ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL

A,#SMALL
A,@R0
A,@R1
A,R0
A,R1
A,R2
A,R3
A,R4
A,R5
A,R6
A,R7
A,DATAD
C,BITAD.1
C,/BITAD.1
DATAD,#SMALL
DATAD,A

POP
PUSH

DATAD
DATAD

RET
RETI
RL
RLC
RR

A
A
A
135

1/22/101

Avocet
07:26:40
test 8051
Page 6
Part 2

8051 Assembler V2.45, #00503

0159 13
015A D3
015B D2 01
015D 80 FE'
015F 80 30'
0161
0163
0164
0165
0166
0167
0168
0169
016A
016B
016C
016D

94 05
96
97
98
99
9A
9B
9C
9D
9E
9F
95 25

016F C4
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
017A

C6
C7
C8
C9
CA
CB
CC
CD
CE
CF
C5 25

017C D6
017D D7
017E
0180
0181
0182
0183
0184
0185
0186
0187
0188
0189
018A
018C

64 05
66
67
68
69
6A
6B
6C
6D
6E
6F
65 25
63 25 05

248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298

Chip=8051

RRC

SETB
SETB

C
BITAD.1

SJMP
SJMP

$
FWREF

SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB

A,#SMALL
A,@R0
A,@R1
A,R0
A,R1
A,R2
A,R3
A,R4
A,R5
A,R6
A,R7
A,DATAD

SWAP

XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH

A,@R0
A,@R1
A,R0
A,R1
A,R2
A,R3
A,R4
A,R5
A,R6
A,R7
A,DATAD

XCHD
XCHD

A,@R0
A,@R1

XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL

A,#SMALL
A,@R0
A,@R1
A,R0
A,R1
A,R2
A,R3
A,R4
A,R5
A,R6
A,R7
A,DATAD
DATAD,#SMALL
136

1/22/101

Avocet
07:26:40
test 8051
Page 7
Part 2

8051 Assembler V2.45, #00503

018F 62 25

299
XRL
300
301 FWREF EQU
302
303
END

=0191'

DATAD,A

Chip=8051

No lines contained errors.


No lines contained warnings.

137

1/22/101

Alteraes na Ver. 1.1 do AVSIM


A Verso 1.1 uma verso melhorada da verso anterior do AVSIM, tendo
algumas novas caractersticas no mencionadas no manual.
Topview/Windows
O AVSIM pode ser executado sob o Topview ou Windows, com a
seguinte informao .PIF de instalao:
Memory: 128k minimum, 640k maximum
Window Size: 25 rows, 80 columns offset 0,0
Range of vectors swapped: 23H to 24H
Program yes/no questions: all NO
Program Command Line
Os argumentos separados com espaos so submetidos ao AVSIM com
carriage returns. Por exemplo:
>AVSIM85 DLADEMO SMA100H 200H
H suporte para quatro chaves de opo:
-s

altera o som (bell ou beep) do controle direto do hardware para um


simples BELL (Control-G). Utilize isto se voc estiver operando com um
IBM PC ou compatvel. Isto desativa a NICA parte do cdigo que acessa o
hardware diretamente.

-i

desativa as interrupes 23H e 24H. Em outras palavras o AVSIM no as


modifica. A nova int23 faz Control-C ou Control-Break responderem melhor
e bloqueia sadas prematuras. A nova int 24 permite que o AVSIM controle os
erros disk not ready ou write protect error ou, pelo menos, a maior
parte deles. Utilize-a se seu MS-DOS ficar infeliz com o remapeamento de
interrupes.

-d0

d um aumento de at 70% na velocidade atravs da escrita direta nas


interfaces de vdeo IBM monocromtica, grfica colorida, ou Hercules. Ela
mais rpida mas no pode ser executada em plano de fundo sob o Topview ou
o Windows. A repintura da tela aps View, Help, etc., parece instantnea.

138

-d1

Este o default

-d2

Utiliza somente o ANSI.SYS e chamadas universais do MS-DOS. Em um


IBM PC, isto resulta em uma degradao de velocidade de 335%. Deve
funcionar com DEC, NEC, etc.. Agora, algo engraado acontece em ANSI
teclas de controle so bloqueadas especialmente Control-S, assim, se
no puderem ser passadas adequadamente por uma chave ANSI-DOS,
utilize a prxima chave.

-k

Remapeia teclas alfa em Control-alfa.

o AVSIM utiliza chamadas do BIOS.

Modo Command
O Cursor de comandos permite que o usurio selecione o comando atravs das
teclas de movimentao do cursor (left / right / up / down / end / space) e ento
pressione a tecla return para invoc-lo. Isto faz o AVSIM razoavelmente
compatvel com qualquer mouse.
A posio do cursor utilizada por ltimo em cada menu restaurada quando o
menu revisitado. Isto permite a visualizao de mltiplos tipos de smbolos, por
exemplo, uma seleo repetida pressionando duas vezes a tecla return (pois View e
Symbols esto ainda selecionados do passo anterior).
Ainda h o suporte para seleo atravs das letras maisculas
comandos no afetado.

e o cursor de

Novas Escolhas no Menu de Comandos: Setup tem uma opo at aqui: Undo
permite que o tamanho do registro histrico seja ajustado de 0 a vrias instrues. O
default em torno de 20 instrues.
Novas Subescolhas no Menu de Comandos:
Help oferece alguma informao on-line: A Avocet fornece nmeros
telefnicos, informao sobre outros AVSIMs, etc; Demo (apenas nas verses de
demonstrao) apresenta uma lista de restries.
IO tem agora dois mtodos de gatilhamento: Cycles, como na verso anterior,
especifica a taxa em ciclos por transferncia, enquanto Opcode-access aceita um
endereo. Uma leitura ou escrita subsequente no endereo (ou port) invocar uma
leitura/escrita no arquivo de IO para aquele byte. (leitura de I/O ocorre antes da
leitura de endereo, e escrita em I/O ocorre aps a escrita de endereo). Utilize
Cycles para I/O dirigido por interrupes e Opcode-access para I/O por polling.
View tem agora um submenu:
Symbols, a partir do qual voc pode escolher:
Alphabetically para listar todos os smbolos de usurio por smbolo.
Register para listar todos os nomes simblicos de registradores.
Memory I/O cada espao de endereamento lista os smbolos por endereo.
139

Numbers lista nmeros definidos com EQU por valor (somente com o AVMAC).
Load Avocet d suporte para o formato da tabela de smbolos do AVMAC: Ele
procura por file.SYM, e ento file.PRN para smbolos. Um arquivo .SYM disparar a
anlise sinttica SG/SY/AS com definio automtica de todos os intervalos SG de
memria. A extenso do nome do arquivo .MIK, .MOT (para Motorola), ou
ento .HEX (para Intel).
Modo Display
O realce na rea de cdigo em vdeo reverso em lugar de caixa alta. Isto
mais consistente com outros realces indiretos, que so em vdeo reverso. D tambm
uma nova aparncia a esta verso, e permitir s verses para UNIX trabalhar com
apenas dois modo de realce vdeo reverso e piscante.
Cycles counter agora um pseudo-registrador. Quando Set cYcles
selecionado, o cursor do display pode navegar para dentro do registrador CYCLES
para permitir sua edio em decimal (o cycles register pode tambm ser atingido com
Alt-Y). Tambm pode-se estabelecer breakpoints no registrador CYCLES para
determinar a paralisao da execuo quando um determinado valor for atingido.
Para zerar CYCLES, utilize as teclas Ctrl-Home quando o cursor estiver na janela
CYCLES.
Alteraes
A sintaxe de Set opTions ligeiramente diferente
as teclas de cursor.

fazendo-se a escolha com

Patch output file recebe agora um endereo para o cdigo de insero em


adio ao texto digitado. Este precisa ser editado antes que possa ser assemblado,
mas isto mantm um longo arquivo de cdigo de insero anotado.
Linhas de cdigo de insero (Patch lines) contendo labels: os labels so
incorporados tabela smbolos incrementalmente.
Os smbolos so truncados em um comprimento de 8 caracteres.
Melhorias de Carter Geral
At 14 arquivos de I/O podem ser abertos. Esteja seguro de incluir a linha
FILES=18 no arquivo CONFIG.SYS para seu sistema permitir que isto acontea.
De outra forma fica-se com um default de cerca de 6 arquivos.
Agora h suporte para PATH para todos os arquivos, de forma que
c:B:AVSIMxx
encontrar AVSIMxx.OVR (e portanto a partida do simulador ocorrer corretamente)
SOMENTE se PATH incluir B:.

140

Se o AVSIM encontrar espao disponvel em RAM, ele far pleno uso deste
espao antes de recorrer Memria Virtual em disco. Como este uso vrias vezes
mais rpido que as operaes envolvendo Memria Virtual, a moral no criar um
RAMdisk apenas para benefcio do AVSIM. Ainda h suporte de Memria Virtual e
ele ocorrer apenas em PCs com pequeno recurso de RAM ou em ambientes
multitarefa.
A manipulao de Control-C foi melhorada: Durante a visualizao ou
definio de espao de memria (algumas vezes vagaroso), Ctrl-C interromper a
operao.
De modo semelhante, pressionar qualquer tecla para ir para a prxima pgina
por exemplo, Help ou View Symbols, enquanto a pgina ainda estiver sendo listada
determinar um salto imediato para a prxima pgina.
Grandes melhorias foram introduzidas no gerenciamento da tabela de
smbolos: Os smbolos so mantidos em uma rvore AVL balanceada por endereo
e por smbolo. Isto melhora a velocidade de desassemblagem e o tempo de
carregamento (at 2500 smbolos podem ser carregados em 3.5 minutos). Tambm,
os smbolos podem ser carregados antes, depois, ou ao longo do carregamento de um
programa. Os smbolos so capturados do patch de entrada e aparecem ordenados
na tabela de smbolos. Os smbolos so truncados em um comprimento de 8
caracteres.

141

AVOCET
SYSTEMS INC. POST OFFICE BOX 490, ROCKPORT, MAINE 04856

Dear Customer:
Due to the high demand for our new AVSIM simulators, we are shipping a
preliminary version of the AVSIM Manual, until the complete Users Manual is
available. If youll fill out and return the enclosed form along with your licence
agreement, we will send you the complete Users Manual as soon as it is ready.
The preliminary manual is opaque in spots, but it does cover all of the key features of
AVSIM. We think you will find it adequate for your needs. However, if you have any
questions, please call us toll-free at 800/448-8500 or 207/236-9055 (in Maine, or
outside the continental United States).
Sincerely,

Diane Kimball
Customer Service
AVOCET SYSTEMS, INC.

AVSIM MANUAL REQUEST

TELEPHONE: (207) 236-9055 OR TOLL-FREE (800) 448-8500 TELEX: 467210 AVOCET CI

AVSIM MANUAL REQUEST


Type: ___AVSIM05

___AVSIM09

___AVSIM48

___AVSIM68

___AVSIM85

___AVSIMZ80

___AVSIM51

Licence Number: _________________________


Name: __________________________________________________________________
Company: _______________________________________________________________
Street: __________________________________________________________________
City: _____________________________________ State: ______ Zip: _____________
Country: ________________________________________________________________

Mail to:
AVOCET SYSTEMS, INC.
Post Offise Box 490
Rockport, Maine 04856

S-ar putea să vă placă și