From afda6f12adf869ca9b35eae215b2aa83b87de39a Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Wed, 2 Jan 2008 03:55:22 +0000 Subject: Initial import. git-svn-id: svn://mattst88.com/svn/x86_64-assembly/trunk@1 a323887f-d61c-418c-83a5-2e06a2a01087 --- nextpow2.asm | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 nextpow2.asm (limited to 'nextpow2.asm') diff --git a/nextpow2.asm b/nextpow2.asm new file mode 100644 index 0000000..b319d88 --- /dev/null +++ b/nextpow2.asm @@ -0,0 +1,46 @@ +format ELF64 + +extrn printf +extrn scanf +extrn puts +public main + +section '.text' executable + +main: + push rbp + mov rbp,rsp + + mov edi,prompt + call puts + + sub rsp,16 + + mov rsi,rsp + mov edi,readint + xor eax,eax + call scanf + + mov r12,[rsp] + + add rsp,16 + + mov rax,r12 + bsr rcx,rax + mov eax,2 + shl rax,cl + + mov rdx,rax + mov rsi,r12 + mov edi,msg + xor eax,eax + call printf + + leave + ret + +section '.data' writable align 16 + +msg db "Next power of %lu is %lu",0xA,0 +readint db "%lu",0 +prompt db "Enter an integer.",0 -- cgit v1.2.3