-
Notifications
You must be signed in to change notification settings - Fork 0
/
A001048M.ASM
97 lines (73 loc) · 1.66 KB
/
A001048M.ASM
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
91
92
93
94
95
96
97
;--------------------------------------------------------------------
;
; a001048m.asm
;
; a(n) = n! + (n-1)!
;
; OEIS A001048
;
;--------------------------------------------------------------------
.model small
.stack 100h
EXTRN factorial:PROC
EXTRN dispspace:PROC
EXTRN disp0x:PROC
EXTRN dispCR:PROC
EXTRN disph16:PROC
EXTRN dispd16:PROC
.data
max dw 0009h
arr dw 0Ah DUP (00h)
.code
a001048 PROC
push bp
mov bp, sp
push si
mov dx,@data
mov ds,dx
mov si, 0000h
mov cx, 0001h
loop1:
mov ax, cx
call factorial
mov bx, ax
dec cx
mov ax, cx
call factorial
add ax, bx
inc cx
mov arr[si], ax
call dispA
inc cx
inc si
inc si
cmp cx, max
je doneloop
jmp loop1
doneloop:
mov ax, 4C00h
int 21h
a001048 endp
;-------------------------------------------------------------------------
dispA PROC ; display routine for OEIS
; a......(n) in ax, n in cx
push ax
push bx
push cx
push dx
mov dx, ax
mov ax, cx
call dispd16
call dispspace
call dispspace
call dispspace
mov ax, dx
call dispd16
call dispCR
pop dx
pop cx
pop bx
pop ax
ret
dispA endp
end