View Single Post
Old 10-05-2015, 11:53   #1
ettore1992
Bannato
 
Iscritto dal: May 2015
Messaggi: 4
Aiuto! semplice esercizio in assembler!

Data una sequenza di bit, sapendo che ogni n bit vi è un bit di parità (0 se il numero di bit a 0 fra i precedenti n è pari), verificare se vi sono errori. Sapendo risolvere come calcolare la parità di un vettore di byte quale condizione bisognerebbe aggiungere??
Avendo come input:

#include <stdio.h>

void main()
{
// Input
unsigned char vet[]={4,4,7,2,2,8,100};
unsigned int lung = 55; // lunghezza (numero di bit)
unsigned char n = 4; // numero di bit dati

// Ouput
unsigned char errori=0; // 1 = errori; 0 = no errori

__asm
{
MOV ECX,lung
XOR EDX,EDX
XOR EAX,EAX
CicloA: MOV AL,Vettore[ECX-1]
CicloB: TEST AL,AL
JZ Fine
MOV EBX,EAX
AND EBX,1
ADD EDX,EBX
SHR AL,1
JMP CicloB
Fine: LOOP CicloA
AND EDX,1
MOV Ris,EDX ; Ris è 1 se il numero di bit a uno è dispari, viceversa 0

}

printf("La sequenza di bit % scontiene errori\n",(errori?"":"non "));
}

Ultima modifica di ettore1992 : 10-05-2015 alle 12:01. Motivo: integrazione
ettore1992 è offline