Faits: A. Par jugement du 9 février 2004, X._, ressortissant français, né le 18 novembre 1980 au Maroc, a été reconnu coupable de meurtre, d'actes d'ordre sexuel sur une personne incapable de discernement ou de résistance, d'infraction grave et de contravention à la loi fédérale sur les stupéfiants ainsi que de diverses autres infractions relatives à des actes de violence (art. 181, 183, 129, 140 ch. 2, 123 ch. 2., 193, 285 CP; art. 33 al. 1 let. a LARM; art. 23 LSEE). En conséquence, le Tribunal criminel de l'arrondissement de Lausanne a condamné X._ à la peine de quatorze ans de réclusion, sous déduction de la détention préventive, et a ordonné son expulsion du territoire suisse pour une durée de quinze ans. Statuant le 7 juin 2004 sur les recours interjetés notamment par le Ministère public vaudois et par le condamné, la Cour de cassation pénale du canton de Vaud a réformé le jugement de première instance en ce sens qu'elle a reconnu X._ coupable, non plus de meurtre, mais d'assassinat, et qu'elle a augmenté la peine à quinze ans de réclusion; pour le surplus, le jugement de première instance a été confirmé. B. La condamnation pour assassinat, qui est seule contestée, repose sur les faits suivants: Dans la nuit du 23 au 24 février 2002, X._ a consommé plusieurs doses de cocaïne. Il s'est rendu en compagnie de son amie à l'arrêt de bus situé à la place Bel-Air à Lausanne, où le couple a poursuivi une dispute favorisée notamment par la drogue. A cet endroit, X._ a interpellé un dealer africain. Les deux hommes ont marché en direction du Grand-Pont pour négocier l'achat de boulettes de cocaïne. X._ ne lui a pas remis le bon montant, ce dont le dealer s'est rapidement rendu compte. Ce dernier est revenu alors vers X._ et les deux hommes ont commencé à se battre violemment. Après quelques instants, X._ a sorti de sa poche un couteau avec une lame de dix centimètres, l'a pointé en direction du dealer et l'a violemment poignardé dans le flanc droit, jusqu'à la garde. La victime s'est effondrée à terre, tenant à deux mains sa blessure, d'où le sang commençait à couler. X._ a alors posé un pied sur la poitrine du blessé, lui a empoigné les cheveux de la main gauche et lui a posé la lame du couteau sur la gorge en le menaçant de mort et en lui criant de cracher ses boulettes. Un passant qui avait vu la bagarre a tenté d'intervenir, mais X._ a brandi le couteau dans sa direction en le menaçant. X._ est ensuite reparti avec l'argent et les boulettes de drogue. La victime s'est relevée, a fait quelques pas en titubant, puis s'est affaissée. Elle est décédée à l'hôpital le 2 mars 2002; son foie avait été transpercé de part en part et une artère à ce niveau avait été complètement sectionnée. C. Contre l'arrêt cantonal, X._ forme un pourvoi en nullité au Tribunal fédéral. Invoquant une fausse application de l'art. 112 CP ainsi que de l'art. 63 CP, il conclut à l'annulation de la décision attaquée. En outre, il sollicite l'assistance judiciaire.