-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathprogram5(1).asm
98 lines (83 loc) · 2.1 KB
/
program5(1).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
.386
.model flat,stdcall
option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;include
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
includelib user32.lib
includelib kernel32.lib
includelib msvcrt.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;函数声明
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ExitProcess proto:dword
printf proto C:dword,:vararg
scanf proto C:dword,:vararg
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data
NULL equ 0;此处添加一些初始化过的变量定义
get_before_number dword 0
x dword 0
output dword 0
szFmt byte '%d',0ah,0
szFmt2 byte 'error',0ah,0
szFmtin byte '%d',0
i 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
;mov get_before_number,eax
dec n
invoke fbnq,n
pop ebx
add eax,ebx
;add eax,get_before_number
ret
fbnq endp
start:
invoke scanf,offset szFmtin,offset x
while1:
invoke fbnq,i
inc i
cmp eax,x
je found_it
jg not_found
jl contine_to_found_it
contine_to_found_it:
jmp while1
found_it:
dec i
invoke printf,offset szFmt,i
invoke scanf,offset szFmtin,offset x
jmp endprocess
not_found:
invoke printf,offset szFmt2
invoke scanf,offset szFmtin,offset x
endprocess:invoke ExitProcess,NULL ;程序退出
end start; 代码段结束