Buscar

Em um sistema de automação para estacionamentos, deseja-se apresentar o número de vagas livres em um espaço que apresenta 16 vagas. Para isso, util...

Em um sistema de automação para estacionamentos, deseja-se apresentar o número de vagas livres em um espaço que apresenta 16 vagas. Para isso, utilizam-se sensores óticos que, quando a vaga está ocupada, demonstram nível lógico baixo e, quando a vaga está livre, nível lógico 1. Os dados desses sensores são passados de forma serial para o microprocessador Intel 8086 e armazenados em um registrador de 16 bits, nomeado NÚMERO.

Escreva um código em assembly que trate esse registrador de 16 bits e apresente o número de vagas livres em um registrador nomeado RESULT.


💡 1 Resposta

User badge image

Ed Verified user icon

Segue abaixo um exemplo de código em assembly que pode ser utilizado para resolver o problema descrito: ``` MOV AX, NÚMERO ; move o valor do registrador NÚMERO para o registrador AX NOT AX ; inverte todos os bits do registrador AX MOV BX, 0000h ; move o valor 0000h para o registrador BX MOV CX, 0000h ; move o valor 0000h para o registrador CX MOV DX, 0000h ; move o valor 0000h para o registrador DX MOV SI, 0001h ; move o valor 0001h para o registrador SI MOV DI, 0000h ; move o valor 0000h para o registrador DI LOOP1: ADD CX, SI ; adiciona o valor de SI ao registrador CX SHL SI, 1 ; desloca todos os bits do registrador SI uma posição para a esquerda CMP SI, 10000b ; compara o valor de SI com 10000b JBE LOOP1 ; se SI for menor ou igual a 10000b, volta para LOOP1 LOOP2: CMP AX, BX ; compara o valor de AX com o valor de BX JB LOOP3 ; se AX for menor que BX, vai para LOOP3 ADD DI, 1 ; adiciona 1 ao valor do registrador DI ADD BX, SI ; adiciona o valor de SI ao registrador BX JMP LOOP2 ; volta para LOOP2 LOOP3: MOV RESULT, DI ; move o valor do registrador DI para o registrador RESULT ``` Esse código utiliza a operação NOT para inverter todos os bits do registrador AX, de forma que os bits que representam as vagas livres fiquem com valor 1. Em seguida, utiliza um loop para somar os valores das posições binárias dos bits que estão com valor 1, armazenando o resultado no registrador DI. Por fim, o valor do registrador DI é movido para o registrador RESULT.

0
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta

User badge image

Outros materiais

Outros materiais