CODINGSOURCES ★ CODING Source &010 - Multiplcation ★

Solution 1:
 

;
; INPUT: THE VALUES IN REGISTER B EN C
; OUTPUT: HL = B * C
; CHANGES: AF,DE,HL,B
;
MUL:    LD HL,0
        LD A,B
        OR A
        RET Z
        LD D,0
        LD E,C
LOOP:   ADD HL,DE
        DJNZ LOOP
        RET 

Solution 2:

Très gourmand en mémoire , mets extremement rapide
 

; IN : A and D are to be multiplied
; OUT: HL is result
; CHANGES : AF,BC,E,HL
;
ORG &1000
MUL:    LD      E,A
        SUB     D
        LD      H,MULTAB/256
        LD      L,A
        LD      C,(HL)
        INC     H
        LD      B,(HL)
        LD      A,E
        ADD     A,D
        LD      L,A
        LD      E,(HL)
        DEC     H
        LD      L,(HL)
        LD      H,E
        OR      A
        SBC     HL,BC
        RET
; MULTITAB dois avoir une adresse d'implémentaion ayant un poid
; faible nul ( &xx00 )
ORG &1300
MULTAB: DB      0, 0, 1, 2, 4, 6, 9, 12, 16, 20
        DB      25, 30, 36, 42, 49, 56, 64, 72, 81, 90
        DB      100, 110, 121, 132, 144, 156, 169, 182, 196, 210
        DB      225, 240, 0, 16, 33, 50, 68, 86, 105, 124
        DB      144, 164, 185, 206, 228, 250, 17, 40, 64, 88
        DB      113, 138, 164, 190, 217, 244, 16, 44, 73, 102
        DB      132, 162, 193, 224, 0, 32, 65, 98, 132, 166
        DB      201, 236, 16, 52, 89, 126, 164, 202, 241, 24
        DB      64, 104, 145, 186, 228, 14, 57, 100, 144, 188
        DB      233, 22, 68, 114, 161, 208, 0, 48, 97, 146
        DB      196, 246, 41, 92, 144, 196, 249, 46, 100, 154
        DB      209, 8, 64, 120, 177, 234, 36, 94, 153, 212
        DB      16, 76, 137, 198, 4, 66, 129, 192
        DB      0, 192, 129, 66, 4, 198, 137, 76, 16, 212
        DB      153, 94, 36, 234, 177, 120, 64, 8, 209, 154
        DB      100, 46, 249, 196, 144, 92, 41, 246, 196, 146
        DB      97, 48, 0, 208, 161, 114, 68, 22, 233, 188
        DB      144, 100, 57, 14, 228, 186, 145, 104, 64, 24
        DB      241, 202, 164, 126, 89, 52, 16, 236, 201, 166
        DB      132, 98, 65, 32, 0, 224, 193, 162, 132, 102
        DB      73, 44, 16, 244, 217, 190, 164, 138, 113, 88
        DB      64, 40, 17, 250, 228, 206, 185, 164, 144, 124
        DB      105, 86, 68, 50, 33, 16, 0, 240, 225, 210
        DB      196, 182, 169, 156, 144, 132, 121, 110, 100, 90
        DB      81, 72, 64, 56, 49, 42, 36, 30, 25, 20
        DB      16, 12, 9, 6, 4, 2, 1, 0
        DB      0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DB      0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DB      0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DB      0, 0, 1, 1, 1, 1, 1, 1, 1, 1
        DB      1, 1, 1, 1, 1, 1, 2, 2, 2, 2
        DB      2, 2, 2, 2, 2, 2, 3, 3, 3, 3
        DB      3, 3, 3, 3, 4, 4, 4, 4, 4, 4
        DB      4, 4, 5, 5, 5, 5, 5, 5, 5, 6
        DB      6, 6, 6, 6, 6, 7, 7, 7, 7, 7
        DB      7, 8, 8, 8, 8, 8, 9, 9, 9, 9
        DB      9, 9, 10, 10, 10, 10, 10, 11, 11, 11
        DB      11, 12, 12, 12, 12, 12, 13, 13, 13, 13
        DB      14, 14, 14, 14, 15, 15, 15, 15
        DB      16, 15, 15, 15, 15, 14, 14, 14, 14, 13
        DB      13, 13, 13, 12, 12, 12, 12, 12, 11, 11
        DB      11, 11, 10, 10, 10, 10, 10, 9, 9, 9
        DB      9, 9, 9, 8, 8, 8, 8, 8, 7, 7
        DB      7, 7, 7, 7, 6, 6, 6, 6, 6, 6
        DB      5, 5, 5, 5, 5, 5, 5, 4, 4, 4
        DB      4, 4, 4, 4, 4, 3, 3, 3, 3, 3
        DB      3, 3, 3, 2, 2, 2, 2, 2, 2, 2
        DB      2, 2, 2, 1, 1, 1, 1, 1, 1, 1
        DB      1, 1, 1, 1, 1, 1, 1, 0, 0, 0
        DB      0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DB      0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DB      0, 0, 0, 0, 0, 0, 0, 0

http://cpcrulez.fr

[next=coding_src]

CPCrulez[Content Management System] v8.75-desktop/c
Page créée en 050 millisecondes et consultée 733 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.