Assembly Diretrizes

  • View
    116

  • Download
    0

Embed Size (px)

Text of Assembly Diretrizes

Estrutura do programa e programaoAssembly com 8051

O que entende por linguagem assembly?i. Apresenta um nvel de abstraco intermdia entre os dois extremos: linguagem mquina e linguagem alto-nvel

ii. Facilita a programao pela substituio do cdigo binrio da linguagem mquina com smbolos Escrita usando labels(etiquetas), mnemnicas, e.t.c. Um programa em assembly no executvel Todos os smbolos tais como mnemnicas, etiquetas devem ser traduzidos para cdigo binrioMicroprocessadores Prof. Adriano (DEI-Universidade do Minho)

Estrutura do programa e programaoAssembly com 8051

Como que se processa a traduo de um programa assembly para programa mquina ?Dependendo da complexidade do ambiente de programao pode envolver vrias etapas at a produo do cdigo executvel i. Assemblera. b. Traduz um programa em assembly para programa em linguagem mquina (cdigo objecto) O cdigo objecto pode estar na forma absoluta ou forma relocatable

ii. Linkera. b. Combina vrios programas objectos na forma relocatable, produzindo um programa executvel atravs da atribuio de endereos absolutos Produz tambm um ficheiro contendo o mapa de memria e tabela de smbolosMicroprocessadores Prof. Adriano (DEI-Universidade do Minho)

Estrutura do programa e programaoAssembly com 8051

O que acontece ao invocar o assembler a partir da linha de comando ?Sintaxe: ASM51 ficheiro fonte [controlos do assembler] Exemplo: ASM51 echo.srcPasso 1 (Tabela de smbolos)1. 2. (LC) =0 / ORG (LC) += length(inst) ou (LC) += length(DB/DW/DS)

LC = Location CounterUsado pelo assembler como endereo da instruo ou valor da label

ASM51

3.

SymT[...] = ( label,(LC) ) ou SymT[...] = ( symbol,(EQU) ) Echo.lst

Programa.src (echo.src)

Programa.lstPasso 21. 2. Mnemnica opcode Determinao dos operandos Todos os smbolos so substitudos pelo valor na tabela de smbolos Microprocessadores Prof. Adriano (DEI-Universidade do Minho) Echo.obj

Programa.obj

Estrutura do programa e programaoAssembly com 8051

Contador de localizao (Location Counter) O assembler possui um contador de localizao para cada um dos cincos segmentos1. 2. 3. 4. 5. CODE DATA IDATA BIT XDATA (0000h - FFFFH) (00H FFH)/(00H 7FH) (00H FFH)/(00H 7FH) (00H FFH)/(20H 2FH) (0000H FFFFH) (0000h) (30h) (80h) (00h) (0000h)

Cada contador de localizao inicializado com o valor zero e pode posteriormente ser alterado usando as directivas para o assembler O smbolo $ pode ser usado para especificar o valor do contador de localizao do segmento activo:TABLE: LEN DB EQU 1,2,3,4,5,6,7,8,9 $-TABLEMicroprocessadores Prof. Adriano (DEI-Universidade do Minho)

Estrutura do programa e programaoAssembly com 8051

Ficheiro .lst e tabela de smbolosControlos do assemblerInforma ao ASM51 que as subrotinas foram definidas noutro mdulo

A resolver pelo linker ( assembler desconhece 0 endereo do segmento relocatable)

Identifica o fim de um programa assemblerOpcode das instrues

Pertencem a outros mdulos, e por isso s o linker pode determinar o endereo absoluto

Porqu opcode = 80H (SJMP) e no 02H (LJMP) ou (AJMP)?Microprocessadores Prof. Adriano (DEI-Universidade do Minho)

Estrutura do programa e programaoAssembly com 8051

Saltos e chamadas genricasASM51 permite o uso de mnemnicas genricas JMP ou CALL em vez de SJMP, AJMP, LJMP ou ACALL, LCALL A converso da mnemnica genrica para instruo real segue a seguinte regra:1. JMP substitudo por SJMP se no for usada forward reference e o destino do salto estiver na gama de 128 localizaesforward reference:uso de um smbolo antes da respectiva definio

2.

JMP/CALL substitudo por AJMP/ACALL se no for usada forward reference e a instruo que segue JMP/CALL pertencer mesma pgina de 2K que a instruo destino Caso contrrio, ser usado a converso para LJMP/LCALL

3.r)

Resposta pergunta do slide anterior: sendo o salto para trs com deslocamento (offset) inferior a 128 bytes, aplica-se a condio 1Microprocessadores Prof. Adriano (DEI-Universidade do Minho)

Estrutura do programa e programaoAssembly com 8051

Ficheiro .lst e tabela de smbolosTorna as subrotinas visveis a outros mdulos

Microprocessadores

Prof. Adriano (DEI-Universidade do Minho)

Estrutura do programa e programaoAssembly com 8051

Ficheiro .lst e tabela de smbolos (cont.)

Reserva espao para 40 caracteres

Microprocessadores

Prof. Adriano (DEI-Universidade do Minho)

Estrutura do programa e programaoAssembly com 8051

Qual a principal diferena entre um ficheiro objecto absoluto e um relocatable?1. O ficheiro objecto absoluto contm apenas bytes binrios (00H FFh) de um programa em linguagem mquina

2. Um ficheiro relocatable contm ainda uma tabela de smbolos e outras informaes necessrias para que o linker possa produzir o programa executvel

Microprocessadores

Prof. Adriano (DEI-Universidade do Minho)

Estrutura do programa e programaoAssembly com 8051

Qual a sintaxe de invocao do linker?RL51 lista_de_relocatable [ficheiro_destino] [controlos_de_localizao]

Exemplo:Pg. 164: errado

RL51 ECHO.obj, IO.obj TO EXAMPLE & CODE(EPROM(8000H)) DATA(ONCHIP(30) )1. 2. 3. Ficheiros relocatable: echo.obj, io.obj Programa executvel: example Os mdulos apresentam dois segmentos relocatable EPROM para cdigo localizado em 8000H e ONCHIP para dados localizado a partir de 30H

Microprocessadores

Prof. Adriano (DEI-Universidade do Minho)

Estrutura do programa e programaoAssembly com 8051

Exemplo de ficheiro .Map criado pelo LinkerDiga como apareceria no ficheiro executvel a codificao da instruo CALL INIT, invocada no mdulo MAIN?

1.

Do ficheiro echo.lst, linha 14 obtmse o opcode da instruo como sendo 12H Da tabela de smbolos do ficheiro example.M51 obtm-se o endereo absoluto de INIT como sendo 8024H Sendo CALL de 3 bytes (porqu?) a respectiva codificao seria 12 8024h

Esta tabela de smbolos aparece no ficheiro .M51 porque os ficheiros .src comeam com a directiva $DEBUG

2.

3.

Microprocessadores

Prof. Adriano (DEI-Universidade do Minho)

Estrutura do programa e programaoAssembly com 8051

Qual o formato da linguagem assembly?1. Um programa assembly contm os seguintes elementos:1. 2. 3. 4. Instrues mquina Directivas para o assembler Controlos do assembler Comentrios

2. O formato genrico para cada linha o seguinte:1.2. 3. 4. 5.

[ smbolo ] mnemnica [operando] [,operando] [...] [;comentrio]A mnemnica pode ser uma instruo ou uma directiva para o assembler O operando contm o endereo ou dado usado pela instruo O primeiro caractere de um smbolo deve ser sempre uma letra, ?, ou _ que ser seguida por letras, dgitos, ?, _. Pode conter no mximo 31/256? caracteres Uma etiqueta (label) um smbolo que termina obrigatoriamente com o caractere :.Microprocessadores Prof. Adriano (DEI-Universidade do Minho)

Estrutura do programa e programaoAssembly com 8051

Exemplo de smbolosPAR START: Mensagem: VAR: BitVar: Start: DATA LOW ALPHA# ?_?_? 1st_var MOD TITLE MOV EQU MOV DB DS DBIT JMP EQU CODE DW DBIT DS DW SEGMENT IDATA 500 A, #0FFH Help 10 16 THERE 100 80H 00FFh 12 3 19 Smbolo Etiqueta Etiqueta Etiqueta Etiqueta etiqueta legal legal legal legal legal ilegal /duplicado ilegal/directiva assembly ilegal / operador do assembly contm caractere ilegal legal 1 caractere ilegal ilegal / operador do assembler ilegal / controlo do assembler ilegal /instruo assembly

Microprocessadores

Prof. Adriano (DEI-Universidade do Minho)

Estrutura do programa e programaoAssembly com 8051

Caractersticas dos dados imediatos Todos os dados imediatos com excepo do MOV DPTR, #dado, requerem constantes de 8-bit No entanto, os dados imediatos so tratados como constantes de 16-bit e posteriormente usado apenas o LSBNeste caso todos os bits do MSB devem ser iguaisCONSTANTE EQU MOV ORL MOV MOV MOV MOV 100 A, #0FEH 40H, #CONSTANTE A, #0FF00H A, #00D8H A, 0FE00H A, #01FFH legal legal legal legal ilegal ilegal

Microprocessadores

Prof. Adriano (DEI-Universidade do Minho)

Estrutura do programa e programaoAssembly com 8051

Como especificar o endereo de um bit numa instruo?ONExplicitamente pelo endereo

EQU 0E7H 99H, $ ACC.7 224.ON 0E0H.7 TI, $ C

7

SETB JNB SETB SETB SETB JNB CLR

Usando o operador .

Usando um smbolo pr-definido

Microprocessadores

Prof. Adriano (DEI-Universidade do Minho)

Estrutura do programa e programaoAssembly com 8051

Bases nmericasDecimal Binrio Octal MOV MOV MOV A, #15 A, #15D #1111B A, #17Q A, #17O A, #0FH A, #0A5H A, #A5H?Microprocessadores

MOV MOV Hexadecimal MOV MOV MOV

Para diferenciar um dado hexadecimal imediato de um smbolo

Prof. Adriano (DEI-Universidade do Minho)

Estrutura do programa e programaoAssembly com 8051

Cadeias de caractereMOVASPAS

A, #m 8051 A, #Q, AGUARDE A, #0 DPTR, #AB DPTR, #4142H

carrega A com 06Dh, valor do ASCII m Define ASPAS como sendo 22h Armazenar na memria de cdigo 8, 0, 5,1 Fica a espera que (A) seja do caractere Q Converte dgito ASCII para dgito binrio Ambas as instrues carregam o DPTR com a cadeia de caractere AB

EQU DB

AGUARDE:

CJNE SUBB MOV MOV

Microprocessadores

Prof. Adriano (DEI-Universidade do Minho)

Estrutura do programa e programaoAssembly com 8051

Operadores de expresso

Smbolo do Operador+, -, /, * MOD

OperaoAdio, subtraco Diviso, multiplicao Resto da diviso Ou-lgico E-lgico Ou-exclusivo Complemento Rodar direita Rodar esquerda Obter o MSB Obter o LSB Igual a Diferente Menor que Menor ou igual Maior que Maior ou igual