multiply

mail@pastecode.io avatar
unknown
assembly_x86
2 years ago
978 B
0
Indexable
Never
multiplier:
	
	push EBP
	mov EBP, ESP
	
	push EAX
	push EBX
	push ECX
	push EDX
	
	mov EDX, dword[EBP+8]
	mov EDI, dword[EDX]
	
	mov EDX, dword[EBP+28]
	mov ECX, dword[EDX] ;ECX contient la taille du multiplie comme compteur
	
	
	mov EDX, dword[EBP+16]
	mov BL, byte[EDX] ;BL contient l'unite du multiplicateur
	
	;push EDX
	mov EDX, dword[EBP+24]
	mov ESI, byte[EDX] ;AL contient le premier byte du multiplie
	
	pushf
	
	repMultiplication:
	
	MOV AL, byte[ESI]
	
	;mov EDX, dword[EBP+28] ;EDX contient l'adresse du produit
	;SUB dword[EBP+28], ECX ;On soustrait de l'adresse du produit le compteur ECX
	
	popf
	
	MUL BL
	AAM
	
	pushf
	
	MOV byte[EDI], AL

	INC EDX
	INC ESI
	INC EDI

	CMP ECX, 0
	JNE repMultiplication
	
	popf
	
	mov AL, '0'
	CMP AL, AH
	JE NoRest
	
	;Ajouter le reste
	MOV AL, byte[AH]
	INC EDI
	STOSB
	
	
	noRest:
	
	pop EDX
	pop ECX
	pop EBX
	pop	EAX

	mov ESP, EBP
	pop EBP


	ret