.h8300s ; Deleni 16 bit / 16 bit = 16 bit + 16 bit (vysledek + zbytek) (bez instrukce deleni). ; podprogram na deleni bez pouziti deleni ; vstup r0h, r0l (delenec, delitel) ; vystup r1h, r1l (vysledek, zbytek) deleni: mov.w #0, r1 while: ;pouzijeme algoritmus odcitani delitele od delence cmp.b r0h, r0l ; while (delenec >= delitel) bhi end_deleni sub.b r0l, r0h inc.b r1h ;zvetsime vysledek o 1 bra while end_deleni: mov.b r0h, r1l ;zbytek na r1l rts ; datova cast .data .space 64 stack: ;ff4040 delenec: .byte 13 ;ff4040 delitel: .byte 3 ;ff4041 vysledek: .byte 0 ;ff4042 zbytek: .byte 0 ;ff4043 ; zacatek programu .text .global _start _start: mov.l #stack, er7 ;inicializace zasobniku ; nastavime parametry a zavolame deleni mov.l #delenec, er5 mov.l #delitel, er6 mov.b @er5, r0h mov.b @er6, r0l jsr @deleni ;zapiseme do pameti vysledek mov.l #vysledek, er5 mov.l #zbytek, er6 mov.b r1h, @er5 mov.b r1l, @er6 ; konec end: bra end .end