; Ecrit par J.C. JAUMAIN
; Dernière modification, le 4/1/2008
;===========================
	section .data
;==========================
nb 	DB 'sxxxxxxxxxx '
LF 	DB 10
carhex 	DB '0123456789ABCDEF'
;===========================
       section .bss
;===========================
;===========================
global printd
;===========================
	section .code
;===========================
printd:	push ebp
	mov ebp,esp
	pushad
;===========================
; Impression hexadécimale
;===========================
	mov eax,[ebp+8]
	mov edi,16	; base
	mov esi,nb+10	; position
	mov ecx,8

digith:	mov edx,0
	div edi
	add edx,carhex
	mov bl,[edx]
	mov [esi],bl
	dec esi
	loop digith

	mov eax,4
	mov ebx,1
	mov ecx,nb+3
	mov edx,9
        int 0x80

;===========================
; Impression décimale positive
;===========================
	mov eax,[ebp+8]
	mov ebx,10	; base
	mov esi,nb+10	; position
	mov ecx,1
digit:	mov edx,0
	div ebx
	add dl,30h	; ascii
	mov [esi],dl
	dec esi
	inc ecx
	cmp eax,0
	jne digit

	mov byte [esi],'+'
	inc ecx

	mov edx,ecx
	mov ecx,nb
	add ecx,12
	sub ecx,edx
	mov eax,4
	mov ebx,1
        int 0x80
;===========================
; Impression décimale négative
;===========================
	mov eax,[ebp+8]
	cmp eax,0
	jge fin
	neg eax
	mov ebx,10	; base
	mov esi,nb+10	; position
	mov ecx,1
digitn:	mov edx,0
	div ebx
	add dl,30h	; ascii
	mov [esi],dl
	dec esi
	inc ecx
	cmp eax,0
	jne digitn

	mov byte [esi],'-'
	inc ecx

	mov edx,ecx
	mov ecx,nb
	add ecx,12
	sub ecx,edx
	mov eax,4
	mov ebx,1
        int 0x80
;===========================
; Impression saut de ligne
;===========================
fin:	mov eax,4
	mov ebx,1
	mov ecx,LF
	mov edx,1
	int 0x80

	popad
	pop ebp
	ret 4

