	
segment .text
	global main
extern printf

main:	mov eax, 0
	call stampa
	lock bts dword [x], 0
	jc salta  		; gi\`a settato
	call stampa
salta:	lock bts dword [x], 0
	jnc _end
	call stampa
	jmp _end

stampa:	push dword [x]	
	push dword fmt	
	call printf
	add esp, 8
	ret
	

_end:	mov eax, 1 		; call syscall exit
	xor ebx, ebx		; exit status 0
	int 0x80
	hlt

segment .data	
x:	dd 0

segment .rodata
fmt:	db "Il valore di x e` %x",0x0a,0 ; 0x0a -> a capo
