.model small
.code

public facto
public puissance
public binaire

facto proc near
	push cx ; cx=n (contient le nombre dont on doit calculer le factoriel)
	mov ax,1 ; sortie: ax=factoriel de n
lbl:
	cmp cx,1
	jbe fin
	mul cx
	dec cx
	jmp lbl
fin:
	ret
facto endp

puissance proc near
	push cx
	push dx
	mov cx,bx ; bx=exposant
	mov dx,ax ; dx=nombre à élevé à la puissance
	mov ax,1 ; sortie: ax= puissance
boucle:
	mul dx
	loop boucle
	pop dx
	pop cx
	ret
puissance endp

binaire proc near
	;bx=nb entier à afficher en binaire
	push cx
	push dx
	push si
	mov si,0
	mov cl,2
	mov dh,0
lblb1:  cmp bx,0
	je finb1
	mov ax,bx
	div cl
	mov bl,al
	add ah,'0'
	inc si
	mov al,ah
	xor ah,ah
	push ax ;permet d'afficher à l'endroit
	jmp lblb1
finb1:
	cmp si,0 ; on affiche le nombre
	je finb2 ; si si=0, on sort de la boucle
	pop ax
	mov dl,al
	mov ah,2
	int 21h
	dec si ; décrémente le compteur de nombre
	jmp finb1
finb2:
	pop si
	pop dx
	pop cx
	ret
binaire endp

end