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