{{htmlmetatags>metatag-robots=() metatag-title=(ASM | ugBASIC User Manual) metatag-keywords=(ugBASIC,Commodore 64,Commodore PLUS/4,ZX Spectrum) metatag-description=(Pagina del manuale per ASM) metatag-media-og:image=(:ugbasic:logo-ugbasic-fb.png) metatag-og:title=(ASM | ugBASIC User Manual) metatag-og:description=(Pagina del manuale per ASM) }} ====== ugBASIC Manuale Utente ====== ===== ASM ===== ===== SINTASSI ===== ASM line BEGIN ASM ... END ASM ==== SCOPO ==== Il comando ''ASM'' è un ponte tra ugBASIC e il linguaggio assembly. Consente di inserire direttamente istruzioni in linguaggio macchina o assembly nel codice sorgente. In alcune sezioni del codice, in particolare quelle che richiedono le massime prestazioni o un controllo molto preciso sull'hardware, scrivere direttamente in assembly può apportare notevoli miglioramenti di velocità. L'assembly consente di interagire direttamente con i registri e le istruzioni della CPU, offrendo un controllo granulare sull'hardware. Quando si ha a che fare con codice che deve essere eseguito su architetture diverse, l'assembly può essere utilizzato per scrivere porzioni di codice altamente ottimizzate per una piattaforma specifica. In alcuni casi, potrebbe essere necessario interfacciarsi con codice scritto in assembly o con librerie preesistenti. La prima sintassi consente di introdurre un singolo codice macchina per ogni riga, mentre la seconda consente di introdurre più righe contemporaneamente. Nota che il codice assembly è strettamente accoppiato all'architettura del processore. Un blocco di codice assembly scritto per uno Zilog Z80 non funzionerà su un MOS 6502. Inoltre, è meno leggibile del linguaggio ugBASIC, il che lo rende più difficile da gestire. Infine, un singolo errore in assembly può causare l'arresto anomalo del programma e l'uso indiscriminato dell'assembly può interagire con le ottimizzazioni del compilatore. L'assembly inline dovrebbe essere utilizzato con parsimonia e solo quando assolutamente necessario. È meglio utilizzarlo per piccole sezioni di codice critiche per le prestazioni, per l'accesso diretto a registri o istruzioni specifici del processore e per interfacciarsi con codice legacy o specifico per un hardware. ==== ESEMPIO ==== BEGIN ASM LDA #02 STA $D020 END ASM ON CPU6502 ==== ABBREVIAZIONE ==== Asm ==== DISPONIBILE SU ==== ==== 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 ASM|aprire una segnalazione]] per questa parola chiave su GitHub. Grazie!===== POWERED BY ===== [[:it:ugbasic:user:index|{{ :ugbasic:user:logo-ugbasic.png?nolink&600 |}}]]