<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.amstrad-cpc.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=80.77.225.0%2F24</id>
	<title>CPCWiki - THE Amstrad CPC encyclopedia! - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.amstrad-cpc.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=80.77.225.0%2F24"/>
	<link rel="alternate" type="text/html" href="https://wiki.amstrad-cpc.net/wiki/Special:Contributions/80.77.225.0/24"/>
	<updated>2026-09-04T13:33:37Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.amstrad-cpc.net/index.php?title=Programming:Integer_Division&amp;diff=10092</id>
		<title>Programming:Integer Division</title>
		<link rel="alternate" type="text/html" href="https://wiki.amstrad-cpc.net/index.php?title=Programming:Integer_Division&amp;diff=10092"/>
		<updated>2006-09-21T14:20:50Z</updated>

		<summary type="html">&lt;p&gt;80.77.225.28: Added 8bit division&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== 8bit division ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Input:&#039;&#039;&#039; HL=Value1, C=Value2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Output:&#039;&#039;&#039; L=Value1/Value2, H=Value1 MOD Value2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Destroyed:&#039;&#039;&#039; AF,BC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        LD B,8&lt;br /&gt;
Div_Next:&lt;br /&gt;
        ADD     HL,HL&lt;br /&gt;
        LD      A,H&lt;br /&gt;
        SUB     C&lt;br /&gt;
        JR      C,Div_NXTB&lt;br /&gt;
        LD      H,A&lt;br /&gt;
        INC     L&lt;br /&gt;
Div_NXTB:&lt;br /&gt;
        DJNZ    Div_Next&lt;br /&gt;
        RET&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 16bit division ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Input:&#039;&#039;&#039; BC=Value1, DE=Value2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Output:&#039;&#039;&#039; HL=Value1/Value2, DE=Value1 MOD Value2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Destroyed:&#039;&#039;&#039; AF,BC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
clcd16  ld a,e&lt;br /&gt;
        or d&lt;br /&gt;
        ld hl,0&lt;br /&gt;
        ret z&lt;br /&gt;
        ld a,b&lt;br /&gt;
        ld b,16&lt;br /&gt;
clcd161 rl c&lt;br /&gt;
        rla&lt;br /&gt;
        adc hl,hl&lt;br /&gt;
        sbc hl,de&lt;br /&gt;
        jr nc,clcd162&lt;br /&gt;
        add hl,de&lt;br /&gt;
clcd162 ccf&lt;br /&gt;
        djnz clcd161&lt;br /&gt;
        ex de,hl&lt;br /&gt;
        rl c&lt;br /&gt;
        rla&lt;br /&gt;
        ld h,a&lt;br /&gt;
        ld l,c&lt;br /&gt;
        ret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 24bit division ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Input:&#039;&#039;&#039; A,BC=Value1, DE=Value2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Output:&#039;&#039;&#039; HL=Value1/Value2, DE=Value1 MOD Value2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Destroyed:&#039;&#039;&#039; AF,BC,IX,IYL&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
clcdiv  db #dd:ld l,e&lt;br /&gt;
        db #dd:ld h,d   ;IX=Value2&lt;br /&gt;
        ld e,a          ;E,BC=Value1(Counter)&lt;br /&gt;
        ld hl,0&lt;br /&gt;
        db #dd:ld a,l&lt;br /&gt;
        db #dd:or h&lt;br /&gt;
        ret z&lt;br /&gt;
        ld d,l          ;D,HL=CalcVar&lt;br /&gt;
        db #fd:ld l,24  ;IYL=Counter&lt;br /&gt;
clcdiv1 rl c&lt;br /&gt;
        rl b&lt;br /&gt;
        rl e&lt;br /&gt;
        rl l&lt;br /&gt;
        rl h&lt;br /&gt;
        rl d&lt;br /&gt;
        ld a,l&lt;br /&gt;
        db #dd:sub l&lt;br /&gt;
        ld l,a&lt;br /&gt;
        ld a,h&lt;br /&gt;
        db #dd:sbc h&lt;br /&gt;
        ld h,a&lt;br /&gt;
        ld a,d&lt;br /&gt;
        sbc 0&lt;br /&gt;
        ld d,a          ;D,HL=D,HL-IX&lt;br /&gt;
        jr nc,clcdiv2&lt;br /&gt;
        ld a,l&lt;br /&gt;
        db #dd:add l&lt;br /&gt;
        ld l,a&lt;br /&gt;
        ld a,h&lt;br /&gt;
        db #dd:adc h&lt;br /&gt;
        ld h,a&lt;br /&gt;
        ld a,d&lt;br /&gt;
        adc 0&lt;br /&gt;
        ld d,a&lt;br /&gt;
        scf&lt;br /&gt;
clcdiv2 ccf&lt;br /&gt;
        db #fd:dec l&lt;br /&gt;
        jr nz,clcdiv1&lt;br /&gt;
        ex de,hl        ;DE=Value1 MOD Value2&lt;br /&gt;
        rl c&lt;br /&gt;
        rl b&lt;br /&gt;
        ld l,c&lt;br /&gt;
        ld h,b          ;HL=Value1 DIV Value2&lt;br /&gt;
        ret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 32bit division ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Input:&#039;&#039;&#039; IY,BC=Value1, IX=Value2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Output:&#039;&#039;&#039; IY,BC=Value1/Value2, HL=Value1 MOD Value2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Destroyed:&#039;&#039;&#039; AF,DE,IY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
clcd32c db 0&lt;br /&gt;
clcd32  ld hl,0&lt;br /&gt;
        db #dd:ld a,l&lt;br /&gt;
        db #dd:or h&lt;br /&gt;
        ret z           ;IY,BC=Value1(Counter)&lt;br /&gt;
        ld de,0         ;DE,HL=CalcVar&lt;br /&gt;
        ld a,32         ;Set Counter to 32&lt;br /&gt;
clcd321 ld (clcd32c),a&lt;br /&gt;
        rl c&lt;br /&gt;
        rl b&lt;br /&gt;
        db #fd:ld a,l:rla:db #fd:ld l,a&lt;br /&gt;
        db #fd:ld a,h:rla:db #fd:ld h,a&lt;br /&gt;
        rl l&lt;br /&gt;
        rl h&lt;br /&gt;
        rl e&lt;br /&gt;
        rl d&lt;br /&gt;
        ld a,l&lt;br /&gt;
        db #dd:sub l&lt;br /&gt;
        ld l,a&lt;br /&gt;
        ld a,h&lt;br /&gt;
        db #dd:sbc h&lt;br /&gt;
        ld h,a&lt;br /&gt;
        ld a,e&lt;br /&gt;
        sbc 0&lt;br /&gt;
        ld e,a&lt;br /&gt;
        ld a,d&lt;br /&gt;
        sbc 0&lt;br /&gt;
        ld d,a&lt;br /&gt;
        jr nc,clcd322&lt;br /&gt;
        ld a,l&lt;br /&gt;
        db #dd:add l&lt;br /&gt;
        ld l,a&lt;br /&gt;
        ld a,h&lt;br /&gt;
        db #dd:adc h&lt;br /&gt;
        ld h,a&lt;br /&gt;
        ld a,e&lt;br /&gt;
        adc 0&lt;br /&gt;
        ld e,a&lt;br /&gt;
        ld a,d&lt;br /&gt;
        adc 0&lt;br /&gt;
        ld d,a&lt;br /&gt;
        scf&lt;br /&gt;
clcd322 ccf&lt;br /&gt;
        ld a,(clcd32c)&lt;br /&gt;
        dec a&lt;br /&gt;
        jr nz,clcd321   ;HL=Value1 MOD Value2&lt;br /&gt;
        rl c&lt;br /&gt;
        rl b&lt;br /&gt;
        db #fd:ld a,l:rla:db #fd:ld l,a&lt;br /&gt;
        db #fd:ld a,h:rla:db #fd:ld h,a&lt;br /&gt;
        ret             ;IY,BC=Value1 DIV Value2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>80.77.225.28</name></author>
	</entry>
</feed>