Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

filip_e

A linguagem Assembly

Mensagens Recomendadas

Deus

Boas, tenho um grande problema em mão.

Alguém que me ajude? Em causa esta a programação de um 8051 em assembly.

Obrigado

Boa tarde...

Qual é exactamente o teu problema?

Nos estamos aqui para ajudar, mas atenção que ajudar é diferente de dar codigo...


Linguagens: C / Java / Prolog / Assembly / HTMLA aprender: Java

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pedrol_19

O problema é, tenho que fazer como trabalho de escola, uma maqueta, e decidi fazer uma rotunda, tipo a AEP (porto) que tem semáforos que são controlados unicamente por botões, ou seja , cada vez que o botão é carregado , começa a rotina normal.(de todos os semáforos)

Mas a maqueta tem 4 entradas para a rotunda, ou seja vou ter que controlar os quatro conjuntos de semáforos, é possível, usando apenas um 8051 , fazer o controlo dos 4 conjuntos, para que a cada vez que eu premisse, o botão , ele fazer 2 rotinas em simultâneo, sem condicionar todas as outras?

Obrigado pela resposta.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Deus

No 8051 tens 4 portos, logo podes dedicar um para cada semaforo...

Se o teu projecto consiste em acender apenas uns leds não se justifica gastar tantos recursos...

Como vais fazer o controlo? Por PC?


Linguagens: C / Java / Prolog / Assembly / HTMLA aprender: Java

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pedrol_19

Vou descarregar o programa , do PC , para o 8051. e depois ele funciona sozinho.

A questão é.  Se eu premir o botão dos peões1, ele vai fazer uma rotina , mas se eu antes dessa acabar carregar no botão de peões2 , ele vai ter de acabar uma , para continuar a outra, independentemente dos portos a que está ligado,

Eu gostava de saber se em termos de código é possível ultrapassar esta situação.

Obrigado Deus.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Deus

Podes, neste caso tens de criar um sistemas de interrupções que case estejas no modo peões1 e detecte o modo peões2 e salte para esse modo, após a execução dessa rotina deve voltar ao ponto anterior...

Se ambos os modos são interrupções vais ter de definir prioridades entre os dois de modo a um sobrepor-se ao outro...


Linguagens: C / Java / Prolog / Assembly / HTMLA aprender: Java

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pedrol_19

O problema é que se activar os 4 , aquilo irá demorar muito tempo a fazer todos , o que fica diferente da realidade.

é impossível correr duas rotinas diferentes de modo instantâneo?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Deus

O problema é que se activar os 4 , aquilo irá demorar muito tempo a fazer todos , o que fica diferente da realidade.

é impossível correr duas rotinas diferentes de modo instantâneo?

Tu não podes correr as duas em simultâneo, tens de definir prioridades...

Se esta verde para os automoveis mas um peão carrega no botão para passar automaticamente existe uma interrupção que coloca o semaforo a vermelho para o peão poder passar...


Linguagens: C / Java / Prolog / Assembly / HTMLA aprender: Java

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pedrol_19

Pois, mas imagina que sao varios pioes? enquanto decorre uma interrupçao, se um piao carrega, fica armazenado, mas so faz depois, ou seja se os quatro forem carregados ao mesmo tempo , o ultimo, iria esperar muito tempo.

Não é possivel fazer como na realidade?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Deus

Se calhar não estou a ver direito o problema, mas se 4 peões querem passar na passadeira apenas um precisa de carregar...

Ao ficar verde para um fica para os outros 3 também...


Linguagens: C / Java / Prolog / Assembly / HTMLA aprender: Java

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pedrol_19

O problema , é que tenho de sintonizar conjuntos de semáforos,  imagina uma rotunda, com 4 estradas , tenho que colocar , semáforos  nas 4 estradas,  , e os quatro piões, estava cada um numa estrada diferente

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
fitipaldifr

ola pessoal

preciso da vossa ajuda, nunca programei em assembley e ja vi Mil videos no youtube e fiquei na mesma.

O meu problema é o seguinte preciso de saber qual o programa que preciso para programar, saquei um tasm e um editor asm net IDE mas nao sei o que fazer, tenho Win 7 64 bits e preciso de saber qual o software que preciso para programar e onde programar para aparecer as mensagem na linha de comando???????????

será que me podem ajudar ???

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
diiogofernandes

Boa noite,

Surgiu me uma dúvida e de certeza que alguém aqui sabe, quando eu faço

mov es:[si], al

estou a colocar na posição de memória o valor de al certo? e quando faço mov si, es:[di] estou a colocar a posição de memória em si ou o valor dessa posição de memória? Não sei se me fiz entender e até pode ser estúpida a minha dúvida.....

Desde já obrigado pela ajuda.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
aalmeid

Boas pessoal, recentemente dei de caras com assembly numa parte final de uma cadeira para a faculdade e o problema é que tenho tido azar, pois ainda não tive praticamente aula nenhuma de assembly prática e tenho teste daqui a uns 5 dias...Basicamente iamos atrasados na matéria, e com o prof tb a ter de faltar atrapalhou bastante a coisa...Alguém me pode arranjar um bom tutorial? andei a fazer pesquisa aqui no forum e até mesmo no google e não encontrei nada que fosse muito relativo...Embora ande a olhar para as aulas e tentar perceber, isto não é assim tão claro e há certas coisas que passam ao lado.

alguém pode disponibilizar, se conhecer claro, links para bons tutoriais?

cumps e obrigado :P

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rui Carlos

Boas pessoal, recentemente dei de caras com assembly numa parte final de uma cadeira para a faculdade e o problema é que tenho tido azar, pois ainda não tive praticamente aula nenhuma de assembly prática e tenho teste daqui a uns 5 dias...Basicamente iamos atrasados na matéria, e com o prof tb a ter de faltar atrapalhou bastante a coisa...Alguém me pode arranjar um bom tutorial? andei a fazer pesquisa aqui no forum e até mesmo no google e não encontrei nada que fosse muito relativo...Embora ande a olhar para as aulas e tentar perceber, isto não é assim tão claro e há certas coisas que passam ao lado.

alguém pode disponibilizar, se conhecer claro, links para bons tutoriais?

cumps e obrigado :thumbsup:

Há um tutorial no tópico inicial :D

Atenção que não há um assembly, tens várias variantes. Por isso dava jeito indicar qual. Adicionalmente, também é difícil recomendar um tutorial pois tudo depende daquilo que é avaliado no teste.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Ernani

Não Tenho Experiências Com Assembly e Esse Tópico Tirou Algumas Dúvidas Minhas :thumbsup:

E Tenho Certeza Que Ajudará Outros Membros!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
LuisMendes330

Alguém me consegue explicar porque existe diferentes tipos de assembly?Assembly do processador 8085, do Pentium, do AMD K6 e do Motorola...etc.

Eu tou a começar agora a aprender esta linguagem e estou a usar o QtSpim e o MIPSter.Que tipo de assembly é este que tou a aprender?

Obgd

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Alguém me consegue explicar porque existe diferentes tipos de assembly?Assembly do processador 8085, do Pentium, do AMD K6 e do Motorola...etc.

Assembly é uma linguagem em que tu dás ordens directas ao processador. Para usares Assembly deverás saber como funciona o processador. E existem vários Assembly's porque cada processador tem uma arquitectura diferente do outro, e essa arquitectura reflecte-se na maneira de processar dados, logo a linguagem também irá sofrer algumas diferenças, não em sintaxe mas nas ordens dadas ao processador.

Se quiseres somar dois valores não podes simplesmente fazer "num1 + num2". Tens de ordenar explicitamente as várias tarefas, sejam elas guardar cada número num registo ou "mover" o resultado para o monitor. E, para cada processador, o modo como isto ocorre pode ser bem diferente.

Editado por thoga31

Knowledge is free!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo
Eu tou a começar agora a aprender esta linguagem e estou a usar o QtSpim e o MIPSter.Que tipo de assembly é este que tou a aprender?

MIPS assembly (para a arquitectura MIPS).

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Julio Cesar

Muito bom o tópico!!!

Aproveito para tirar uma dúvida/pedir uma ajuda para vcs: O microprocessador 8085 nã possui os comandos diretos de MUL (multiplicação) e DIV (divisão). Para multiplicar ele utiliza deslocamentos e somas sucessivas e para dividir, deslocamentos, soma e complemento de 2. Esses seriam os passos/métodos para se calcular a multiplicação/divisão de 2 números em ponto fixo, correto?. A minha dúvida é: se eu quisesse calcular a multiplicação e divisão de 2 números em ponto flutuante em chips que não possuem as instruções MUL e DIV, quais seriam os passos/métodos a seguir?

Se alguém puder ajudar/comentar/orientar eu agradeceria!

Editado por Julio Cesar

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

E qual é a linguagem Assembly(dialecto?) mais usado?E qual o que vai ser mais usado no futuro?

Em Assembly, esta é uma pergunta sem grande sentido. Volto a dizer, tudo depende do processador para o qual programas. Se vais procurar uma resposta a essa questão, numa questão de pouco tempo estarás desactualizado. Há poucos anos eram os 32 bits que rolavam, agora é cada vez mais os 64 bits, e qualquer dia serão os 128 bits, só para citar um exemplo da evolução. A tecnologia não pára, e especialmente quem programa em Assembly não pode mesmo limitar os seus horizontes.

Editado por thoga31

Knowledge is free!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
apocsantos

Boa tarde,

Antes dos 32 bits e dos 64 bits eram os 16 bits. Antes disso já se programava Assembly para arquitectura 8080 de 8 bits. Isto apenas a falar em arquitecturas CISC. Se fores pensar em programar Assembly pensa que também existem as RISC e as baseadas em ARM estão cada vez mais populares. O "instruction set" para ARM é diferente do de x86.

Dá uma vista por aqui:

http://www.heyrick.co.uk/assembler/

http://infocenter.arm.com/help/topic/com.arm.doc.qrc0001l/QRC0001_UAL.pdf

Penso que dê para ficares com uma ideia mais correcta e abrangente. Assembly é mesmo muito baixo nível.

Cordiais cumprimentos,

Apocsantos

  • Voto 1

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.