#Preciso fazer um programa .asm (Assembly) que verifique uma senha de no mínimo 3 digitados a partir de um teclado
#Deixei em anexo o enunciado do trabalho
.data
i:0
rx:0
tx:1
x:0
y:0
z:0
pariedade:0
vpariedade:0
erro_rx:0
.text
ld tx
sto $out_port
jmp main
// 8 bits (1byte)
ver_pariedade: ld x
srl 0
andi 1
sto vparidade
ld x
srl 1
andi 1
xor vpariedade
sto vpariedade
ld x
srl 2
andi 1
xor vpariedade
sto vpariedade
ld x
srl 3
andi 1
xor vpariedade
sto vpariedade
ld x
srl 4
andi 1
xor vpariedade
sto vpariedade
ld x
srl 5
andi 1
xor vpariedade
sto vpariedade
ld x
srl 6
andi 1
xor vpariedade
sto vpariedade
ld x
srl 7
andi 1
xor vpariedade
sto vpariedade
return
espera_tempo: ldi 0
sto i
while_e_t: subi 130
bge fim_e_t
ld i
addi 1
sto i
jmp while_e_t
fim_e_t: return
//escrevo aqui a senha
recebe_byte: call espera_tempo
ld $in_port
subi 0
subi 0
bne recebe_byte
ld $in_port
sto pariedade
ld rx
sto x
call ver_pariedade
ld vpariedade
sub pariedade
beq sem_erro
ldi 1
sto erro_rx
sem_erro: return
transmite_byte: ld tx
sto x
call ver_pariedade
ldi 0
call espera_tempo
ld tx
srl 0
and 1
sto sto $out_port
ld tx
srl 1
and 1
sto sto $out_port
ld tx
srl 2
and 1
sto sto $out_port
ld tx
srl 3
and 1
sto sto $out_port
ld tx
srl 4
and 1
sto sto $out_port
ld tx
srl 5
and 1
sto sto $out_port
ld tx
srl 6
and 1
sto sto $out_port
ld tx
srl 7
and 1
sto sto $out_port
call espera_tempo
ld vpariedade
srl 0
and 1
sto $out_port
call espera_tempo
ldi 1
sto $out_port
return
main: call recebe_byte
ld erro_rx
subi 0
bne erro_fim
ld rx
sto tx
call transmite_byte
erro_fim: hlt
trabalho grau b.pdf