Přepsání asm starého mcu do modernějšího

Ahoj
spolužák ze třídy si jako maturitní výrobek vyhlédl lab. zdroj řízený mcu pomocí PWM. Jenomže je tam použit starý mikráč a program je ještě v asm. Byl by velkej problém pro někoho, kdo umí v asm to přepsat pro modernější procesor?


;********************************************************************************
;*   Program SIRZDR24.ASM                                                       *
;*Program nam riadi, mení výstupné napätie stabilizovaného zdroja na princípe   *
;*šírkovej modulácie ( PWM ). Pre riadenie boô využitý mikrokontroler AT90S2313 *
;*fi ATMEL. Riadenie je realizované pomocou štiroch tlačitiek. Dva tlačitka nam *
;*umožňujú meniť, zvečšovať  a zmenšovať napätie po krokoch t.j.približne 6 mV. *
;Tieto tlačitka sú pripojené na 0. 1. bit portu D. Ďalšie dva tlačitka nam      *
;*umožňujú zmenu napätia po väčších skokoch, teda rýchlejšiu zmenu výstupného   *
;*napätia. Uvedené riadenie je možno použiť na rôzne záťaže s ohľadom na dovo-  *
;*lený prúdový odber koncového stupňa.                                          *                                               *
;********************************************************************************
                                                                        
        .NOLIST	
	.INCLUDE "2313def.inc"	
	.LIST	
	.CSEG	;kódový segment
	.DEF REG=r20	  ;pracovný register        
        .DEF ACC=R19      ;akulátor = register r19       
	
	ldi reg,$00       ; PORT D = vstupný port
       out ddrd,reg 
       LDI REG,RAMEND	
	OUT SPL,REG	  ;nastav SP na koniec RAM
	LDI REG,$08	
	OUT DDRB,REG	  ;aktivuj portB na vystup
	LDI REG,0b10000001	;8bitová PWM
	OUT TCCR1A,REG	
	LDI REG,0b00000011      ;preddelička 8
	OUT TCCR1B,REG	
	CLR REG	
	OUT OCR1AH,REG	        ;OCR1AH=$00
	
       
        ldi acc,$f0 ;počiatočný stav pre ACC ( sirku impulzov )
zac:    sbis pind,0 ;tlačitko pripojené na 0.b
        rjmp roz    ;portu D - zväčšovanie šírky jemným
        rcall caka  ;krokom
opp1:   sbic pind,0 
        rjmp opp1   ;ošetrenie zákmitov tlačitka     
        rjmp nac1   
roz:    sbis pind,1 ;tlačitko pripojené na 1. bit portu D 
        rjmp roz1   ;pre zmenšovanie šírky impulzov jjemným
        rcall caka  ;krokom
opp2:   sbic pind,1 
        rjmp opp2   ;ošetrenie zákmitov tlačitka  
        rjmp nac2  
roz1:   sbis pind,4 ;tlačitko pripojené na 1. bit portu D 
        rjmp roz4   ;pre zmenšovanie šírky impulzov jjemným
        rcall caka  ;krokom 
opp4:   sbic pind,4  
        rjmp opp4    ;ošetrenie zákmitov tlačitka     
        rjmp nac4
roz4:   sbis pind,5  ;tlačitko pripojené na 1. bit portu D 
        rjmp op1     ;pre zmenšovanie šírky impulzov jjemným
        rcall caka   ;krokom
opp5:   sbic pind,5
        rjmp opp5    ;ošetrenie zákmitov tlačitka 
        rjmp nac5

op1:    clr reg        ;vynulovanie reg. R31, vyssi byt porovnavacieho     
        adc r31,reg    ;registra citaca/casovaca    
        out ocr1ah,reg ;      "               
        out ocr1al,acc ;zapisanie obsahu acc do nizsieho bytu porovn.reg.
        rjmp zac  
   
nac1:   ldi reg,$01   ;hodnota kroku ( 1 ) do acc  
        add acc,reg   ;načitanie novej hodnoty do acc, pripočítanim kroku 
        cpi acc,$ff   ;ak je väčšia hodnota ako 0EaH zapiš do acc číslo
        brne op1      ; 0FFH - v skoku na návestie rovno0
        rjmp rovn0
        
nac2:   ldi reg,$01    ;hodnota kroku ( 1 ) do acc 
        sub acc,reg    ;načitanie novej hodnoty do acc, odčítanim kroku 
        cpi acc,$00    
        brne op1       ;05H - v skoku na návestie rovno1
        rjmp rovn1

nac4:   ldi reg,$08   ;hodnota kroku (8 ) do acc  
        add acc,reg   ;načitanie novej hodnoty do acc, pripočítanim kroku 
        cpi acc,$e0   ;ak je väčšia hodnota ako 0E0H zapiš do acc číslo
        brsh rovn4    ; 0F0H - v skoku na návestie rovno4
        rjmp op1

nac5:   ldi reg,$08    ;hodnota kroku ( 4 ) do acc 
        sub acc,reg    ;načitanie novej hodnoty do acc, odčítanim kroku 
        cpi acc,$09    
        brlo rovn5     ;08H - v skoku na návestie rovno5
        rjmp op1

rovn0:  ldi acc,$fe  
        rjmp op1
 
rovn1:  ldi acc,$01
        rjmp op1

rovn4:  ldi acc,$f0  
        rjmp op1
 
rovn5:  ldi acc,$09
        rjmp op1
        
caka:    ldi r17,$02  ; oneskorenie 
nav1:    dec r17
         brne nav1
         ret  	

Akorát bych přepsal definiční soubor a zkusil to přeložit pro tiny2313. Kód by měl být kompatibilní.