Rafael Faria 0 Posted October 2, 2017 Report Share Posted October 2, 2017 Olá, tenho de resolver dois exercícios de assembly, mas não percebo nada. Ainda só tive uma aula e foi teórica. Se alguém me pudesse ajudar: escreva um programa em ASM P3 (ou altere o programa anterior) que tenha numa variável em memória o lado de um quadrado e calcule o respetivo perímetro e área, colocando o resultado em R1 e R2, respetivamente. escreva um programa em ASM P3 que calcule: x = 20 – m + (n + 40). Onde x, m e n são registos do processador P3 (por exemplo, R1, R2, e R3). Link to post Share on other sites
Boflawok 0 Posted July 2, 2018 Report Share Posted July 2, 2018 (edited) Eu nunca utilizai ASM P3, mas encontrei um documento útil. Primeiro programa: Para calcular o perímetro de um quadrado, deve-se multiplicar o comprimento do lado deste por 4. Para calcular a área de um quadrado, deve-se multiplicar o comprimento do lado deste por si próprio. Sabendo isto, vamos-nos focar em calcular o perímetro. Os passos para esta possível solução são: 1) Ter o comprimento do lado do quadrado em memória(podemos utilizar a pseudo-instrução WORD para isto: ComprimentoLadoQuadrado WORD 5 ). 2) Mover o comprimento do quadrado para R2 e mover 4 para R1(podemos utilizar a instrução MOV para isto: MOV R2, M[ComprimentoLadoQuadrado] MOV R1, 4 (ComprimentoLadoQuadrado é o endereço do comprimento do lado do quadrado, enquanto M[ComprimentoLadoQuadrado] é o que está quardado lá(o comprimento do lado do quadrado).).). 3) Multiplicar R1 por R2 (ou seja, multiplicar o comprimento do lado do quadrado por 4) (podemos utilizar a instrução MUL para isto: MUL R2, R1 (o resultado é guardado em R1 e R2, sendo que R2 tem os bits mais significantes e R1 os menos significantes(vamos só utilizar o conteúdo de R1. Se o comprimento for grande demais, o nosso programa vai dar um resultado errado.).).). Agora que temos o perímetro do quadrado em R1, vamos calcular a área do quadrado: 1) Mover o comprimento do quadrado para R2 e R3( MOV R2, M[ComprimentoLadoQuadrado] MOV R3, R2 ). 2) Multiplicar R2 por R3(ou seja, calcular o Comprimento do Lado do Quadrado ao quadrado)( MUL R3, R2 ). Agora temos o perímetro do quadrado em R1 e a área do quadrado em R2 (R3 não interessa aqui.)! Segundo programa: Aqui podes utilizar as instruções já referidas anteriormente e as instruções ADD e SUB. ADD recebe dois operadores e somas os e guarda os no primeiro operador(este obviamente não pode ser endereçado de forma imediata.). SUB faz a mesma coisa só que subtrai em vez de adicionar. Eu penso que lendo a solução do primeiro programa já te permite escrever o segundo programa. Se isso não for o caso, diga. Nota: Eu posso estar completamente errado acerca o que eu disse. Edited July 2, 2018 by Boflawok Esqueci-me de mudar a língua em alguns blocos de código. Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now