Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
8051 Family
Users Manual
Rev. 1.1d
January, 1985
Copyright
ii
Contedo
iii
INTRODUO
1.1
1.1.1
1.2
1.3
Requisitos do AVSIM51
1.2.1
1.2.2
3
3
Manual do AVSIM51
1.3.1
1.3.2
4
4
PRIMEIROS PASSOS
2.1
Instalao do AVSIM51
2.1.1
2.2
Instalao
Operao do AVSIM51
2.2.1
2.2.2
9
10
Chaves de Opes
Argumentos Opcionais
2.3
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)
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
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
106
7.2.1
108
7.2.2
100
110
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
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
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:
1.1.1
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)
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)
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
Leitura Recomendada
Manual do AVSIM51
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
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
CMOS ROM
D:80C51
E:80C31
CMOS ROM
D:80C51
E:80C31
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
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
-I
-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
2.
3.
4.
5.
6.
7.
8.
9.
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
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
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
@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
Objeto de Tela
Program Fragment
Smbolo
Tipo de janela
Tamanho
Comentrio
Display Only
20 lines
@PC highlighted
13
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
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
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
O Teclado do AVSIM51
Teclas de Funes
Tecla do IBM-PC
16
Descrio da Tecla
<GO>
F1
<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
<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
<SKP>
F8
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
<TRACE>
Alt F6
Comuta a atualizao
individual de cada janela
entre ON e Off,
independentemente do
estado de DSP.
<SCLTOG>
Alt PgUp
2.5.2
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
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
HMOS ROMless
CMOS ROM
A: 8051/8751
C: 8031
D: 80C51
B: 8052/8752
D: 8032
E:80C31
23
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.
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.
24
3
4
6
3.
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.
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:
26
Nome da Tecla
Tecla no IBM-PC
Funo
<GO>
F1
<SSTEP>
F10
<UNDO>
F9
Tecla no IBM-PC
Funo
<BKUP>
F2
<BKST>
F3
<BKDN>
F4
O Modo Display
Movimentao do Cursor
Funo
(1), ento o nmero rotacionado para a esquerda. Se o flag F0 estiver em nvel baixo
(0), ento a rotao para a direita.
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.
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.
Paralisa-se a simulao.
3.5
Modo Command
3.5.1
A Tela de Comandos
33
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
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.)
Digita-se S
Digita-se P
Digita-se A
Digita-se S
Digita-se S
Digita-se C
Tipo
Operao
Indireto (Indirect)
Mascarado (Mask)
Faixa (Range)
Valor (Value)
Digita-se V
3.5.4
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:
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 p1, out Return. O simulador responde que o arquivo foi configurado.
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.
Entra-se com 100 Return. O simulador pergunta se devem ser mapeados bits ou bytes
(Mapbits ou mapBytes) para o arquivo.
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.
No modo Display move-se o cursor para o PC. (Pode-se utilizar a tecla rpida
CTRL P ou as teclas do cursor.)
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
Nome da Tecla
Tecla no IBM-PC
Funo
keypad 4
keypad 5
keypad 8
keypad 2
Home
keypad 7
End
keypad 1
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.
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
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
Ctrl
Return
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
Ctrl F
User Flag
Ctrl O
Overflow Flag
Ctrl B
Register B
Ctrl I
Ctrl T
Timer 0
Alt A
Alt B
Alt P
Alt Q
Alt C
Alt S
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
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
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
47
Nome da Tecla
Tecla no IBM-PC
Descrio
Increment
Decrement
Clear-to-End
Ctrl End
Clear-Window
Ctrl Home
Toggle
Ins
(0 do keypad)
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
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
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
MOV A,@R0
MOV A,#@377
@PC
52
Ao
Descrio
Adio
Subtrao
Negao
Endereamento indireto
()
Ordem de avaliao
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
5.2.2
Sintaxe da expresso
Exemplo
ALABEL
20H (BFBASE 1)
expresso [, expresso [ . . . ] ]
MAIN, AB, $ 1, 0a
Exemplo
D:BFBASE
D:SPACE + 20
54
Tipo
Espao de
Endereamento
Exemplo
Cdigo
C:MAIN
D:BFBASE
X:@A
Sufixo
Exemplo
Cdigo
.C
MAIN.C
.D
BFBASE.D
.X
A.X
MAIN:
CLR F0
;inicio da rotina
MOV A,#10011001B
DJNZ R3,$+3
56
Captulo 6
Abreviatura
Dump
commandFile
Expression
Patch
CommandFile
Quit Reset
Help
IO
Load
57
-- space --
eXecute
-- space --
58
6.1
Dump
Abreviatura: D
Absolute
Abreviatura: A
59
6.1.2
Indirect
Abreviatura: I
60
6.2
Expression
Abreviatura: E
61
6.3
commandFile
Abreviatura: F
Load
Abreviatura: L
Open
Abreviatura: O
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
Restart
Abreviatura: R
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
64
6.5
IO File
Abreviatura: I
IO FILE:
6.5.1
Open
Open
Abreviatura: O
65
Close
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:
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
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:
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,
Dir:IN/OUT
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
1,
RI
IN
mapByte
Caso se escolha o mapeamento de bytes inteiros, o sistema emitir o seguinte
prompt:
IO TRANSFER: Address,
Dir:IN/OUT
Addr.
Dir.
Descrio
P1,
IN
SBUFL,
OUT
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
69
6.5.2
Close
Abreviatura: C
70
6.6
Load
Abreviatura: L
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
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
Program
Abreviatura: P
> 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
E0
[TAB]80
60
1F
2F
03,
R4.D
04
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
MEMORY:
6.7.1
Clear
Fill
Move Search
searchNext
Clear
Abreviatura: C
6.7.2
Fill
Abreviatura: F
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
Entra-se com:
1Ah
1Ah
FFFFh
FFh,FFh
ABCD
ABCD ou ABCD
Im here
Im here
78
6.7.5
searchNext
Abreviatura: N
79
6.8
Patch
Abreviatura: P
PATCH:
6.8.1
Patch code
Close file
Patch code
Abreviatura: P
Open
Abreviatura: O
Close
Abreviatura: C
81
6.9
Quit
Abreviatura: Q
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
RESET: Cpu
Disptrace
cYcles
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
SET: Memory-map
Passpoint opTions
cYcles
Dynamic
V-drive
Opcode
space
Sticky
space
CONDITION:
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
D Write Range
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:
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
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
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:
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:
95
96
6.12
View
Abreviatura: V
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
InputFILE
MEM:
Replay
Bit Address
Dirn
Bit
Rate/Timer
97
outputFILE
EndAddr Type
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
99
6.13
eXecute
Abreviatura: X
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
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
Utilizao de Breakpoints
Condies
103
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:
104
7.1.4
Durao
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
Cdigos de Operao
Passpoints
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
108
Port Address
Direction
Descrio
P1
IN
P3
OUT
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
I/O Bit
Mem Bit
Address
Direction
Resultado
7,
3,
P1,
OUT
7,
RI,
IN
7.2.2
110
Captulo 8
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
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
112
Ports
Latch
Terminal
Permitido 1 ou 0
Transio 0/1
113
8.5
Terminais Externos
Interrupes
Timers
8.8
EPROM
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.
Alerta
Causa:
ERRO FATAL
Causa:
Alerta
Causa:
Tipo:
Alerta
Causa:
ERRO FATAL
Causa:
Alerta
Causa:
Alerta
Causa:
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:
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:
Alerta
Causa:
Alerta
Causa:
Alerta
Causa:
Alerta
Causa:
Alerta
Causa:
ERRO FATAL
118
Causa:
Alerta
Causa:
Alerta
Causa:
Soluo: No h soluo.
Sorry, Virtual Memory is already in operation
Tipo:
Alerta
Causa:
Alerta
Causa:
Alerta
119
Causa:
Alerta
Causa:
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:
ERRO FATAL
Causa:
120
Apndice B
Tecla do IBM-PC
Descrio do Comando
<GO>
F1
<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
<SKP>
F8
<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
<TRACE>
Alt F6
122
<SCLTOG>
Ctrl PgUp
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
keypad 2
Home
keypad 7
End
keypad 1
PgUp
keypad 9
PgDn
keypad 3
Destino
Return
Ctrl
Ctrl
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
Ctrl F
User Flag
Ctrl O
Overflow Flag
Ctrl B
Register B
Ctrl I
Ctrl T
Timer 0
Alt A
Alt B
Alt P
Alt Q
Alt C
Alt S
Alt Y
Cycles Register
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
Clear-Window
Ctrl Home
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
C.2
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
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
2.
3.
BFSIZE
RETURN
;
EQU
31
EQU
0DH
Register Usage:
;
;
;
;
;
;
;
;
;
;
;
B
F0
Bank 0
R2
R3
Bank 2
R0
R3
B
DEFSEG BUFBASE,CLASS=XDATA,START=20H
SEG BUFBASE
; External Data Address Space
DS BUFFSIZE
EQU 20H
BFBASE
;
127
;
;
;
;
;
;
; RESET
DEFSEG SINT1,START=SINT,CLASS=CODE
SEG SINT1
JMP SERIAL
; Serial interrupts
DEFSEG TMR0,START=TIMER0,CLASS=CODE
SEG TMR0
JMP T0INT
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
;
;
;
;
;
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
=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
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
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
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
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
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
018F 62 25
299
XRL
300
301 FWREF EQU
302
303
END
=0191'
DATAD,A
Chip=8051
137
1/22/101
-i
-d0
138
-d1
Este o default
-d2
-k
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.
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.
___AVSIM09
___AVSIM48
___AVSIM68
___AVSIM85
___AVSIMZ80
___AVSIM51
Mail to:
AVOCET SYSTEMS, INC.
Post Offise Box 490
Rockport, Maine 04856