Salve a tutti, sto' preparando l'esame di architetture dei calcolatori e da poco mi sono inoltrato nello studiare il linguaggio Assembly.

Gli esercizi li svolgo su Visual c++ (2008 Express edition).

Devo fare un programma che moltiplica 2 numeri interi tramite somme ripetute, ecco il codice:

codice:
 
include <stdio.h>

void main () {

//Variabili	
	unsigned short Num1=3;	//short e' un intero con dimensione ridotta 16 bit (2bytes)
	unsigned short Num2=5; 
	unsigned int Prodotto;

//Blocco assembler
	__asm {
		
		SUB EAX,EAX		;EAX=0
		SUB EBX,EBX		;EBX=0
		SUB ECX,ECX		

		MOV BX,Num1     ; BX 16bit EBX 32 bit
		MOV AX,Num2

L1:		ADD CX,BX              
		DEC AX 
		JNZ L1			;Esce dal ciclo quando AX=0 

		MOV Prodotto,CX      ;PROBLEMA/ERRORE!
	}
//Stampa su video
	printf("Prodotto=%u\n",Prodotto);
L'input e' una WORD, invece l'output e' una DWORD.
Come faccio ad inserire un valore WORD dentro un registro DWORD?
Come faccio invece a fare il contrario?

Premetto un paio di cose:
-Devo per forza sviluppare i miei progetti sul Visual c++ (2008).
-Non posso modificare il codice in c.
-Posso modificare solo ed esclusivamente la parte di codice contenuta in "__asm".

Help me, Please