Tuuna Computer Science

[Assembly]어셈블리어 피보나찌수열 구하기 소스코드 본문

Assembly

[Assembly]어셈블리어 피보나찌수열 구하기 소스코드

GuTTe 2018. 10. 29. 01:29

[ 하루 어셈블리 일코딩 ]


적어도 1주일에 3~4개는 어셈블리로 코딩할 것이다.


나중에 악성코드 분석할 때 도움되리라 믿고 또 코드를 짤 땐 간단한거 말고 심화적인걸루 해봐야 겠다.


일단 오늘은 피보나찌수열을 어셈블리어로 코딩하기~.~


nasm : 32bit intel assembly


아 조금 신기한게 C로 짠거보다 조금 빠른속도를 보였다. ㅎ.ㅎ



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
 
%include "asm_io.inc"
 
segment .bss
    input resd 1
    tmp resd 1
 
segment .data
    outmsg1 db "input your number : "0
    format1 db "%d"0
    format2 db "%s"0
 
segment .test
    global main
    extern scanf
    extern printf
 
main:
    push ebp
    mov ebp, esp
    push outmsg1
    push format2
    call printf
    add esp, 8
 
    push input
    push format1
    call scanf
    add esp, 8
 
    xor eaxeax
    push dword [input]
    call fibo
    add esp, 4
 
    push eax
    push format1
    call printf
    add esp, 8
    call print_nl
 
    pop ebp
    ret
 
segment .bss
    temp resd 1
 
segment .data
 
segment .text
    global fibo
 
fibo:
    push ebp
    mov ebp, esp
 
    cmp dword [ebp+8], 1
    je end1
    cmp dword [ebp+8], 2
    je end2
 
    mov ebx[ebp+8]
    sub ebx1
    push ebx
    call fibo
    add esp, 4
 
    mov ebx[ebp+8]
    sub ebx2
    push ebx
    call fibo
    add esp, 4
    pop ebp
    ret
 
 
end1:
    add eax0
    pop ebp
    ret
end2:
    add eax1
    pop ebp
    ret
 
 
 
 
cs
Comments