Usando o Macro Assemblador RSC II

  Finalmente vamos usar um montador para o MSX.

  Este tutorial é um breve tutorial sobre o RSCII. Se você deseja um tutorial mais aprofundado sobre o RSCII, clique aqui.

  Devido à necessidade do header (5 bytes que dizem o tipo de arquivo, onde carregar na memória e onde começar) nos arquivos binários de MSX, não podemos compilar nossos programas no simulador z80-dt do PC. O ideal é utilizar esse simulador apenas para observar o comportamento dos programas em Assembly Z80.
  Dessa forma, será utilizado um montador próprio para MSX, o RSC II.

  Antes de começarmos, vejamos algumas diferenças de um desassemblador e um montador.


  Agora, vejamos a estrutura do programa:
 
Numero Etiqueta Instrução Comentário
10
20
30
40
50
Soma: ld a,b
ld c,20
add a,c
ret nz
jr soma
; Carrega A com B
; Carrega C com 20
; Soma A com C
; Retorna se A<>0

  Para o processador só interessa a instrução. A etiqueta serve para orientar o montador quando for inserir as instruções na memória. Já os comentários, quando existentes, só servem para a gente entender o que faz cada linha do programa. O sinal de ponto e vírgula (;) indica que dali até o final da linha não existe nenhuma instrução e sim um comentário.

  Não se preocupe em calcular endereços, pois o montador faz para você.

  Os pseudo-comandos do RSC II:
 
Pseudo Sintaxe Exemplo Função
ORG ORG x1 ORG &hd000 Define endereço para inserir instruções.
DEFB DEFB x1,x2,...,xn DEFB 1,2,&hCD Insere o valor do byte na memória.
DEFM DEFM "<cadeia>" DEFM "Maracana" Insere uma string na memória.
DEFW DEFW x1,x2,...,xn DEFW &hCD00 Insere de dois em dois bytes (word).
DEFS DEFS n DEFS 40 Insere na memória n bytes com o valor 0. é uma reserva.
EQU <nome>:EQU <end> INI: EQU &h00CD Define uma etiqueta com um valor concreto.
END END END Termina o programa.
MAC <nome>:MAC MULTI:MAC Define o inicio de um macro.
ENDM ENDM ENDM Define o final de um macro.
IF IF x1 IF  
ENDI ENDI ENDI  



  Começando a programar

  No disco virtual curso.dsk, está o RSC II. Vá para o Basic, digite: bload"rscii,bin",r

  O visual dele lembra muito o ambiente do Basic do MSX, mas lembre-se que você está no ambiente do RSCII.



  A maneira de programar também lembra o Basic. Dessa forma, digite IN e tecle enter. O comando IN equivale ao AUTO do Basic.

  Nas figuras acima, a imagem do lado esquerdo é o ambiente que iremos programar. A figura do lado direito, apresenta o programa listado.

  Digite o programa acima e grave o fonte. Uma extensão muito utilizada para os fontes em Assembly do MSX é a ".asm".
  Dê CTRL-STOP para sair da digitação do programa e em uma linha vazia digite:

  GT "exe001.asm". Mude o valor de &hc000 para &hd000.

  Se você quiser carregar o programa já pronto, digite: CT "exe001.asm". Digite LT para listar o programa.

  Oa comandos acima são equivalentes do RSII aos comandos de E/S do Basic, como save, load e list.
  O manual do RSC II foi traduzido ao português e se encontra no tutorial aprofundado do RSCII.
  Serão utilizados os comandos mais simples e para maiores detalhes, comsulte o manual.

  Agora, o código fonte apresentado será assemblado (transformado em código de máquina). Para isso, digite EN e tecle enter. Digite a opção 3 e em seguida a opção H (hexadecimal). STOP dá uma pausa na listagem e ESPAÇO continua a listar.

  Assim como o comando list do Basic, o comando LT pode listar uma única linha. Ex: LT 40.

  O programa enfim é tranformado em código de máquina e o assemblador informa se há erros.

  Só podemos salvar o código binário (linguagem de máquina) depois que assemblarmos (EN) o código fonte. Anote os endereços iniciais e finais do programa, para indicar ao comando GB, de gravação binária. Salve usando:
  GB"exe001.bin",end_ini,end_final.

  Os endereços em hexadecimal possuem a mesma sintaxe do Basic, ou seja, vêm com o prefixo "&H". Exemplo: &H20.

  Que tal agora usarmos o simulador do RSCII? Digite SI &hd000.

  Comandos para o simulador:

  E= Executa a linha apontada por PC.
  S= Salta linha atual (não executa) para a próxima instrução.
  M= Permite alterar os registradores. Saia com return.
  O= Altera SP e PC.

  Consulte sobre as demais funções no manual. CTRL-STOP sai do simulador.

  Rode o programa no Basic, através do comando bload"exe001.bin",r.

  Há um programa escrito em Basic equivalente ao programa em Assembly, chamado exe001.bas. Observe a diferença de tempo de execução entre eles.

  Dica: utilize somente o RSC II para testar o funcionamento programa, sem as chamadas de subrotinas da ROM, uma vez que isso poderá travar o RSCII.


CURSOS/ASSEMBLY/AULA7