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:
L'input e' una WORD, invece l'output e' una DWORD.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);
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![]()

Rispondi quotando
