Ir ao conteúdo

Posts recomendados

Postado

Boa tarde!

Estou fazendo um exercício de um curso de eletrônica que estudo, e estou com duas dúvidas, a primeira, é se o que eu fiz na primeira questão está correto, e a segunda dúvida é como proceder na segunda questão... Se alguem puder me dar uma luz, ficarei agradecido.

 

Segue as questões : 1 - Faça um fluxograma que some os valores 130EH e 102AH. Coloque o resultado no registrador A.

                                  2 - Faça um programa em Assembly que coloque o valor 55D no registrador AX.

 

Resposta para a primeira questão anexada.

 

Desde já agradeço!

 

Sem título.png

  • Curtir 1
  • Moderador
Postado

Caro usuário,

 

Seja bem-vindo ao Fórum do Clube do Hardware.

 

No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware.

 

Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício.

 

Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Fórum do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários.. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal.

 

Esperamos que compreenda.

 

Atenciosamente,

Equipe Clube do Hardware

  • Curtir 1
Postado

Mas foi justamente isso que eu fiz, essa resposta é minha, não copiei e colei, pedi apenas para analisar se o que fiz está correto, e qual o passo a passo para a questão 2. Não pedi pra ninguém resolver pra mim.

  • Curtir 1
Postado

@Marcospeix     eu estou querendo aprender sobre programação assembly atual,    já fiz alguns programas em assembler  muitos anos atrás, no processador z80, que era de 8 bits, mas nos atuais processadores não estou sabendo como começar.    você poderia me informar qual programa você está usando para fazer esse programa assembly ? 

  • Curtir 1
Postado

@devair1010 Boa noite amigo, ainda não cheguei a usar o programa, fiz a primeira questão baseado no fluxograma da minha apostila (anexo).Apenas usei as informações da questão pra somar os valores. Gostaria de saber se o que fiz está correto, para proceder para a segunda questão. Abraço!

28081000_1658606187580027_1395531408_o.jpg

  • Curtir 1
Postado

@Marcospeix     para saber se está certo é preciso saber  para qual processador é esse código,  e  qual os comando ele usa, pois diferentes processadores usam instruções diferente .    veja como seria esse seu código se fosse no processador z80  :

endereço  |    instrução
  de      |
memoria   |
16514     |  LD A 102h
16516     |  LD B 130h
16518     |  ADD A,B

e esse outro código para o z80, que desenha uma linha na tela do pc,  :

aqui os registradores são HL   DE   BC  AF

endereços :             :   nome da       :
  de      :             : instrução       :     comentarios
memória   : instrução   :                 :
------------------------------------------------------------------------------------------------------------
16514     :   E5        :  push HL        ;arquiva e salva o valor do registrador HL
16515     :   D5        :  push DE        ;arquiva e salva o valor do registrador DE
16516     :   C5        :  push BC        ;arquiva e salva o valor do registrador BC
16517     :   F5        :  push AF        ;arquiva e salva o valor do registrador AF
16518     :   2A 0C 40  :  LD HL,( 400C ) ;CARREGA HL COM O ENDEREÇO DA TELA
16521     :   11 21 00  :  LD DE,0021     ;CARREGA DE COM O VALOR 33 DECIMAL
16524     :   43        :  LD B,20        ;CARREGA O REGISTRADOR B COM O VALOR 32 DECIMAL
16525     :   23        :  INC HL         ;INCREMENTA O PAR DE REGISTRADORES HL
16526     :   36 80     :  LD ( HL ),80   ;COLOCA O CARACTERE 128 NA POSIÇÃO APONTADA POR HL
16528     :   78        :  LD A,B         ;CARREGA O ACUMULADOR COM O VALOR DE B
16529     :   FE 09     :  CP 0A          ;COMPARA O VALOR DE A COM 10 DECIMAL
16531     :   38 01     :  JR C,01        ;SE FOR MENOR QUE 10 então PULA um BYTE
16533     :   19        :  ADD HL,DE      ;SOMA DE A HL
16534     :   10 F5     :  DJNZ,F5        ;DECREMENTA B, SE NAO FOR ZERO voLtA -10 BYTES
16536     :   F1        :  pop AF         ;recupera o valor do registrador AF o ultimo push será o primeiro pop
16537     :   C1        :  pop BC         ;recupera o valor do registrador BC
16538     :   D1        :  pop DE         ;recupera o valor do registrador DE
16539     :   E1        :  pop HL         ;recupera o valor do registrador HL
16540     :   C9        :  RET            ;RETORNA AO BASIC

 

  • Curtir 1
Postado

O que de fato da pra fazer com assembly moderno? Porque praticamente qualquer coisa que você tentar fazer no Windows, relacionado a gráfico, memoria o próprio te da uma msg dizendo "NÃO!".

 

Alguns compiladores deixam você usar assembly junto do C/C++ (inline assembly), acho que é difícil alguém programar puramente em assembly. Fiz esse exemplo no visual studio.

 

#include <iostream>
using namespace std;

int main() 
{		
	int a, b, c;
	
	cin >> a;
	cin >> b;	

	_asm
	{
		mov eax, a
		add eax, b
		mov c, eax
	};

	cout << c << endl;
	cin.get();
	return 0;
}

 

  • Curtir 2
Postado

@devair1010 Então o enunciado estaria incompleto? O fluxograma que fiz para a primeira questão parece com o primeiro que você fez, quanto a isso, acho que não tem muito mistério... Eu perguntei na sessão de atendimento ao aluno sobre isso, se precisa realmente utilizar um programa para solucionar as duas questões, vou anexar a resposta deles aqui.. Muito obrigado pelo seu tempo!5a86e3e3dd265_Semttulojihn.png.0daf53855cc282ea603159cabcec73eb.png

adicionado 6 minutos depois

@Benjamin Breeg Entendo cara, uma outra pessoa que estava me ajudando também relatou isso, que programar só em assembly é complicado... Mas pelo que eu entendi, é isso mesmo que o enunciado pede, para que use apenas assembly. Obrigado pela ajuda!

  • Curtir 1
Postado

@Marcospeix       creio que o enunciado esteja certo, apenas não informou em qual processador,  e seguindo o código que está na sua apostila, que está na foto postada, seu código está certo e o segundo segue no mesmo formato, e será mais simples pois é apenas um comando, sendo que o valor 55D é igual a 37h .

  • Curtir 1
Postado

@devair1010 A questão não cita, mas na mesma apostila trabalhamos com o Z80, então creio que a questão usa ele também... Seguindo a lógica da primeira questão, fiz o fluxograma da segunda, e se não for incomodar, gostaria de uma avaliação sua, segue anexo. Obs: fiz o fluxograma no paint, vai desculpando a bagunça, é que estou me recuperando de uma cirurgia no ombro, to fazendo tudo com uma mão só :/  Desde já agradeço!KJH.png.198b7517c4339274bc98d03f8bbab57d.png

  • Curtir 1
Postado

@Marcospeix     conforme o fluxograma que está na foto, você precisa colocar apenas um comando, que seria assim :

LD AX, 00D 55D

pois esse é um par de registradores, sendo que o registrador de mais baixa ordem pega o valor menor ou igual a FFh, e esse é o registrador X, sendo que nesse par de registrador o A é o de mais alta ordem, que pega o valor maior que FFh , e se for inserir o código de máquina manualmente , precisa colocar o valor do registrador de baixa ordem primeiro .  porém no Z80 não tem esse par AX , nele tem o par de registradores AF, mas só tem como usar o registrador A, então seria :

LD A, 55D

  No fluxograma que você fez ele está colocando o valor 55D no registrador B e não no AX .

  • Curtir 1
Postado

@devair1010 Realmente, me passei e acabei tomando a primeira questão como base, já corrigi no fluxograma, e surgiu outra dúvida, você disse que seria necessário apenas um comando, então, não é necessário o LOAD e o RESET? fiz de dois jeitos, qual está correto?
Obrigado!

KJH.png

KJHDFGD.png

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...