diff options
Diffstat (limited to 'Master/texmf-doc/doc/german/latex-tipps-und-tricks/lstfloat.tex')
-rw-r--r-- | Master/texmf-doc/doc/german/latex-tipps-und-tricks/lstfloat.tex | 134 |
1 files changed, 0 insertions, 134 deletions
diff --git a/Master/texmf-doc/doc/german/latex-tipps-und-tricks/lstfloat.tex b/Master/texmf-doc/doc/german/latex-tipps-und-tricks/lstfloat.tex deleted file mode 100644 index a4f72e638c1..00000000000 --- a/Master/texmf-doc/doc/german/latex-tipps-und-tricks/lstfloat.tex +++ /dev/null @@ -1,134 +0,0 @@ -\documentclass[twocolumn,a4paper,10pt]{report} -\usepackage{german,lstfloat,nofloat} -\begin{document} - -\tableofsources - -\newpage -\noindent Das folgende Listing~\ref{querlis} illustriert die Verwendung von Maschinensprache -zur Bestimmung der Quersumme einer Zahl. Als Beispiel wird die Kodierung im -Assembler der Prozessoren der 68000-Serie gezeigt. - -\begin{source} -\caption[Quersumme]{Das Beispiel zeigt ein Programm, das die Quersummer einer im Register D2 -"ubergebenen (Dezimal-) Zahl berechnet. Die Quersumme wird durch sukzessives Dividieren -durch 10 und Addieren des Divisionsrestes gebildet. Da der DIVU-Befehl nur einen 16~Bit-Quotienten -(bis max. 65536) zul"a"st, kann nicht der gesamte Umfang des 32~Bit-Registers genutzt werden -(was bis zu 10 Dezimalstellen bedeutete), sondern nur max. 5 Ziffern. Die Quersumme -findet man in D0.\label{querlis}} -\addcomment{Berechnet die Quersumme der Zahl im Register D2.} -\begin{code} - move.w #34056, d2 ; Quersumme - moveq #4, d1 ; von 34056 - clr.l d0 -1$: divu #10, d2 - move.l d2, d3 - andi.l #$ffff, d2 - lsr.l #8, d3 ; Divisionsrest - ; in Bits 31:16 - lsr.l #8, d3 ; ins untere - ; Byte schieben - add.w d3, d0 - dbra d1, 1$ - rts -\end{code} -\end{source} - -\noindent Betrachten wir nun einen Auszug aus einem Objektcodelisting. -In Listing~\ref{primlist} sehen wir das dazugeh"orende -Programm als NOFLOAT-Objekt gesetzt. Innerhalb -dieses Objektes darf ein Seiten- oder -Spaltenumbruch stattfinden, es wird jedoch die -Formatierung der caption's beibehalten. - -\begin{nofloat}{source} -\caption{Der Objektcode des Primzahlentesters in Listings~\ref{primlist}. Die -Routine kann als Unterprogramm angesprungen werden.} -\addcomment{Der Objectcode der nachfolgenden -Routine zur "Uberpr"ufung der Zahl im Register D6.} -\begin{code} -7C1B ; move.l #27, d6 -6102 ; bsr.s prim_test -4E75 ; rts -2406 ; move.l d6,d2 -E24A ; lsr.w #1, d2 -0042 0001 ; ori.w #1, d2 -2206 ; move.l d6, d1 -82C2 ; divu d2, d1 -0281 FFFF ; andi.l #$ffff, d1 -6700 0010 ; beq non_prim -5542 ; subq.w #2, d2 -B47C 0003 ; cmp.w #3, d2 -6C00 FFEA ; bge loop -7000 ; moveq #0, d0 -4E75 ; rts -7001 ; moveq #1, d0 -4E75 ; rts -\end{code} -\end{nofloat} - -\noindent Das Listing mit dem Objektcode steht in keinem Zusammenhang mit dem ersten -Assemblerlisting und dient lediglich der Demonstration des Listing-Befehls. - -\begin{figure}[h] -\centering\fbox{\rule{4cm}{0mm}\rule{0mm}{5cm}} -\caption{Diese Abbildung ist blo"s ein Test, um zu beweisen, da"s die normale -Formatierung Legenden unber"uhrt geblieben ist!} -\end{figure} - - -\begin{source*} -\caption{Primzahlentest\label{primlist}} -\addcomment{Pr"uft, ob die Zahl in D6 prim ist oder nicht.} -Das Unterprogramm testet, ob eine in D6 "ubergebene 16-Bit-Zahl prim ist (D0=0) oder -nicht (D0=1). -\begin{code} -start: move.l #27, d6 ; n=27 - bsr.s prim_test - rts -prim_test: move.l d6,d2 - lsr.w #1, d2 ; n/2 - ori.w #1, d2 ; mache D2 ungerade -loop: move.l d6, d1 - divu d2, d1 ; teste auf Teiler von D1 - andi.l #$ffff0000, d1 - beq non_prim - subq.w #2, d2 ; immer in 2er-Schritten - cmp.w #3, d2 - bge loop -prim: moveq #0, d0 - rts -non_prim: moveq #1, d0 - rts -\end{code} -\end{source*} - -Schlie"slich sollen Sie in Listing~\ref{quer} noch erfahren, wie einfach die Quersumme einer gegebenen -Zahl ermittelt werden kann. - -\begin{source*} -\caption{Quersumme\label{quer}} -\addcomment{Berechnet die Quersumme der Zahl im Register D2.} -Das n"achste Beispiel zeigt ein Programm, das die Quersummer einer im Register D2 -"ubergebenen (Dezimal-) Zahl berechnet. Die Quersumme wird durch sukzessives Dividieren -durch 10 und Addieren des Divisionsrestes gebildet. Da der DIVU-Befehl nur einen 16~Bit-Quotienten -(bis max. 65536) zul"a"st, kann nicht der gesamte Umfang des 32~Bit-Registers genutzt werden -(was bis zu 10 Dezimalstellen bedeutete), sondern nur max. 5 Ziffern. Die Quersumme -findet man in D0. -\begin{code} -move.w #34056, d2 ; Quersumme von 34056 - moveq #4, d1 - clr.l d0 -1$: divu #10, d2 - move.l d2, d3 - andi.l #$ffff, d2 - lsr.l #8, d3 ; Divisionsrest in Bits 31:16 - lsr.l #8, d3 ; ins untere Byte schieben - add.w d3, d0 - dbra d1, 1$ - rts -\end{code} -\end{source*} - - -\end{document} |