forked from yangxuanxc/BIT-Assembly-experiment-2015
-
Notifications
You must be signed in to change notification settings - Fork 0
/
program5(2).asm
96 lines (81 loc) · 1.89 KB
/
program5(2).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
.386
.model flat,stdcall
option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;include
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
includelib user32.lib
includelib kernel32.lib
includelib msvcrt.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;函数声明
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
sin proto C :dword
ExitProcess proto:dword
printf proto C:dword,:vararg
scanf proto C:dword,:vararg
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data
x dword 0
x1 qword 0
x2 dword 0
szFmt byte '%d',0ah,0
szFmtin byte '%d',0
szFmtf byte '%f',0ah,0
i dword 0
j dword 0
.data?
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.stack 2048
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
.const
NULL equ 0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
;递归调用斐波那契
fbnq proc n:dword
xor eax,eax
cmp n,1
ja continue_go
cmp n,0
ja equal_1
equal_0:
xor eax,eax
ret
equal_1:
mov eax,1
ret
continue_go:
dec n
invoke fbnq,n
push eax
dec n
invoke fbnq,n
pop ebx
add eax,ebx
ret
fbnq endp
start:
invoke scanf,offset szFmtin,offset x
xor ebx,ebx
mov ebx,x
add ebx,ebx
add ebx,1
mov i,ebx
fild i;
sub esp,8
fstp qword ptr [esp];
call sin
add esp,8
invoke fbnq,x
mov x2,eax
fimul x2
fst x1
invoke printf,offset szFmtf,x1
invoke scanf,offset szFmtin,offset x
endprocess:invoke ExitProcess,NULL ;程序退出
end start; 代码段结束