Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
78
Task/Pascals-triangle/X86-Assembly/pascals-triangle.x86
Normal file
78
Task/Pascals-triangle/X86-Assembly/pascals-triangle.x86
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
%include "io.inc"
|
||||
|
||||
section .text
|
||||
global CMAIN
|
||||
CMAIN:
|
||||
mov ebx, 7 ;size
|
||||
call mloop
|
||||
ret
|
||||
|
||||
mloop:
|
||||
mov edx, 0 ;edx stands for the nth line
|
||||
looping:
|
||||
push ebx
|
||||
push edx
|
||||
call line
|
||||
pop edx
|
||||
pop ebx
|
||||
inc edx
|
||||
cmp edx, ebx
|
||||
jl looping
|
||||
xor eax, eax
|
||||
ret
|
||||
|
||||
line:
|
||||
mov ecx, 0 ;ecx stands for the nth character in each line
|
||||
mlp:
|
||||
push ecx
|
||||
push edx
|
||||
call nCk
|
||||
pop edx
|
||||
pop ecx
|
||||
PRINT_DEC 4, eax ;print returned number
|
||||
PRINT_STRING " "
|
||||
inc ecx
|
||||
cmp ecx, edx ;if
|
||||
jle mlp
|
||||
NEWLINE
|
||||
ret
|
||||
|
||||
nCk:
|
||||
;ecx : j
|
||||
;edx : i
|
||||
mov esi, edx
|
||||
call fac ;i!
|
||||
push eax ;save i!
|
||||
mov esi, ecx
|
||||
call fac ;j!
|
||||
push eax ;save j!
|
||||
mov ebx, edx
|
||||
sub ebx, ecx ;(i-j)
|
||||
mov esi, ebx
|
||||
call fac ;(i-j)!
|
||||
pop ebx ;(i-j)! is in eax
|
||||
mul ebx ;(i-j)! * j!
|
||||
mov ecx, eax
|
||||
pop eax ; get i!
|
||||
div ecx ; ; last step : i! divided by (i-j)! * j!
|
||||
ret
|
||||
|
||||
fac:
|
||||
push ecx
|
||||
push edx
|
||||
mov eax, 1
|
||||
mov ecx, esi
|
||||
cmp ecx, 0 ; 0! returns 1
|
||||
je facz
|
||||
lp:
|
||||
mul ecx ;multiplies eax by ecx and then decrements ecx until ecx is 0
|
||||
dec ecx
|
||||
cmp ecx, 0
|
||||
jg lp
|
||||
jmp end
|
||||
facz:
|
||||
mov eax, 1
|
||||
end:
|
||||
pop edx
|
||||
pop ecx
|
||||
ret
|
||||
Loading…
Add table
Add a link
Reference in a new issue