Primo problema con l'inline...

di il
2 risposte

Primo problema con l'inline...


   ......
                  __asm{
                   PUSH ES
		   MOV AX, 0
		   MOV ES, AX
		   MOV AX, ES:[BX]    ; riferimento non valido ai dati a 16 bit in 'secondo operando'
		   MOV ipAddr, AX     
                   INC BX
		   INC BX
		   MOV AX, ES:[BX]  ; riferimento non valido ai dati a 16 bit in 'secondo operando'
		   MOV csAddr, AX   
                   POP ES
                           }
   ......

Grazie alla pazienza di oregon ho cominciato a provare un po di codice inline...ma non senza problemi:
questo un semplice estratto di uno programmino che legge sequenzialmente sia l’offset(ipAddr) che il segment register(csAddr) dall’ Interrupt Vector table…in R.M.
Ma il compilatore mi da un messaggio di errore(come riportato sul codice) quando copiamo il valore a cui punta BX (al cui indirizzo si accede tramite ES) su AX.

Io ho dichiarato sia ipAddr che csAddr come int16_t type…visto che sono tutti registri a 16 bit
Quale può essere il mio errore??
Grazie ancora

ps. scusate l'indetazione ma me l'ha sfasata di default nel rendering del codice...

2 Risposte

  • Re: Primo problema con l'inline...

    Occhio ... forse c'è un equivoco di base ...

    Tu scrivi codice in modalità "reale" (per capirci, a 16 bit con i registri di segmento) come se lavorassi con il DOS.

    Ma con Win32 (e con la modalità protetta) questo tipo di programmazione non puoi utilizzarla, tanto meno arrivare ai vettori di interrupt.

    Forse è meglio che tu ti chiarisca bene le idee ... probabilmente per iniziare ti servirebbe DosBox e un assembler come MASM o TASM
  • Re: Primo problema con l'inline...

    Si infatti...sei stato chiarissimo , mi sono scaricato DosBox
Devi accedere o registrarti per scrivere nel forum
2 risposte