Procedura richiamabile in C

di il
1 risposte

Procedura richiamabile in C

Dovrei scrivere una procedura Assembler di nome power2 richiamabile da un programma scritto in linguaggio C per il calcolo dell’espressione X*2^Y.
Alla procedura power2 vengono passati i due parametri interi X e Y; la funzione restituisce nel registro AX il risultato dell’espressione. Si supponga che il programma chiamante sia compilato usando il modello di memoria small.

Allora, seguendo un manuale preso dal web l'ho impostato in questo modo:

PUBLIC _POWER2
.MODEL SMALL
.CODE
_POWER 2 PROC
PUSH BP
MOV BP,SP
MOV AX,[BP+4] ; il modello di memoria è un small quindi abbiamo una procedura di tipo Near
MOV CX,[BP+6]; i cui parametri sono allocati agli indirizzi bp+4 e +6
SHL AX, CL
E qui non capisco come fa ad effettuare un prodotto ed un elevamento a potenza
tramite una traslazione a sinistra , ed inoltre , come faccia ad utilizzare un contatore senza aver copiato alcun valore in esso

1 Risposte

  • Re: Procedura richiamabile in C

    Il contatore è caricato in CX con

    MOV CX,[BP+6];

    L'operazione richiesta X*2^Y è fatta da

    SHL AX, CL

    Prova ad eseguire il codice su carta inserendo dei valori per AX e CX. Ad esempio, per

    5*2^3

    sarà AX=5 e CX=3 ... quindi ...
Devi accedere o registrarti per scrivere nel forum
1 risposte