ASM divisione assembly z80

Stato
Discussione chiusa ad ulteriori risposte.

dante.cpp

Utente Silver
25 Novembre 2011
34
13
0
57
non capisco perché esegue la divisione solo dei numeri minori di 133, sapete perché?

Codice:
;;..ACQUISIZIONE PARAMETRI DA PERIFERICA	;LD C,26h
	;IN A,(C)	
	;LD B,A		;;CARICA IN B IL DIVIDENDO
	;IN A,(C)
	;LD C,A		;;CARICA IN C IL DIVISORE
			;;..FINE ACQUISIZIONE PARAMETRI DA PERIFERICA




	PUSH BC		;;DIVIDENDO E DIVISORE NELLO STACK 								(sp-2)
	
	LD B,0
	LD C,0
	
	CALL SUBDIV	      ;;CHIAMATA ALLA SUBRUTINE 								(sp-2)


;;..........RITORNO ALLO STATO INIZIALE PIU RISULTATI DELLA SUBRUTINE..........................
	LD B,0		
	LD C,0
	
	POP BC		;;																(sp+2)
	LD D,B 		;;RESTO IN D
	LD E,C		;;QUOZIENTE IN E
	POP BC	    ;;DIVIDENDO IN B, DIVISORE IN C									(sp+2)stack vuoto										
	HALT	


;;..............................................................................................
;;.........................SUBRUTINE DIVISIONE..................................
;;..............................................................................


SUBDIV:		;;..ACQUISIZIONE PARAMETRI


	POP IX      ;;IX PUNTA ALL'INDIRIZZO DELLA CHIAMATA ALLA SUBRUTINE 			(sp+2)
	POP BC		;;DIVIDENDO-DIVISORE 											(sp+2) stack vuoto
	PUSH BC     ;;RICARICHIAMO DIVIDENDO E DIVISORE NELLO STACK					(sp-2)
	LD A,B
	LD B,C	
	LD C,0		;;CONTATORE NUMERO DI SOTRAZIONI(RIVELERA IL QUOZIENTE)	
			;;..FINE ACQUISIZIONE PARAMETRI
INIZIO:		


	CP  B
	JP M,FINE
	SUB  B
	INC C
	JR INIZIO


FINE:


	LD B,A		;;CARICA IL RESTO IN C
	PUSH BC		;;IN B C'E IL RESTO, IN C IL QUOZIENTE							(sp-2)
	PUSH IX		;;NELLO STACK L'INDIRIZO DI RITORNO ALLA MAIN PER ESEGUIRE IL RET(sp-2)
	RET


;;...............FINE SUBRUTINE DIVISIONE.......................................
 
putroppo non posso aiutarti in quanto non conosco l'assembly z80, ormai vado solo sul 32 e 64bit. Come risposta utile potrei dirti di utilizzare un debugger per trovare il problema.
Ma più che altro scrivo perchè sono curioso di sapere dove lo utilizzi ancora.
 
L' uso a solo scopo didattico, difatti è ottimo esercizio ricostruire l'hardware interno del microprocessore, basandosi sulle istruzione che esso è in grado di compiere, una sorta di disassemblaggio dell'hardware! Naturalmente la difficoltà di quest' esercizio, è direttamente proporzionale alla complessità dell' architettura presa in esame; ecco la motivazione dello studio di una tecnologia tanto obsoleta!
 
Stato
Discussione chiusa ad ulteriori risposte.