Você está na página 1de 6

Prof.

Corradi

Assinado de forma digital por Prof. Corradi DN: CN = Prof. Corradi, C = <n, OU = UNICAMP-COTUCA Motivo: Sou o autor deste documento Dados: 2006.07.09 08:15:30 -03'00'

PROF. CORRADI

FORMATO DO PROGRAMA FONTE


As declaraes do programa fonte so constitudas pelos seguintes campos:

<Rtulo> <Operao> <Operando> <Comentrio>


1) Campo do Rtulo:
o primeiro caractere deve ser alfabtico e pode ter no mximo 13 caracteres espao, tab e : so considerados como caracteres finais do Rtulo corresponde ao endereo da instruo opcional para endentao do programa: usar tab antes do prximo campo alinhar o primeiro caractere do Rtulo esquerda

2) Campo da Operao:

contm o mnemnico da instruo ou diretivas do programa, no diferencia entre maisculas e minsculas.

3) Campo do Operando:
especifica o dado a ser operado pela instruo.

4) Campo do Comentrio:
Usado pelo programador para comentar a funo da instruo no contexto do programa. opcional. Sempre comea com ";". Se o comentrio mudar de linha, deve vir precedido de ; .

Exemplo: INIT: mov A,30h ; carrega o acumulador com o dado ; armazenado no endereo 30h. www.corradi.junior.nom.br

TIPOS DE INFORMAES NO CAMPO DO OPERANDO


1. Rtulo - um conjunto de caracteres com valor numrico associado a ele, e geralmente representando um endereo. Pode ter no mximo 13 caracteres, sendo o primeiro obrigatoriamente uma letra . Os demais caracteres podem ser letras, dgitos e ponto. 2. Constante numrica Decimal - o default; o final D opcional. Exemplo: ABC: mov A,#15D ; carrega o registrador A com 15 decimal Hexadecimal - a constante deve ser finalizada com H; quando inicia com uma letra deve ser precedida por 0(zero). Exemplo : Here: mov A, #0BAH ; carrega o registrador A com BAh Octal - deve ser finalizada com Q. Exemplo: La12: mov A,#72Q ; carrega o acumulador com 72 octal Binria - deve ser finalizada com B. Exemplo: dda1: mov A, #11110110B ; carrega o registrador A com F6H Caracteres ASCII - A constante ASCII deve vir entre cotas nicas. Exemplo: M1: mov A, #`E` ; carrega o registrador A com o cdigo ASCII da letra E Contador de posio - o valor corrente do PC pode ser usado em expresses colocando-se um $ na posio desejada da expresso. Exemplo: kk: sjmp kk ; equivalente a kk: sjmp $

www.corradi.junior.nom.br

PSEUDO-INSTRUES OU DIRETIVAS DO ASSEMBLER


As diretivas no geram cdigo de mquina! So utilizadas no programa para complementar as informaes que permitam a montagem efetiva do programa tais como: indicar endereo inicial do programa, reservar rea de dados, definirem equivalncia entre identificadores e valores. A maioria dos Compiladores para o microcontrolador da famlia MCS-51 aceita as seguintes diretivas: Assembly Language Directives BIT - Bit symbol assignment DB - Data Byte directive DEFINE - Define symbol assignment DS - Reserve Data Space in current segment DW -Data Word directive ELSE - ELSE conditional assembly ENDIF - ENDIF conditional assembly ENDMAC - Ends a macro declaration EQU - Equate symbol assignment EXTERN - Declare External symbol IF - IF conditional assembly IFDEF - If Defined conditional assembly IFNDEF - If Not Defined conditional assembly LIBRARY - Library module declaration MACRO - Initiate a macro declaration ORG - Set new assembly address PROGRAM - Program module declaration PUBLIC - Declare symbol as public SET - Variable symbol assignment Principais diretivas: 1) Diretiva ORG define a Origem do programa ORG endereo A diretiva ORG deve ser usada para instruir ao Assembler em qual endereo deve comear a colocar o cdigo do programa compilado. Por default, na ausncia da diretiva ORG, o cdigo do programa comea no endereo 0000h, que o endereo de reset dos microcontroladores da famlia MCS-51. O valor do endereo deve ser uma expresso vlida. Ou seja, o endereo pode ser um valor numrico vlido ou conter uma expresso com contador de posio. Por exemplo: ORG 0 ;inicia o microcontrolador) cdigo do programa no endereo zero (endereo de reset do

ORG 10h ; inicia o cdigo do programa no endereo 10 hexadecimal. ORG $ + 10h ;Inicia o cdigo do programa 10h posies acima do endereo onde est ;localizada a diretiva ORG. O smbolo $ substitudo pelo endereo ;corrente. Se o endereo corrente 0200h, a linha de comando acima faz ;com que o cdigo do programa comece no endereo 0210h.

www.corradi.junior.nom.br

2) Diretiva DB Define Byte

DB databyte1 [ , databyte2, [databyte3... ] ] DB "string1" [, string2 [, string3... ] ] A diretiva DB permite ao programador inserir bytes de dados diretamente no programa na posio de memria corrente. Os valores numricos de 8 Bits so inseridos respeitando-se o seu formato (decimal, hexadecimal, binrio, octal). Se mais de um valor forem inserido eles devem vir separados por vrgula. Caracteres ASCII isolados ou Strings de caracteres ASCII devem estar contidos entre aspas. Obs: Esta diretiva deve ser colocada sempre depois do fim lgico do programa para que os dados inseridos no sejam confundidos com instrues executveis. Exemplo: ORG 0010h DB 05h, 0CFh, "ISTO E UM TESTE", 00H ;esta diretiva insere diretamente a partir da ;posio de memria 0010h os seguintes ;cdigos hexadecimais (05, CF, 49, 53, 54, ;4F,20,45,20,55,4D,20,54,45,53,54,45 ;00) 3) Diretiva DW - Define Word DW dataword1 [ , dataword2, [dataword3... ] ] DW "string1" [. string2 [, string3... ] ] A diretiva DW permite ao programador inserir palavras de dados (2 bytes) diretamente no programa na posio de memria corrente. Os valores numricos de 16 Bits (2 Bytes) so inseridos respeitando-se o seu formato (decimal, hexadecimal, binrio, octal). Se mais de um valor forem inserido eles devem vir separados por vrgula. Se apenas um Byte for inserido o MSB ser adotado como 00. Caracteres ASCII isolados ou Strings de caracteres ASCII devem estar contidos entre aspas. Se apenas um caractere ASCII for inserido, o LSB ser 00. Exemplo: ORG 0100h DW 567Fh, "TESTE", 05H, A ;esta diretiva insere diretamente a partir da ;posio de memria 0100h os seguintes ;cdigos hexadecimais (56, 7F, 54, 45, 53, 54, 45, 00, ;05, 41, 00) Obs: Esta diretiva deve ser colocada sempre depois do fim lgico do programa para que os dados inseridos no sejam confundidos com instrues executveis. 4) Diretiva EQU (=) (Equate) Igual Variable EQU value Variable = value Atribui um valor (value) a uma Varivel (Variable). A diretiva EQU e o sinal = so sinnimos e pode ser usadas para atribuir um valor especfico Varivel. A Varivel s pode receber um nico valor a menos que seja declarada como PUBLIC. O valor pode ser um valor numrico ou uma expresso. Uma vez declarado o valor da varivel este no poder mudar.

www.corradi.junior.nom.br

Exemplo: ORG 0 Controle EQU 10h ; atribui 10h varivel Controle Controle2 = 20h ; atribui 20h varivel Controle2 MOV A, #Controle Obs: Deve ser declarada no programa anteriormente ao uso da Varivel. Uma dica sempre colocar esta diretiva no incio do programa, antes da primeira instruo executvel.

Exemplo de escrita de um Programa Fonte

www.corradi.junior.nom.br

www.corradi.junior.nom.br

Você também pode gostar