Você está na página 1de 4

TABELA DISASSEMBLER

Endereo Contedo Rtulo Mnemnico Instruo


0x00000800 0xB500 delay: push {lr}
0x00000802 0x2800 again: cmp r0,#0
0x00000804 0xD001 beq return
0x00000806 0x3801 sub r0,#1
0x00000808 0xE7FB b again
0x0000080a 0xBD00 return: pop {pc}
0x0000080c 0x4B10 main: ldr r3,SIM_SCGC5
0x0000080e 0x681A ldr r2,[r3]
0x00000810 0x2180 movs r1,#128
0x00000812 0x00C9 lsl r1,r1,#3
0x00000814 0x430A orr r2,r1
0x00000816 0x601A str r2,[r3]
0x00000818 0x4B0E ldr r3,PORTB_PCR18
0x0000081a 0x681A ldr r2,[r3]
0x0000081c 0x4910 ldr r1,MUXMASK
0x0000081e 0x400A and r2,r1
0x00000820 0x601A str r2,[r3]
0x00000822 0x4B0C ldr r3,PORTB_PCR18
0x00000824 0x681A ldr r2,[r3]
0x00000826 0x2180 movs r1,#128
0x00000828 0x0049 lsl r1,r1,#1
0x0000082a 0x430A orr r2,r1
0x0000082c 0x601A str r2,[r3]
0x0000082e 0x4B0A ldr r3,GPIOB_PDDR
0x00000830 0x681A ldr r2,[r3]
0x00000832 0x2180 movs r1,#128
0x00000834 0x02C9 lsl r1,r1,#11
0x00000836 0x430A orr r2,r1
0x00000838 0x601A str r2,[r3]
0x0000083a 0x4B08 toggle: ldr r3,GPIOB_PTOR
0x0000083c 0x681A ldr r2,[r3]
0x0000083e 0x2180 movs r1,#128
0x00000840 0x02C9 lsl r1,r1,#11
0x00000842 0x430A orr r2,r1
0x00000844 0x601A str r2,[r3]
0x00000846 0x4807 ldr r0,WAIT
0x00000848 0xF7FF bl delay
0x0000084c 0xE7F5 b toggle
0x00000850 0x40048038 SIM_SCGC5:
0x00000854 0x4004A048 PORTB_PCR18:
0x00000858 0x400FF054 GPIOB_PDDR:
0x0000085C 0x400FF04C GPIOB_PTOR:
0x00000860 0xFFFFF8FF MUXMASK:
0x00000854 5000000 WAIT:
TABELA DE SMBOLOS

Smbolo Valor
delay 0x00000800
again 0x00000802
return 0x0000080a
main 0x0000080c
toggle 0x0000083a
SIM_SCGC5 0x00000850
PORTB_PCR18 0x00000854
GPIOB_PDDR 0x00000858
GPIOB_PTOR 0x0000085C
MUXMAK 0x00000860
WAIT 0x00000854

1. O que so instrues THUMB? Qual o objetivo deste tipo de instruo?


As instrues THUMB so um subconjunto das instrues ARM de 32 bits que so mais
usadas, sendo que as instrues THUMB possuem 16 bits. Essas instrues so usadas
com o objetivo de reduzir o espao de memria necessrio para o carregamento e a
execuo do programa.

2. O que faz a diretiva do montador ".data"?


Essa diretiva tem como funo iniciar uma nova sesso de dados.

3. O que faz a diretiva do montados ".text"?


Essa diretiva tem como funo iniciar uma nova sesso de cdigo.

4. O que faz a diretiva ".word"?


A diretiva .word insere uma lista de valores de palavras de 32 bits como dados para dentro
da
montagem.

5. Preencha as Tabelas do Programa 3. So oferecidos dois templates para as


tabelas. Na pasta Template Tabelas Programa 3 (.docx) encontra-se template
no formato MSWord. Na pasta Template Tabelas Programa 3 (.odt) encontra-se
template no formato LibreOffice. Em cada template h duas tabelas a serem
preenchidas. A primeira tabela "Tabela Disassembler" deve apresentar os
cdigos binrios das instrues e contedo de memria. A segunda tabela
"Tabela de Smbolos" deve apresentar os valores em hexa dos rtulos usados
no programa. Para o preenchimento das tabelas consulte
arm_v6m_reference_manual.pdf, DUI0489C_arm_assembler_reference.pdf,
assembler_intro.pdf e gnu_arm_directives.pdf.

6. Codifique e explique como as 6 instrues da funo "delay" so codificadas


em binrio. Explique tambm o que faz cada instruo.
A instruo cmp r0, #0 est codificada em 001 01 00 00000000, onde os 5 primeiros bits
representam o cdigo da operao, os bits de 10 a 8 o registrador comparado, e o restante
dos bits o valor comparado. Essa instruo compara o valor presente no registrador a um
valor determinado, o imediato.
A instruo sub r0,#1 est codificada em 001 11 000 00000000 , onde os 5 primeiros bits
representam o cdigo da operao, os bits de 10 a 8 o registrador que ter o seu valor
subtrado, e o restante dos bits o valor do imediato que o que se subtrair do valor do
registrador. Essa instruo subtrai do registrador o valor do imediato.
A instruo b again est codificada em 11100 00000001010, onde os 5 primeiros bits
representam o cdigo da operao e o restante dos bits, o valor do imediato que representa
o valor que deve ser somado ao endereo da primeira instruo do programa para se ter a
posio de memria para o qual o programa deve pular, essa instruo pula pra uma
instruo definida.
A instruo b again est codificada em 1011 1 10 0 [PC}, onde os 5 primeiros bits
representam o cdigo da operao e o restante dos bits, o valor da lista de registradores.

7. O que faz a diretiva .align 2? Remova a diretiva ".align" aps a ltima instruo
do programa ("b toogle"). Monte e execute o programa novamente. Qual foi o
resultado desta alterao? Explique. Aps a remoo da diretiva ".align", insira
agora a instruo "nop" aps a instruo "b toogle". Monte e execute o
programa novamente. Qual foi o resultado desta alterao? Explique. Insira
novamente a diretiva ".align" aps a instruo nop. Monte e execute o
programa novamente. Qual foi o resultado desta alterao? Explique.
Essa diretiva alinha o contedo para uma capacidade de 2^2 bytes. Aps a retirada da
diretiva align o programa executou as instrues normalmente, no houve alterao,
programa, pois todas as instrues que vem aps o .align j esto padronizadas em 32 bits.
Com a insero do nop o programa no funciona porque essa instruo ocupa 16 bits e
despadroniza o restante do cdigo. Se adicionarmos novamente o .align o programa volta a
funcionar porque a alocao de memria retorna para 4 bytes, preenchendo o restante do
nop indiferentemente.

8. Codifique em binrio e explique o procedimento de codificao da instruo


"ldr r3,SIM_SCGC5". Explique tambm o que faz a instruo.
A instruo ldr r3,SIM_SCGC5 est codificada em 01001 011 0001 0000, sendo os 5 bits
mais
significativos referentes ao cdigo de operao B (branch), os bits de 8 a 10 so referentes
ao registrador de destino e o restante destinado ao imediato que representa o quanto que
o PC ser incrementado/decrementado. A instruo carrega o registrador de nmero 3, r3
como o registrador SIM_SCGC5, carrega-se SIM_SCGC5 em r3.

9. Codifique em binrio e explique o procedimento de codificao da instruo


"ldr r2,[r3]". Explique tambm o que faz a instruo.
A instruo ldr r2, [r3], que tambm especificada como ldr r2, [r3, #0] est codificada em
011 0 1 00000 011 010, sendo que os 5 bits mais significativos so referentes ao cdigo de
operao, os bits de 10 a 6 so referentes ao imediato que representa o quanto que o PC
ser incrementado/decrementado, os bits 5 a 3 onde se especifica de qual registrador ser
retirada a informao, os bits restantes so referentes ao registrador que receber a
informao. A instruo carrega o contedo do registrador 3 no registrador 2.

10. Codifique em binrio e explique o procedimento de codificao em binrio da


instruo "bl delay". Explique tambm o que faz a instruo.
A instruo bl delay est codificada em 11110 0 0000 0000, sendo os 5 bits mais
significativos referentes ao cdigo de operao B (branch), o bit 10 referente ao termo S e
o restante destinado ao imediato que representa a posio de memria para onde o
programa deve ir. A instruo chama a subrotina delay.

Você também pode gostar