{{htmlmetatags>metatag-robots=() metatag-title=(EXEC | ugBASIC User Manual) metatag-keywords=(ugBASIC,Commodore 64,Commodore PLUS/4,ZX Spectrum) metatag-description=(Pagina del manuale per EXEC) metatag-media-og:image=(:ugbasic:logo-ugbasic-fb.png) metatag-og:title=(EXEC | ugBASIC User Manual) metatag-og:description=(Pagina del manuale per EXEC) }} ====== ugBASIC Manuale Utente ====== ===== EXEC ✓ ===== ===== SINTASSI ===== EXEC address _ [ WITH REG(r1)=v1[, REG(r2)=v2 [, ... ] ] ] _ [ RETURN x1=REG(r1)[, x2=REG(r2)[, ... ] ] ] _ [ ON target1[, target2[, ... ] ] ] ==== SCOPO ==== Questo comando permette di iniziare l'esecuzione di una subroutine, scritta direttamente in linguaggio macchina, a partire dall'indirizzo indicato. Bisogna fare attenzione che tale salto si intende con ritorno: una eventuale istruzione assembly che fa ritornare dall'esecuzione farà continuare l'esecuzione del programma dalla riga ugBASIC successiva. Inoltre è possibile comunicare con il codice macchina. Ciò è reso possibile indicando, contestualmente alla chiamata, il popolamento di specifici registri di ingresso ed il recupero dei valori da specifici registri di uscita. La sintassi estesa permette di specificare ''r1'', ''r2'', .. come i vari registri del processore, ''v1'', ''v2'', .. sono i valori passati nei vari registri e ''x1'', ''x2'', .. sono le variabili che riceveranno l'esito dell'esecuzione dai vari registri. Poiché i registri sono diversi da CPU a CPU, può essere utile aggiungere la specifica del target ''ON''. ==== ESEMPIO ==== EXEC #49142 EXEC indirizzo EXEC indirizzo WITH REG(A)=42 RETURN y=REG(B) ON CPUZ80 Si vedano anche i seguenti file di esempio: * ''[[https://github.com/spotlessmind1975/ugbasic/tree/main/examples/extern_example_01.bas|extern_example_01.bas]]'' ==== ABBREVIAZIONE ==== E# ==== DISPONIBILE SU ==== * * Atari (400/800) * Atari XL/XE * Commodore 128 (MOS 8502) * Commodore 128 (Zilog Z80) * Commodore 64 * Commodore 64+REU * TRS-80 Color Computer * TRS-80 Color Computer 3 * ColecoVision * Amstrad CPC 664 * Dragon 32 * Dragon 64 * Thomson MO5 * Thomson MO5 * Olivetti Prodest PC128 * Commodore PLUS/4 * SEGA SC-3000 * SEGA SG-1000 * * VG-5000 * Commodore VIC-20 * ZX Spectrum 48 ==== VEDI ANCHE ==== [[SYS]] ==== PROBLEMI? ==== Se si riscontra un problema nell'utilizzare questo comando, se si ritiene che vi sia un bug oppure che la spiegazione sia poco chiara, è possibile [[https://github.com/spotlessmind1975/ugbasic/issues/new?title=SEGNALAZIONE SU EXEC|aprire una segnalazione]] per questa parola chiave su GitHub. Grazie!===== POWERED BY ===== [[:it:ugbasic:user:index|{{ :ugbasic:user:logo-ugbasic.png?nolink&600 |}}]]