-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmult16.s
More file actions
91 lines (88 loc) · 2.25 KB
/
mult16.s
File metadata and controls
91 lines (88 loc) · 2.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
**********************************************************************
* mult16.s
* asm68
*
* Created by Tim McIntosh on 12/6/25.
*
* From Motorola M6800 User Group Library:
* - REENTRANT DOUBLE PRECISION MULTIPLY (Routine 009)
*
* Note: High word will not be correct for signed numbers, but the
* word will be, hence this is sufficient for implementing signed
* 16-bit multiplication.
**********************************************************************
* NAM RENTMUP
* DOUBLE PRECISION UNSIGNED BINARY
* MULTIPLICATION
* (PH,PL) * (QH,QL) --INTO-- (A,B,QH,QL)
*
* REENTRANT CODE
*
* SOURCE INSTRUCTIONS: 16
* PROGRAM: 27 BYTES
* DATA AND SCRATCH: 5 BYTES
* RUNNING TIME:
* MINIMUM: 558 CYCLES
* MAXIMUM: 718 CYCLES
*
* BOTH OPEERANDS INITIALLY IN STACK
* AND OBTAINED BY INDEXED ADDRESSING
*
* PRODUCT RETAINED IN REGISTERS
* "A" (MOST SIGNIFICANT BYTE) AND
* "B" (2ND MOST SIGNIFICANT BYTE)
* AND IN THE SSTACK (LEAST
* SIGNIFICANT TWO BYTES),
*
* THIS REENTRANT CODED VERSION ASSUMES
* THAT DATA HAS BEEN PLACED IN A STACK
* AS INDICATED BELOW:
*
* SP ---
* X1 --- BLANK (NOT USED)
* BLANK (NOT USED)
* BLANK (FOR BITS TO GO)
* QH (MSB OF MULTIPLIER)
* QL (LSB OF MULTIPLIER)
* PH (MSB OF MULTIPLICAND)
* PL (LSB OF MULTIPLICAND)
*
* THE TOP TWO BYTES OF THE STACK ARE
* NOT USED BY THIS PROGRAM. THEY ARE
* INTENDED FOR A RETURN ADDRESS IF THE
* PROGRAM IS TO BE USED AS A
* SUBROUTINE. IN THE LATTER CASE THE
* FOLLOWING STATEMENT SHOULD BE ADDED
* AT THE END OF THE PROGRAM:
* RTS
*
* THE PROGRAM USES OP-CCODE TSX TO ENTER
* AN ADDRESS X1 INTO THE INDEX REGISTER,
* AS INDICATED ABOVE.
*
* THE PRODUCT, COMPRISING FOUR BYTES,
* IS SAVED IN REGISTERS "A" AND "B" AND
* IN THE STACK AT LOCATINS INDICATED
* ABOVE BY "QH" AND "QL".
*
* ORG 0
* SPC 2
MULT16
TSX
LDAA #16
STAA 2,X
CLRA
CLRB
ROR 3,X
ROR 4,X
NNEXT BCC RROTN
ADDB 6,X
ADCA 5,X
RROTN RORA
RORB
ROR 3,X
ROR 4,X
DEC 2,X
BNE NNEXT
RTS
* END