Utilizando o simulador para PC

  Está a disposição (freeware) o simulador Z80 Development tool, da Dutch Open University. Baixe-o na página de introdução.

  Digite no prompt do DOS: z80dt
  Ao entrar, pressione ESC.
  Aperte F e em seguida escolha "new editor file".
  Temos a nossa disposição um de editor de textos. Digite o programa abaixo neste editor:

inicio:    ld a,2
                ld b,4
                add a,b
fim:         end

  Tanto faz letra maiúscula ou minúscula!!

  Pressione agora ALT+A. Escolha "assemble editor file". Se tudo estiver legal, o montador dirá que o programa está perfeito.
  Movendo o menu, com as setas ou pressionando ALT+D (debug), escolha a opção "load code into simulator". Pressione ENTER quando perguntar o nome do arquivo .HEX.
  O simulador abre uma janela, contendo dados sobre o programa.



  Na janela maior, estão o endereço da memória em que está armazenado  o código de máquina e a instrucão equivalente.
  O campo Addr corresponde ao endereço de memória ao qual se encontra o primeiro byte da instrução. O campo code é o código de máquina da instrução e Instruction é o mnemônico (nome da operação) da instrução. Como já foi dito anteriormente, cada instrução leva n bytes.
  Repare que após as instruções que consomem mais de 1 byte, o endereço pula n bytes consumidos.
  Todos os números deste simulador são exibidos em hexadecimal. Quando nós programamos no editor, diferenciamos decimais para hexadecimais quando N = decimal e Nh = hexadecimal. Ex: 15 e 15h, para ele o primeiro é em hexa F e o segundo 15.
  A instrução em que a faixa esta sobre (apontada por PC), é a próxima instrução a ser executada. ELA AINDA NÃO FOI EXECUTADA. Recapitulando: PC indica qual o endereço do primeiro byte da próxima instrução a ser executada.
  Lembre-se da lógica digital que 1 byte em hexa varia de 0 a FF.
  Na janela à direita, estão todos os flags do processador. Onde se encontram as letras: SZ H PNC e SZ H PNC' representam os registradores F e F'. Elas são os flags destes registradores.

S = Sinal (é negativo?)
Z = Zero (é zero?)
H = Half Carry (estorou nos 4 primeiros bits?)
P = Paridade (existe um numero par de bits 1?)
N = Indica se a operação foi adição(0) ou subtração(1)
C = Carry (estourou nos 8 primeiros bits?)

  Estes bits só são alterados quando a instrução envolve uma operação aritmética ou lógica!!
  O código do nosso programa ficou: 3E 02 06 04 80. Fica assim na memória:

1800 - 3E
1801 - 02
1802 - 06
1803 - 04
1804 - 80

  O endereço incial do programa pode ser definido por nós. Veremos mais tarde como (nada tem a ver com o defusr do basic).
  Pressione F3. Agora podemos mudar manualmente o valor dos registradores. ESC desiste ou abandona esta edição. Experimente colocar o valor CD em A.

  Saia e pressione F8. F8 executa linha a linha do programa.

  A instrução ld a,2 colocou o valor 2 em A.

  Pressione F8 mais uma vez.

  A instrução ld b,4 colocou o valor 4 em B.

  Pressione F8.

  add a,b faz com que A=A+B. A=4+2 = 6.

  Para voltar ao inicio do programa, pressione F3 e mude o valor de PC para 1800. PC é o registrador que indica qual o local da memória que está a próxima instrução a ser executada (mais não foi executada ainda!).
  Para limpar a memória, aonde o programa foi escrito, pressione F4 e em seguida, clear data, memory.
  Repare que nosso programa está sendo executado passo a passo. Se continuarmos a executar, após executar a última linha do programa, a linha de "lixo" que está abaixo também será executada!! É preciso usar uma instrução que dê jeito nisto, como veremos mais tarde.
  Tendo em mão estas dicas, já é possivel compilar e rodar programas neste simulador!!

  Dúvidas:



CURSOS/ASSEMBLY/AULA4