summaryrefslogtreecommitdiff
path: root/nextpow2.asm
blob: b319d8818049f24a8abf172c90c70d6f6371e888 (plain)
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
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