SHOW:
|
|
- or go back to the newest paste.
1 | __idivs_ASM: | |
2 | ; Performs signed interger division | |
3 | ; Inputs: | |
4 | ; HL : Operand 1 | |
5 | ; BC : Operand 2 | |
6 | ; Outputs: | |
7 | ; HL = HL/BC | |
8 | ex de,hl | |
9 | xor a,a | |
10 | sbc hl,hl | |
11 | sbc hl,bc | |
12 | jp p,+_ | |
13 | push hl | |
14 | pop bc | |
15 | inc a | |
16 | ||
17 | _: or a,a | |
18 | sbc hl,hl | |
19 | sbc hl,de | |
20 | jp m,+_ | |
21 | ex de,hl | |
22 | inc a | |
23 | ||
24 | _: add hl,de | |
25 | rra | |
26 | ld a,24 | |
27 | ||
28 | _: ex de,hl | |
29 | adc hl,hl | |
30 | ex de,hl | |
31 | adc hl,hl | |
32 | add hl,bc | |
33 | jr c,+_ | |
34 | sbc hl,bc | |
35 | _: dec a | |
36 | jr nz,--_ | |
37 | ||
38 | ex de,hl | |
39 | adc hl,hl | |
40 | ret c | |
41 | ex de,hl | |
42 | sbc hl,hl | |
43 | sbc hl,de | |
44 | ret | |
45 | ||
46 | __imuls_ASM: | |
47 | __imulu_ASM: | |
48 | ; Performs (un)signed integer multiplication | |
49 | ; Inputs: | |
50 | ; HL : Operand 1 | |
51 | ; BC : Operand 2 | |
52 | ; Outputs: | |
53 | ; HL = HL*BC | |
54 | push bc | |
55 | push hl | |
56 | ex de,hl | |
57 | ld hl,2 | |
58 | add hl,sp | |
59 | ld b,(hl) | |
60 | mlt bc | |
61 | inc hl | |
62 | inc hl | |
63 | inc hl | |
64 | ld a,d | |
65 | ld d,(hl) | |
66 | mlt de | |
67 | dec hl | |
68 | ld l,(hl) | |
69 | ld h,a | |
70 | mlt hl | |
71 | ld a,l | |
72 | add a,e | |
73 | add a,c | |
74 | pop de | |
75 | pop bc | |
76 | push bc | |
77 | or a,a | |
78 | sbc hl,hl | |
79 | add.s hl,de | |
80 | ex de,hl | |
81 | ld h,b | |
82 | mlt hl | |
83 | ld b,d | |
84 | mlt bc | |
85 | add hl,bc | |
86 | add a,h | |
87 | ld h,a | |
88 | pop bc | |
89 | ld d,c | |
90 | mlt de | |
91 | add hl,hl | |
92 | add hl,hl | |
93 | add hl,hl | |
94 | add hl,hl | |
95 | add hl,hl | |
96 | add hl,hl | |
97 | add hl,hl | |
98 | add hl,hl | |
99 | add hl,de | |
100 | - | ret |
100 | + | |
101 | ||
102 | _abs24de: | |
103 | sbc hl, hl | |
104 | adc hl, de | |
105 | jp p, +_ | |
106 | or a, a | |
107 | sbc hl, hl | |
108 | sbc hl,de | |
109 | _: |