Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
15/07/08 8:14
Misciu87
Data una sequenza di bit, restituire la lunghezza media(arrotondata all'intero più vicino)delle sotto-sequenze di uno

Può andare bene cosi?
Solo che quali registri posso invertire in modo che funzioni lo stesso senza che però siano uguali?
#include <stdio.h> 
#include <stdlib.h>



int main() 
{

	//input
	unsigned char vet[]= {0xBC,0xFF,0x01};
	unsigned short int len = 18; //lunghezza (numero di bit)
	//Output
	unsigned char lung;

	__asm
{
		XOR AL, AL			
				XOR BL, BL    	
				XOR CL, CL         
				XOR EDX, EDX		
				XOR ESI, ESI
				MOV DX, len
				MOV EDI, EDX			
				XOR EDX,EDX
				XOR DI,DI
				MOV DI,8
				
	            MOV AH, vet[ESI]	
partenza:			CMP DX, len		
				JE calcola
				CMP DX, DI          
				JNE	verifica		
				ADD DI,8
				INC ESI
				MOV AH, vet[ESI]    
verifica:		MOV BH, AH
				AND BH, 00000001b	
				CMP BH, 00000001b	
				JE incremento
				MOV CL, 0			
				JMP cambia			
incremento:		INC BL
				CMP CL, 0
				JNE cambia			
				INC AL				
				MOV CL, 1
cambia:			SHR AH, 1			
				INC DX				
				JMP partenza			
operazione:		CMP BL,0
				JE fine
				XOR DX,DX
				XOR AH,AH
				MOV DL,AL
				MOV AL,BL
				DIV DL
resto:
				CMP AH,0
				JE modifica
				MOV CL,DL
				MOV CH,BL
				AND CL,00000001
				AND CH,00000001
 				XOR BX,BX
				MOV BL,AL
				CMP BL,0
				JE fine
				MOV BH,AH
				XOR AH,AH
				MOV AL,DL
				MOV DL,2
				DIV DL
				CMP BH,AL
				JA pari
				JE dispari
				JMP fine
				
				
dispari:
				CMP CL,0
				JE zero
				AND CL,CH
				CMP CL,0
				JE fine
				JMP diversi
diversi:
				CMP AL,0
				JE fine
pari:

				INC BL
				JMP fine
zero:
				AND CL,CH
				CMP CH,0
				JE verificazero
				JMP diversi
verificazero:
				CMP BH,AL
				JE pari
fine:
				MOV lung, BL
				JMP ultimo
modifica:       
				MOV BL,AL
				JMP fine
ultimo:
	}
	//Stampa a video
	printf("Lunghezza media delle sotto-sequenze di 1: %d", lung);
	system("PAUSE");
	return 0;
}
Ultima modifica effettuata da Misciu87 15/07/08 8:16
aaa
15/07/08 9:28
lorenzo
Non capisco...
cosa intendi per 'invertire i registri'????:-|
aaa
15/07/08 9:59
Misciu87
cioè AL,AX ecc con cosa lo posso cambiare in modo che funzioni lo stesso, perche non deve essere uguale a quello..
aaa
15/07/08 21:26
gantonio
Cioe' ... quello e' il sorgente di un tuo amico e tu vuoi presentare lo stesso cambiando qualcosa e sperando che il professore NON si accorga che e' lo stesso codice ...

Illuso ... chi sa leggere il codice, lo capisce al volo ... quindi, o lo fai diversamente oppure e' inutile ... 8-|
aaa
16/07/08 13:12
lorenzo
Concordo con gantonio...

Inoltre è meglio che provi a fartelo tu il programma, altrimenti a cosa ti serve??
Ultima modifica effettuata da lorenzo 16/07/08 13:12
aaa
16/07/08 14:52
Misciu87
ho gia risolto!
aaa
16/07/08 16:59
gantonio
Postato originariamente da Misciu87:

ho gia risolto!


Bene! Ri-adios!
aaa