; Assembly PIC18 - Versione 0.2 - Agosto 2017 ; Copyright (c) 2016-2017, Vincenzo Villa ; Creative Commons | Attribuzione - Condividi allo stesso modo 4.0 Internazionale (CC BY-SA 4.0) ; Creative Commons | Attribution-Share Alike 4.0 Unported ; http://www.vincenzov.net/tutorial/PIC18/Assembly/esercizi.htm ; Conversione da binario ad ASCII (esempio 6) RADIX DEC ; Usa la base 10 UDATA_ACS digit res 3 ; Risultato della conversione, massimo tre caratteri temp res 1 ; Variabile temporanea inizio CODE 0 movlw 123 ; Il valore da concertire (esempio) ; Cancellazione del risultato clrf digit ; MSB, centinaia, codificato come "unpacked BCD" clrf digit + 1 ; Decine clrf digit + 2 ; LSB, Unità movwf temp ; Calcola le centinaia centinaia movlw 100 cpfslt temp ; Confronta temp con 100 bra sottrai_100 ; Se temp maggiore o uguale a 100 bra decine ; Passa alle decine sottrai_100 incf digit ; Incrementa il numero delle centinaia subwf temp, f ; ... e sottrai 100 dal numero bra centinaia ; Calcola le decine decine movlw 10 cpfslt temp ; Confronta temp con 10 bra sottrai_10 ; Se temp maggiore o uguale a 10 bra unita ; Passa alle unità sottrai_10 incf digit+1 ; Incrementa il digit delle decine subwf temp, f ; ... e sottrai 10 bra decine ; Memorizza le unità unita movf temp, W movwf digit+2 ; Converto in ASCII, sommando 0x30 finito movlw 0x30 addwf digit, f addwf digit+1, f addwf digit+2, f sleep END