Family Day update
This commit is contained in:
parent
aac6731f2c
commit
9ad63ea473
2442 changed files with 39761 additions and 8255 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