Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
29
Task/Ackermann-function/X86-Assembly/ackermann-function.x86
Normal file
29
Task/Ackermann-function/X86-Assembly/ackermann-function.x86
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
section .text
|
||||
|
||||
global _main
|
||||
_main:
|
||||
mov eax, 3 ;m
|
||||
mov ebx, 4 ;n
|
||||
call ack ;returns number in ebx
|
||||
ret
|
||||
|
||||
ack:
|
||||
cmp eax, 0
|
||||
je M0 ;if M == 0
|
||||
cmp ebx, 0
|
||||
je N0 ;if N == 0
|
||||
dec ebx ;else N-1
|
||||
push eax ;save M
|
||||
call ack1 ;ack(m,n) -> returned in ebx so no further instructions needed
|
||||
pop eax ;restore M
|
||||
dec eax ;M - 1
|
||||
call ack1 ;return ack(m-1,ack(m,n-1))
|
||||
ret
|
||||
M0:
|
||||
inc ebx ;return n + 1
|
||||
ret
|
||||
N0:
|
||||
dec eax
|
||||
inc ebx ;ebx always 0: inc -> ebx = 1
|
||||
call ack1 ;return ack(M-1,1)
|
||||
ret
|
||||
Loading…
Add table
Add a link
Reference in a new issue