Inserire listato Assembler

  • Creatore
    Topic
  • #15376
    Up
    0
    Down
    ::


    Salve a tutti son nuovo del forum e ringrazio anticipatamente tutti per la preziosa collaborazione che spero di ricevere.
    Il mio problema è l’inserimento di un listato di programma in linguaggio assembler all’interno dell’appendice di una tesi.
    Leggendo tra i vari post nè ho trovati alcuni siginficativi nei quali viene enunciata la possibilità di fare quello che è mia intenzione.

    Ho provato con questo nel preambolo:

    `\documentclass[12pt,a4paper,twoside,openright]{book}
    \usepackage[latin1]{inputenc}
    \usepackage[italian]{babel}
    \usepackage[a4paper,top=3cm,left=3.5cm,right=2.5cm,bottom=2cm]{geometry}
    \usepackage{latexsym}
    \usepackage{listings}
    \lsloadlanguages{Assembler}
    \usepackage{graphics}`

    e questo nel file appendice.tex

    `\begin{document}
    \lsset{language=assembler}
    \lstset{basicstyle=\footnotesize\sffamily}
    \lstset{numbers=left,numberstyle=\tiny,stepnumber=1,numbersep=10pt}
    \lstset{morecomment=[|]{//}}

    begin{lstlisting}
    jkhfjkdhfk
    \end{lstlisting}
    \end{document} `

    come suggerito in un’altro post solamente modificando il tipo di linguaggio di programmazione da c a assembler ed in fase di compilazione mi dà tantissimi errori dei quali dal primo mi sembra di dedurre che la parola assembler non gli vada a genio.
    Ho letto molti post a riguardo ma senza trovar soluzione così ho deciso di scrivere sul forum anche perchè i tempi son molto stretti.

Visualizzazione 11 filoni di risposte
  • Autore
    Risposte
    • #15377
      lorenzo.pantieri
      Partecipante
        Up
        0
        Down
        ::


        `\documentclass{article}

        \usepackage{xcolor}
        \usepackage{listings}

        \lstset{language=[LaTeX]TeX,
        keywordstyle=\color{blue},
        basicstyle=\small\ttfamily}

        \begin{document}

        Qesto è un esempio di codice \LaTeX:
        \begin{lstlisting}
        \emph{parola} è diverso da \textit{parola}.
        \end{lstlisting}

        \lstset{language=[x86masm]Assembler,%
        keywordstyle=\color{green},
        basicstyle=\small\ttfamily}

        Questo è un esempio in Assembler:
        \begin{lstlisting}
        foo JMP bar
        \end{lstlisting}

        \end{document}`
        ma sono sicuro che si può fare di meglio. Studia per bene la doc. di listings, è davvero ben fatta. Con listings puoi fare praticamente tutto quello che vuoi. Fra l’altro, ho visto che c’è una sezione che parla di come far convivere codice C e Assembler, che mi sembra fare al caso tuo.

        P.S. Il paccetto latexsym serve solo per retro-compatibilità, dubito che tu ne abbia bisogno. Graphics è proprio obsoleto: usa graphicx. Quei \begin{document} … \end{document} nel file appendice.tex non ci vanno: cerca “input” e “include” su una guida e/o sul forum.

        Ciao,
        L.

      • #15378
        Up
        0
        Down
        ::

        ho visto che c’è una sezione che parla di come far convivere codice C e Assembler, che mi sembra fare al caso tuo.

        Il mio listato è solamente in assembler.

        Quindi modificando preambolo in:
        `\documentclass[12pt,a4paper,twoside,openright]{book}
        \usepackage[latin1]{inputenc}
        \usepackage[italian]{babel}
        \usepackage[a4paper,top=3cm,left=3.5cm,right=2.5cm,bottom=2cm]{geometry}
        \usepackage{listings}
        \lsloadlanguages{Assembler}
        `

        e il file appendice.tex in:
        `\lsset{language=assembler}
        \lstset{basicstyle=\footnotesize\sffamily}
        \lstset{numbers=left,numberstyle=\tiny,stepnumber=1,numbersep=10pt}
        \lstset{morecomment=[|]{//}}

        begin{lstlisting}
        LISTATO PROGRAMMA
        \end{lstlisting}
        `

        Dovrebbe funzionare invece mi dà sempre errore su Assembler messo nel preambolo. Cos’è che non và?

        cerca “input” e “include” su una guida e/o sul forum

        A cosa servono questi 2 comandi?per il listato o in sostituzione al graphics?

        grazie per la rapida risposta

      • #15379
        lorenzo.pantieri
        Partecipante
          Up
          0
          Down
          ::


          Prova a mettere
          `[x86masm]Assembler`
          al posto di
          `Assembler`

          Tieni presente che se un linguaggio di listings non ti soddisfa, puoi crearne uno tu come vuoi.

          I comandi \input e \include servono per strutturare il sorgente LaTeX in più parti, il pacchetto graphicx non c’entra niente: cerca su una guida di base, queste cose sono spiegate benissimo.

          Ciao,
          L.

        • #15380
          Up
          0
          Down
          ::

          Prova a mettere
          Codice:
          [x86masm]Assembler

          Non mi funziona nemmeno così mi dà sempre errore, ho notato che premendo una volta invio mi dà un’altro errore con scritto Latex error: Missing \begin{document} non è che devo rimettere la parte che mi hai consigliato di togliere?

          Potrebbe essere che abbia una versione non aggiornata del pacchetto?come posso controllare questa?

          I comandi \input e \include servono per strutturare il sorgente LaTeX in più parti, il pacchetto graphicx non c’entra niente: cerca su una guida di base, queste cose sono spiegate benissimo.

          La mia tesi essendo quasi al termine è già stata strutturata, stò usando uno scheletro di tesi già fatto e il file dell’appendice è già richiamato nel preambolo quindi non mi dovrebbero servire questi comandi!o sbaglio?

          grazie per l’aiuto che mi stai dando

        • #15381
          DMW
            Up
            0
            Down
            ::

            Prova a mettere
            Codice:
            [x86masm]Assembler

            Non mi funziona nemmeno così mi dà sempre errore, ho notato che premendo una volta invio mi dà un’altro errore con scritto Latex error: Missing \begin{document} non è che devo rimettere la parte che mi hai consigliato di togliere?

            Potrebbe essere che abbia una versione non aggiornata del pacchetto?come posso controllare questa?

            I comandi \input e \include servono per strutturare il sorgente LaTeX in più parti, il pacchetto graphicx non c’entra niente: cerca su una guida di base, queste cose sono spiegate benissimo.

            La mia tesi essendo quasi al termine è già stata strutturata, stò usando uno scheletro di tesi già fatto e il file dell’appendice è già richiamato nel preambolo quindi non mi dovrebbero servire questi comandi!o sbaglio?

            grazie per l’aiuto che mi stai dando

            Ho fatto come dice Lorenzo e va bene. La mia versione è 1.4 e non dà nessun errore.

            Prova questo codice:
            `
            \documentclass{article}
            \usepackage{listings}

            \lstset{%
            language=[x86masm]Assembler,%
            }

            \begin{document}
            \begin{lstlisting}
            ADD AH,BL
            DIV AH,02H
            \end{lstlisting}
            \end{document}
            `
            per vedere la versione aggiungi \listfiles nel preambolo e vedi il log. Ti dà una lista di tutti i pacchetti usati con le relative versioni.

            Ciao

            Andrea

          • #15382
            Up
            0
            Down
            ::


            Che splendore ora funziona tutto!!!Grazie mille…
            Unico neo che rimane è che essendo il mio un assembler dedicato ai microprocessori microchip probabilmente si discosta un pò dalla sintassi tradizionale e cosi alcune parole vengono colorate in modo sbagliato.
            Che voi sappiate listings supporta l’assembler microchip?

          • #15383
            lorenzo.pantieri
            Partecipante
              Up
              0
              Down
              ::

              Che voi sappiate listings supporta l’assembler microchip?

              Se tu avessi ascoltato il mio consiglio e avessi letto la documentazione di listings, avresti scoperto che con listings puoi fare quello che vuoi. Puoi aggiungere nuove parole chiave, o crearti ex-novo un linguaggio.
              `\lstdefinelanguage{rock}
              {morekeywords={one,two,three,four,five,six,seven,eight,
              nine,ten,eleven,twelve,o,clock,rock,around,the,tonight},
              sensitive=false,
              morecomment=[l]{//},
              morecomment={/*}{*/},
              morestring=“,
              }
              `
              …e tante altre cose ancora.

              L.

            • #15384
              DMW
                Up
                0
                Down
                ::

                Che splendore ora funziona tutto!!!Grazie mille…
                Unico neo che rimane è che essendo il mio un assembler dedicato ai microprocessori microchip probabilmente si discosta un pò dalla sintassi tradizionale e cosi alcune parole vengono colorate in modo sbagliato.
                Che voi sappiate listings supporta l’assembler microchip?

                Ci sono due varianti, leggi a pag 12 della documentazione di listings
                ftp://tug.ctan.org/pub/tex-archive/macros/latex/contrib/listings/listings.pdf

                una è x86masm e l’altra Motorola 68k.

                Se nessuna delle due ti soddisfa, allora creati un nuovo linguaggio.
                Ad esempio, ugaciaka ha creato un nuovo tipo di stile per l’sql
                Guarda questo topic e lggiti la doc. di listings
                http://www.guit.sssup.it/phpbb/viewtopic.php?t=2539&start=0&postdays=0&postorder=asc&highlight=sql

                Ciao,

                Andrea

              • #15385
                Up
                0
                Down
                ::

                Se nessuna delle due ti soddisfa, allora creati un nuovo linguaggio.
                Ad esempio, ugaciaka ha creato un nuovo tipo di stile per l’sql
                Guarda questo topic e lggiti la doc. di listings
                http://www.guit.sssup.it/phpbb/viewtopic.php?t=2539&start=0&postdays=0&postorder=asc&highlight=sql

                Proprio cosi si tratta di alcune parole che non vengono interpretate come comandi quindi probabilmente mi dovrebbe bastare scrivere:

                `\lstset{…,
                morekeywords={…},
                } `

                e inserire le parole che colora in modo sbagliato!
                Ma dove devo mettere questa stringa?

                grazie ancora tanto

              • #15386
                DMW
                  Up
                  0
                  Down
                  ::


                  Dato che non so come modificare le parole chiave già presenti in linguaggi già caricati, in questo caso [x86masm]Assembler, ti riporto un esempio su come creare un linguaggio assembler di tuo gradimento:

                  `
                  \documentclass{article}
                  \usepackage{xcolor}
                  \usepackage{listings}
                  \lstdefinelanguage{ASM}
                  { morekeywords={al,ah,ax,eax,bx,ebx,cx,ecx,dl,dx,edx,%
                  si,esi,di,edi,bp,ebp,sp,esp,cs,ds,es,ss,fs,gs,cr0,cr1,cr2,cr3,%
                  db0,db1,db2,db3,db4,db5,db6,db7,tr0,tr1,tr2,tr3,tr4,tr5,tr6,tr7,%
                  st,aaa,aad,aam,aas,adc,and,arpl,bound,bsf,bsr,bswap,bt,btc,%
                  btr,bts,call,cbw,cdq,clc,cld,cli,clts,cmc,cmp,cmps,cmpsb,cmpsw,%
                  cmpsd,cmpxchg,cwd,cwde,daa,das,dec,div,enter,hlt,idiv,imul,in,%
                  inc,ins,int,into,invd,invlpg,iret,ja,jae,jb,jbe,jc,jcxz,jecxz,%
                  je,jg,jge,jl,jle,jna,jnae,jnb,jnbe,jnc,jne,jng,jnge,jnl,jnle,%
                  jno,jnp,jns,jnz,jo,jp,jpe,jpo,js,jz,jmp,lahf,lar,lea,leave,lgdt,%
                  lidt,lldt,lmsw,lock,lods,lodsb,lodsw,lodsd,loop,loopz,loopnz,%
                  loope,loopne,lds,les,lfs,lgs,lss,lsl,ltr,mov,movs,movsb,movsw,%
                  movsd,movsx,movzx,mul,neg,nop,not,or,out,outs,pop,popa,popad,%
                  popf,popfd,push,pusha,pushad,pushf,pushfd,rcl,rcr,rep,repe,%
                  repne,repz,repnz,ret,retf,rol,ror,sahf,sal,sar,sbb,scas,seta,%
                  setae,setb,setbe,setc,sete,setg,setge,setl,setle,setna,setnae,%
                  setnb,setnbe,setnc,setne,setng,setnge,setnl,setnle,setno,setnp,%
                  setns,setnz,seto,setp,setpe,setpo,sets,setz,sgdt,shl,shld,shr,%
                  shrd,sidt,sldt,smsw,stc,std,sti,stos,stosb,stosw,stosd,str,sub,%
                  test,verr,verw,wait,wbinvd,xadd,xchg,xlatb,xor,fabs,fadd,fbld,%
                  fbstp,fchs,fclex,fcom,fcos,fdecstp,fdiv,fdivr,ffree,fiadd,ficom,%
                  fidiv,fidivr,fild,fimul,fincstp,finit,fist,fisub,fisubr,fld,fld1,%
                  fldl2e,fldl2t,fldlg2,fldln2,fldpi,fldz,fldcw,fldenv,fmul,fnop,%
                  fpatan,fprem,fprem1,fptan,frndint,frstor,fsave,fscale,fsetpm,%
                  fsin,fsincos,fsqrt,fst,fstcw,fstenv,fstsw,fsub,fsubr,ftst,fucom,%
                  fwait,fxam,fxch,fxtract,fyl2x,fyl2xp1,f2xm1},%
                  morekeywords=[2]{.align,.alpha,assume,byte,code,comm,comment,.const,%
                  .cref,.data,.data?,db,dd,df,dosseg,dq,dt,dw,dword,else,end,endif,%
                  endm,endp,ends,eq,equ,.err,.err1,.err2,.errb,.errdef,.errdif,%
                  .erre,.erridn,.errnb,.errndef,.errnz,event,exitm,extrn,far,%
                  .fardata,.fardata?,fword,ge,group,gt,high,if,if1,if2,ifb,ifdef,%
                  ifdif,ife,ifidn,ifnb,ifndef,include,includelib,irp,irpc,label,%
                  .lall,le,length,.lfcond,.list,local,low,lt,macro,mask,mod,.model,%
                  name,ne,near,offset,org,out,page,proc,ptr,public,purge,qword,.%
                  radix,record,rept,.sall,seg,segment,.seq,.sfcond,short,size,%
                  .stack,struc,subttl,tbyte,.tfcond,this,title,type,.type,width,%
                  word,.xall,.xcref,.xlist},%
                  morekeywords=[3]{add,bl,bh},
                  morekeywords=[4]{dh,ch,cl},
                  alsoletter=.,alsodigit=?,%
                  sensitive=f,%
                  morestring=“,%
                  morestring=',%
                  morecomment=[l],%
                  keywordstyle=[3]{\bfseries\color{red}},
                  keywordstyle=[4]{\bfseries\color{gray}},
                  }
                  \lstset{%
                  language=ASM,
                  numbers=left,stepnumber=1,numberstyle=\tiny,
                  }%

                  \begin{document}
                  \begin{lstlisting}
                  SUB AH,BL
                  DIV AH,02H
                  ADD BH,AL
                  MUL DH,CL
                  \end{lstlisting}
                  \end{document}`
                  ho tolto add,ch,cl,dh,bl e bh dal primo morekeywords e li ho messi in altri 2 tipi separati.
                  In tutto sono 4 come puoi leggere dai numeri tra parentesi quadre.

                  E’ un esempio demenziale ma dovrebbe parti capire come si può creare un nuovo tipo di linguaggio.

                  Ciao

                  Andrea

                • #15387
                  Up
                  0
                  Down
                  ::


                  Ho provato a fare le operazioni scritte nell’ultimo post. in Particolare ho fatto:
                  `
                  \usepackage{listings}
                  \lstdefinelanguage{ASM}
                  { morekeywords={bset,bclr,cp,cpi,mov},%
                  \lstset{%
                  language=ASM,
                  }%
                  \begin{document}
                  …..
                  \appendix
                  \section{Primo appendice}
                  \begin{lstlisting}
                  bset w0,5
                  mov w0,w3
                  \end{lstlisting}
                  \begin{thebibliography}

                  \end{document}
                  `

                  Tuttavia solo il mov è in grassetto come parola chiave. bset no. come mai?
                  Grazie!

                • #15388
                  Up
                  0
                  Down
                  ::


                  Scusate ma ho risolto. Dimenticanza mia…

              Visualizzazione 11 filoni di risposte
              • Devi essere connesso per rispondere a questo topic.

              Go to top