<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.mcselec.com/bavr/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.mcselec.com/bavr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Galahat</id>
		<title>MCS Wiki AVR - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.mcselec.com/bavr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Galahat"/>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Special:Contributions/Galahat"/>
		<updated>2026-04-17T15:20:58Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.18.6</generator>

	<entry>
		<id>http://wiki.mcselec.com/bavr/STAND_%3FBERSETZUNG_(tempor%3Fr)</id>
		<title>STAND ?BERSETZUNG (tempor?r)</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/STAND_%3FBERSETZUNG_(tempor%3Fr)"/>
				<updated>2013-03-13T05:07:40Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MAIN MENUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  *Installation/de&lt;br /&gt;
 Übersetzt Installation of BASCOM/de&lt;br /&gt;
 Übersetzt Installation on multiple computers/de&lt;br /&gt;
 Übersetzt Move to new PC/de&lt;br /&gt;
 Übersetzt Updates/de&lt;br /&gt;
&lt;br /&gt;
  *BASCOM Language Fundamentals/de&lt;br /&gt;
 Übersetzt ASCII chart/de&lt;br /&gt;
 Übersetzt Assembler mnemonics/de&lt;br /&gt;
 Übersetzt Changes compared to BASCOM-8051/de&lt;br /&gt;
 Übersetzt Error Codes/de&lt;br /&gt;
 Übersetzt Keyword reference/de&lt;br /&gt;
 Übersetzt  Language Fundamentals/de&lt;br /&gt;
 Übersetzt Mixing ASM and BASIC/de&lt;br /&gt;
 Übersetzt Newbie problems/de&lt;br /&gt;
 No content?? Reserved Words/de&lt;br /&gt;
 Übersetzt Tips and tricks/de&lt;br /&gt;
&lt;br /&gt;
  *ASM Libraries and Add-Ons/de&lt;br /&gt;
 *AVR-DOS/de&lt;br /&gt;
 *BCCARD/de&lt;br /&gt;
 *CF Card/de&lt;br /&gt;
 *DATE TIME/de&lt;br /&gt;
 *Floating Point/de&lt;br /&gt;
 *I2C SLAVE/de&lt;br /&gt;
 *LCD/de&lt;br /&gt;
 *PS2-AT Mouse and Keyboard Emulation/de&lt;br /&gt;
 *SPI/de&lt;br /&gt;
 *USB/de&lt;br /&gt;
 EXTENDED I2C/de&lt;br /&gt;
 FM24C16/de&lt;br /&gt;
 FM24C64-256/de&lt;br /&gt;
 FM25C256/de&lt;br /&gt;
 HEXVAL lib/de&lt;br /&gt;
 I2C-TWI/de&lt;br /&gt;
 MCSBYTE/de&lt;br /&gt;
 MCSBYTEINT/de&lt;br /&gt;
 MODBUS Slave-Server/de&lt;br /&gt;
 TCPIP/de&lt;br /&gt;
&lt;br /&gt;
  *BASCOM HARDWARE/de&lt;br /&gt;
 *Chips/de&lt;br /&gt;
 *Reference Designs/de&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color: rgb(249, 249, 249); font-family: monospace, 'Courier New'; font-size: 11px; line-height: 1.3em;&amp;quot;&amp;gt;Übersetzt &amp;lt;/span&amp;gt;Adding XRAM to XMEGA using EBI/de&lt;br /&gt;
 Adding XRAM with External Memory Interface/de&lt;br /&gt;
 Additional Hardware/de&lt;br /&gt;
 Attaching an LCD Display/de&lt;br /&gt;
 AVR Internal Hardware Port B/de&lt;br /&gt;
 AVR Internal Hardware Port D/de&lt;br /&gt;
 AVR Internal Hardware TIMER0/de&lt;br /&gt;
 AVR Internal Hardware TIMER1/de&lt;br /&gt;
 AVR Internal Hardware Watchdog timer/de&lt;br /&gt;
 AVR Internal Hardware/de&lt;br /&gt;
 AVR Internal Registers/de&lt;br /&gt;
 Memory usage/de&lt;br /&gt;
 Power Up/de&lt;br /&gt;
 Using RS485/de&lt;br /&gt;
 Using the 1 WIRE protocol/de&lt;br /&gt;
 Using the I2C protocol/de&lt;br /&gt;
 Using the SPI protocol/de&lt;br /&gt;
 Übersetzt Using the UART/de&lt;br /&gt;
 Using USI (Universal Serial Interface)/de&lt;br /&gt;
&lt;br /&gt;
 *Tools/de&lt;br /&gt;
 LCD RGB-8 Converter/de&lt;br /&gt;
&lt;br /&gt;
 *BASCOM IDE/de&lt;br /&gt;
 *Options Compiler/de&lt;br /&gt;
 *Options Programmer/de&lt;br /&gt;
 *Plugins/de&lt;br /&gt;
 Übersetzt BASCOM Editor Keys/de&lt;br /&gt;
 Edit Copy/de&lt;br /&gt;
 Edit Cut/de&lt;br /&gt;
 Edit Encrypt Selected Code/de&lt;br /&gt;
 Edit Find Next/de&lt;br /&gt;
 Edit Find/de&lt;br /&gt;
 Edit Goto Bookmark/de&lt;br /&gt;
 Edit Goto/de&lt;br /&gt;
 Edit Indent Block/de&lt;br /&gt;
 Edit Paste/de&lt;br /&gt;
 Edit Redo/de&lt;br /&gt;
 Edit Remark Block/de&lt;br /&gt;
 Edit Replace/de&lt;br /&gt;
 Edit Toggle Bookmark/de&lt;br /&gt;
 Edit Undo/de&lt;br /&gt;
 Edit Unindent Block/de&lt;br /&gt;
 File Close/de&lt;br /&gt;
 File Exit/de&lt;br /&gt;
 File New/de&lt;br /&gt;
 File Open/de&lt;br /&gt;
 File Print Preview/de&lt;br /&gt;
 File Print/de&lt;br /&gt;
 File Project/de&lt;br /&gt;
 File Save As/de&lt;br /&gt;
 File Save/de&lt;br /&gt;
 Help About/de&lt;br /&gt;
 Help Credits/de&lt;br /&gt;
 Help Index/de&lt;br /&gt;
 Help Knowledge Base/de&lt;br /&gt;
 Help MCS Forum/de&lt;br /&gt;
 Help MCS Shop/de&lt;br /&gt;
 Help Support/de&lt;br /&gt;
 Help Update/de&lt;br /&gt;
 Options Communication/de&lt;br /&gt;
 Options Environment/de&lt;br /&gt;
 Options Monitor/de&lt;br /&gt;
 Options Printer/de&lt;br /&gt;
 Options Simulator/de&lt;br /&gt;
 Program Compile/de&lt;br /&gt;
 Program Development Order/de&lt;br /&gt;
 Program Send to Chip/de&lt;br /&gt;
 Program Show Result/de&lt;br /&gt;
 Program Simulate/de&lt;br /&gt;
 Program Syntax Check/de&lt;br /&gt;
 Running BASCOM-AVR/de&lt;br /&gt;
 Tools Batch Compile/de&lt;br /&gt;
 Tools Graphic Converter/de&lt;br /&gt;
 Tools LCD Designer/de&lt;br /&gt;
 Tools LIB Manager/de&lt;br /&gt;
 Tools PDF Update/de&lt;br /&gt;
 Tools Plugin Manager/de&lt;br /&gt;
 Tools Resource Editor/de&lt;br /&gt;
 Tools Stack Analyzer/de&lt;br /&gt;
 Tools Terminal Emulator/de&lt;br /&gt;
 View Code Explorer/de&lt;br /&gt;
 View Error Panel/de&lt;br /&gt;
 View PDF viewer/de&lt;br /&gt;
 View PinOut/de&lt;br /&gt;
 View Project Files/de&lt;br /&gt;
 View Tip/de&lt;br /&gt;
 Window Arrange Icons/de&lt;br /&gt;
 Window Cascade/de&lt;br /&gt;
 Window Minimize All/de&lt;br /&gt;
 Window Tile/de&lt;br /&gt;
 Windows Maximize All/de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 BASCOM-AVR Stichworte - DE Übersetzung&lt;br /&gt;
&lt;br /&gt;
 $AESKEY/de&lt;br /&gt;
 $ASM/de&lt;br /&gt;
 $BAUD/de&lt;br /&gt;
 $BAUD1/de&lt;br /&gt;
 $BGF/de&lt;br /&gt;
 $BIGSTRINGS/de&lt;br /&gt;
 $BOOT/de&lt;br /&gt;
 $CRYPT/de&lt;br /&gt;
 Übersetzt $CRYSTAL/de&lt;br /&gt;
 $DATA/de&lt;br /&gt;
 $DBG/de&lt;br /&gt;
 $DEFAULT/de&lt;br /&gt;
 Übersetzt $EEPLEAVE/de&lt;br /&gt;
 Übersetzt $EEPROM/de&lt;br /&gt;
 Übersetzt $EEPROMHEX/de&lt;br /&gt;
 $EEPROMSIZE/de&lt;br /&gt;
 $EXTERNAL/de&lt;br /&gt;
 $FILE/de&lt;br /&gt;
 $FRAMECHECK/de&lt;br /&gt;
 $FRAMEPROTECT/de&lt;br /&gt;
 $FRAMESIZE/de&lt;br /&gt;
 $HWCHECK/de&lt;br /&gt;
 $HWSTACK/de&lt;br /&gt;
 $INC/de&lt;br /&gt;
 $INCLUDE/de&lt;br /&gt;
 $INITMICRO/de&lt;br /&gt;
 Übersetzt $LCD/de&lt;br /&gt;
 $LCDPUTCTRL/de&lt;br /&gt;
 $LCDPUTDATA/de&lt;br /&gt;
 Übersetzt $LCDRS/de&lt;br /&gt;
 $LCDVFO/de&lt;br /&gt;
 $LIB/de&lt;br /&gt;
 $LOADER/de&lt;br /&gt;
 $LOADERSIZE/de&lt;br /&gt;
 $MAP/de&lt;br /&gt;
 $NOCOMPILE/de&lt;br /&gt;
 $NOFRAMEPROTECT/de&lt;br /&gt;
 $NOINIT/de&lt;br /&gt;
 $NORAMCLEAR/de&lt;br /&gt;
 $NORAMPZ/de&lt;br /&gt;
 $NOTRANSFORM/de&lt;br /&gt;
 $PROG/de&lt;br /&gt;
 $PROGRAMMER/de&lt;br /&gt;
 $PROJECTTIME/de&lt;br /&gt;
 $REGFILE/de&lt;br /&gt;
 $RESOURCE/de&lt;br /&gt;
 $ROMSTART/de&lt;br /&gt;
 $SERIALINPUT/de&lt;br /&gt;
 $SERIALINPUT1/de&lt;br /&gt;
 $SERIALINPUT2LCD/de&lt;br /&gt;
 $SERIALOUTPUT/de&lt;br /&gt;
 $SERIALOUTPUT1/de&lt;br /&gt;
 Übersetzt $SIM/de&lt;br /&gt;
 $SOFTCHECK/de&lt;br /&gt;
 $STACKDUMP/de&lt;br /&gt;
 $SWSTACK/de&lt;br /&gt;
 $TIMEOUT/de&lt;br /&gt;
 $TINY/de&lt;br /&gt;
 $VERSION/de&lt;br /&gt;
 $WAITSTATE/de&lt;br /&gt;
 $XA/de&lt;br /&gt;
 $XRAMSIZE/de&lt;br /&gt;
 $XRAMSTART/de&lt;br /&gt;
 $XTEAKEY/de&lt;br /&gt;
&lt;br /&gt;
 *AUTOCODE/de&lt;br /&gt;
 *IF ELSE ELSEIF ENDIF/de&lt;br /&gt;
&lt;br /&gt;
 1WIRECOUNT/de&lt;br /&gt;
 In Arbeit 1WREAD/de&lt;br /&gt;
 1WRESET/de&lt;br /&gt;
 1WSEARCHFIRST/de&lt;br /&gt;
 1WSEARCHNEXT/de&lt;br /&gt;
 1WVERIFY/de&lt;br /&gt;
 Übersetzt 1WWRITE/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt ABS/de&lt;br /&gt;
 ACOS/de&lt;br /&gt;
 Übersetzt ADR/de&lt;br /&gt;
 Übersetzt ADR2/de&lt;br /&gt;
 AESDECRYPT/de&lt;br /&gt;
 AESENCRYPT/de&lt;br /&gt;
 Übersetzt ALIAS/de&lt;br /&gt;
 Übersetzt ASC/de&lt;br /&gt;
 ASIN/de&lt;br /&gt;
 ATN/de&lt;br /&gt;
 ATN2/de&lt;br /&gt;
&lt;br /&gt;
 BASE64DEC/de&lt;br /&gt;
 BASE64ENC/de&lt;br /&gt;
 BAUD/de&lt;br /&gt;
 BAUD1/de&lt;br /&gt;
 Übersetzt BCD/de&lt;br /&gt;
 Übersetzt BIN/de&lt;br /&gt;
 BIN2GRAY/de&lt;br /&gt;
 Übersetzt BINVAL/de&lt;br /&gt;
 Übersetzt BITS/de&lt;br /&gt;
 Übersetzt BITWAIT/de&lt;br /&gt;
 BLOAD/de&lt;br /&gt;
 BOX/de&lt;br /&gt;
 BOXFILL/de&lt;br /&gt;
 BSAVE/de&lt;br /&gt;
 BUFSPACE/de&lt;br /&gt;
 BYVAL/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt CALL/de&lt;br /&gt;
 CANBAUD/de&lt;br /&gt;
 CANCLEARALLMOBS/de&lt;br /&gt;
 CANCLEARMOB/de&lt;br /&gt;
 CANGETINTS/de&lt;br /&gt;
 CANID/de&lt;br /&gt;
 CANRECEIVE/de&lt;br /&gt;
 CANRESET/de&lt;br /&gt;
 CANSELPAGE/de&lt;br /&gt;
 CANSEND/de&lt;br /&gt;
 Übersetzt CHARPOS/de&lt;br /&gt;
 CHDIR/de&lt;br /&gt;
 CHECKFLOAT/de&lt;br /&gt;
 CHECKSUM/de&lt;br /&gt;
 CHECKSUMXOR/de&lt;br /&gt;
 Übersetzt CHR/de&lt;br /&gt;
 CIRCLE/de&lt;br /&gt;
 CLEAR/de&lt;br /&gt;
 CLOCKDIVISION/de&lt;br /&gt;
 CLOSE/de&lt;br /&gt;
 CLOSESOCKET/de&lt;br /&gt;
 Übersetzt CLS/de&lt;br /&gt;
 CONFIG/de&lt;br /&gt;
 CONFIG 1WIRE/de&lt;br /&gt;
 CONFIG ACI/de&lt;br /&gt;
 CONFIG ACXX/de&lt;br /&gt;
 CONFIG ADC/de&lt;br /&gt;
 CONFIG ADCX/de&lt;br /&gt;
 CONFIG ATEMU/de&lt;br /&gt;
 CONFIG BASE/de&lt;br /&gt;
 CONFIG BCCARD/de&lt;br /&gt;
 CONFIG CANBUS/de&lt;br /&gt;
 CONFIG CANMOB/de&lt;br /&gt;
 CONFIG CLOCK/de&lt;br /&gt;
 CONFIG CLOCKDIV/de&lt;br /&gt;
 CONFIG COM1/de&lt;br /&gt;
 CONFIG COM2/de&lt;br /&gt;
 CONFIG COMX/de&lt;br /&gt;
 CONFIG DACX/de&lt;br /&gt;
 CONFIG DATE/de&lt;br /&gt;
 CONFIG DCF77/de&lt;br /&gt;
 Übersetzt CONFIG DEBOUNCE/de&lt;br /&gt;
 CONFIG DMA/de&lt;br /&gt;
 CONFIG DMACHX/de&lt;br /&gt;
 CONFIG DMXSLAVE/de&lt;br /&gt;
 CONFIG DP/de&lt;br /&gt;
 CONFIG EEPROM/de&lt;br /&gt;
 CONFIG ERROR/de&lt;br /&gt;
 CONFIG EVENT SYSTEM/de&lt;br /&gt;
 CONFIG EXTENDED PORT/de&lt;br /&gt;
 CONFIG GRAPHLCD/de&lt;br /&gt;
 CONFIG HITAG/de&lt;br /&gt;
 CONFIG I2CDELAY/de&lt;br /&gt;
 CONFIG I2CSLAVE/de&lt;br /&gt;
 CONFIG INPUT/de&lt;br /&gt;
 CONFIG INTX/de&lt;br /&gt;
 CONFIG KBD/de&lt;br /&gt;
 CONFIG KEYBOARD/de&lt;br /&gt;
 Übersetzt CONFIG LCD/de&lt;br /&gt;
 CONFIG LCDBUS/de&lt;br /&gt;
 Übersetzt CONFIG LCDMODE/de&lt;br /&gt;
 Übersetzt CONFIG LCDPIN/de&lt;br /&gt;
 CONFIG OSC/de&lt;br /&gt;
 Übersetzt CONFIG PORT/de&lt;br /&gt;
 Übersetzt CONFIG POWERMODE/de&lt;br /&gt;
 CONFIG POWER REDUCTION/de&lt;br /&gt;
 CONFIG PRINT/de&lt;br /&gt;
 CONFIG PRINTBIN/de&lt;br /&gt;
 CONFIG PRIORITY/de&lt;br /&gt;
 CONFIG PS2EMU/de&lt;br /&gt;
 CONFIG RC5/de&lt;br /&gt;
 CONFIG SCL/de&lt;br /&gt;
 CONFIG SDA/de&lt;br /&gt;
 CONFIG SERIALIN/de&lt;br /&gt;
 CONFIG SERIALOUT/de&lt;br /&gt;
 CONFIG SERVOS/de&lt;br /&gt;
 CONFIG SHIFTIN/de&lt;br /&gt;
 CONFIG SINGLE/de&lt;br /&gt;
 CONFIG SPI/de&lt;br /&gt;
 CONFIG SPIX/de&lt;br /&gt;
 Übersetzt CONFIG SUBMODE/de&lt;br /&gt;
 CONFIG SYSCLOCK/de&lt;br /&gt;
 CONFIG TCPIP/de&lt;br /&gt;
 CONFIG TCXX/de&lt;br /&gt;
 CONFIG TIMER0/de&lt;br /&gt;
 CONFIG TIMER1/de&lt;br /&gt;
 CONFIG TIMER2/de&lt;br /&gt;
 CONFIG TWI/de&lt;br /&gt;
 CONFIG TWISLAVE/de&lt;br /&gt;
 CONFIG USB/de&lt;br /&gt;
 CONFIG VPORT/de&lt;br /&gt;
 CONFIG WAITSUART/de&lt;br /&gt;
 CONFIG WATCHDOG/de&lt;br /&gt;
 CONFIG X10/de&lt;br /&gt;
 CONFIG XPIN/de&lt;br /&gt;
 CONFIG XRAM/de&lt;br /&gt;
 Übersetzt CONST/de&lt;br /&gt;
 Übersetzt COS/de&lt;br /&gt;
 COSH/de&lt;br /&gt;
 COUNTER0/de&lt;br /&gt;
 COUNTER1/de&lt;br /&gt;
 CPEEK/de&lt;br /&gt;
 CPEEKH/de&lt;br /&gt;
 CRC16/de&lt;br /&gt;
 CRC16UNI/de&lt;br /&gt;
 CRC32/de&lt;br /&gt;
 CRC8/de&lt;br /&gt;
 CRYSTAL/de&lt;br /&gt;
 Übersetzt CURSOR/de&lt;br /&gt;
 &lt;br /&gt;
 DATA/de&lt;br /&gt;
 DATE$/de&lt;br /&gt;
 DATE/de&lt;br /&gt;
 DAYOFWEEK/de&lt;br /&gt;
 DAYOFYEAR/de&lt;br /&gt;
 DBG/de&lt;br /&gt;
 DCF77TIMEZONE/de&lt;br /&gt;
 Übersetzt DEBOUNCE/de&lt;br /&gt;
 DEBUG/de&lt;br /&gt;
 DECLARE FUNCTION/de&lt;br /&gt;
 DECLARE SUB/de&lt;br /&gt;
 Übersetzt DECR/de&lt;br /&gt;
 Übersetzt DEFLCDCHAR/de&lt;br /&gt;
 DEFXXX/de&lt;br /&gt;
 DEG2RAD/de&lt;br /&gt;
 Übersetzt DELAY/de&lt;br /&gt;
 Übersetzt DELCHAR/de&lt;br /&gt;
 Übersetzt DELCHARS/de&lt;br /&gt;
 DIM/de&lt;br /&gt;
 DIR/de&lt;br /&gt;
 Übersetzt DISABLE/de&lt;br /&gt;
 DISKFREE/de&lt;br /&gt;
 DISKSIZE/de&lt;br /&gt;
 DISPLAY/de&lt;br /&gt;
 Übersetzt DO-LOOP/de&lt;br /&gt;
 DTMFOUT/de&lt;br /&gt;
 DriveCheck/de&lt;br /&gt;
 DriveGetIdentity/de&lt;br /&gt;
 DriveInit/de&lt;br /&gt;
 DriveReadSector/de&lt;br /&gt;
 DriveReset/de&lt;br /&gt;
 DriveWriteSector/de&lt;br /&gt;
&lt;br /&gt;
 ECHO/de&lt;br /&gt;
 ELSE/de&lt;br /&gt;
 Übersetzt ENABLE/de&lt;br /&gt;
 ENCODER/de&lt;br /&gt;
 Übersetzt END/de&lt;br /&gt;
 EOF/de&lt;br /&gt;
 EXIT/de&lt;br /&gt;
 EXP/de&lt;br /&gt;
 &lt;br /&gt;
 FILEATTR/de&lt;br /&gt;
 FILEDATE/de&lt;br /&gt;
 FILEDATETIME/de&lt;br /&gt;
 FILELEN/de&lt;br /&gt;
 FILETIME/de&lt;br /&gt;
 Übersetzt FIX/de&lt;br /&gt;
 FLUSH/de&lt;br /&gt;
 Übersetzt FOR-NEXT/de&lt;br /&gt;
 FORMAT/de&lt;br /&gt;
 Übersetzt FOURTHLINE/de&lt;br /&gt;
 Übersetzt FRAC/de&lt;br /&gt;
 FREEFILE/de&lt;br /&gt;
 FUSING/de&lt;br /&gt;
&lt;br /&gt;
 GET/de&lt;br /&gt;
 GETADC/de&lt;br /&gt;
 GETATKBD/de&lt;br /&gt;
 GETATKBDRAW/de&lt;br /&gt;
 GETDSTIP/de&lt;br /&gt;
 GETDSTPORT/de&lt;br /&gt;
 GETKBD/de&lt;br /&gt;
 GETRC/de&lt;br /&gt;
 GETRC5/de&lt;br /&gt;
 GETREG/de&lt;br /&gt;
 GETSOCKET/de&lt;br /&gt;
 GETTCPREGS/de&lt;br /&gt;
 GLCDCMD/de&lt;br /&gt;
 GLCDDATA/de&lt;br /&gt;
 Übersetzt GOSUB/de&lt;br /&gt;
 Übersetzt GOTO/de&lt;br /&gt;
 GRAY2BIN/de&lt;br /&gt;
 &lt;br /&gt;
 Übersetzt HEX/de&lt;br /&gt;
 Übersetzt HEXVAL/de&lt;br /&gt;
 Übersetzt HIGH/de&lt;br /&gt;
 Übersetzt HIGHW/de&lt;br /&gt;
 Übersetzt HOME/de&lt;br /&gt;
 &lt;br /&gt;
 I2CINIT/de&lt;br /&gt;
 I2CRBYTE/de&lt;br /&gt;
 I2CRECEIVE/de&lt;br /&gt;
 I2CREPSTART/de&lt;br /&gt;
 I2CSEND/de&lt;br /&gt;
 I2CSTART/de&lt;br /&gt;
 I2CSTOP/de&lt;br /&gt;
 I2CWBYTE/de&lt;br /&gt;
 Übersetzt IDLE/de&lt;br /&gt;
 Übersetzt IF-THEN-ELSE-END IF/de&lt;br /&gt;
 Übersetzt INCR/de&lt;br /&gt;
 INITFILESYSTEM/de&lt;br /&gt;
 Übersetzt INITLCD/de&lt;br /&gt;
 Übersetzt INKEY/de&lt;br /&gt;
 INP/de&lt;br /&gt;
 INPUT/de&lt;br /&gt;
 INPUTBIN/de&lt;br /&gt;
 INPUTHEX/de&lt;br /&gt;
 INSERTCHAR/de&lt;br /&gt;
 INSTR/de&lt;br /&gt;
 Übersetzt INT/de&lt;br /&gt;
 IP2STR/de&lt;br /&gt;
 Übersetzt ISCHARWAITING/de&lt;br /&gt;
&lt;br /&gt;
 KILL/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt LCASE/de&lt;br /&gt;
 Übersetzt LCD/de&lt;br /&gt;
 Übersetzt LCDAT/de&lt;br /&gt;
 Übersetzt LCDAUTODIM/de&lt;br /&gt;
 Übersetzt LCDCMD/de&lt;br /&gt;
 Übersetzt LCDCONTRAST/de&lt;br /&gt;
 Übersetzt LCDDATA/de&lt;br /&gt;
 Übersetzt LEFT/de&lt;br /&gt;
 Übersetzt LEN/de&lt;br /&gt;
 Übersetzt LINE/de&lt;br /&gt;
 Übersetzt LINEINPUT/de&lt;br /&gt;
 ?? LINE INPUT/de&lt;br /&gt;
 Übersetzt LOAD/de&lt;br /&gt;
 Übersetzt LOADADR/de&lt;br /&gt;
 Übersetzt LOADLABEL/de&lt;br /&gt;
 Übersetzt LOADWORDADR/de&lt;br /&gt;
 Übersetzt LOC/de&lt;br /&gt;
 Übersetzt LOCAL/de&lt;br /&gt;
 Übersetzt LOCATE/de&lt;br /&gt;
 Übersetzt LOF/de&lt;br /&gt;
 Übersetzt LOG/de&lt;br /&gt;
 Übersetzt LOG10/de&lt;br /&gt;
 Übersetzt LOOKDOWN/de&lt;br /&gt;
 Übersetzt LOOKUP/de&lt;br /&gt;
 Übersetzt LOOKUPSTR/de&lt;br /&gt;
 Übersetzt LOW/de&lt;br /&gt;
 Übersetzt LOWERLINE/de&lt;br /&gt;
 Übersetzt LTRIM/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt MACRO/de&lt;br /&gt;
 Übersetzt MAKEBCD/de&lt;br /&gt;
 Übersetzt MAKEDEC/de&lt;br /&gt;
 Übersetzt MAKEINT/de&lt;br /&gt;
 MAKEMODBUS/de&lt;br /&gt;
 MAKETCP/de&lt;br /&gt;
 Übersetzt MAX/de&lt;br /&gt;
 MEMCOPY/de&lt;br /&gt;
 Übersetzt MID/de&lt;br /&gt;
 Übersetzt MIN/de&lt;br /&gt;
 MKDIR/de&lt;br /&gt;
 Übersetzt MOD/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt NBITS/de&lt;br /&gt;
 &lt;br /&gt;
 ON INTERRUPT/de&lt;br /&gt;
 ON VALUE/de&lt;br /&gt;
 OPEN/de&lt;br /&gt;
 OUT/de&lt;br /&gt;
&lt;br /&gt;
 PEEK/de&lt;br /&gt;
 POKE/de&lt;br /&gt;
 POPALL/de&lt;br /&gt;
 POWER/de&lt;br /&gt;
 Übersetzt POWERDOWN/de&lt;br /&gt;
 Übersetzt POWERSAVE/de&lt;br /&gt;
 Übersetzt POWER MODE/de&lt;br /&gt;
 PRINT/de&lt;br /&gt;
 PRINTBIN/de&lt;br /&gt;
 PS2MOUSEXY/de&lt;br /&gt;
 PSET/de&lt;br /&gt;
 PULSEIN/de&lt;br /&gt;
 PULSEOUT/de&lt;br /&gt;
 PUSHALL/de&lt;br /&gt;
 PUT/de&lt;br /&gt;
&lt;br /&gt;
 QUOTE/de&lt;br /&gt;
 &lt;br /&gt;
 RAD2DEG/de&lt;br /&gt;
 RC5SEND/de&lt;br /&gt;
 RC5SENDEXT/de&lt;br /&gt;
 RC6SEND/de&lt;br /&gt;
 READ/de&lt;br /&gt;
 Übersetzt READEEPROM/de&lt;br /&gt;
 READHITAG/de&lt;br /&gt;
 READMAGCARD/de&lt;br /&gt;
 READSIG/de&lt;br /&gt;
 Übersetzt REM/de&lt;br /&gt;
 REPLACECHARS/de&lt;br /&gt;
 Übersetzt RESET/de&lt;br /&gt;
 Übersetzt RESTORE/de&lt;br /&gt;
 Übersetzt RETURN/de&lt;br /&gt;
 Übersetzt RIGHT/de&lt;br /&gt;
 RMDIR/de&lt;br /&gt;
 RND/de&lt;br /&gt;
 ROTATE/de&lt;br /&gt;
 Übersetzt ROUND/de&lt;br /&gt;
 RTRIM/de&lt;br /&gt;
 &lt;br /&gt;
 SECELAPSED/de&lt;br /&gt;
 SECOFDAY/de&lt;br /&gt;
 SEEK/de&lt;br /&gt;
 SELECT-CASE-END SELECT/de&lt;br /&gt;
 SENDSCAN/de&lt;br /&gt;
 SENDSCANKBD/de&lt;br /&gt;
 SERIN/de&lt;br /&gt;
 SEROUT/de&lt;br /&gt;
 Übersetzt SET/de&lt;br /&gt;
 SETFONT/de&lt;br /&gt;
 SETIPPROTOCOL/de&lt;br /&gt;
 SETREG/de&lt;br /&gt;
 SETTCP/de&lt;br /&gt;
 SETTCPREGS/de&lt;br /&gt;
 Übersetzt SGN/de&lt;br /&gt;
 SHIFT/de&lt;br /&gt;
 SHIFTCURSOR/de&lt;br /&gt;
 SHIFTIN/de&lt;br /&gt;
 SHIFTLCD/de&lt;br /&gt;
 SHIFTOUT/de&lt;br /&gt;
 SHOWPIC/de&lt;br /&gt;
 SHOWPICE/de&lt;br /&gt;
 Übersetzt SIN/de&lt;br /&gt;
 SINH/de&lt;br /&gt;
 SNTP/de&lt;br /&gt;
 SOCKETCLOSE/de&lt;br /&gt;
 SOCKETCONNECT/de&lt;br /&gt;
 SOCKETDISCONNECT/de&lt;br /&gt;
 SOCKETLISTEN/de&lt;br /&gt;
 SOCKETSTAT/de&lt;br /&gt;
 SONYSEND/de&lt;br /&gt;
 Übersetzt SORT/de&lt;br /&gt;
 Übersetzt SOUND/de&lt;br /&gt;
 Übersetzt SPACE/de&lt;br /&gt;
 Übersetzt SPC/de&lt;br /&gt;
 SPIIN/de&lt;br /&gt;
 SPIINIT/de&lt;br /&gt;
 SPIMOVE/de&lt;br /&gt;
 SPIOUT/de&lt;br /&gt;
 Übersetzt SPLIT/de&lt;br /&gt;
 Übersetzt SQR/de&lt;br /&gt;
 Übersetzt START/de&lt;br /&gt;
 STCHECK/de&lt;br /&gt;
 Übersetzt STOP/de&lt;br /&gt;
 Übersetzt STR/de&lt;br /&gt;
 STR2DIGITS/de&lt;br /&gt;
 Übersetzt STRING/de&lt;br /&gt;
 Übersetzt SUB/de&lt;br /&gt;
 SWAP/de&lt;br /&gt;
 SYSDAY/de&lt;br /&gt;
 SYSSEC/de&lt;br /&gt;
 SYSSECELAPSED/de&lt;br /&gt;
 &lt;br /&gt;
 Übersetzt TAN/de&lt;br /&gt;
 TANH/de&lt;br /&gt;
 TCPCHECKSUM/de&lt;br /&gt;
 TCPREAD/de&lt;br /&gt;
 TCPREADHEADER/de&lt;br /&gt;
 TCPWRITE/de&lt;br /&gt;
 TCPWRITESTR/de&lt;br /&gt;
 Übersetzt THIRDLINE/de&lt;br /&gt;
 TIME$/de&lt;br /&gt;
 TIME/de&lt;br /&gt;
 Übersetzt TOGGLE/de&lt;br /&gt;
 TRIM/de&lt;br /&gt;
 &lt;br /&gt;
 UCASE/de&lt;br /&gt;
 UDPREAD/de&lt;br /&gt;
 UDPREADHEADER/de&lt;br /&gt;
 UDPWRITE/de&lt;br /&gt;
 UDPWRITESTR/de&lt;br /&gt;
 Übersetzt UPPERLINE/de&lt;br /&gt;
 Übersetzt VAL/de&lt;br /&gt;
 VARPTR/de&lt;br /&gt;
 VER/de&lt;br /&gt;
 VERSION/de&lt;br /&gt;
 &lt;br /&gt;
 Übersetzt WAIT/de&lt;br /&gt;
 Übersetzt WAITKEY/de&lt;br /&gt;
 Übersetzt WAITMS/de&lt;br /&gt;
 Übersetzt WAITUS/de&lt;br /&gt;
 Übersetzt WHILE-WEND/de&lt;br /&gt;
 WRITE/de&lt;br /&gt;
 Übersetzt WRITEEEPROM/de&lt;br /&gt;
&lt;br /&gt;
 X10DETECT/de&lt;br /&gt;
 X10SEND/de&lt;br /&gt;
 XTEADECODE/de&lt;br /&gt;
 XTEAENCODE/de&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/BCD/de</id>
		<title>BCD/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/BCD/de"/>
				<updated>2013-03-13T05:06:55Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* ASM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Konvertiert eine BCD-kodierte Variable in einen String. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
PRINT&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;BCD&amp;lt;/span&amp;gt;( var )&lt;br /&gt;
&lt;br /&gt;
LCD&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;BCD&amp;lt;/span&amp;gt;( var)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Remarks&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;604&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;11%&amp;quot; style=&amp;quot;width: 63px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 532px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Die zu konvertierende numerische Variable.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie eine I²C-Uhr verwenden die die Daten im BCD-kodiertem Format bereitstellt, kann diese Funktion verwendet werden um die Daten korrekt anzuzeigen. &lt;br /&gt;
&lt;br /&gt;
BCD() zeigt die Werte mit einer führenden 0 an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die BCD()-Funktion ist für Print- oder LCD-Anweisungen gedacht. &lt;br /&gt;
&lt;br /&gt;
Die Funktion MAKEBCD konvertiert Variablen vom Dezimal- in das BCD-Format. &lt;br /&gt;
&lt;br /&gt;
Die Funktion MAKEDEC konvertiert Variablen vom BCD- in das Dezimal-Format.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[MAKEDEC]]&amp;amp;nbsp;,&amp;amp;nbsp;[[MAKEBCD]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;ASM&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Calls: _BcdStr&lt;br /&gt;
&lt;br /&gt;
Input: X hält sie Adresse der Variablen&lt;br /&gt;
&lt;br /&gt;
Output: R0 Die Anzahl der Bytes der Daten im Frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beispiel&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : bcd.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstration of split and combine BCD Bytes&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
'use in simulator : possible&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 4000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
'===============================================================================&lt;br /&gt;
' Set up Variables&lt;br /&gt;
'===============================================================================&lt;br /&gt;
Dim A As Byte 'Setup A Variable&lt;br /&gt;
Dim B As Byte 'Setup B Variable&lt;br /&gt;
Dim C As Byte 'Setup C Variable&lt;br /&gt;
 &lt;br /&gt;
A = &amp;amp;H89 &lt;br /&gt;
'===============================================================================&lt;br /&gt;
' Main&lt;br /&gt;
'===============================================================================&lt;br /&gt;
Main:&lt;br /&gt;
Print &amp;quot;Combined : &amp;quot; ; Hex(a) 'Print A&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
B = A And &amp;amp;B1111_0000 'Mask To Get Only High Nibble Of Byte&lt;br /&gt;
Shift B , Right , 4 'Shift High Nibble To Low Nibble Position , Store As B&lt;br /&gt;
 &lt;br /&gt;
C = A And &amp;amp;B0000_1111 'Mask To Get Only Low Nibble Of Byte , Store As C&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;Split : &amp;quot; ; B ; &amp;quot; &amp;quot; ; C 'Print B (High Nibble) , C(low Nibble)&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
Shift B , Left , 4 'Shift Data From Low Nibble Into High Nibble Position&lt;br /&gt;
 &lt;br /&gt;
A = B + C 'Add B (High Nibble) And C(low Nibble) Together&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;Re-Combined: &amp;quot; ; Hex(a); &amp;quot; &amp;quot; ; Bcd(a) 'Print A (re -combined Byte)&lt;br /&gt;
End 'End Program&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/BCD/de</id>
		<title>BCD/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/BCD/de"/>
				<updated>2013-03-13T05:04:54Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* ASM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Konvertiert eine BCD-kodierte Variable in einen String. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
PRINT&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;BCD&amp;lt;/span&amp;gt;( var )&lt;br /&gt;
&lt;br /&gt;
LCD&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;BCD&amp;lt;/span&amp;gt;( var)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Remarks&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;604&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;11%&amp;quot; style=&amp;quot;width: 63px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 532px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Die zu konvertierende numerische Variable.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie eine I²C-Uhr verwenden die die Daten im BCD-kodiertem Format bereitstellt, kann diese Funktion verwendet werden um die Daten korrekt anzuzeigen. &lt;br /&gt;
&lt;br /&gt;
BCD() zeigt die Werte mit einer führenden 0 an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die BCD()-Funktion ist für Print- oder LCD-Anweisungen gedacht. &lt;br /&gt;
&lt;br /&gt;
Die Funktion MAKEBCD konvertiert Variablen vom Dezimal- in das BCD-Format. &lt;br /&gt;
&lt;br /&gt;
Die Funktion MAKEDEC konvertiert Variablen vom BCD- in das Dezimal-Format.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[MAKEDEC]]&amp;amp;nbsp;,&amp;amp;nbsp;[[MAKEBCD]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;ASM&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Calls: _BcdStr&lt;br /&gt;
&lt;br /&gt;
Input: X hält sie Adresse der Variablen&lt;br /&gt;
&lt;br /&gt;
Output: R0 Die Anzahl der Bytes, frame with data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beispiel&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : bcd.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstration of split and combine BCD Bytes&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
'use in simulator : possible&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 4000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
'===============================================================================&lt;br /&gt;
' Set up Variables&lt;br /&gt;
'===============================================================================&lt;br /&gt;
Dim A As Byte 'Setup A Variable&lt;br /&gt;
Dim B As Byte 'Setup B Variable&lt;br /&gt;
Dim C As Byte 'Setup C Variable&lt;br /&gt;
 &lt;br /&gt;
A = &amp;amp;H89 &lt;br /&gt;
'===============================================================================&lt;br /&gt;
' Main&lt;br /&gt;
'===============================================================================&lt;br /&gt;
Main:&lt;br /&gt;
Print &amp;quot;Combined : &amp;quot; ; Hex(a) 'Print A&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
B = A And &amp;amp;B1111_0000 'Mask To Get Only High Nibble Of Byte&lt;br /&gt;
Shift B , Right , 4 'Shift High Nibble To Low Nibble Position , Store As B&lt;br /&gt;
 &lt;br /&gt;
C = A And &amp;amp;B0000_1111 'Mask To Get Only Low Nibble Of Byte , Store As C&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;Split : &amp;quot; ; B ; &amp;quot; &amp;quot; ; C 'Print B (High Nibble) , C(low Nibble)&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
Shift B , Left , 4 'Shift Data From Low Nibble Into High Nibble Position&lt;br /&gt;
 &lt;br /&gt;
A = B + C 'Add B (High Nibble) And C(low Nibble) Together&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;Re-Combined: &amp;quot; ; Hex(a); &amp;quot; &amp;quot; ; Bcd(a) 'Print A (re -combined Byte)&lt;br /&gt;
End 'End Program&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/BCD/de</id>
		<title>BCD/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/BCD/de"/>
				<updated>2013-03-13T04:59:50Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Remarks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Konvertiert eine BCD-kodierte Variable in einen String. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
PRINT&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;BCD&amp;lt;/span&amp;gt;( var )&lt;br /&gt;
&lt;br /&gt;
LCD&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;BCD&amp;lt;/span&amp;gt;( var)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Remarks&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;604&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;11%&amp;quot; style=&amp;quot;width: 63px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 532px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Die zu konvertierende numerische Variable.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie eine I²C-Uhr verwenden die die Daten im BCD-kodiertem Format bereitstellt, kann diese Funktion verwendet werden um die Daten korrekt anzuzeigen. &lt;br /&gt;
&lt;br /&gt;
BCD() zeigt die Werte mit einer führenden 0 an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die BCD()-Funktion ist für Print- oder LCD-Anweisungen gedacht. &lt;br /&gt;
&lt;br /&gt;
Die Funktion MAKEBCD konvertiert Variablen vom Dezimal- in das BCD-Format. &lt;br /&gt;
&lt;br /&gt;
Die Funktion MAKEDEC konvertiert Variablen vom BCD- in das Dezimal-Format.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[MAKEDEC]]&amp;amp;nbsp;,&amp;amp;nbsp;[[MAKEBCD]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;ASM&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Calls: _BcdStr&lt;br /&gt;
&lt;br /&gt;
Input: X hold address of variable&lt;br /&gt;
&lt;br /&gt;
Output: R0 with number of bytes, frame with data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beispiel&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : bcd.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstration of split and combine BCD Bytes&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
'use in simulator : possible&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 4000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
'===============================================================================&lt;br /&gt;
' Set up Variables&lt;br /&gt;
'===============================================================================&lt;br /&gt;
Dim A As Byte 'Setup A Variable&lt;br /&gt;
Dim B As Byte 'Setup B Variable&lt;br /&gt;
Dim C As Byte 'Setup C Variable&lt;br /&gt;
 &lt;br /&gt;
A = &amp;amp;H89 &lt;br /&gt;
'===============================================================================&lt;br /&gt;
' Main&lt;br /&gt;
'===============================================================================&lt;br /&gt;
Main:&lt;br /&gt;
Print &amp;quot;Combined : &amp;quot; ; Hex(a) 'Print A&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
B = A And &amp;amp;B1111_0000 'Mask To Get Only High Nibble Of Byte&lt;br /&gt;
Shift B , Right , 4 'Shift High Nibble To Low Nibble Position , Store As B&lt;br /&gt;
 &lt;br /&gt;
C = A And &amp;amp;B0000_1111 'Mask To Get Only Low Nibble Of Byte , Store As C&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;Split : &amp;quot; ; B ; &amp;quot; &amp;quot; ; C 'Print B (High Nibble) , C(low Nibble)&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
Shift B , Left , 4 'Shift Data From Low Nibble Into High Nibble Position&lt;br /&gt;
 &lt;br /&gt;
A = B + C 'Add B (High Nibble) And C(low Nibble) Together&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;Re-Combined: &amp;quot; ; Hex(a); &amp;quot; &amp;quot; ; Bcd(a) 'Print A (re -combined Byte)&lt;br /&gt;
End 'End Program&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/BCD/de</id>
		<title>BCD/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/BCD/de"/>
				<updated>2013-03-13T04:58:49Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Konvertiert eine BCD-kodierte Variable in einen String. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
PRINT&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;BCD&amp;lt;/span&amp;gt;( var )&lt;br /&gt;
&lt;br /&gt;
LCD&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;BCD&amp;lt;/span&amp;gt;( var)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Remarks&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;604&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;11%&amp;quot; style=&amp;quot;width: 63px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 532px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Die zu konvertierende numerische Variable.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie eine I²C-Uhr verwenden die die Daten im BCD-kodiertem Format bereitstellt, kann diese Funktion verwendet werden um die Daten korrekt anzuzeigen. &lt;br /&gt;
&lt;br /&gt;
BCD() zeigt die Werte mit einer führenden 0 an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die BCD()-Funktion ist für Print- oder LCD-Anweisungen gedacht. &lt;br /&gt;
&lt;br /&gt;
Die Funktion MAKEBCD konvertiert Variablen vom Dezimal- in das BCD-Format. &lt;br /&gt;
&lt;br /&gt;
Die Funktion MAKEBCD konvertiert Variablen vom BCD- in das Dezimal-Format.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[MAKEDEC]]&amp;amp;nbsp;,&amp;amp;nbsp;[[MAKEBCD]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;ASM&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Calls: _BcdStr&lt;br /&gt;
&lt;br /&gt;
Input: X hold address of variable&lt;br /&gt;
&lt;br /&gt;
Output: R0 with number of bytes, frame with data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beispiel&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : bcd.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstration of split and combine BCD Bytes&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
'use in simulator : possible&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 4000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
'===============================================================================&lt;br /&gt;
' Set up Variables&lt;br /&gt;
'===============================================================================&lt;br /&gt;
Dim A As Byte 'Setup A Variable&lt;br /&gt;
Dim B As Byte 'Setup B Variable&lt;br /&gt;
Dim C As Byte 'Setup C Variable&lt;br /&gt;
 &lt;br /&gt;
A = &amp;amp;H89 &lt;br /&gt;
'===============================================================================&lt;br /&gt;
' Main&lt;br /&gt;
'===============================================================================&lt;br /&gt;
Main:&lt;br /&gt;
Print &amp;quot;Combined : &amp;quot; ; Hex(a) 'Print A&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
B = A And &amp;amp;B1111_0000 'Mask To Get Only High Nibble Of Byte&lt;br /&gt;
Shift B , Right , 4 'Shift High Nibble To Low Nibble Position , Store As B&lt;br /&gt;
 &lt;br /&gt;
C = A And &amp;amp;B0000_1111 'Mask To Get Only Low Nibble Of Byte , Store As C&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;Split : &amp;quot; ; B ; &amp;quot; &amp;quot; ; C 'Print B (High Nibble) , C(low Nibble)&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
Shift B , Left , 4 'Shift Data From Low Nibble Into High Nibble Position&lt;br /&gt;
 &lt;br /&gt;
A = B + C 'Add B (High Nibble) And C(low Nibble) Together&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;Re-Combined: &amp;quot; ; Hex(a); &amp;quot; &amp;quot; ; Bcd(a) 'Print A (re -combined Byte)&lt;br /&gt;
End 'End Program&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/BCD/de</id>
		<title>BCD/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/BCD/de"/>
				<updated>2013-03-13T04:58:27Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Konvertiert eine BCD-kodierte Variable in einen String. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
PRINT&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;BCD&amp;lt;/span&amp;gt;( var )&lt;br /&gt;
&lt;br /&gt;
LCD&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;BCD&amp;lt;/span&amp;gt;( var)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Remarks&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;604&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;11%&amp;quot; style=&amp;quot;width: 63px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 532px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Die zu konvertierende numerische Variable.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie eine I²C-Uhr verwenden die die Daten im BCD-kodiertem Format bereitstellt, kann diese Funktion verwendet werden um die Daten korrekt anzuzeigen. &lt;br /&gt;
&lt;br /&gt;
BCD() zeigt die Werte mit einer führenden 0 an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die BCD()-Funktion ist für Print- oder LCD-Anweisungen gedacht. &lt;br /&gt;
&lt;br /&gt;
Die Funktion MAKEBCD konvertiert Variablen vom Dezimal- in das BCD-Format. &lt;br /&gt;
&lt;br /&gt;
Die Funktion MAKEBCD konvertiert Variablen vom BCD- in das Dezimal-Format.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[MAKEDEC]]&amp;amp;nbsp;,&amp;amp;nbsp;[[MAKEBCD]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;ASM&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Calls: _BcdStr&lt;br /&gt;
&lt;br /&gt;
Input: X hold address of variable&lt;br /&gt;
&lt;br /&gt;
Output: R0 with number of bytes, frame with data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : bcd.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstration of split and combine BCD Bytes&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
'use in simulator : possible&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 4000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
'===============================================================================&lt;br /&gt;
' Set up Variables&lt;br /&gt;
'===============================================================================&lt;br /&gt;
Dim A As Byte 'Setup A Variable&lt;br /&gt;
Dim B As Byte 'Setup B Variable&lt;br /&gt;
Dim C As Byte 'Setup C Variable&lt;br /&gt;
 &lt;br /&gt;
A = &amp;amp;H89 &lt;br /&gt;
'===============================================================================&lt;br /&gt;
' Main&lt;br /&gt;
'===============================================================================&lt;br /&gt;
Main:&lt;br /&gt;
Print &amp;quot;Combined : &amp;quot; ; Hex(a) 'Print A&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
B = A And &amp;amp;B1111_0000 'Mask To Get Only High Nibble Of Byte&lt;br /&gt;
Shift B , Right , 4 'Shift High Nibble To Low Nibble Position , Store As B&lt;br /&gt;
 &lt;br /&gt;
C = A And &amp;amp;B0000_1111 'Mask To Get Only Low Nibble Of Byte , Store As C&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;Split : &amp;quot; ; B ; &amp;quot; &amp;quot; ; C 'Print B (High Nibble) , C(low Nibble)&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
Shift B , Left , 4 'Shift Data From Low Nibble Into High Nibble Position&lt;br /&gt;
 &lt;br /&gt;
A = B + C 'Add B (High Nibble) And C(low Nibble) Together&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;Re-Combined: &amp;quot; ; Hex(a); &amp;quot; &amp;quot; ; Bcd(a) 'Print A (re -combined Byte)&lt;br /&gt;
End 'End Program&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/BCD/de</id>
		<title>BCD/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/BCD/de"/>
				<updated>2013-03-13T04:57:46Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Remarks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Konvertiert eine BCD-kodierte Variable in einen String. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
PRINT&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;BCD&amp;lt;/span&amp;gt;( var )&lt;br /&gt;
&lt;br /&gt;
LCD&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;BCD&amp;lt;/span&amp;gt;( var)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Remarks&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;604&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;11%&amp;quot; style=&amp;quot;width: 63px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 532px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Die zu konvertierende numerische Variable.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie eine I²C-Uhr verwenden die die Daten im BCD-kodiertem Format bereitstellt, kann diese Funktion verwendet werden um die Daten korrekt anzuzeigen. &lt;br /&gt;
&lt;br /&gt;
BCD() zeigt die Werte mit einer führenden 0 an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die BCD()-Funktion ist für Print- oder LCD-Anweisungen gedacht. &lt;br /&gt;
&lt;br /&gt;
Die Funktion MAKEBCD konvertiert Variablen vom Dezimal- in das BCD-Format. &lt;br /&gt;
&lt;br /&gt;
Die Funktion MAKEBCD konvertiert Variablen vom BCD- in das Dezimal-Format.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[MAKEDEC]]&amp;amp;nbsp;,&amp;amp;nbsp;[[MAKEBCD]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;ASM&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Calls: _BcdStr&lt;br /&gt;
&lt;br /&gt;
Input: X hold address of variable&lt;br /&gt;
&lt;br /&gt;
Output: R0 with number of bytes, frame with data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : bcd.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstration of split and combine BCD Bytes&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
'use in simulator : possible&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 4000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
'===============================================================================&lt;br /&gt;
' Set up Variables&lt;br /&gt;
'===============================================================================&lt;br /&gt;
Dim A As Byte 'Setup A Variable&lt;br /&gt;
Dim B As Byte 'Setup B Variable&lt;br /&gt;
Dim C As Byte 'Setup C Variable&lt;br /&gt;
 &lt;br /&gt;
A = &amp;amp;H89 &lt;br /&gt;
'===============================================================================&lt;br /&gt;
' Main&lt;br /&gt;
'===============================================================================&lt;br /&gt;
Main:&lt;br /&gt;
Print &amp;quot;Combined : &amp;quot; ; Hex(a) 'Print A&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
B = A And &amp;amp;B1111_0000 'Mask To Get Only High Nibble Of Byte&lt;br /&gt;
Shift B , Right , 4 'Shift High Nibble To Low Nibble Position , Store As B&lt;br /&gt;
 &lt;br /&gt;
C = A And &amp;amp;B0000_1111 'Mask To Get Only Low Nibble Of Byte , Store As C&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;Split : &amp;quot; ; B ; &amp;quot; &amp;quot; ; C 'Print B (High Nibble) , C(low Nibble)&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
Shift B , Left , 4 'Shift Data From Low Nibble Into High Nibble Position&lt;br /&gt;
 &lt;br /&gt;
A = B + C 'Add B (High Nibble) And C(low Nibble) Together&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;Re-Combined: &amp;quot; ; Hex(a); &amp;quot; &amp;quot; ; Bcd(a) 'Print A (re -combined Byte)&lt;br /&gt;
End 'End Program&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/BCD/de</id>
		<title>BCD/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/BCD/de"/>
				<updated>2013-03-13T04:47:35Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* (**COPIED FROM ENGLISH PAGE**) = */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Konvertiert eine BCD-kodierte Variable in einen String. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
PRINT&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;BCD&amp;lt;/span&amp;gt;( var )&lt;br /&gt;
&lt;br /&gt;
LCD&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;BCD&amp;lt;/span&amp;gt;( var)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Remarks&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;604&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;11%&amp;quot; style=&amp;quot;width: 63px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 532px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Numeric variable to convert.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you want to use an I2C clock device which stores its values in BCD format you can use this function to print the value correctly.&lt;br /&gt;
&lt;br /&gt;
BCD() displays values with a leading zero.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BCD() function is intended for the PRINT/LCD statements.&lt;br /&gt;
&lt;br /&gt;
Use the MAKEBCD function to convert variables from decimal to BCD.&lt;br /&gt;
&lt;br /&gt;
Use the MAKEDEC function to convert variables from BCD to decimal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[MAKEDEC]]&amp;amp;nbsp;,&amp;amp;nbsp;[[MAKEBCD]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;ASM&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Calls: _BcdStr&lt;br /&gt;
&lt;br /&gt;
Input: X hold address of variable&lt;br /&gt;
&lt;br /&gt;
Output: R0 with number of bytes, frame with data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : bcd.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstration of split and combine BCD Bytes&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
'use in simulator : possible&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 4000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
'===============================================================================&lt;br /&gt;
' Set up Variables&lt;br /&gt;
'===============================================================================&lt;br /&gt;
Dim A As Byte 'Setup A Variable&lt;br /&gt;
Dim B As Byte 'Setup B Variable&lt;br /&gt;
Dim C As Byte 'Setup C Variable&lt;br /&gt;
 &lt;br /&gt;
A = &amp;amp;H89 &lt;br /&gt;
'===============================================================================&lt;br /&gt;
' Main&lt;br /&gt;
'===============================================================================&lt;br /&gt;
Main:&lt;br /&gt;
Print &amp;quot;Combined : &amp;quot; ; Hex(a) 'Print A&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
B = A And &amp;amp;B1111_0000 'Mask To Get Only High Nibble Of Byte&lt;br /&gt;
Shift B , Right , 4 'Shift High Nibble To Low Nibble Position , Store As B&lt;br /&gt;
 &lt;br /&gt;
C = A And &amp;amp;B0000_1111 'Mask To Get Only Low Nibble Of Byte , Store As C&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;Split : &amp;quot; ; B ; &amp;quot; &amp;quot; ; C 'Print B (High Nibble) , C(low Nibble)&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
Shift B , Left , 4 'Shift Data From Low Nibble Into High Nibble Position&lt;br /&gt;
 &lt;br /&gt;
A = B + C 'Add B (High Nibble) And C(low Nibble) Together&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;Re-Combined: &amp;quot; ; Hex(a); &amp;quot; &amp;quot; ; Bcd(a) 'Print A (re -combined Byte)&lt;br /&gt;
End 'End Program&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/STAND_%3FBERSETZUNG_(tempor%3Fr)</id>
		<title>STAND ?BERSETZUNG (tempor?r)</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/STAND_%3FBERSETZUNG_(tempor%3Fr)"/>
				<updated>2013-03-12T16:40:34Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MAIN MENUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  *Installation/de&lt;br /&gt;
 Übersetzt Installation of BASCOM/de&lt;br /&gt;
 Übersetzt Installation on multiple computers/de&lt;br /&gt;
 Übersetzt Move to new PC/de&lt;br /&gt;
 Übersetzt Updates/de&lt;br /&gt;
&lt;br /&gt;
  *BASCOM Language Fundamentals/de&lt;br /&gt;
 Übersetzt ASCII chart/de&lt;br /&gt;
 Übersetzt Assembler mnemonics/de&lt;br /&gt;
 Übersetzt Changes compared to BASCOM-8051/de&lt;br /&gt;
 Übersetzt Error Codes/de&lt;br /&gt;
 Übersetzt Keyword reference/de&lt;br /&gt;
 Übersetzt  Language Fundamentals/de&lt;br /&gt;
 Übersetzt Mixing ASM and BASIC/de&lt;br /&gt;
 Übersetzt Newbie problems/de&lt;br /&gt;
 No content?? Reserved Words/de&lt;br /&gt;
 Übersetzt Tips and tricks/de&lt;br /&gt;
&lt;br /&gt;
  *ASM Libraries and Add-Ons/de&lt;br /&gt;
 *AVR-DOS/de&lt;br /&gt;
 *BCCARD/de&lt;br /&gt;
 *CF Card/de&lt;br /&gt;
 *DATE TIME/de&lt;br /&gt;
 *Floating Point/de&lt;br /&gt;
 *I2C SLAVE/de&lt;br /&gt;
 *LCD/de&lt;br /&gt;
 *PS2-AT Mouse and Keyboard Emulation/de&lt;br /&gt;
 *SPI/de&lt;br /&gt;
 *USB/de&lt;br /&gt;
 EXTENDED I2C/de&lt;br /&gt;
 FM24C16/de&lt;br /&gt;
 FM24C64-256/de&lt;br /&gt;
 FM25C256/de&lt;br /&gt;
 HEXVAL lib/de&lt;br /&gt;
 I2C-TWI/de&lt;br /&gt;
 MCSBYTE/de&lt;br /&gt;
 MCSBYTEINT/de&lt;br /&gt;
 MODBUS Slave-Server/de&lt;br /&gt;
 TCPIP/de&lt;br /&gt;
&lt;br /&gt;
  *BASCOM HARDWARE/de&lt;br /&gt;
 *Chips/de&lt;br /&gt;
 *Reference Designs/de&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color: rgb(249, 249, 249); font-family: monospace, 'Courier New'; font-size: 11px; line-height: 1.3em;&amp;quot;&amp;gt;Übersetzt &amp;lt;/span&amp;gt;Adding XRAM to XMEGA using EBI/de&lt;br /&gt;
 Adding XRAM with External Memory Interface/de&lt;br /&gt;
 Additional Hardware/de&lt;br /&gt;
 Attaching an LCD Display/de&lt;br /&gt;
 AVR Internal Hardware Port B/de&lt;br /&gt;
 AVR Internal Hardware Port D/de&lt;br /&gt;
 AVR Internal Hardware TIMER0/de&lt;br /&gt;
 AVR Internal Hardware TIMER1/de&lt;br /&gt;
 AVR Internal Hardware Watchdog timer/de&lt;br /&gt;
 AVR Internal Hardware/de&lt;br /&gt;
 AVR Internal Registers/de&lt;br /&gt;
 Memory usage/de&lt;br /&gt;
 Power Up/de&lt;br /&gt;
 Using RS485/de&lt;br /&gt;
 Using the 1 WIRE protocol/de&lt;br /&gt;
 Using the I2C protocol/de&lt;br /&gt;
 Using the SPI protocol/de&lt;br /&gt;
 Übersetzt Using the UART/de&lt;br /&gt;
 Using USI (Universal Serial Interface)/de&lt;br /&gt;
&lt;br /&gt;
 *Tools/de&lt;br /&gt;
 LCD RGB-8 Converter/de&lt;br /&gt;
&lt;br /&gt;
 *BASCOM IDE/de&lt;br /&gt;
 *Options Compiler/de&lt;br /&gt;
 *Options Programmer/de&lt;br /&gt;
 *Plugins/de&lt;br /&gt;
 Übersetzt BASCOM Editor Keys/de&lt;br /&gt;
 Edit Copy/de&lt;br /&gt;
 Edit Cut/de&lt;br /&gt;
 Edit Encrypt Selected Code/de&lt;br /&gt;
 Edit Find Next/de&lt;br /&gt;
 Edit Find/de&lt;br /&gt;
 Edit Goto Bookmark/de&lt;br /&gt;
 Edit Goto/de&lt;br /&gt;
 Edit Indent Block/de&lt;br /&gt;
 Edit Paste/de&lt;br /&gt;
 Edit Redo/de&lt;br /&gt;
 Edit Remark Block/de&lt;br /&gt;
 Edit Replace/de&lt;br /&gt;
 Edit Toggle Bookmark/de&lt;br /&gt;
 Edit Undo/de&lt;br /&gt;
 Edit Unindent Block/de&lt;br /&gt;
 File Close/de&lt;br /&gt;
 File Exit/de&lt;br /&gt;
 File New/de&lt;br /&gt;
 File Open/de&lt;br /&gt;
 File Print Preview/de&lt;br /&gt;
 File Print/de&lt;br /&gt;
 File Project/de&lt;br /&gt;
 File Save As/de&lt;br /&gt;
 File Save/de&lt;br /&gt;
 Help About/de&lt;br /&gt;
 Help Credits/de&lt;br /&gt;
 Help Index/de&lt;br /&gt;
 Help Knowledge Base/de&lt;br /&gt;
 Help MCS Forum/de&lt;br /&gt;
 Help MCS Shop/de&lt;br /&gt;
 Help Support/de&lt;br /&gt;
 Help Update/de&lt;br /&gt;
 Options Communication/de&lt;br /&gt;
 Options Environment/de&lt;br /&gt;
 Options Monitor/de&lt;br /&gt;
 Options Printer/de&lt;br /&gt;
 Options Simulator/de&lt;br /&gt;
 Program Compile/de&lt;br /&gt;
 Program Development Order/de&lt;br /&gt;
 Program Send to Chip/de&lt;br /&gt;
 Program Show Result/de&lt;br /&gt;
 Program Simulate/de&lt;br /&gt;
 Program Syntax Check/de&lt;br /&gt;
 Running BASCOM-AVR/de&lt;br /&gt;
 Tools Batch Compile/de&lt;br /&gt;
 Tools Graphic Converter/de&lt;br /&gt;
 Tools LCD Designer/de&lt;br /&gt;
 Tools LIB Manager/de&lt;br /&gt;
 Tools PDF Update/de&lt;br /&gt;
 Tools Plugin Manager/de&lt;br /&gt;
 Tools Resource Editor/de&lt;br /&gt;
 Tools Stack Analyzer/de&lt;br /&gt;
 Tools Terminal Emulator/de&lt;br /&gt;
 View Code Explorer/de&lt;br /&gt;
 View Error Panel/de&lt;br /&gt;
 View PDF viewer/de&lt;br /&gt;
 View PinOut/de&lt;br /&gt;
 View Project Files/de&lt;br /&gt;
 View Tip/de&lt;br /&gt;
 Window Arrange Icons/de&lt;br /&gt;
 Window Cascade/de&lt;br /&gt;
 Window Minimize All/de&lt;br /&gt;
 Window Tile/de&lt;br /&gt;
 Windows Maximize All/de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 BASCOM-AVR Stichworte - DE Übersetzung&lt;br /&gt;
&lt;br /&gt;
 $AESKEY/de&lt;br /&gt;
 $ASM/de&lt;br /&gt;
 $BAUD/de&lt;br /&gt;
 $BAUD1/de&lt;br /&gt;
 $BGF/de&lt;br /&gt;
 $BIGSTRINGS/de&lt;br /&gt;
 $BOOT/de&lt;br /&gt;
 $CRYPT/de&lt;br /&gt;
 Übersetzt $CRYSTAL/de&lt;br /&gt;
 $DATA/de&lt;br /&gt;
 $DBG/de&lt;br /&gt;
 $DEFAULT/de&lt;br /&gt;
 Übersetzt $EEPLEAVE/de&lt;br /&gt;
 Übersetzt $EEPROM/de&lt;br /&gt;
 Übersetzt $EEPROMHEX/de&lt;br /&gt;
 $EEPROMSIZE/de&lt;br /&gt;
 $EXTERNAL/de&lt;br /&gt;
 $FILE/de&lt;br /&gt;
 $FRAMECHECK/de&lt;br /&gt;
 $FRAMEPROTECT/de&lt;br /&gt;
 $FRAMESIZE/de&lt;br /&gt;
 $HWCHECK/de&lt;br /&gt;
 $HWSTACK/de&lt;br /&gt;
 $INC/de&lt;br /&gt;
 $INCLUDE/de&lt;br /&gt;
 $INITMICRO/de&lt;br /&gt;
 Übersetzt $LCD/de&lt;br /&gt;
 $LCDPUTCTRL/de&lt;br /&gt;
 $LCDPUTDATA/de&lt;br /&gt;
 Übersetzt $LCDRS/de&lt;br /&gt;
 $LCDVFO/de&lt;br /&gt;
 $LIB/de&lt;br /&gt;
 $LOADER/de&lt;br /&gt;
 $LOADERSIZE/de&lt;br /&gt;
 $MAP/de&lt;br /&gt;
 $NOCOMPILE/de&lt;br /&gt;
 $NOFRAMEPROTECT/de&lt;br /&gt;
 $NOINIT/de&lt;br /&gt;
 $NORAMCLEAR/de&lt;br /&gt;
 $NORAMPZ/de&lt;br /&gt;
 $NOTRANSFORM/de&lt;br /&gt;
 $PROG/de&lt;br /&gt;
 $PROGRAMMER/de&lt;br /&gt;
 $PROJECTTIME/de&lt;br /&gt;
 $REGFILE/de&lt;br /&gt;
 $RESOURCE/de&lt;br /&gt;
 $ROMSTART/de&lt;br /&gt;
 $SERIALINPUT/de&lt;br /&gt;
 $SERIALINPUT1/de&lt;br /&gt;
 $SERIALINPUT2LCD/de&lt;br /&gt;
 $SERIALOUTPUT/de&lt;br /&gt;
 $SERIALOUTPUT1/de&lt;br /&gt;
 Übersetzt $SIM/de&lt;br /&gt;
 $SOFTCHECK/de&lt;br /&gt;
 $STACKDUMP/de&lt;br /&gt;
 $SWSTACK/de&lt;br /&gt;
 $TIMEOUT/de&lt;br /&gt;
 $TINY/de&lt;br /&gt;
 $VERSION/de&lt;br /&gt;
 $WAITSTATE/de&lt;br /&gt;
 $XA/de&lt;br /&gt;
 $XRAMSIZE/de&lt;br /&gt;
 $XRAMSTART/de&lt;br /&gt;
 $XTEAKEY/de&lt;br /&gt;
&lt;br /&gt;
 *AUTOCODE/de&lt;br /&gt;
 *IF ELSE ELSEIF ENDIF/de&lt;br /&gt;
&lt;br /&gt;
 1WIRECOUNT/de&lt;br /&gt;
 In Arbeit 1WREAD/de&lt;br /&gt;
 1WRESET/de&lt;br /&gt;
 1WSEARCHFIRST/de&lt;br /&gt;
 1WSEARCHNEXT/de&lt;br /&gt;
 1WVERIFY/de&lt;br /&gt;
 Übersetzt 1WWRITE/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt ABS/de&lt;br /&gt;
 ACOS/de&lt;br /&gt;
 Übersetzt ADR/de&lt;br /&gt;
 Übersetzt ADR2/de&lt;br /&gt;
 AESDECRYPT/de&lt;br /&gt;
 AESENCRYPT/de&lt;br /&gt;
 Übersetzt ALIAS/de&lt;br /&gt;
 Übersetzt ASC/de&lt;br /&gt;
 ASIN/de&lt;br /&gt;
 ATN/de&lt;br /&gt;
 ATN2/de&lt;br /&gt;
&lt;br /&gt;
 BASE64DEC/de&lt;br /&gt;
 BASE64ENC/de&lt;br /&gt;
 BAUD/de&lt;br /&gt;
 BAUD1/de&lt;br /&gt;
 BCD/de&lt;br /&gt;
 Übersetzt BIN/de&lt;br /&gt;
 BIN2GRAY/de&lt;br /&gt;
 Übersetzt BINVAL/de&lt;br /&gt;
 Übersetzt BITS/de&lt;br /&gt;
 Übersetzt BITWAIT/de&lt;br /&gt;
 BLOAD/de&lt;br /&gt;
 BOX/de&lt;br /&gt;
 BOXFILL/de&lt;br /&gt;
 BSAVE/de&lt;br /&gt;
 BUFSPACE/de&lt;br /&gt;
 BYVAL/de&lt;br /&gt;
&lt;br /&gt;
 CALL/de&lt;br /&gt;
 CANBAUD/de&lt;br /&gt;
 CANCLEARALLMOBS/de&lt;br /&gt;
 CANCLEARMOB/de&lt;br /&gt;
 CANGETINTS/de&lt;br /&gt;
 CANID/de&lt;br /&gt;
 CANRECEIVE/de&lt;br /&gt;
 CANRESET/de&lt;br /&gt;
 CANSELPAGE/de&lt;br /&gt;
 CANSEND/de&lt;br /&gt;
 Übersetzt CHARPOS/de&lt;br /&gt;
 CHDIR/de&lt;br /&gt;
 CHECKFLOAT/de&lt;br /&gt;
 CHECKSUM/de&lt;br /&gt;
 CHECKSUMXOR/de&lt;br /&gt;
 Übersetzt CHR/de&lt;br /&gt;
 CIRCLE/de&lt;br /&gt;
 CLEAR/de&lt;br /&gt;
 CLOCKDIVISION/de&lt;br /&gt;
 CLOSE/de&lt;br /&gt;
 CLOSESOCKET/de&lt;br /&gt;
 Übersetzt CLS/de&lt;br /&gt;
 CONFIG/de&lt;br /&gt;
 CONFIG 1WIRE/de&lt;br /&gt;
 CONFIG ACI/de&lt;br /&gt;
 CONFIG ACXX/de&lt;br /&gt;
 CONFIG ADC/de&lt;br /&gt;
 CONFIG ADCX/de&lt;br /&gt;
 CONFIG ATEMU/de&lt;br /&gt;
 CONFIG BASE/de&lt;br /&gt;
 CONFIG BCCARD/de&lt;br /&gt;
 CONFIG CANBUS/de&lt;br /&gt;
 CONFIG CANMOB/de&lt;br /&gt;
 CONFIG CLOCK/de&lt;br /&gt;
 CONFIG CLOCKDIV/de&lt;br /&gt;
 CONFIG COM1/de&lt;br /&gt;
 CONFIG COM2/de&lt;br /&gt;
 CONFIG COMX/de&lt;br /&gt;
 CONFIG DACX/de&lt;br /&gt;
 CONFIG DATE/de&lt;br /&gt;
 CONFIG DCF77/de&lt;br /&gt;
 Übersetzt CONFIG DEBOUNCE/de&lt;br /&gt;
 CONFIG DMA/de&lt;br /&gt;
 CONFIG DMACHX/de&lt;br /&gt;
 CONFIG DMXSLAVE/de&lt;br /&gt;
 CONFIG DP/de&lt;br /&gt;
 CONFIG EEPROM/de&lt;br /&gt;
 CONFIG ERROR/de&lt;br /&gt;
 CONFIG EVENT SYSTEM/de&lt;br /&gt;
 CONFIG EXTENDED PORT/de&lt;br /&gt;
 CONFIG GRAPHLCD/de&lt;br /&gt;
 CONFIG HITAG/de&lt;br /&gt;
 CONFIG I2CDELAY/de&lt;br /&gt;
 CONFIG I2CSLAVE/de&lt;br /&gt;
 CONFIG INPUT/de&lt;br /&gt;
 CONFIG INTX/de&lt;br /&gt;
 CONFIG KBD/de&lt;br /&gt;
 CONFIG KEYBOARD/de&lt;br /&gt;
 Übersetzt CONFIG LCD/de&lt;br /&gt;
 CONFIG LCDBUS/de&lt;br /&gt;
 Übersetzt CONFIG LCDMODE/de&lt;br /&gt;
 Übersetzt CONFIG LCDPIN/de&lt;br /&gt;
 CONFIG OSC/de&lt;br /&gt;
 Übersetzt CONFIG PORT/de&lt;br /&gt;
 Übersetzt CONFIG POWERMODE/de&lt;br /&gt;
 CONFIG POWER REDUCTION/de&lt;br /&gt;
 CONFIG PRINT/de&lt;br /&gt;
 CONFIG PRINTBIN/de&lt;br /&gt;
 CONFIG PRIORITY/de&lt;br /&gt;
 CONFIG PS2EMU/de&lt;br /&gt;
 CONFIG RC5/de&lt;br /&gt;
 CONFIG SCL/de&lt;br /&gt;
 CONFIG SDA/de&lt;br /&gt;
 CONFIG SERIALIN/de&lt;br /&gt;
 CONFIG SERIALOUT/de&lt;br /&gt;
 CONFIG SERVOS/de&lt;br /&gt;
 CONFIG SHIFTIN/de&lt;br /&gt;
 CONFIG SINGLE/de&lt;br /&gt;
 CONFIG SPI/de&lt;br /&gt;
 CONFIG SPIX/de&lt;br /&gt;
 CONFIG SUBMODE/de&lt;br /&gt;
 CONFIG SYSCLOCK/de&lt;br /&gt;
 CONFIG TCPIP/de&lt;br /&gt;
 CONFIG TCXX/de&lt;br /&gt;
 CONFIG TIMER0/de&lt;br /&gt;
 CONFIG TIMER1/de&lt;br /&gt;
 CONFIG TIMER2/de&lt;br /&gt;
 CONFIG TWI/de&lt;br /&gt;
 CONFIG TWISLAVE/de&lt;br /&gt;
 CONFIG USB/de&lt;br /&gt;
 CONFIG VPORT/de&lt;br /&gt;
 CONFIG WAITSUART/de&lt;br /&gt;
 CONFIG WATCHDOG/de&lt;br /&gt;
 CONFIG X10/de&lt;br /&gt;
 CONFIG XPIN/de&lt;br /&gt;
 CONFIG XRAM/de&lt;br /&gt;
 Übersetzt CONST/de&lt;br /&gt;
 Übersetzt COS/de&lt;br /&gt;
 COSH/de&lt;br /&gt;
 COUNTER0/de&lt;br /&gt;
 COUNTER1/de&lt;br /&gt;
 CPEEK/de&lt;br /&gt;
 CPEEKH/de&lt;br /&gt;
 CRC16/de&lt;br /&gt;
 CRC16UNI/de&lt;br /&gt;
 CRC32/de&lt;br /&gt;
 CRC8/de&lt;br /&gt;
 CRYSTAL/de&lt;br /&gt;
 Übersetzt CURSOR/de&lt;br /&gt;
 &lt;br /&gt;
 DATA/de&lt;br /&gt;
 DATE$/de&lt;br /&gt;
 DATE/de&lt;br /&gt;
 DAYOFWEEK/de&lt;br /&gt;
 DAYOFYEAR/de&lt;br /&gt;
 DBG/de&lt;br /&gt;
 DCF77TIMEZONE/de&lt;br /&gt;
 Übersetzt DEBOUNCE/de&lt;br /&gt;
 DEBUG/de&lt;br /&gt;
 DECLARE FUNCTION/de&lt;br /&gt;
 DECLARE SUB/de&lt;br /&gt;
 Übersetzt DECR/de&lt;br /&gt;
 Übersetzt DEFLCDCHAR/de&lt;br /&gt;
 DEFXXX/de&lt;br /&gt;
 DEG2RAD/de&lt;br /&gt;
 Übersetzt DELAY/de&lt;br /&gt;
 Übersetzt DELCHAR/de&lt;br /&gt;
 Übersetzt DELCHARS/de&lt;br /&gt;
 DIM/de&lt;br /&gt;
 DIR/de&lt;br /&gt;
 Übersetzt DISABLE/de&lt;br /&gt;
 DISKFREE/de&lt;br /&gt;
 DISKSIZE/de&lt;br /&gt;
 DISPLAY/de&lt;br /&gt;
 Übersetzt DO-LOOP/de&lt;br /&gt;
 DTMFOUT/de&lt;br /&gt;
 DriveCheck/de&lt;br /&gt;
 DriveGetIdentity/de&lt;br /&gt;
 DriveInit/de&lt;br /&gt;
 DriveReadSector/de&lt;br /&gt;
 DriveReset/de&lt;br /&gt;
 DriveWriteSector/de&lt;br /&gt;
&lt;br /&gt;
 ECHO/de&lt;br /&gt;
 ELSE/de&lt;br /&gt;
 Übersetzt ENABLE/de&lt;br /&gt;
 ENCODER/de&lt;br /&gt;
 Übersetzt END/de&lt;br /&gt;
 EOF/de&lt;br /&gt;
 EXIT/de&lt;br /&gt;
 EXP/de&lt;br /&gt;
 &lt;br /&gt;
 FILEATTR/de&lt;br /&gt;
 FILEDATE/de&lt;br /&gt;
 FILEDATETIME/de&lt;br /&gt;
 FILELEN/de&lt;br /&gt;
 FILETIME/de&lt;br /&gt;
 Übersetzt FIX/de&lt;br /&gt;
 FLUSH/de&lt;br /&gt;
 Übersetzt FOR-NEXT/de&lt;br /&gt;
 FORMAT/de&lt;br /&gt;
 Übersetzt FOURTHLINE/de&lt;br /&gt;
 Übersetzt FRAC/de&lt;br /&gt;
 FREEFILE/de&lt;br /&gt;
 FUSING/de&lt;br /&gt;
&lt;br /&gt;
 GET/de&lt;br /&gt;
 GETADC/de&lt;br /&gt;
 GETATKBD/de&lt;br /&gt;
 GETATKBDRAW/de&lt;br /&gt;
 GETDSTIP/de&lt;br /&gt;
 GETDSTPORT/de&lt;br /&gt;
 GETKBD/de&lt;br /&gt;
 GETRC/de&lt;br /&gt;
 GETRC5/de&lt;br /&gt;
 GETREG/de&lt;br /&gt;
 GETSOCKET/de&lt;br /&gt;
 GETTCPREGS/de&lt;br /&gt;
 GLCDCMD/de&lt;br /&gt;
 GLCDDATA/de&lt;br /&gt;
 Übersetzt GOSUB/de&lt;br /&gt;
 Übersetzt GOTO/de&lt;br /&gt;
 GRAY2BIN/de&lt;br /&gt;
 &lt;br /&gt;
 Übersetzt HEX/de&lt;br /&gt;
 Übersetzt HEXVAL/de&lt;br /&gt;
 Übersetzt HIGH/de&lt;br /&gt;
 Übersetzt HIGHW/de&lt;br /&gt;
 Übersetzt HOME/de&lt;br /&gt;
 &lt;br /&gt;
 I2CINIT/de&lt;br /&gt;
 I2CRBYTE/de&lt;br /&gt;
 I2CRECEIVE/de&lt;br /&gt;
 I2CREPSTART/de&lt;br /&gt;
 I2CSEND/de&lt;br /&gt;
 I2CSTART/de&lt;br /&gt;
 I2CSTOP/de&lt;br /&gt;
 I2CWBYTE/de&lt;br /&gt;
 Übersetzt IDLE/de&lt;br /&gt;
 Übersetzt IF-THEN-ELSE-END IF/de&lt;br /&gt;
 Übersetzt INCR/de&lt;br /&gt;
 INITFILESYSTEM/de&lt;br /&gt;
 Übersetzt INITLCD/de&lt;br /&gt;
 Übersetzt INKEY/de&lt;br /&gt;
 INP/de&lt;br /&gt;
 INPUT/de&lt;br /&gt;
 INPUTBIN/de&lt;br /&gt;
 INPUTHEX/de&lt;br /&gt;
 INSERTCHAR/de&lt;br /&gt;
 INSTR/de&lt;br /&gt;
 Übersetzt INT/de&lt;br /&gt;
 IP2STR/de&lt;br /&gt;
 Übersetzt ISCHARWAITING/de&lt;br /&gt;
&lt;br /&gt;
 KILL/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt LCASE/de&lt;br /&gt;
 Übersetzt LCD/de&lt;br /&gt;
 Übersetzt LCDAT/de&lt;br /&gt;
 Übersetzt LCDAUTODIM/de&lt;br /&gt;
 Übersetzt LCDCMD/de&lt;br /&gt;
 Übersetzt LCDCONTRAST/de&lt;br /&gt;
 Übersetzt LCDDATA/de&lt;br /&gt;
 Übersetzt LEFT/de&lt;br /&gt;
 Übersetzt LEN/de&lt;br /&gt;
 Übersetzt LINE/de&lt;br /&gt;
 Übersetzt LINEINPUT/de&lt;br /&gt;
 ?? LINE INPUT/de&lt;br /&gt;
 Übersetzt LOAD/de&lt;br /&gt;
 Übersetzt LOADADR/de&lt;br /&gt;
 Übersetzt LOADLABEL/de&lt;br /&gt;
 Übersetzt LOADWORDADR/de&lt;br /&gt;
 Übersetzt LOC/de&lt;br /&gt;
 Übersetzt LOCAL/de&lt;br /&gt;
 Übersetzt LOCATE/de&lt;br /&gt;
 Übersetzt LOF/de&lt;br /&gt;
 Übersetzt LOG/de&lt;br /&gt;
 Übersetzt LOG10/de&lt;br /&gt;
 Übersetzt LOOKDOWN/de&lt;br /&gt;
 Übersetzt LOOKUP/de&lt;br /&gt;
 Übersetzt LOOKUPSTR/de&lt;br /&gt;
 Übersetzt LOW/de&lt;br /&gt;
 Übersetzt LOWERLINE/de&lt;br /&gt;
 Übersetzt LTRIM/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt MACRO/de&lt;br /&gt;
 Übersetzt MAKEBCD/de&lt;br /&gt;
 Übersetzt MAKEDEC/de&lt;br /&gt;
 Übersetzt MAKEINT/de&lt;br /&gt;
 MAKEMODBUS/de&lt;br /&gt;
 MAKETCP/de&lt;br /&gt;
 Übersetzt MAX/de&lt;br /&gt;
 MEMCOPY/de&lt;br /&gt;
 Übersetzt MID/de&lt;br /&gt;
 Übersetzt MIN/de&lt;br /&gt;
 MKDIR/de&lt;br /&gt;
 Übersetzt MOD/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt NBITS/de&lt;br /&gt;
 &lt;br /&gt;
 ON INTERRUPT/de&lt;br /&gt;
 ON VALUE/de&lt;br /&gt;
 OPEN/de&lt;br /&gt;
 OUT/de&lt;br /&gt;
&lt;br /&gt;
 PEEK/de&lt;br /&gt;
 POKE/de&lt;br /&gt;
 POPALL/de&lt;br /&gt;
 POWER/de&lt;br /&gt;
 Übersetzt POWERDOWN/de&lt;br /&gt;
 Übersetzt POWERSAVE/de&lt;br /&gt;
 Übersetzt POWER MODE/de&lt;br /&gt;
 PRINT/de&lt;br /&gt;
 PRINTBIN/de&lt;br /&gt;
 PS2MOUSEXY/de&lt;br /&gt;
 PSET/de&lt;br /&gt;
 PULSEIN/de&lt;br /&gt;
 PULSEOUT/de&lt;br /&gt;
 PUSHALL/de&lt;br /&gt;
 PUT/de&lt;br /&gt;
&lt;br /&gt;
 QUOTE/de&lt;br /&gt;
 &lt;br /&gt;
 RAD2DEG/de&lt;br /&gt;
 RC5SEND/de&lt;br /&gt;
 RC5SENDEXT/de&lt;br /&gt;
 RC6SEND/de&lt;br /&gt;
 READ/de&lt;br /&gt;
 Übersetzt READEEPROM/de&lt;br /&gt;
 READHITAG/de&lt;br /&gt;
 READMAGCARD/de&lt;br /&gt;
 READSIG/de&lt;br /&gt;
 Übersetzt REM/de&lt;br /&gt;
 REPLACECHARS/de&lt;br /&gt;
 Übersetzt RESET/de&lt;br /&gt;
 RESTORE/de&lt;br /&gt;
 RETURN/de&lt;br /&gt;
 Übersetzt RIGHT/de&lt;br /&gt;
 RMDIR/de&lt;br /&gt;
 RND/de&lt;br /&gt;
 ROTATE/de&lt;br /&gt;
 Übersetzt ROUND/de&lt;br /&gt;
 RTRIM/de&lt;br /&gt;
 &lt;br /&gt;
 SECELAPSED/de&lt;br /&gt;
 SECOFDAY/de&lt;br /&gt;
 SEEK/de&lt;br /&gt;
 SELECT-CASE-END SELECT/de&lt;br /&gt;
 SENDSCAN/de&lt;br /&gt;
 SENDSCANKBD/de&lt;br /&gt;
 SERIN/de&lt;br /&gt;
 SEROUT/de&lt;br /&gt;
 Übersetzt SET/de&lt;br /&gt;
 SETFONT/de&lt;br /&gt;
 SETIPPROTOCOL/de&lt;br /&gt;
 SETREG/de&lt;br /&gt;
 SETTCP/de&lt;br /&gt;
 SETTCPREGS/de&lt;br /&gt;
 Übersetzt SGN/de&lt;br /&gt;
 SHIFT/de&lt;br /&gt;
 SHIFTCURSOR/de&lt;br /&gt;
 SHIFTIN/de&lt;br /&gt;
 SHIFTLCD/de&lt;br /&gt;
 SHIFTOUT/de&lt;br /&gt;
 SHOWPIC/de&lt;br /&gt;
 SHOWPICE/de&lt;br /&gt;
 Übersetzt SIN/de&lt;br /&gt;
 SINH/de&lt;br /&gt;
 SNTP/de&lt;br /&gt;
 SOCKETCLOSE/de&lt;br /&gt;
 SOCKETCONNECT/de&lt;br /&gt;
 SOCKETDISCONNECT/de&lt;br /&gt;
 SOCKETLISTEN/de&lt;br /&gt;
 SOCKETSTAT/de&lt;br /&gt;
 SONYSEND/de&lt;br /&gt;
 Übersetzt SORT/de&lt;br /&gt;
 Übersetzt SOUND/de&lt;br /&gt;
 Übersetzt SPACE/de&lt;br /&gt;
 Übersetzt SPC/de&lt;br /&gt;
 SPIIN/de&lt;br /&gt;
 SPIINIT/de&lt;br /&gt;
 SPIMOVE/de&lt;br /&gt;
 SPIOUT/de&lt;br /&gt;
 Übersetzt SPLIT/de&lt;br /&gt;
 Übersetzt SQR/de&lt;br /&gt;
 Übersetzt START/de&lt;br /&gt;
 STCHECK/de&lt;br /&gt;
 Übersetzt STOP/de&lt;br /&gt;
 Übersetzt STR/de&lt;br /&gt;
 STR2DIGITS/de&lt;br /&gt;
 Übersetzt STRING/de&lt;br /&gt;
 Übersetzt SUB/de&lt;br /&gt;
 SWAP/de&lt;br /&gt;
 SYSDAY/de&lt;br /&gt;
 SYSSEC/de&lt;br /&gt;
 SYSSECELAPSED/de&lt;br /&gt;
 &lt;br /&gt;
 Übersetzt TAN/de&lt;br /&gt;
 TANH/de&lt;br /&gt;
 TCPCHECKSUM/de&lt;br /&gt;
 TCPREAD/de&lt;br /&gt;
 TCPREADHEADER/de&lt;br /&gt;
 TCPWRITE/de&lt;br /&gt;
 TCPWRITESTR/de&lt;br /&gt;
 Übersetzt THIRDLINE/de&lt;br /&gt;
 TIME$/de&lt;br /&gt;
 TIME/de&lt;br /&gt;
 Übersetzt TOGGLE/de&lt;br /&gt;
 TRIM/de&lt;br /&gt;
 &lt;br /&gt;
 UCASE/de&lt;br /&gt;
 UDPREAD/de&lt;br /&gt;
 UDPREADHEADER/de&lt;br /&gt;
 UDPWRITE/de&lt;br /&gt;
 UDPWRITESTR/de&lt;br /&gt;
 Übersetzt UPPERLINE/de&lt;br /&gt;
 Übersetzt VAL/de&lt;br /&gt;
 VARPTR/de&lt;br /&gt;
 VER/de&lt;br /&gt;
 VERSION/de&lt;br /&gt;
 &lt;br /&gt;
 Übersetzt WAIT/de&lt;br /&gt;
 Übersetzt WAITKEY/de&lt;br /&gt;
 Übersetzt WAITMS/de&lt;br /&gt;
 Übersetzt WAITUS/de&lt;br /&gt;
 Übersetzt WHILE-WEND/de&lt;br /&gt;
 WRITE/de&lt;br /&gt;
 Übersetzt WRITEEEPROM/de&lt;br /&gt;
&lt;br /&gt;
 X10DETECT/de&lt;br /&gt;
 X10SEND/de&lt;br /&gt;
 XTEADECODE/de&lt;br /&gt;
 XTEAENCODE/de&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/ADR/de</id>
		<title>ADR/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/ADR/de"/>
				<updated>2013-03-12T16:39:26Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Erzeugt eine Label-Adresse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;ADR&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;amp;nbsp;label&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;ADR2&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;amp;nbsp;label&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;539&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;10%&amp;quot; style=&amp;quot;width: 50px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
label&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 480px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Der Name des Labels&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein AVR verwendet Wortadressen. ADR erzeugt Wortadressen. Um ein Byte im Speicher zu finden, muss die Adresse mit 2 multipliziert werden. Zu diesem Zweck gibt es außerdem den Befehl ADR2 der eine mit 2 multiplizierte Label-Adresse erzeugt. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung von ADR2 können Sie mit Tabellen arbeiten. &lt;br /&gt;
Das Beispielprogramm demontriert die Verwendung mit einigen erweiterndem Assembler-Code.  &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Das Beispiel bindet die ADR2.LIB ein. Diese Bibliothek beinhaltet eine spezielle Version von _MoveConst2String .&lt;br /&gt;
Die normale Routine in der MCS.LIB stoppt die Print-Ausgabe wenn sie auf ein NULL-Byte (0) trifft, das ein String-Ende markiert.&lt;br /&gt;
Doch für das Beispielprogramm können wir die Adresse nicht ändern, sodaß die Adresse wieder hergestellt wird wenn ein NULL-Byte gefunden wird.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe Auch&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
NONE&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beispiel&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'===============================================================================&lt;br /&gt;
' This is an example of how to create an interactive menu system supporting&lt;br /&gt;
' sub-menus and support routines using the !ADR and !ADR2 statements&lt;br /&gt;
'===============================================================================&lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;M644def.dat&amp;quot;&lt;br /&gt;
$crystal = 8000000&lt;br /&gt;
 &lt;br /&gt;
$hwstack = 64 ' specify the hardware stack depth&lt;br /&gt;
$swstack = 64 ' specify the software stack depth&lt;br /&gt;
$framesize = 64 ' specify the framesize (local stack depth)&lt;br /&gt;
 &lt;br /&gt;
$lib &amp;quot;adr2.lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Dim Menupointer As Word&lt;br /&gt;
Dim Actionpointer As Word&lt;br /&gt;
 &lt;br /&gt;
Dim Entries As Byte&lt;br /&gt;
Dim Dummy As Byte&lt;br /&gt;
Dim Message As String * 32&lt;br /&gt;
 &lt;br /&gt;
Dim Local1 As Byte&lt;br /&gt;
Dim Local_loop1 As Byte&lt;br /&gt;
 &lt;br /&gt;
Const Menu_id = &amp;amp;HAA ' sub-menu ID byte&lt;br /&gt;
Const Routine_id = &amp;amp;H55 ' service routine ID byte&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 Restore Main_menu ' point to the start of the 'main' menu&lt;br /&gt;
 sts {MenuPointer}, R8 ' }&lt;br /&gt;
 sts {MenuPointer + 1}, R9 ' } store the pointer to the start of the menu&lt;br /&gt;
 &lt;br /&gt;
Display_new_menu:&lt;br /&gt;
 &lt;br /&gt;
 lds R8, {MenuPointer} ' }&lt;br /&gt;
 lds R9, {MenuPointer + 1} ' } restore the pointer to the start of the menu&lt;br /&gt;
 &lt;br /&gt;
 Read Entries ' get the number of entries in the menu including the title&lt;br /&gt;
 Print&lt;br /&gt;
 For Local_loop1 = 1 To Entries&lt;br /&gt;
 Read Message ' read the message&lt;br /&gt;
 Print Message ' send it to the console&lt;br /&gt;
 Next&lt;br /&gt;
 &lt;br /&gt;
 Read Dataptr ' get the pointer to the menu's action table&lt;br /&gt;
 sts {ActionPointer}, R8 ' }&lt;br /&gt;
 sts {ActionPointer + 1}, R9 ' } store the pointer to the start of the menu's action list&lt;br /&gt;
 &lt;br /&gt;
 Input &amp;quot;Entry ? &amp;quot; , Local1 ' ask the user which menu entry&lt;br /&gt;
 If Local1 = 0 Then ' is it valid ?&lt;br /&gt;
 Goto Display_new_menu ' if not, re-display the menu&lt;br /&gt;
 End If&lt;br /&gt;
 If Local1 =&amp;gt; Entries Then ' is it valid ?&lt;br /&gt;
 Goto Display_new_menu ' if not, re-display the menu&lt;br /&gt;
 End If&lt;br /&gt;
 &lt;br /&gt;
 lds R8,{ActionPointer} ' }&lt;br /&gt;
 lds R9,{ActionPointer + 1} ' } restore the pointer to the menu's action list&lt;br /&gt;
 &lt;br /&gt;
 If Local1 &amp;lt;&amp;gt; 1 Then&lt;br /&gt;
 For Local_loop1 = 2 To Local1 '&lt;br /&gt;
 ldI R30,4 ' }&lt;br /&gt;
 clr R1 ' }&lt;br /&gt;
 add R8,R30 ' }&lt;br /&gt;
 adc R9,R1 ' }&lt;br /&gt;
 Next ' } calculate the location of the selected entry's function ID&lt;br /&gt;
 End If&lt;br /&gt;
 &lt;br /&gt;
 Read Local1 ' get the menu entry's function ID&lt;br /&gt;
 Read Dummy ' to handle the uP expecting WORDS in DATA statements&lt;br /&gt;
 &lt;br /&gt;
 If Local1 = Menu_id Then ' did the user select an entry that points to another menu ?&lt;br /&gt;
 Read Dataptr&lt;br /&gt;
 sts {MenuPointer}, R8 ' }&lt;br /&gt;
 sts {MenuPointer + 1}, R9 ' } store the start of the menu&lt;br /&gt;
 Goto Display_new_menu&lt;br /&gt;
 End If&lt;br /&gt;
 &lt;br /&gt;
 Read Dataptr ' get the address of this entry's support routine&lt;br /&gt;
 movw R30,R8&lt;br /&gt;
 icall ' pass control to the entry's support routine&lt;br /&gt;
 &lt;br /&gt;
 Goto Display_new_menu ' re-display the last menu displayed&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Test support routines&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Hello_message:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You asked to print 'Hello'&amp;quot; ' confirmation that Menu Entry 3 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
2nd_menu_1st_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 1 of the 2nd menu&amp;quot; ' confirmation that Menu Entry 1 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
2nd_menu_2nd_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 2 of the 2nd menu&amp;quot; ' confirmation that Menu Entry 2 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
3rd_menu_1st_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 1 of the 3rd menu&amp;quot; ' confirmation that Menu Entry 1 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
3rd_menu_2nd_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 2 of the 3rd menu&amp;quot; ' confirmation the Menu Entry 2 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
 End&lt;br /&gt;
 &lt;br /&gt;
'===============================================================================&lt;br /&gt;
' Data Statements&lt;br /&gt;
'===============================================================================&lt;br /&gt;
 &lt;br /&gt;
$data&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Main Menu&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Main_menu:&lt;br /&gt;
 &lt;br /&gt;
 Data 4 ' number of entries in the menu including title&lt;br /&gt;
 &lt;br /&gt;
 Data &amp;quot;MAIN MENU&amp;quot; ' } menu title&lt;br /&gt;
 Data &amp;quot;1. Go to Menu 2&amp;quot; ' } 1st menu entry&lt;br /&gt;
 Data &amp;quot;2. Go to Menu 3&amp;quot; ' } 2nd menu entry&lt;br /&gt;
 Data &amp;quot;3. Print 'Hello' message&amp;quot; ' } 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Adr2 Mainmenu_supporttable ' point to this menu support table&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Mainmenu_supporttable:&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Second_menu ' address of next menu&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Third_menu ' address of next menu&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as support routine&lt;br /&gt;
 Adr Hello_message ' address of the support routine&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Second Menu&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Second_menu:&lt;br /&gt;
 &lt;br /&gt;
 Data 4 ' number of entries in the menu&lt;br /&gt;
 &lt;br /&gt;
 Data &amp;quot;SECOND MENU&amp;quot; ' } menu title&lt;br /&gt;
 Data &amp;quot;1. 2nd Menu Entry #1&amp;quot; ' } 1st menu entry&lt;br /&gt;
 Data &amp;quot;2. 2nd Menu Entry #2&amp;quot; ' } 2nd menu entry&lt;br /&gt;
 Data &amp;quot;3. Go to previous menu&amp;quot; ' } 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Adr2 Secondmenu_supporttable ' point to this menu support table&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Secondmenu_supporttable:&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 2nd_menu_1st_entry_routine ' support routine for 1st menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 2nd_menu_2nd_entry_routine ' support routine for 2nd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Main_menu ' support routine for 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Third Menu&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Third_menu:&lt;br /&gt;
 &lt;br /&gt;
 Data 4 ' number of entries in the menu&lt;br /&gt;
 &lt;br /&gt;
 Data &amp;quot;THIRD MENU&amp;quot; ' } menu title&lt;br /&gt;
 Data &amp;quot;1. 3rd Menu Entry #1&amp;quot; ' } 1st menu entry&lt;br /&gt;
 Data &amp;quot;2. 3rd Menu Entry #2&amp;quot; ' } 2nd menu entry&lt;br /&gt;
 Data &amp;quot;3. Go to previous menu&amp;quot; ' } 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Adr2 Thirdmenu_supporttable ' point to this menu support table&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Thirdmenu_supporttable:&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 3rd_menu_1st_entry_routine ' support routine for 1st menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 3rd_menu_2nd_entry_routine ' support routine for 2nd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Main_menu &lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/ADR/de</id>
		<title>ADR/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/ADR/de"/>
				<updated>2013-03-12T16:39:05Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Erzeugt eine Label-Adresse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;ADR&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;amp;nbsp;label&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;ADR2&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;amp;nbsp;label&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;539&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;10%&amp;quot; style=&amp;quot;width: 50px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
label&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 480px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Der Name des Labels&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein AVR verwendet Wortadressen. ADR erzeugt Wortadressen. Um ein Byte im Speicher zu finden, muss die Adresse mit 2 multipliziert werden. Zu diesem Zweck gibt es außerdem den Befehl ADR2 der eine mit 2 multiplizierte Label-Adresse erzeugt. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung von ADR2 können Sie mit Tabellen arbeiten. &lt;br /&gt;
Das Beispielprogramm demontriert die Verwendung mit einigen erweiterndem Assembler-Code.  &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Das Beispiel bindet die ADR2.LIB ein. Diese Bibliothek beinhaltet eine spezielle Version von _MoveConst2String .&lt;br /&gt;
Die normale Routine in der MCS.LIB stoppt die Print-Ausgabe wenn sie auf ein NULL-Byte (0) trifft, das ein String-Ende markiert.&lt;br /&gt;
Doch für das Beispielprogramm können wir die Adresse nicht ändern, sodaß die Adresse wieder hergestellt wird wenn ein NULL-Byte gefunden wird.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe Auch&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
NONE&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'===============================================================================&lt;br /&gt;
' This is an example of how to create an interactive menu system supporting&lt;br /&gt;
' sub-menus and support routines using the !ADR and !ADR2 statements&lt;br /&gt;
'===============================================================================&lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;M644def.dat&amp;quot;&lt;br /&gt;
$crystal = 8000000&lt;br /&gt;
 &lt;br /&gt;
$hwstack = 64 ' specify the hardware stack depth&lt;br /&gt;
$swstack = 64 ' specify the software stack depth&lt;br /&gt;
$framesize = 64 ' specify the framesize (local stack depth)&lt;br /&gt;
 &lt;br /&gt;
$lib &amp;quot;adr2.lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Dim Menupointer As Word&lt;br /&gt;
Dim Actionpointer As Word&lt;br /&gt;
 &lt;br /&gt;
Dim Entries As Byte&lt;br /&gt;
Dim Dummy As Byte&lt;br /&gt;
Dim Message As String * 32&lt;br /&gt;
 &lt;br /&gt;
Dim Local1 As Byte&lt;br /&gt;
Dim Local_loop1 As Byte&lt;br /&gt;
 &lt;br /&gt;
Const Menu_id = &amp;amp;HAA ' sub-menu ID byte&lt;br /&gt;
Const Routine_id = &amp;amp;H55 ' service routine ID byte&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 Restore Main_menu ' point to the start of the 'main' menu&lt;br /&gt;
 sts {MenuPointer}, R8 ' }&lt;br /&gt;
 sts {MenuPointer + 1}, R9 ' } store the pointer to the start of the menu&lt;br /&gt;
 &lt;br /&gt;
Display_new_menu:&lt;br /&gt;
 &lt;br /&gt;
 lds R8, {MenuPointer} ' }&lt;br /&gt;
 lds R9, {MenuPointer + 1} ' } restore the pointer to the start of the menu&lt;br /&gt;
 &lt;br /&gt;
 Read Entries ' get the number of entries in the menu including the title&lt;br /&gt;
 Print&lt;br /&gt;
 For Local_loop1 = 1 To Entries&lt;br /&gt;
 Read Message ' read the message&lt;br /&gt;
 Print Message ' send it to the console&lt;br /&gt;
 Next&lt;br /&gt;
 &lt;br /&gt;
 Read Dataptr ' get the pointer to the menu's action table&lt;br /&gt;
 sts {ActionPointer}, R8 ' }&lt;br /&gt;
 sts {ActionPointer + 1}, R9 ' } store the pointer to the start of the menu's action list&lt;br /&gt;
 &lt;br /&gt;
 Input &amp;quot;Entry ? &amp;quot; , Local1 ' ask the user which menu entry&lt;br /&gt;
 If Local1 = 0 Then ' is it valid ?&lt;br /&gt;
 Goto Display_new_menu ' if not, re-display the menu&lt;br /&gt;
 End If&lt;br /&gt;
 If Local1 =&amp;gt; Entries Then ' is it valid ?&lt;br /&gt;
 Goto Display_new_menu ' if not, re-display the menu&lt;br /&gt;
 End If&lt;br /&gt;
 &lt;br /&gt;
 lds R8,{ActionPointer} ' }&lt;br /&gt;
 lds R9,{ActionPointer + 1} ' } restore the pointer to the menu's action list&lt;br /&gt;
 &lt;br /&gt;
 If Local1 &amp;lt;&amp;gt; 1 Then&lt;br /&gt;
 For Local_loop1 = 2 To Local1 '&lt;br /&gt;
 ldI R30,4 ' }&lt;br /&gt;
 clr R1 ' }&lt;br /&gt;
 add R8,R30 ' }&lt;br /&gt;
 adc R9,R1 ' }&lt;br /&gt;
 Next ' } calculate the location of the selected entry's function ID&lt;br /&gt;
 End If&lt;br /&gt;
 &lt;br /&gt;
 Read Local1 ' get the menu entry's function ID&lt;br /&gt;
 Read Dummy ' to handle the uP expecting WORDS in DATA statements&lt;br /&gt;
 &lt;br /&gt;
 If Local1 = Menu_id Then ' did the user select an entry that points to another menu ?&lt;br /&gt;
 Read Dataptr&lt;br /&gt;
 sts {MenuPointer}, R8 ' }&lt;br /&gt;
 sts {MenuPointer + 1}, R9 ' } store the start of the menu&lt;br /&gt;
 Goto Display_new_menu&lt;br /&gt;
 End If&lt;br /&gt;
 &lt;br /&gt;
 Read Dataptr ' get the address of this entry's support routine&lt;br /&gt;
 movw R30,R8&lt;br /&gt;
 icall ' pass control to the entry's support routine&lt;br /&gt;
 &lt;br /&gt;
 Goto Display_new_menu ' re-display the last menu displayed&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Test support routines&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Hello_message:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You asked to print 'Hello'&amp;quot; ' confirmation that Menu Entry 3 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
2nd_menu_1st_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 1 of the 2nd menu&amp;quot; ' confirmation that Menu Entry 1 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
2nd_menu_2nd_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 2 of the 2nd menu&amp;quot; ' confirmation that Menu Entry 2 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
3rd_menu_1st_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 1 of the 3rd menu&amp;quot; ' confirmation that Menu Entry 1 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
3rd_menu_2nd_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 2 of the 3rd menu&amp;quot; ' confirmation the Menu Entry 2 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
 End&lt;br /&gt;
 &lt;br /&gt;
'===============================================================================&lt;br /&gt;
' Data Statements&lt;br /&gt;
'===============================================================================&lt;br /&gt;
 &lt;br /&gt;
$data&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Main Menu&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Main_menu:&lt;br /&gt;
 &lt;br /&gt;
 Data 4 ' number of entries in the menu including title&lt;br /&gt;
 &lt;br /&gt;
 Data &amp;quot;MAIN MENU&amp;quot; ' } menu title&lt;br /&gt;
 Data &amp;quot;1. Go to Menu 2&amp;quot; ' } 1st menu entry&lt;br /&gt;
 Data &amp;quot;2. Go to Menu 3&amp;quot; ' } 2nd menu entry&lt;br /&gt;
 Data &amp;quot;3. Print 'Hello' message&amp;quot; ' } 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Adr2 Mainmenu_supporttable ' point to this menu support table&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Mainmenu_supporttable:&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Second_menu ' address of next menu&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Third_menu ' address of next menu&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as support routine&lt;br /&gt;
 Adr Hello_message ' address of the support routine&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Second Menu&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Second_menu:&lt;br /&gt;
 &lt;br /&gt;
 Data 4 ' number of entries in the menu&lt;br /&gt;
 &lt;br /&gt;
 Data &amp;quot;SECOND MENU&amp;quot; ' } menu title&lt;br /&gt;
 Data &amp;quot;1. 2nd Menu Entry #1&amp;quot; ' } 1st menu entry&lt;br /&gt;
 Data &amp;quot;2. 2nd Menu Entry #2&amp;quot; ' } 2nd menu entry&lt;br /&gt;
 Data &amp;quot;3. Go to previous menu&amp;quot; ' } 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Adr2 Secondmenu_supporttable ' point to this menu support table&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Secondmenu_supporttable:&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 2nd_menu_1st_entry_routine ' support routine for 1st menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 2nd_menu_2nd_entry_routine ' support routine for 2nd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Main_menu ' support routine for 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Third Menu&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Third_menu:&lt;br /&gt;
 &lt;br /&gt;
 Data 4 ' number of entries in the menu&lt;br /&gt;
 &lt;br /&gt;
 Data &amp;quot;THIRD MENU&amp;quot; ' } menu title&lt;br /&gt;
 Data &amp;quot;1. 3rd Menu Entry #1&amp;quot; ' } 1st menu entry&lt;br /&gt;
 Data &amp;quot;2. 3rd Menu Entry #2&amp;quot; ' } 2nd menu entry&lt;br /&gt;
 Data &amp;quot;3. Go to previous menu&amp;quot; ' } 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Adr2 Thirdmenu_supporttable ' point to this menu support table&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Thirdmenu_supporttable:&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 3rd_menu_1st_entry_routine ' support routine for 1st menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 3rd_menu_2nd_entry_routine ' support routine for 2nd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Main_menu &lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/ADR/de</id>
		<title>ADR/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/ADR/de"/>
				<updated>2013-03-12T16:38:04Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Anmerkungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Erzeugt eine Label-Adresse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;ADR&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;amp;nbsp;label&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;ADR2&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;amp;nbsp;label&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;539&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;10%&amp;quot; style=&amp;quot;width: 50px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
label&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 480px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Der Name des Labels&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein AVR verwendet Wortadressen. ADR erzeugt Wortadressen. Um ein Byte im Speicher zu finden, muss die Adresse mit 2 multipliziert werden. Zu diesem Zweck gibt es außerdem den Befehl ADR2 der eine mit 2 multiplizierte Label-Adresse erzeugt. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung von ADR2 können Sie mit Tabellen arbeiten. &lt;br /&gt;
Das Beispielprogramm demontriert die Verwendung mit einigen erweiterndem Assembler-Code.  &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Das Beispiel bindet die ADR2.LIB ein. Diese Bibliothek beinhaltet eine spezielle Version von _MoveConst2String .&lt;br /&gt;
Die normale Routine in der MCS.LIB stoppt die Print-Ausgabe wenn sie auf ein NULL-Byte (0) trifft, das ein String-Ende markiert.&lt;br /&gt;
Doch für das Beispielprogramm können wir die Adresse nicht ändern, sodaß die Adresse wieder hergestellt wird wenn ein NULL-Byte gefunden wird.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See Also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
NONE&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'===============================================================================&lt;br /&gt;
' This is an example of how to create an interactive menu system supporting&lt;br /&gt;
' sub-menus and support routines using the !ADR and !ADR2 statements&lt;br /&gt;
'===============================================================================&lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;M644def.dat&amp;quot;&lt;br /&gt;
$crystal = 8000000&lt;br /&gt;
 &lt;br /&gt;
$hwstack = 64 ' specify the hardware stack depth&lt;br /&gt;
$swstack = 64 ' specify the software stack depth&lt;br /&gt;
$framesize = 64 ' specify the framesize (local stack depth)&lt;br /&gt;
 &lt;br /&gt;
$lib &amp;quot;adr2.lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Dim Menupointer As Word&lt;br /&gt;
Dim Actionpointer As Word&lt;br /&gt;
 &lt;br /&gt;
Dim Entries As Byte&lt;br /&gt;
Dim Dummy As Byte&lt;br /&gt;
Dim Message As String * 32&lt;br /&gt;
 &lt;br /&gt;
Dim Local1 As Byte&lt;br /&gt;
Dim Local_loop1 As Byte&lt;br /&gt;
 &lt;br /&gt;
Const Menu_id = &amp;amp;HAA ' sub-menu ID byte&lt;br /&gt;
Const Routine_id = &amp;amp;H55 ' service routine ID byte&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 Restore Main_menu ' point to the start of the 'main' menu&lt;br /&gt;
 sts {MenuPointer}, R8 ' }&lt;br /&gt;
 sts {MenuPointer + 1}, R9 ' } store the pointer to the start of the menu&lt;br /&gt;
 &lt;br /&gt;
Display_new_menu:&lt;br /&gt;
 &lt;br /&gt;
 lds R8, {MenuPointer} ' }&lt;br /&gt;
 lds R9, {MenuPointer + 1} ' } restore the pointer to the start of the menu&lt;br /&gt;
 &lt;br /&gt;
 Read Entries ' get the number of entries in the menu including the title&lt;br /&gt;
 Print&lt;br /&gt;
 For Local_loop1 = 1 To Entries&lt;br /&gt;
 Read Message ' read the message&lt;br /&gt;
 Print Message ' send it to the console&lt;br /&gt;
 Next&lt;br /&gt;
 &lt;br /&gt;
 Read Dataptr ' get the pointer to the menu's action table&lt;br /&gt;
 sts {ActionPointer}, R8 ' }&lt;br /&gt;
 sts {ActionPointer + 1}, R9 ' } store the pointer to the start of the menu's action list&lt;br /&gt;
 &lt;br /&gt;
 Input &amp;quot;Entry ? &amp;quot; , Local1 ' ask the user which menu entry&lt;br /&gt;
 If Local1 = 0 Then ' is it valid ?&lt;br /&gt;
 Goto Display_new_menu ' if not, re-display the menu&lt;br /&gt;
 End If&lt;br /&gt;
 If Local1 =&amp;gt; Entries Then ' is it valid ?&lt;br /&gt;
 Goto Display_new_menu ' if not, re-display the menu&lt;br /&gt;
 End If&lt;br /&gt;
 &lt;br /&gt;
 lds R8,{ActionPointer} ' }&lt;br /&gt;
 lds R9,{ActionPointer + 1} ' } restore the pointer to the menu's action list&lt;br /&gt;
 &lt;br /&gt;
 If Local1 &amp;lt;&amp;gt; 1 Then&lt;br /&gt;
 For Local_loop1 = 2 To Local1 '&lt;br /&gt;
 ldI R30,4 ' }&lt;br /&gt;
 clr R1 ' }&lt;br /&gt;
 add R8,R30 ' }&lt;br /&gt;
 adc R9,R1 ' }&lt;br /&gt;
 Next ' } calculate the location of the selected entry's function ID&lt;br /&gt;
 End If&lt;br /&gt;
 &lt;br /&gt;
 Read Local1 ' get the menu entry's function ID&lt;br /&gt;
 Read Dummy ' to handle the uP expecting WORDS in DATA statements&lt;br /&gt;
 &lt;br /&gt;
 If Local1 = Menu_id Then ' did the user select an entry that points to another menu ?&lt;br /&gt;
 Read Dataptr&lt;br /&gt;
 sts {MenuPointer}, R8 ' }&lt;br /&gt;
 sts {MenuPointer + 1}, R9 ' } store the start of the menu&lt;br /&gt;
 Goto Display_new_menu&lt;br /&gt;
 End If&lt;br /&gt;
 &lt;br /&gt;
 Read Dataptr ' get the address of this entry's support routine&lt;br /&gt;
 movw R30,R8&lt;br /&gt;
 icall ' pass control to the entry's support routine&lt;br /&gt;
 &lt;br /&gt;
 Goto Display_new_menu ' re-display the last menu displayed&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Test support routines&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Hello_message:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You asked to print 'Hello'&amp;quot; ' confirmation that Menu Entry 3 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
2nd_menu_1st_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 1 of the 2nd menu&amp;quot; ' confirmation that Menu Entry 1 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
2nd_menu_2nd_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 2 of the 2nd menu&amp;quot; ' confirmation that Menu Entry 2 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
3rd_menu_1st_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 1 of the 3rd menu&amp;quot; ' confirmation that Menu Entry 1 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
3rd_menu_2nd_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 2 of the 3rd menu&amp;quot; ' confirmation the Menu Entry 2 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
 End&lt;br /&gt;
 &lt;br /&gt;
'===============================================================================&lt;br /&gt;
' Data Statements&lt;br /&gt;
'===============================================================================&lt;br /&gt;
 &lt;br /&gt;
$data&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Main Menu&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Main_menu:&lt;br /&gt;
 &lt;br /&gt;
 Data 4 ' number of entries in the menu including title&lt;br /&gt;
 &lt;br /&gt;
 Data &amp;quot;MAIN MENU&amp;quot; ' } menu title&lt;br /&gt;
 Data &amp;quot;1. Go to Menu 2&amp;quot; ' } 1st menu entry&lt;br /&gt;
 Data &amp;quot;2. Go to Menu 3&amp;quot; ' } 2nd menu entry&lt;br /&gt;
 Data &amp;quot;3. Print 'Hello' message&amp;quot; ' } 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Adr2 Mainmenu_supporttable ' point to this menu support table&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Mainmenu_supporttable:&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Second_menu ' address of next menu&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Third_menu ' address of next menu&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as support routine&lt;br /&gt;
 Adr Hello_message ' address of the support routine&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Second Menu&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Second_menu:&lt;br /&gt;
 &lt;br /&gt;
 Data 4 ' number of entries in the menu&lt;br /&gt;
 &lt;br /&gt;
 Data &amp;quot;SECOND MENU&amp;quot; ' } menu title&lt;br /&gt;
 Data &amp;quot;1. 2nd Menu Entry #1&amp;quot; ' } 1st menu entry&lt;br /&gt;
 Data &amp;quot;2. 2nd Menu Entry #2&amp;quot; ' } 2nd menu entry&lt;br /&gt;
 Data &amp;quot;3. Go to previous menu&amp;quot; ' } 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Adr2 Secondmenu_supporttable ' point to this menu support table&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Secondmenu_supporttable:&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 2nd_menu_1st_entry_routine ' support routine for 1st menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 2nd_menu_2nd_entry_routine ' support routine for 2nd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Main_menu ' support routine for 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Third Menu&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Third_menu:&lt;br /&gt;
 &lt;br /&gt;
 Data 4 ' number of entries in the menu&lt;br /&gt;
 &lt;br /&gt;
 Data &amp;quot;THIRD MENU&amp;quot; ' } menu title&lt;br /&gt;
 Data &amp;quot;1. 3rd Menu Entry #1&amp;quot; ' } 1st menu entry&lt;br /&gt;
 Data &amp;quot;2. 3rd Menu Entry #2&amp;quot; ' } 2nd menu entry&lt;br /&gt;
 Data &amp;quot;3. Go to previous menu&amp;quot; ' } 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Adr2 Thirdmenu_supporttable ' point to this menu support table&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Thirdmenu_supporttable:&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 3rd_menu_1st_entry_routine ' support routine for 1st menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 3rd_menu_2nd_entry_routine ' support routine for 2nd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Main_menu &lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/ADR/de</id>
		<title>ADR/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/ADR/de"/>
				<updated>2013-03-12T16:37:13Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Anmerkungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Erzeugt eine Label-Adresse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;ADR&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;amp;nbsp;label&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;ADR2&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;amp;nbsp;label&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;539&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;10%&amp;quot; style=&amp;quot;width: 50px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
label&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 480px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Der Name des Labels&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein AVR verwendet Wortadressen. ADR erzeugt Wortadressen. Um ein Byte im Speicher zu finden, muss die Adresse mit 2 multipliziert werden. Zu diesem Zweck gibt es außerdem den Befehl ADR2 der eine mit 2 multiplizierte Label-Adresse erzeugt. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung von ADR2 können Sie mit Tabellen arbeiten. &lt;br /&gt;
Das Beispielprogramm demontriert die Verwendung mit einigem erweiterndem Assembler-Code.  &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Das Beispiel bindet die ADR2.LIB ein. Diese Bibliothek beinhaltet eine spezielle Version von _MoveConst2String .&lt;br /&gt;
Die normale Routine in der MCS.LIB stoppt die Print-Ausgabe wenn sie auf ein NULL-Byte (0) trifft, das ein String-Ende markiert.&lt;br /&gt;
Doch für das Beispielprogramm können wir die Adresse nicht ändern, sodaß die Adresse wieder hergestellt wird wenn ein NULL-Byte gefunden wird.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See Also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
NONE&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'===============================================================================&lt;br /&gt;
' This is an example of how to create an interactive menu system supporting&lt;br /&gt;
' sub-menus and support routines using the !ADR and !ADR2 statements&lt;br /&gt;
'===============================================================================&lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;M644def.dat&amp;quot;&lt;br /&gt;
$crystal = 8000000&lt;br /&gt;
 &lt;br /&gt;
$hwstack = 64 ' specify the hardware stack depth&lt;br /&gt;
$swstack = 64 ' specify the software stack depth&lt;br /&gt;
$framesize = 64 ' specify the framesize (local stack depth)&lt;br /&gt;
 &lt;br /&gt;
$lib &amp;quot;adr2.lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Dim Menupointer As Word&lt;br /&gt;
Dim Actionpointer As Word&lt;br /&gt;
 &lt;br /&gt;
Dim Entries As Byte&lt;br /&gt;
Dim Dummy As Byte&lt;br /&gt;
Dim Message As String * 32&lt;br /&gt;
 &lt;br /&gt;
Dim Local1 As Byte&lt;br /&gt;
Dim Local_loop1 As Byte&lt;br /&gt;
 &lt;br /&gt;
Const Menu_id = &amp;amp;HAA ' sub-menu ID byte&lt;br /&gt;
Const Routine_id = &amp;amp;H55 ' service routine ID byte&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 Restore Main_menu ' point to the start of the 'main' menu&lt;br /&gt;
 sts {MenuPointer}, R8 ' }&lt;br /&gt;
 sts {MenuPointer + 1}, R9 ' } store the pointer to the start of the menu&lt;br /&gt;
 &lt;br /&gt;
Display_new_menu:&lt;br /&gt;
 &lt;br /&gt;
 lds R8, {MenuPointer} ' }&lt;br /&gt;
 lds R9, {MenuPointer + 1} ' } restore the pointer to the start of the menu&lt;br /&gt;
 &lt;br /&gt;
 Read Entries ' get the number of entries in the menu including the title&lt;br /&gt;
 Print&lt;br /&gt;
 For Local_loop1 = 1 To Entries&lt;br /&gt;
 Read Message ' read the message&lt;br /&gt;
 Print Message ' send it to the console&lt;br /&gt;
 Next&lt;br /&gt;
 &lt;br /&gt;
 Read Dataptr ' get the pointer to the menu's action table&lt;br /&gt;
 sts {ActionPointer}, R8 ' }&lt;br /&gt;
 sts {ActionPointer + 1}, R9 ' } store the pointer to the start of the menu's action list&lt;br /&gt;
 &lt;br /&gt;
 Input &amp;quot;Entry ? &amp;quot; , Local1 ' ask the user which menu entry&lt;br /&gt;
 If Local1 = 0 Then ' is it valid ?&lt;br /&gt;
 Goto Display_new_menu ' if not, re-display the menu&lt;br /&gt;
 End If&lt;br /&gt;
 If Local1 =&amp;gt; Entries Then ' is it valid ?&lt;br /&gt;
 Goto Display_new_menu ' if not, re-display the menu&lt;br /&gt;
 End If&lt;br /&gt;
 &lt;br /&gt;
 lds R8,{ActionPointer} ' }&lt;br /&gt;
 lds R9,{ActionPointer + 1} ' } restore the pointer to the menu's action list&lt;br /&gt;
 &lt;br /&gt;
 If Local1 &amp;lt;&amp;gt; 1 Then&lt;br /&gt;
 For Local_loop1 = 2 To Local1 '&lt;br /&gt;
 ldI R30,4 ' }&lt;br /&gt;
 clr R1 ' }&lt;br /&gt;
 add R8,R30 ' }&lt;br /&gt;
 adc R9,R1 ' }&lt;br /&gt;
 Next ' } calculate the location of the selected entry's function ID&lt;br /&gt;
 End If&lt;br /&gt;
 &lt;br /&gt;
 Read Local1 ' get the menu entry's function ID&lt;br /&gt;
 Read Dummy ' to handle the uP expecting WORDS in DATA statements&lt;br /&gt;
 &lt;br /&gt;
 If Local1 = Menu_id Then ' did the user select an entry that points to another menu ?&lt;br /&gt;
 Read Dataptr&lt;br /&gt;
 sts {MenuPointer}, R8 ' }&lt;br /&gt;
 sts {MenuPointer + 1}, R9 ' } store the start of the menu&lt;br /&gt;
 Goto Display_new_menu&lt;br /&gt;
 End If&lt;br /&gt;
 &lt;br /&gt;
 Read Dataptr ' get the address of this entry's support routine&lt;br /&gt;
 movw R30,R8&lt;br /&gt;
 icall ' pass control to the entry's support routine&lt;br /&gt;
 &lt;br /&gt;
 Goto Display_new_menu ' re-display the last menu displayed&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Test support routines&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Hello_message:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You asked to print 'Hello'&amp;quot; ' confirmation that Menu Entry 3 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
2nd_menu_1st_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 1 of the 2nd menu&amp;quot; ' confirmation that Menu Entry 1 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
2nd_menu_2nd_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 2 of the 2nd menu&amp;quot; ' confirmation that Menu Entry 2 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
3rd_menu_1st_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 1 of the 3rd menu&amp;quot; ' confirmation that Menu Entry 1 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
3rd_menu_2nd_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 2 of the 3rd menu&amp;quot; ' confirmation the Menu Entry 2 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
 End&lt;br /&gt;
 &lt;br /&gt;
'===============================================================================&lt;br /&gt;
' Data Statements&lt;br /&gt;
'===============================================================================&lt;br /&gt;
 &lt;br /&gt;
$data&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Main Menu&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Main_menu:&lt;br /&gt;
 &lt;br /&gt;
 Data 4 ' number of entries in the menu including title&lt;br /&gt;
 &lt;br /&gt;
 Data &amp;quot;MAIN MENU&amp;quot; ' } menu title&lt;br /&gt;
 Data &amp;quot;1. Go to Menu 2&amp;quot; ' } 1st menu entry&lt;br /&gt;
 Data &amp;quot;2. Go to Menu 3&amp;quot; ' } 2nd menu entry&lt;br /&gt;
 Data &amp;quot;3. Print 'Hello' message&amp;quot; ' } 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Adr2 Mainmenu_supporttable ' point to this menu support table&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Mainmenu_supporttable:&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Second_menu ' address of next menu&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Third_menu ' address of next menu&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as support routine&lt;br /&gt;
 Adr Hello_message ' address of the support routine&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Second Menu&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Second_menu:&lt;br /&gt;
 &lt;br /&gt;
 Data 4 ' number of entries in the menu&lt;br /&gt;
 &lt;br /&gt;
 Data &amp;quot;SECOND MENU&amp;quot; ' } menu title&lt;br /&gt;
 Data &amp;quot;1. 2nd Menu Entry #1&amp;quot; ' } 1st menu entry&lt;br /&gt;
 Data &amp;quot;2. 2nd Menu Entry #2&amp;quot; ' } 2nd menu entry&lt;br /&gt;
 Data &amp;quot;3. Go to previous menu&amp;quot; ' } 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Adr2 Secondmenu_supporttable ' point to this menu support table&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Secondmenu_supporttable:&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 2nd_menu_1st_entry_routine ' support routine for 1st menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 2nd_menu_2nd_entry_routine ' support routine for 2nd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Main_menu ' support routine for 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Third Menu&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Third_menu:&lt;br /&gt;
 &lt;br /&gt;
 Data 4 ' number of entries in the menu&lt;br /&gt;
 &lt;br /&gt;
 Data &amp;quot;THIRD MENU&amp;quot; ' } menu title&lt;br /&gt;
 Data &amp;quot;1. 3rd Menu Entry #1&amp;quot; ' } 1st menu entry&lt;br /&gt;
 Data &amp;quot;2. 3rd Menu Entry #2&amp;quot; ' } 2nd menu entry&lt;br /&gt;
 Data &amp;quot;3. Go to previous menu&amp;quot; ' } 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Adr2 Thirdmenu_supporttable ' point to this menu support table&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Thirdmenu_supporttable:&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 3rd_menu_1st_entry_routine ' support routine for 1st menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 3rd_menu_2nd_entry_routine ' support routine for 2nd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Main_menu &lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/ADR/de</id>
		<title>ADR/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/ADR/de"/>
				<updated>2013-03-12T16:35:40Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Remarks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Erzeugt eine Label-Adresse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;ADR&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;amp;nbsp;label&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;ADR2&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;amp;nbsp;label&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;539&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;10%&amp;quot; style=&amp;quot;width: 50px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
label&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 480px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Der Name des Labels&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein AVR verwendet Wortadressen. ADR erzeugt Wortadressen. Um ein Byte im Speicher zu finden, muss die Adresse mit 2 multipliziert werden. Zu diesem Zweck gibt es außerdem den Befehl ADR2, der eine mit 2 multiplizierte Label-Adresse erzeugt. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung von ADR2 können Sie mit Tabellen arbeitet. &lt;br /&gt;
Das Beispielprogramm demontriert die Verwendung mit erweiterndem Assembler-Code.  &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Das Beispiel bindet die ADR2.LIB ein. Diese Bibliothek beinhaltet eine spezielle Version von _MoveConst2String .&lt;br /&gt;
Die normale Routine in der MCS.LIB stoppt die Print-Ausgabe wenn sie auf ein NULL-Byte (0) trifft, das ein String-Ende markiert.&lt;br /&gt;
Doch für das Beispielprogramm können wir die Adresse nicht ändern, sodaß die Adresse wieder hergestellt wird wenn ein NULL-Byte gefunden wird.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See Also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
NONE&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'===============================================================================&lt;br /&gt;
' This is an example of how to create an interactive menu system supporting&lt;br /&gt;
' sub-menus and support routines using the !ADR and !ADR2 statements&lt;br /&gt;
'===============================================================================&lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;M644def.dat&amp;quot;&lt;br /&gt;
$crystal = 8000000&lt;br /&gt;
 &lt;br /&gt;
$hwstack = 64 ' specify the hardware stack depth&lt;br /&gt;
$swstack = 64 ' specify the software stack depth&lt;br /&gt;
$framesize = 64 ' specify the framesize (local stack depth)&lt;br /&gt;
 &lt;br /&gt;
$lib &amp;quot;adr2.lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Dim Menupointer As Word&lt;br /&gt;
Dim Actionpointer As Word&lt;br /&gt;
 &lt;br /&gt;
Dim Entries As Byte&lt;br /&gt;
Dim Dummy As Byte&lt;br /&gt;
Dim Message As String * 32&lt;br /&gt;
 &lt;br /&gt;
Dim Local1 As Byte&lt;br /&gt;
Dim Local_loop1 As Byte&lt;br /&gt;
 &lt;br /&gt;
Const Menu_id = &amp;amp;HAA ' sub-menu ID byte&lt;br /&gt;
Const Routine_id = &amp;amp;H55 ' service routine ID byte&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 Restore Main_menu ' point to the start of the 'main' menu&lt;br /&gt;
 sts {MenuPointer}, R8 ' }&lt;br /&gt;
 sts {MenuPointer + 1}, R9 ' } store the pointer to the start of the menu&lt;br /&gt;
 &lt;br /&gt;
Display_new_menu:&lt;br /&gt;
 &lt;br /&gt;
 lds R8, {MenuPointer} ' }&lt;br /&gt;
 lds R9, {MenuPointer + 1} ' } restore the pointer to the start of the menu&lt;br /&gt;
 &lt;br /&gt;
 Read Entries ' get the number of entries in the menu including the title&lt;br /&gt;
 Print&lt;br /&gt;
 For Local_loop1 = 1 To Entries&lt;br /&gt;
 Read Message ' read the message&lt;br /&gt;
 Print Message ' send it to the console&lt;br /&gt;
 Next&lt;br /&gt;
 &lt;br /&gt;
 Read Dataptr ' get the pointer to the menu's action table&lt;br /&gt;
 sts {ActionPointer}, R8 ' }&lt;br /&gt;
 sts {ActionPointer + 1}, R9 ' } store the pointer to the start of the menu's action list&lt;br /&gt;
 &lt;br /&gt;
 Input &amp;quot;Entry ? &amp;quot; , Local1 ' ask the user which menu entry&lt;br /&gt;
 If Local1 = 0 Then ' is it valid ?&lt;br /&gt;
 Goto Display_new_menu ' if not, re-display the menu&lt;br /&gt;
 End If&lt;br /&gt;
 If Local1 =&amp;gt; Entries Then ' is it valid ?&lt;br /&gt;
 Goto Display_new_menu ' if not, re-display the menu&lt;br /&gt;
 End If&lt;br /&gt;
 &lt;br /&gt;
 lds R8,{ActionPointer} ' }&lt;br /&gt;
 lds R9,{ActionPointer + 1} ' } restore the pointer to the menu's action list&lt;br /&gt;
 &lt;br /&gt;
 If Local1 &amp;lt;&amp;gt; 1 Then&lt;br /&gt;
 For Local_loop1 = 2 To Local1 '&lt;br /&gt;
 ldI R30,4 ' }&lt;br /&gt;
 clr R1 ' }&lt;br /&gt;
 add R8,R30 ' }&lt;br /&gt;
 adc R9,R1 ' }&lt;br /&gt;
 Next ' } calculate the location of the selected entry's function ID&lt;br /&gt;
 End If&lt;br /&gt;
 &lt;br /&gt;
 Read Local1 ' get the menu entry's function ID&lt;br /&gt;
 Read Dummy ' to handle the uP expecting WORDS in DATA statements&lt;br /&gt;
 &lt;br /&gt;
 If Local1 = Menu_id Then ' did the user select an entry that points to another menu ?&lt;br /&gt;
 Read Dataptr&lt;br /&gt;
 sts {MenuPointer}, R8 ' }&lt;br /&gt;
 sts {MenuPointer + 1}, R9 ' } store the start of the menu&lt;br /&gt;
 Goto Display_new_menu&lt;br /&gt;
 End If&lt;br /&gt;
 &lt;br /&gt;
 Read Dataptr ' get the address of this entry's support routine&lt;br /&gt;
 movw R30,R8&lt;br /&gt;
 icall ' pass control to the entry's support routine&lt;br /&gt;
 &lt;br /&gt;
 Goto Display_new_menu ' re-display the last menu displayed&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Test support routines&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Hello_message:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You asked to print 'Hello'&amp;quot; ' confirmation that Menu Entry 3 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
2nd_menu_1st_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 1 of the 2nd menu&amp;quot; ' confirmation that Menu Entry 1 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
2nd_menu_2nd_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 2 of the 2nd menu&amp;quot; ' confirmation that Menu Entry 2 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
3rd_menu_1st_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 1 of the 3rd menu&amp;quot; ' confirmation that Menu Entry 1 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
3rd_menu_2nd_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 2 of the 3rd menu&amp;quot; ' confirmation the Menu Entry 2 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
 End&lt;br /&gt;
 &lt;br /&gt;
'===============================================================================&lt;br /&gt;
' Data Statements&lt;br /&gt;
'===============================================================================&lt;br /&gt;
 &lt;br /&gt;
$data&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Main Menu&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Main_menu:&lt;br /&gt;
 &lt;br /&gt;
 Data 4 ' number of entries in the menu including title&lt;br /&gt;
 &lt;br /&gt;
 Data &amp;quot;MAIN MENU&amp;quot; ' } menu title&lt;br /&gt;
 Data &amp;quot;1. Go to Menu 2&amp;quot; ' } 1st menu entry&lt;br /&gt;
 Data &amp;quot;2. Go to Menu 3&amp;quot; ' } 2nd menu entry&lt;br /&gt;
 Data &amp;quot;3. Print 'Hello' message&amp;quot; ' } 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Adr2 Mainmenu_supporttable ' point to this menu support table&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Mainmenu_supporttable:&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Second_menu ' address of next menu&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Third_menu ' address of next menu&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as support routine&lt;br /&gt;
 Adr Hello_message ' address of the support routine&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Second Menu&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Second_menu:&lt;br /&gt;
 &lt;br /&gt;
 Data 4 ' number of entries in the menu&lt;br /&gt;
 &lt;br /&gt;
 Data &amp;quot;SECOND MENU&amp;quot; ' } menu title&lt;br /&gt;
 Data &amp;quot;1. 2nd Menu Entry #1&amp;quot; ' } 1st menu entry&lt;br /&gt;
 Data &amp;quot;2. 2nd Menu Entry #2&amp;quot; ' } 2nd menu entry&lt;br /&gt;
 Data &amp;quot;3. Go to previous menu&amp;quot; ' } 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Adr2 Secondmenu_supporttable ' point to this menu support table&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Secondmenu_supporttable:&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 2nd_menu_1st_entry_routine ' support routine for 1st menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 2nd_menu_2nd_entry_routine ' support routine for 2nd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Main_menu ' support routine for 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Third Menu&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Third_menu:&lt;br /&gt;
 &lt;br /&gt;
 Data 4 ' number of entries in the menu&lt;br /&gt;
 &lt;br /&gt;
 Data &amp;quot;THIRD MENU&amp;quot; ' } menu title&lt;br /&gt;
 Data &amp;quot;1. 3rd Menu Entry #1&amp;quot; ' } 1st menu entry&lt;br /&gt;
 Data &amp;quot;2. 3rd Menu Entry #2&amp;quot; ' } 2nd menu entry&lt;br /&gt;
 Data &amp;quot;3. Go to previous menu&amp;quot; ' } 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Adr2 Thirdmenu_supporttable ' point to this menu support table&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Thirdmenu_supporttable:&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 3rd_menu_1st_entry_routine ' support routine for 1st menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 3rd_menu_2nd_entry_routine ' support routine for 2nd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Main_menu &lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/ADR/de</id>
		<title>ADR/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/ADR/de"/>
				<updated>2013-03-12T16:06:04Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* (**COPIED FROM ENGLISH PAGE**) = */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Erzeugt eine Label-Adresse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;ADR&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;amp;nbsp;label&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;ADR2&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;amp;nbsp;label&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Remarks&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;539&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;10%&amp;quot; style=&amp;quot;width: 50px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
label&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 480px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
The name of a label.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The AVR uses WORD addresses. ADR will create the word address. To find a byte in memory, you need to multiply by 2. For this purpose ADR2 is available. It will create the address of the label multiplied by 2.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Using ADR2 you can use tables. The sample program demonstrates this together with some more advanced ASM code.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
The sample includes ADR2.LIB. This lib contains a special version of &amp;amp;nbsp;_MoveConst2String .&lt;br /&gt;
&lt;br /&gt;
The normal routine in MCS.LIB will stop printing once a null byte (zero) is encountered that indicates the end of a string.&lt;br /&gt;
&lt;br /&gt;
But for the sample program, we may not change the address, so the address is restored when the null byte is found.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See Also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
NONE&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'===============================================================================&lt;br /&gt;
' This is an example of how to create an interactive menu system supporting&lt;br /&gt;
' sub-menus and support routines using the !ADR and !ADR2 statements&lt;br /&gt;
'===============================================================================&lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;M644def.dat&amp;quot;&lt;br /&gt;
$crystal = 8000000&lt;br /&gt;
 &lt;br /&gt;
$hwstack = 64 ' specify the hardware stack depth&lt;br /&gt;
$swstack = 64 ' specify the software stack depth&lt;br /&gt;
$framesize = 64 ' specify the framesize (local stack depth)&lt;br /&gt;
 &lt;br /&gt;
$lib &amp;quot;adr2.lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Dim Menupointer As Word&lt;br /&gt;
Dim Actionpointer As Word&lt;br /&gt;
 &lt;br /&gt;
Dim Entries As Byte&lt;br /&gt;
Dim Dummy As Byte&lt;br /&gt;
Dim Message As String * 32&lt;br /&gt;
 &lt;br /&gt;
Dim Local1 As Byte&lt;br /&gt;
Dim Local_loop1 As Byte&lt;br /&gt;
 &lt;br /&gt;
Const Menu_id = &amp;amp;HAA ' sub-menu ID byte&lt;br /&gt;
Const Routine_id = &amp;amp;H55 ' service routine ID byte&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 Restore Main_menu ' point to the start of the 'main' menu&lt;br /&gt;
 sts {MenuPointer}, R8 ' }&lt;br /&gt;
 sts {MenuPointer + 1}, R9 ' } store the pointer to the start of the menu&lt;br /&gt;
 &lt;br /&gt;
Display_new_menu:&lt;br /&gt;
 &lt;br /&gt;
 lds R8, {MenuPointer} ' }&lt;br /&gt;
 lds R9, {MenuPointer + 1} ' } restore the pointer to the start of the menu&lt;br /&gt;
 &lt;br /&gt;
 Read Entries ' get the number of entries in the menu including the title&lt;br /&gt;
 Print&lt;br /&gt;
 For Local_loop1 = 1 To Entries&lt;br /&gt;
 Read Message ' read the message&lt;br /&gt;
 Print Message ' send it to the console&lt;br /&gt;
 Next&lt;br /&gt;
 &lt;br /&gt;
 Read Dataptr ' get the pointer to the menu's action table&lt;br /&gt;
 sts {ActionPointer}, R8 ' }&lt;br /&gt;
 sts {ActionPointer + 1}, R9 ' } store the pointer to the start of the menu's action list&lt;br /&gt;
 &lt;br /&gt;
 Input &amp;quot;Entry ? &amp;quot; , Local1 ' ask the user which menu entry&lt;br /&gt;
 If Local1 = 0 Then ' is it valid ?&lt;br /&gt;
 Goto Display_new_menu ' if not, re-display the menu&lt;br /&gt;
 End If&lt;br /&gt;
 If Local1 =&amp;gt; Entries Then ' is it valid ?&lt;br /&gt;
 Goto Display_new_menu ' if not, re-display the menu&lt;br /&gt;
 End If&lt;br /&gt;
 &lt;br /&gt;
 lds R8,{ActionPointer} ' }&lt;br /&gt;
 lds R9,{ActionPointer + 1} ' } restore the pointer to the menu's action list&lt;br /&gt;
 &lt;br /&gt;
 If Local1 &amp;lt;&amp;gt; 1 Then&lt;br /&gt;
 For Local_loop1 = 2 To Local1 '&lt;br /&gt;
 ldI R30,4 ' }&lt;br /&gt;
 clr R1 ' }&lt;br /&gt;
 add R8,R30 ' }&lt;br /&gt;
 adc R9,R1 ' }&lt;br /&gt;
 Next ' } calculate the location of the selected entry's function ID&lt;br /&gt;
 End If&lt;br /&gt;
 &lt;br /&gt;
 Read Local1 ' get the menu entry's function ID&lt;br /&gt;
 Read Dummy ' to handle the uP expecting WORDS in DATA statements&lt;br /&gt;
 &lt;br /&gt;
 If Local1 = Menu_id Then ' did the user select an entry that points to another menu ?&lt;br /&gt;
 Read Dataptr&lt;br /&gt;
 sts {MenuPointer}, R8 ' }&lt;br /&gt;
 sts {MenuPointer + 1}, R9 ' } store the start of the menu&lt;br /&gt;
 Goto Display_new_menu&lt;br /&gt;
 End If&lt;br /&gt;
 &lt;br /&gt;
 Read Dataptr ' get the address of this entry's support routine&lt;br /&gt;
 movw R30,R8&lt;br /&gt;
 icall ' pass control to the entry's support routine&lt;br /&gt;
 &lt;br /&gt;
 Goto Display_new_menu ' re-display the last menu displayed&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Test support routines&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Hello_message:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You asked to print 'Hello'&amp;quot; ' confirmation that Menu Entry 3 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
2nd_menu_1st_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 1 of the 2nd menu&amp;quot; ' confirmation that Menu Entry 1 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
2nd_menu_2nd_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 2 of the 2nd menu&amp;quot; ' confirmation that Menu Entry 2 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
3rd_menu_1st_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 1 of the 3rd menu&amp;quot; ' confirmation that Menu Entry 1 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
3rd_menu_2nd_entry_routine:&lt;br /&gt;
 &lt;br /&gt;
 Print&lt;br /&gt;
 Print &amp;quot;You selected Entry 2 of the 3rd menu&amp;quot; ' confirmation the Menu Entry 2 was selected&lt;br /&gt;
 Return&lt;br /&gt;
 &lt;br /&gt;
 End&lt;br /&gt;
 &lt;br /&gt;
'===============================================================================&lt;br /&gt;
' Data Statements&lt;br /&gt;
'===============================================================================&lt;br /&gt;
 &lt;br /&gt;
$data&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Main Menu&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Main_menu:&lt;br /&gt;
 &lt;br /&gt;
 Data 4 ' number of entries in the menu including title&lt;br /&gt;
 &lt;br /&gt;
 Data &amp;quot;MAIN MENU&amp;quot; ' } menu title&lt;br /&gt;
 Data &amp;quot;1. Go to Menu 2&amp;quot; ' } 1st menu entry&lt;br /&gt;
 Data &amp;quot;2. Go to Menu 3&amp;quot; ' } 2nd menu entry&lt;br /&gt;
 Data &amp;quot;3. Print 'Hello' message&amp;quot; ' } 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Adr2 Mainmenu_supporttable ' point to this menu support table&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Mainmenu_supporttable:&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Second_menu ' address of next menu&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Third_menu ' address of next menu&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as support routine&lt;br /&gt;
 Adr Hello_message ' address of the support routine&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Second Menu&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Second_menu:&lt;br /&gt;
 &lt;br /&gt;
 Data 4 ' number of entries in the menu&lt;br /&gt;
 &lt;br /&gt;
 Data &amp;quot;SECOND MENU&amp;quot; ' } menu title&lt;br /&gt;
 Data &amp;quot;1. 2nd Menu Entry #1&amp;quot; ' } 1st menu entry&lt;br /&gt;
 Data &amp;quot;2. 2nd Menu Entry #2&amp;quot; ' } 2nd menu entry&lt;br /&gt;
 Data &amp;quot;3. Go to previous menu&amp;quot; ' } 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Adr2 Secondmenu_supporttable ' point to this menu support table&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Secondmenu_supporttable:&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 2nd_menu_1st_entry_routine ' support routine for 1st menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 2nd_menu_2nd_entry_routine ' support routine for 2nd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Main_menu ' support routine for 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
' Third Menu&lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Third_menu:&lt;br /&gt;
 &lt;br /&gt;
 Data 4 ' number of entries in the menu&lt;br /&gt;
 &lt;br /&gt;
 Data &amp;quot;THIRD MENU&amp;quot; ' } menu title&lt;br /&gt;
 Data &amp;quot;1. 3rd Menu Entry #1&amp;quot; ' } 1st menu entry&lt;br /&gt;
 Data &amp;quot;2. 3rd Menu Entry #2&amp;quot; ' } 2nd menu entry&lt;br /&gt;
 Data &amp;quot;3. Go to previous menu&amp;quot; ' } 3rd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Adr2 Thirdmenu_supporttable ' point to this menu support table&lt;br /&gt;
 &lt;br /&gt;
'-------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
Thirdmenu_supporttable:&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 3rd_menu_1st_entry_routine ' support routine for 1st menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Routine_id ' identify this menu entry as a support routine&lt;br /&gt;
 Adr 3rd_menu_2nd_entry_routine ' support routine for 2nd menu entry&lt;br /&gt;
 &lt;br /&gt;
 Data Menu_id ' identify this menu entry as a menu&lt;br /&gt;
 Adr2 Main_menu &lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/ACOS/de</id>
		<title>ACOS/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/ACOS/de"/>
				<updated>2013-03-06T11:19:35Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: Undo revision 4371 by Galahat (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== (**COPIED FROM ENGLISH PAGE**) === &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Action&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Returns the arccosine of a single in radians.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;ACOS&amp;lt;/span&amp;gt;( x )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Remarks&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;539&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;10%&amp;quot; style=&amp;quot;width: 50px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 480px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
A floating point variable such as single or double, that is assigned with the ACOS of variable x.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;10%&amp;quot; style=&amp;quot;width: 50px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
X&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 480px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
The float to get the ACOS of. Input is valid from –1 to +1 and returns&lt;br /&gt;
&lt;br /&gt;
p to 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Input is &amp;amp;lt; -1 than p and input is &amp;amp;gt; 1 than 0 will returned.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Input is cause of rounding effect in float-operations a little bit over 1 or -1, the value for 1.0 (-1.0) will be returned. This is the reason to give the value of the limit-point back, if Input is beyond limit. Generally the user have to take care, that Input to this function lies within –1 to +1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All trig functions work with radians. Use deg2rad and rad2deg to convert between radians and angles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See Also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[RAD2DEG]]&amp;amp;nbsp;,&amp;amp;nbsp;[[DEG2RAD]]&amp;amp;nbsp;,&amp;amp;nbsp;[[COS]]&amp;amp;nbsp;,&amp;amp;nbsp;[[SIN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[TAN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ATN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ASIN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ATN2]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 8000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Dim S As Single , X As Single&lt;br /&gt;
x= 0.5 : S = Acos(x)&lt;br /&gt;
Print S&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/ACOS/de</id>
		<title>ACOS/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/ACOS/de"/>
				<updated>2013-03-06T11:19:18Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: Undo revision 4372 by Galahat (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Gibt den Arkuskosinus eines Singles im Bogenmaß zurück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;ACOS&amp;lt;/span&amp;gt;( x )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Remarks&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;539&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;10%&amp;quot; style=&amp;quot;width: 50px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 480px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
A floating point variable such as single or double, that is assigned with the ACOS of variable x.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;10%&amp;quot; style=&amp;quot;width: 50px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
X&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 480px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
The float to get the ACOS of. Input is valid from –1 to +1 and returns&lt;br /&gt;
&lt;br /&gt;
p to 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Input is &amp;amp;lt; -1 than p and input is &amp;amp;gt; 1 than 0 will returned.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Input is cause of rounding effect in float-operations a little bit over 1 or -1, the value for 1.0 (-1.0) will be returned. This is the reason to give the value of the limit-point back, if Input is beyond limit. Generally the user have to take care, that Input to this function lies within –1 to +1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All trig functions work with radians. Use deg2rad and rad2deg to convert between radians and angles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See Also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[RAD2DEG]]&amp;amp;nbsp;,&amp;amp;nbsp;[[DEG2RAD]]&amp;amp;nbsp;,&amp;amp;nbsp;[[COS]]&amp;amp;nbsp;,&amp;amp;nbsp;[[SIN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[TAN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ATN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ASIN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ATN2]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 8000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Dim S As Single , X As Single&lt;br /&gt;
x= 0.5 : S = Acos(x)&lt;br /&gt;
Print S&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/ACOS/de</id>
		<title>ACOS/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/ACOS/de"/>
				<updated>2013-03-06T11:18:14Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: Undo revision 4373 by Galahat (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Gibt den Arkuskosinus eines Singles im Bogenmaß zurück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;ACOS&amp;lt;/span&amp;gt;( x )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;539&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;10%&amp;quot; style=&amp;quot;width: 50px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 480px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
A floating point variable such as single or double, that is assigned with the ACOS of variable x.&lt;br /&gt;
Eine Fließkommavariable (Single o. Double)&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;10%&amp;quot; style=&amp;quot;width: 50px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
X&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 480px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
The float to get the ACOS of. Input is valid from –1 to +1 and returns&lt;br /&gt;
&lt;br /&gt;
p to 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Input is &amp;amp;lt; -1 than p and input is &amp;amp;gt; 1 than 0 will returned.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Input is cause of rounding effect in float-operations a little bit over 1 or -1, the value for 1.0 (-1.0) will be returned. This is the reason to give the value of the limit-point back, if Input is beyond limit. Generally the user have to take care, that Input to this function lies within –1 to +1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All trig functions work with radians. Use deg2rad and rad2deg to convert between radians and angles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See Also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[RAD2DEG]]&amp;amp;nbsp;,&amp;amp;nbsp;[[DEG2RAD]]&amp;amp;nbsp;,&amp;amp;nbsp;[[COS]]&amp;amp;nbsp;,&amp;amp;nbsp;[[SIN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[TAN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ATN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ASIN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ATN2]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 8000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Dim S As Single , X As Single&lt;br /&gt;
x= 0.5 : S = Acos(x)&lt;br /&gt;
Print S&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/ACOS/de</id>
		<title>ACOS/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/ACOS/de"/>
				<updated>2013-03-06T11:15:55Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: Undo revision 4374 by Galahat (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Gibt den Arkuskosinus eines Singles im Bogenmaß zurück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;ACOS&amp;lt;/span&amp;gt;( x )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;539&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;10%&amp;quot; style=&amp;quot;width: 50px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 480px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
A floating point variable such as single or double, that is assigned with the ACOS of variable x.&lt;br /&gt;
Eine Gleitkomma-Variable (Single/Double),der der ACOS der Variablen x zugewiesen wird.&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;10%&amp;quot; style=&amp;quot;width: 50px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
X&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 480px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
The float to get the ACOS of. Input is valid from –1 to +1 and returns&lt;br /&gt;
&lt;br /&gt;
p to 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Input is &amp;amp;lt; -1 than p and input is &amp;amp;gt; 1 than 0 will returned.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Input is cause of rounding effect in float-operations a little bit over 1 or -1, the value for 1.0 (-1.0) will be returned. This is the reason to give the value of the limit-point back, if Input is beyond limit. Generally the user have to take care, that Input to this function lies within –1 to +1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All trig functions work with radians. Use deg2rad and rad2deg to convert between radians and angles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See Also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[RAD2DEG]]&amp;amp;nbsp;,&amp;amp;nbsp;[[DEG2RAD]]&amp;amp;nbsp;,&amp;amp;nbsp;[[COS]]&amp;amp;nbsp;,&amp;amp;nbsp;[[SIN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[TAN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ATN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ASIN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ATN2]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 8000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Dim S As Single , X As Single&lt;br /&gt;
x= 0.5 : S = Acos(x)&lt;br /&gt;
Print S&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/ACOS/de</id>
		<title>ACOS/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/ACOS/de"/>
				<updated>2013-03-06T11:13:10Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Anmerkungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Gibt den Arkuskosinus eines Singles im Bogenmaß zurück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;ACOS&amp;lt;/span&amp;gt;( x )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;539&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;10%&amp;quot; style=&amp;quot;width: 50px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 480px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Eine Gleitkomma-Variable (Single/Double),der der ACOS der Variablen x zugewiesen wird.&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;10%&amp;quot; style=&amp;quot;width: 50px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
X&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 480px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Der Gleitkommawert von dem der ACOS berechnet wird. &lt;br /&gt;
Gültiger Wertebereich ist –1 bis +1, Rückgabe p bis 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Input is &amp;amp;lt; -1 than p and input is &amp;amp;gt; 1 than 0 will returned.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Input is cause of rounding effect in float-operations a little bit over 1 or -1, the value for 1.0 (-1.0) will be returned. This is the reason to give the value of the limit-point back, if Input is beyond limit. Generally the user have to take care, that Input to this function lies within –1 to +1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All trig functions work with radians. Use deg2rad and rad2deg to convert between radians and angles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See Also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[RAD2DEG]]&amp;amp;nbsp;,&amp;amp;nbsp;[[DEG2RAD]]&amp;amp;nbsp;,&amp;amp;nbsp;[[COS]]&amp;amp;nbsp;,&amp;amp;nbsp;[[SIN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[TAN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ATN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ASIN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ATN2]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 8000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Dim S As Single , X As Single&lt;br /&gt;
x= 0.5 : S = Acos(x)&lt;br /&gt;
Print S&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/ACOS/de</id>
		<title>ACOS/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/ACOS/de"/>
				<updated>2013-03-06T11:08:00Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Anmerkungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Gibt den Arkuskosinus eines Singles im Bogenmaß zurück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;ACOS&amp;lt;/span&amp;gt;( x )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;539&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;10%&amp;quot; style=&amp;quot;width: 50px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 480px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
A floating point variable such as single or double, that is assigned with the ACOS of variable x.&lt;br /&gt;
Eine Gleitkomma-Variable (Single/Double),der der ACOS der Variablen x zugewiesen wird.&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;10%&amp;quot; style=&amp;quot;width: 50px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
X&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 480px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
The float to get the ACOS of. Input is valid from –1 to +1 and returns&lt;br /&gt;
&lt;br /&gt;
p to 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Input is &amp;amp;lt; -1 than p and input is &amp;amp;gt; 1 than 0 will returned.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Input is cause of rounding effect in float-operations a little bit over 1 or -1, the value for 1.0 (-1.0) will be returned. This is the reason to give the value of the limit-point back, if Input is beyond limit. Generally the user have to take care, that Input to this function lies within –1 to +1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All trig functions work with radians. Use deg2rad and rad2deg to convert between radians and angles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See Also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[RAD2DEG]]&amp;amp;nbsp;,&amp;amp;nbsp;[[DEG2RAD]]&amp;amp;nbsp;,&amp;amp;nbsp;[[COS]]&amp;amp;nbsp;,&amp;amp;nbsp;[[SIN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[TAN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ATN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ASIN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ATN2]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 8000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Dim S As Single , X As Single&lt;br /&gt;
x= 0.5 : S = Acos(x)&lt;br /&gt;
Print S&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/ACOS/de</id>
		<title>ACOS/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/ACOS/de"/>
				<updated>2013-03-06T11:05:04Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Remarks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Gibt den Arkuskosinus eines Singles im Bogenmaß zurück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;ACOS&amp;lt;/span&amp;gt;( x )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;539&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;10%&amp;quot; style=&amp;quot;width: 50px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 480px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
A floating point variable such as single or double, that is assigned with the ACOS of variable x.&lt;br /&gt;
Eine Fließkommavariable (Single o. Double)&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;10%&amp;quot; style=&amp;quot;width: 50px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
X&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 480px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
The float to get the ACOS of. Input is valid from –1 to +1 and returns&lt;br /&gt;
&lt;br /&gt;
p to 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Input is &amp;amp;lt; -1 than p and input is &amp;amp;gt; 1 than 0 will returned.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Input is cause of rounding effect in float-operations a little bit over 1 or -1, the value for 1.0 (-1.0) will be returned. This is the reason to give the value of the limit-point back, if Input is beyond limit. Generally the user have to take care, that Input to this function lies within –1 to +1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All trig functions work with radians. Use deg2rad and rad2deg to convert between radians and angles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See Also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[RAD2DEG]]&amp;amp;nbsp;,&amp;amp;nbsp;[[DEG2RAD]]&amp;amp;nbsp;,&amp;amp;nbsp;[[COS]]&amp;amp;nbsp;,&amp;amp;nbsp;[[SIN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[TAN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ATN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ASIN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ATN2]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 8000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Dim S As Single , X As Single&lt;br /&gt;
x= 0.5 : S = Acos(x)&lt;br /&gt;
Print S&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/ACOS/de</id>
		<title>ACOS/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/ACOS/de"/>
				<updated>2013-03-06T11:03:59Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* (**COPIED FROM ENGLISH PAGE**) = */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Gibt den Arkuskosinus eines Singles im Bogenmaß zurück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;ACOS&amp;lt;/span&amp;gt;( x )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Remarks&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;539&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;10%&amp;quot; style=&amp;quot;width: 50px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 480px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
A floating point variable such as single or double, that is assigned with the ACOS of variable x.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;10%&amp;quot; style=&amp;quot;width: 50px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
X&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 480px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
The float to get the ACOS of. Input is valid from –1 to +1 and returns&lt;br /&gt;
&lt;br /&gt;
p to 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Input is &amp;amp;lt; -1 than p and input is &amp;amp;gt; 1 than 0 will returned.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Input is cause of rounding effect in float-operations a little bit over 1 or -1, the value for 1.0 (-1.0) will be returned. This is the reason to give the value of the limit-point back, if Input is beyond limit. Generally the user have to take care, that Input to this function lies within –1 to +1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All trig functions work with radians. Use deg2rad and rad2deg to convert between radians and angles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See Also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[RAD2DEG]]&amp;amp;nbsp;,&amp;amp;nbsp;[[DEG2RAD]]&amp;amp;nbsp;,&amp;amp;nbsp;[[COS]]&amp;amp;nbsp;,&amp;amp;nbsp;[[SIN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[TAN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ATN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ASIN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[ATN2]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 8000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Dim S As Single , X As Single&lt;br /&gt;
x= 0.5 : S = Acos(x)&lt;br /&gt;
Print S&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/MAKEINT/de</id>
		<title>MAKEINT/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/MAKEINT/de"/>
				<updated>2013-03-05T09:17:07Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Anmerkungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Kombiniert zwei Variablen vom Typ Byte zu einem Word oder Integer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
varn =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;MAKEINT&amp;lt;/span&amp;gt;(LSB , MSB)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;601&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;11%&amp;quot; style=&amp;quot;width: 62px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Varn&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 530px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Variable der das Ergebnis der Funktion zugewiesen wird.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;11%&amp;quot; style=&amp;quot;width: 62px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
LSB&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 530px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Variable oder Konstante des niederwertigen Bytes.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;11%&amp;quot; style=&amp;quot;width: 62px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
MSB&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 530px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Variable oder Konstante des höherwertigen Bytes.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein dazu äquivalenter Code:&lt;br /&gt;
&lt;br /&gt;
varn = (256 * MSB) + LSB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[LOW]]&amp;amp;nbsp;,&amp;amp;nbsp;[[HIGH]]&amp;amp;nbsp;,&amp;amp;nbsp;[[MAKEBCD]]&amp;amp;nbsp;,&amp;amp;nbsp;[[MAKEDEC]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beispiel&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
Dim A As Integer , I As Integer&lt;br /&gt;
A = 2&lt;br /&gt;
I = Makeint(a , 1) 'I = (1 * 256) + 2 = 258&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/MAKEDEC/de</id>
		<title>MAKEDEC/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/MAKEDEC/de"/>
				<updated>2013-03-05T09:16:33Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Anmerkungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Konvertiert eine BCD-kodierte Variable (Byte/Integer/Word) in eine Dezimalzahl.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var1 =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;MAKEDEC&amp;lt;/span&amp;gt;(var2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;597&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;11%&amp;quot; style=&amp;quot;width: 62px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
var1&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 526px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Variable der der Dezimalwert zugewiesen wird.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;11%&amp;quot; style=&amp;quot;width: 62px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
var2&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 526px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Variable die den BCD-Wert liefert.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn sie mit beispielsweise mit einer I²C-Uhr arbeiten die ihre Werte BCD-kodiert verarbeitet, kann diese Funktion dazu verwendet werden&lt;br /&gt;
&lt;br /&gt;
BCD-kodierte Zahlen zu Dezimalzahlen zu konvertieren. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[MAKEBCD]]&amp;amp;nbsp;,&amp;amp;nbsp;[[MAKEINT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beispiel&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
Dim A As Byte&lt;br /&gt;
A = 65&lt;br /&gt;
Print A&lt;br /&gt;
Print Bcd(a)&lt;br /&gt;
A = Makedec(a)&lt;br /&gt;
Print Spc(3) ; A&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/MAKEBCD/de</id>
		<title>MAKEBCD/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/MAKEBCD/de"/>
				<updated>2013-03-05T09:15:54Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Anmerkungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Konvertiert den Wert einer Variablen in das BCD Format.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var1 =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;MAKEBCD&amp;lt;/span&amp;gt;(var2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0px 0px 0px 4px; padding: 0px;&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-collapse: collapse; border-spacing: 0px;&amp;quot; width=&amp;quot;601&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border: 1px solid rgb(0, 0, 0); width: 56px;&amp;quot; width=&amp;quot;10%&amp;quot; valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
var1&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border: 1px solid rgb(0, 0, 0); width: 536px;&amp;quot; width=&amp;quot;100%&amp;quot; valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
Variable der der konvertierten Wert zugewiesen wird.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border: 1px solid rgb(0, 0, 0); width: 56px;&amp;quot; width=&amp;quot;10%&amp;quot; valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
Var2&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border: 1px solid rgb(0, 0, 0); width: 536px;&amp;quot; width=&amp;quot;100%&amp;quot; valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
Variable die&amp;amp;nbsp;den&amp;amp;nbsp;zu konvertierenden Dezimalwert liefert.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn sie mit beispielsweise mit einer I²C-Uhr arbeiten die&amp;amp;nbsp;ihre Werte BCD-kodiert verarbeitet, kann diese Funktion dazu verwendet werden,&lt;br /&gt;
&lt;br /&gt;
Dezimalwerte in das BCD-Format zu überführen.&lt;br /&gt;
&lt;br /&gt;
Um mit Print eine Zahl im BCD-Format auszugeben, konvertiert die BCD()-Funktion einen BCD-Wert zu einer BCD-Zeichenkette (String).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[MAKEDEC]]&amp;amp;nbsp;,&amp;amp;nbsp;[[BCD]]&amp;amp;nbsp;,&amp;amp;nbsp;[[MAKEINT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beispiel&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
Dim A As Byte&lt;br /&gt;
A = 65&lt;br /&gt;
Lcd A&lt;br /&gt;
Lowerline&lt;br /&gt;
Lcd Bcd(a)&lt;br /&gt;
A = Makebcd(a)&lt;br /&gt;
Lcd &amp;quot; &amp;quot; ; A&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/LTRIM/de</id>
		<title>LTRIM/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/LTRIM/de"/>
				<updated>2013-03-05T09:14:18Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Anmerkungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Gibt eine Kopie eines Strings ohne führende Leerzeichen zurück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;LTRIM&amp;lt;/span&amp;gt;( org )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;488&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; style=&amp;quot;width: 65px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 414px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
String dem der Rückgabewert zugewiesen wird.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; style=&amp;quot;width: 65px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Org&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 414px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Ein String dessen führende Leezeichen entfernt werden.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[RTRIM]]&amp;amp;nbsp;,&amp;amp;nbsp;[[TRIM]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;ASM&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
NONE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Teilbeispiel&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
Dim S As String * 6&lt;br /&gt;
S =&amp;quot; AB &amp;quot;&lt;br /&gt;
Print Ltrim(s)&lt;br /&gt;
Print Rtrim(s)&lt;br /&gt;
Print Trim(s)&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/LOW/de</id>
		<title>LOW/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/LOW/de"/>
				<updated>2013-03-05T09:13:37Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Anmerkungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Gibt das niederwertige Byte (LSB) einer Variable zurück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;LOW&amp;lt;/span&amp;gt;( s )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;485&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;13%&amp;quot; style=&amp;quot;width: 59px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 417px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Eine Variable der das LSB von S zugewiesen wird.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;13%&amp;quot; style=&amp;quot;width: 59px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
S&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 417px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Die Quellvariable von der das LSB kopiert wird.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Byte genügt um das LSB eines Word oder Long aufzunehmen.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel:&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
B = L &amp;amp;nbsp;, where B is a byte and L is a Long.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[HIGH]]&amp;amp;nbsp;,&amp;amp;nbsp;[[HIGHW]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beispiel&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 4000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
Dim I As Integer , Z As Byte&lt;br /&gt;
I = &amp;amp;H1001&lt;br /&gt;
Z = Low(i) ' is 1&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/LEN/de</id>
		<title>LEN/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/LEN/de"/>
				<updated>2013-03-05T09:11:32Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Anmerkungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Gibt die Anzahl von Zeichen eines Strings zurück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;LEN&amp;lt;/span&amp;gt;( string )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;539&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; style=&amp;quot;width: 72px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 458px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Eine numerische Variable der die Länge des Strings zugewiesen wird.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; style=&amp;quot;width: 72px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
string&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 458px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Die Zeichenfolge dessen Länge bestimmt werden soll.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Länge eines Strings kann maximal 254 Zeichen umfassen. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[VAL]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Teilbeispiel&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
Dim S As String * 15 , Z As String * 15&lt;br /&gt;
S =&amp;quot;ABCDEFG&amp;quot;&lt;br /&gt;
Print Len(s)&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/LCASE/de</id>
		<title>LCASE/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/LCASE/de"/>
				<updated>2013-03-05T09:09:16Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Anmerkungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Gibt eine in Kleinbuchstaben konvertierte Zeichenfolge zurück.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Target =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;LCASE&amp;lt;/span&amp;gt;(source)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;631&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; style=&amp;quot;width: 85px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Target&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 537px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Ein String dem der in Kleinbuchstaben konvertierte Quell-String zugewiesen wird.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; style=&amp;quot;width: 85px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Source&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 537px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Der Quell-String.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[UCASE]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;ASM&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Aus der MCS.LIB aufgerufene ASM-Routine&amp;amp;nbsp;: _LCASE&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Der generierte ASM-Code&amp;amp;nbsp;: (Kann abhängig vom verwendeten Mikrocontroller abweichen)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;#####&amp;lt;/nowiki&amp;gt;Z = Lcase(s)&lt;br /&gt;
&lt;br /&gt;
Ldi R30,$60&lt;br /&gt;
&lt;br /&gt;
Ldi R31,$00&amp;amp;nbsp;; load constant in register&lt;br /&gt;
&lt;br /&gt;
Ldi R26,$6D&lt;br /&gt;
&lt;br /&gt;
Rcall _Lcase&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beispiel&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 4000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Dim S As String * 12 , Z As String * 12&lt;br /&gt;
S = &amp;quot;Hello World&amp;quot;&lt;br /&gt;
Z = Lcase(s)&lt;br /&gt;
Print Z&lt;br /&gt;
Z = Ucase(s)&lt;br /&gt;
Print Z&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/LCASE/de</id>
		<title>LCASE/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/LCASE/de"/>
				<updated>2013-03-05T09:08:54Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Anmerkungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Gibt eine in Kleinbuchstaben konvertierte Zeichenfolge zurück.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Target =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;LCASE&amp;lt;/span&amp;gt;(source)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;631&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; style=&amp;quot;width: 85px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Target&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 537px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Ein String dem der in Kleinbuchstaben konvertierten Quell-String zugewiesen wird.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; style=&amp;quot;width: 85px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Source&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 537px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Der Quell-String.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[UCASE]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;ASM&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Aus der MCS.LIB aufgerufene ASM-Routine&amp;amp;nbsp;: _LCASE&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Der generierte ASM-Code&amp;amp;nbsp;: (Kann abhängig vom verwendeten Mikrocontroller abweichen)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;#####&amp;lt;/nowiki&amp;gt;Z = Lcase(s)&lt;br /&gt;
&lt;br /&gt;
Ldi R30,$60&lt;br /&gt;
&lt;br /&gt;
Ldi R31,$00&amp;amp;nbsp;; load constant in register&lt;br /&gt;
&lt;br /&gt;
Ldi R26,$6D&lt;br /&gt;
&lt;br /&gt;
Rcall _Lcase&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beispiel&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 4000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Dim S As String * 12 , Z As String * 12&lt;br /&gt;
S = &amp;quot;Hello World&amp;quot;&lt;br /&gt;
Z = Lcase(s)&lt;br /&gt;
Print Z&lt;br /&gt;
Z = Ucase(s)&lt;br /&gt;
Print Z&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Mixing_ASM_and_BASIC/de</id>
		<title>Mixing ASM and BASIC/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Mixing_ASM_and_BASIC/de"/>
				<updated>2013-03-05T09:07:37Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Umformung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== '''BASIC und Assembler mischen''' ==&lt;br /&gt;
&lt;br /&gt;
  Dieses Kapitel darf nicht als Unterrichtung in Assemblerprogammierung verstanden werden. &lt;br /&gt;
  Wenn Sie ein spezielles Thema zur Verwendung  von Assembler in BASCOM vermissen, teilen Sie uns das per Email mit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BASCOM gestattet das mischen von BASIC mit Assembler-Code, was in den Fällen nützlich sein kann, in denen Sie vollen Einfluss auf den generierten Code nehmen wollen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nahezu alle Assembler-Mnemonics werden vom Compiler direkt unterstütz. Die Ausnahmen sind SWAP, CALL und OUT. Das sind reservierte BASIC-Befehle und haben Vorrang gegenüber Assembler-Mnemonics.&lt;br /&gt;
&lt;br /&gt;
Um diese Mnemonics verwenden zu können wird ihnen ein Ausrufezeichen (!) vorangestellt.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[File:Notice.jpg|notice]]Es wird empfohlen immer das&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;&amp;amp;nbsp;!&amp;amp;nbsp;&amp;lt;/span&amp;gt;oder einen $ASM … $End ASM –Block zu verwenden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    Dim a As Byte At &amp;amp;H60 'A is stored at location &amp;amp;H60&lt;br /&gt;
    Ldi R27 , $00 &amp;amp;nbsp; 'Load R27 with MSB of address&lt;br /&gt;
    Ldi R26 , $60 &amp;amp;nbsp; 'Load R26 with LSB of address&lt;br /&gt;
    Ld R1, X &amp;amp;nbsp; 'load memory location $60 into R1&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;!&amp;lt;/span&amp;gt;SWAP R1 &amp;amp;nbsp; 'swap nibbles&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie Sie sehen, wurde dem Mnemonik SWAP ein Ausrufezeichen&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;!&amp;lt;/span&amp;gt;&amp;amp;nbsp; vorangestellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine andere Option ist die Verwendung eines einschließenden $ASM/ $END ASM - Blocks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;$ASM&amp;lt;/span&amp;gt;&lt;br /&gt;
    LDI R27 , $00 &amp;amp;nbsp; 'Load R27 with MSB of address&lt;br /&gt;
    LDI R26 , $60 &amp;amp;nbsp; 'Load R26 with LSB of address&lt;br /&gt;
    LDI R1  , X &amp;amp;nbsp; &amp;amp;nbsp;'load memory location $60 into R1&lt;br /&gt;
    SWAP R1 &amp;amp;nbsp; 'swap nibbles&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;$END ASM&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Assembler-Hilfsfunktion''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine spezielle Assembler-Hilfsfunktion unterstützt das Laden von Adressen in die Register X oder Z.  &lt;br /&gt;
Das Y-Register sollte nicht verwendet werden da dieses bereits als Zeiger auf den Software-Stack verwendet wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Dim A As Byte &amp;amp;nbsp;'reserve space&lt;br /&gt;
  LOADADR a, X &amp;amp;nbsp;'load address of variable named A into register pair X&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachfolgender Code hat den gleichen Effekt &amp;amp;nbsp;:&lt;br /&gt;
  LDI R26 , $60 'for example&amp;amp;nbsp;!&lt;br /&gt;
  LDI R27, $00 'for example&amp;amp;nbsp;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Von Bascom verwendete Register''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
R4 und R5  werden als Zeiger auf den Stack-Frame oder zur temporären Datensicherung verwendet.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
R6 dient zur Speicherung von Bit-Variablen:&lt;br /&gt;
&lt;br /&gt;
-  bit 0 = Flag für Integer/Word Umwandlungen&lt;br /&gt;
&lt;br /&gt;
-  bit 1 = Temporärer Bit-Speicher beim Tauschen von Bits&lt;br /&gt;
&lt;br /&gt;
-  bit 2 = Fehler-Bit (ERR - Variable)&lt;br /&gt;
&lt;br /&gt;
-  bit 3 = Anzeigen/Nicht Anzeigen - Flag bei dem INPUT-Befehl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
R8 und R9 dienen als Datenzeiger für den READ-Befehl.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Register werden Befehlsabhängig verwendet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Laden von Variablen-Adressen''' ==&lt;br /&gt;
&lt;br /&gt;
Um die Adresse einer Variable zu laden, muß dessen Name in geschwungenen Klammern eingeschlossen sein. &lt;br /&gt;
    Dim B As Bit&lt;br /&gt;
    LDS R16, {B} '{B} wird durch die Adresse der Variablen B ersetzt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um auf ein Bit zu verweisen, muss der Variablen der Ausdruck BIT. vorangestellt sein.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    SBRS R16 , BIT.B &amp;amp;nbsp;'Beachten sie den Punkt!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Da B das erste dimensionierte Bit ist, erhält B die Bitnummer 0.&lt;br /&gt;
Bits werden zu Bytes zusammengefasst gespeichert. Das erste dimensionierte Bit geht in das niederwertigste Bit ein, usw.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Laden von Label-Adressen''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um die Adresse eines Labels zu laden, schreiben sie&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LDI ZL, Low(lbl * 1)&lt;br /&gt;
 LDI ZH , High(lbl * 1)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wobei  ZL   auch R30, R24, R26, R28 oder R30, und ZH  gleichermaßen R31, R25, R27, R29 oder R31 sein kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das sind sogenannte Registerpaare mit denen  Zeiger gebildet werden können.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit einer LPM – Instruktion (LOAD-PROGRAMM_MEMORY) Daten aus dem Programmspeicher laden wollen, muss die Adresse mit 2 multipliziert werden, &lt;br /&gt;
da der Programmspeicher wortorganisiert ist (16Bit).&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 LDI ZL, Low(lbl * 2)&lt;br /&gt;
 LDI ZH , High(lbl * 2)&lt;br /&gt;
 LPM&amp;amp;nbsp;; get data into R0&lt;br /&gt;
 ....&lt;br /&gt;
 Lbl:&lt;br /&gt;
 .....&lt;br /&gt;
&lt;br /&gt;
== '''Einige wichtige Punkte''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um in Assembler zu programmieren müssen Atmel Mnemonics verwendet werden.&lt;br /&gt;
In den Datenblättern der jeweiligen Mikrocontroller die Sie unter www.atmel.com herunterladen können, finden sie den entsprechenden Befehlsvorrat.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Alle Befehle die eine Konstanten verwenden, arbeiten ausschließlich mit den oberen 16 Registern R16 bis R31.&lt;br /&gt;
&lt;br /&gt;
!LDI  R15, 12     funktioniert also nicht.      &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Der Befehl    SBR reg , K  &lt;br /&gt;
&lt;br /&gt;
K kann ein Wert von 0 bis 255 sein. So können mehrere Bits gleichzeitig gesetzt werden.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl SBI port , K   hingegen kann immer nur ein Bit setzen, da K nur 0 bis 7 sein kann.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Gleiche gilt für die Befehle CBR und CBI.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sie können für K ebenfalls symbolische Konstante verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  .equ myval = (10+2)/4&lt;br /&gt;
  ldi R24,myval+2 '5&lt;br /&gt;
  ldi R24,asc(&amp;quot;A&amp;quot;)+1&amp;amp;nbsp;; load with 66&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oder in BASIC mit CONST&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  CONST Myval = (10+2) / 4&lt;br /&gt;
  LDI R24, myval&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Bibliotheken (.lib) erstellen''' ==&lt;br /&gt;
&lt;br /&gt;
Wie erstellt man eine eigene Bibliothek und verwendet diese mit BASIC?&lt;br /&gt;
&lt;br /&gt;
Die Dateien zu diesem Beispiel finden sie im BASCOM-Installationsverzeichnis unter \SAMPLES\libdemo.bas und unter \LIB\mylib.lib. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zu Beginn bestimmen Sie die zu verwendenden Parameter und ihre Datentypen.&lt;br /&gt;
&lt;br /&gt;
Überlegen Sie außerdem ob die Parameter Byref oder Byval übergeben werden sollen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;ByRev&amp;quot; : Die Adresse der übergebenen Variable wird an eine Prozedur übergeben. So wird der Inhalt der Variable direkt bearbeitet. &lt;br /&gt;
&lt;br /&gt;
- &amp;quot;ByVal&amp;quot; : Eine Kopie des Parameterinhaltes wird übergeben. Der Inhalt der übergebenen Quellvariable bleibt unangetastet. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
Eine Subroutine namens &amp;quot;test&amp;quot; erwartet zwei Parameter:&lt;br /&gt;
&lt;br /&gt;
  x die byval übergeben wird (eine Kopie. Kopien werden temporär in den Stack-Fame-Bereich geschrieben) &lt;br /&gt;
  y die byref übergeben wird (die Adresse der Variablen)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen wird die Adresse der Variablen auf den SoftStack gebracht, welcher mit dem Y-Zeiger verwaltet wird. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der erste Parameter x (genauer: die Adresse seiner Kopie) wird dem Soft-Stack auferlegt.&lt;br /&gt;
&lt;br /&gt;
An diese Adresse gelangen sie durch:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 LDD R26 , Y + 0&lt;br /&gt;
 LDD R27 , Y + 1&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Die Adresse steht nun im Registerpaar X (R26,R27) oder im X-Zeiger.  &lt;br /&gt;
&lt;br /&gt;
Da ein zweiter Parameter, oder besser dessen Adresse ebenfalls auf dem Soft-Stack gebracht werden soll,&lt;br /&gt;
ändert sich jedoch die Verschiebegröße auf den Y-Zeiger um an die Adresse von x zu gelangen&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
x wird dadurch also so refenziert:&lt;br /&gt;
 LDD R26 , Y + 2&lt;br /&gt;
 LDD R27 , Y + 3&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein zuletzt übergebenen Paramter (hier y) wird stets so refernziert:&lt;br /&gt;
 LDD r26 , Y + 0&lt;br /&gt;
 LDD r27 , Y + 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schreiben Sie eine gewöhnliche Subprozedur, zusätzlich jedoch mit dem Namen der Prozedur in eckigen Klammern, wie im folgendem &lt;br /&gt;
Beispiel gezeigt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  [test]&lt;br /&gt;
    test:&lt;br /&gt;
     LDD R26,X+2&amp;amp;nbsp;; load address of x&lt;br /&gt;
     LDD R27,Y+3&lt;br /&gt;
     LD  R24,x&amp;amp;nbsp;; get value into r24&lt;br /&gt;
     INC R24&amp;amp;nbsp;; value + 1&lt;br /&gt;
     ST X,R24&amp;amp;nbsp;; put back&lt;br /&gt;
     LDD R26,Y+0&amp;amp;nbsp;; address of y&lt;br /&gt;
     LDD R27,Y+1&lt;br /&gt;
     ST X,R24&amp;amp;nbsp;; store&lt;br /&gt;
    RET&amp;amp;nbsp;; ready&lt;br /&gt;
  [end]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um eine Funktion zu erstellen wird genauso verfahren.&lt;br /&gt;
&lt;br /&gt;
Der Unterschied: eine Funktion gibt ein Ergebnis zurück, womit ein weiterer Parameter entsteht.&lt;br /&gt;
Dieser Rückgabeparameter wird automatisch generiert und trägt den Namen der Funktion.&lt;br /&gt;
Auf diese Weise kann das Ergebnis dem Funktionsnamen zugeordnet werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 Declare Function Test(byval x as byte , y as byte) as byte&lt;br /&gt;
Eine virtuelle Variable namens Test wird erzeugt und auf den Soft-Stack mit Hilfe des Y-Zeigers gebracht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis der Funktion (test) würde an dieser Stelle so referenziert:&lt;br /&gt;
 LDD R26 , Y + 0&lt;br /&gt;
 LDD R27 , Y + 1&lt;br /&gt;
&lt;br /&gt;
Durch den bei der Funktion übergebenen Parameter x jedoch, ändert sich die Verschiebegröße auf y und damit der Zugriff auf test zu &lt;br /&gt;
 Y + 2 und Y + 3,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
und nachdem die  Adresse des dritten Parameters y auf den Soft-Stack geschrieben wird, ändert sich der Verweis ebenfalls wieder:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 LDD R26 , Y + 4&lt;br /&gt;
 LDD R27 , Y + 5&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schlussendlich wird auf die Adresse von x im Soft-Stack so verwiesen,&lt;br /&gt;
  LDD r26 , Y + 2&lt;br /&gt;
  LDD r27 , Y + 3&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und auf y so.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  LDD R26 , Y + 0&lt;br /&gt;
  LDD R27 , Y + 1&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für '''Exit Sub''' oder '''Exit Function''' muss außerdem ein zusätliches Label angegeben werden das mit sub_ beginnt und mit dem Namen der Funktion oder der Routine endet.&lt;br /&gt;
Dem oben aufgeführten Beispiel entsprechend also:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  sub_test:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;LOCALS&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit lokalen Variablen arbeitet, wird es etwas komplizierter.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jede Adresse einer lokalen Variable wird auch auf den Soft-Stack geschrieben.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verwenden Sie nur eine lokale Variable, liegt dessen Adresse an&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  LDD R26, Y + 0&lt;br /&gt;
  LDD R27, Y + 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Die Referenzierung auf alle weiteren Parameter erhöht sich dadurch um 2, sodass sich der Zugiff auf die Adresse des Parameter y ändert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LDD R26 , Y + 0   nach   LDD R26 , Y + 2&lt;br /&gt;
 LDD R27 , Y + 1   nach   LDD R27 , Y + 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn mehr als eine lokale Variable verwendet werden, muss für jede Weitere 2 hinzuaddiert werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Ende muss die Datei mit der Endung .lib abgespeichert werden.&lt;br /&gt;
Mit dem Lib-Mangager kann die neue Bibliothek in das lbx-Format kompiliert werden.&lt;br /&gt;
&lt;br /&gt;
Die jeweilige Declare Sub/Function Aweisung muss, um die Funktion oder Subroutine verwenden zu können, im Programmcode eingefügt werden. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das folgende Programmbeispiel ist eine Kopie aus der Datei libdemo.bas&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  $lib &amp;quot;mylib.lib&amp;quot;                              'define the used library&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  $external Test                                'also define the used routines&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Declare Sub Test(byval X As Byte , Y As Byte) 'this is needed so the parameters will be placed correct on the stack&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Dim Z As Byte                                 'reserve some space&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Call Test(1 , Z)                              'call our own sub routine&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  'z will be 2 in the used example&lt;br /&gt;
 End&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie in ihrer Bibliothek Ports verwenden wollen, müssen Sie für deren Adressen symbolische Konstanten anlegen.&lt;br /&gt;
Beispiel:&lt;br /&gt;
  .equ EEDR=$1d&lt;br /&gt;
  In R24, EEDR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
So erkennt der Library-Manager Port-Adressen beim Kompilieren.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Alternativ können Sie dem Mnemonic ein * voranstellen. So wird diese Zeile beim Komilieren der Lib nicht mit übersetzt. Die Umsetzung der Adresse des Registers würde dann erst zur Laufzeit geschehen.   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Umformung&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Ab Version 1.11.7.5 werden einige Mnemonics bei Bedarf anders umgesetzt, also umgeformt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispielsweise funktioniert SBIC nur mit normalen Port-Registern.&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Der Hintergrund ist, daß die Adresse nicht größer als 5 Bit sein darf, da bereits 3 Bits schon für die Pin-Nummer 0-7 benötigt werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
SBIC arbeitet nur mit den unteren 32 IO-Registern der Adressen 0-31.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
SBIC funktioniert auf älteren AVR-Modellen problemlos.&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;Bei der Anwendung des Befehls auf neuere Modelle, bei denen die Portadressen höher sein können, z.B. beim ATMega128 - PortG, versagt dieser Befehl.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Es wird, wo immer die Bits eines IO-Register manipuliert werden sollen, ein Arbeitsregister R[0-31] benötigt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Beispiel&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
 LDS R23,   PORTG&amp;amp;nbsp;; get value of PORTG register&lt;br /&gt;
 SBR R23,   128&amp;amp;nbsp;; set bit 7&lt;br /&gt;
 STS PORTG, R23&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mneminics die vom Compiler umgeformt werden,sind&amp;amp;nbsp;: IN, OUT, SBIC, SBIS, SBI and CBI.&amp;amp;nbsp; &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Der Compiler verwendet dafür immer das Register R23. Achten Sie darauf, daß dieses Register in solch einem Fall nicht zeitgleich für etwas anderes verwendet wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Spezielle Befehle&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
 ADR Label &amp;amp;nbsp;; Erzeugt eine Wortadresse einer Programmarke (Label)&lt;br /&gt;
&lt;br /&gt;
 ADR2 Label&amp;amp;nbsp;; Erzeugt eine Wortadresse einer Programmarke (Label) die mit 2 multipliziert ist um ein Byte zu adressieren.&amp;amp;nbsp; &lt;br /&gt;
              So lässt sich das Z-Register bequem zum gebrauch von(E)LPM-Befehlen laden.&lt;br /&gt;
&lt;br /&gt;
  .align &amp;amp;nbsp;; Diese Direktive richtet den Programmcode an eine Seitengrenze des Programmspeichers (der in 256 Byte großen Blöcken aufgeteilt ist)so aus,&lt;br /&gt;
            daß das niederwertige Byte (LSB) einer Adresse zu 0 wird.&lt;br /&gt;
            Wenn Daten an eine bestimmte Adresse geschrieben werden bei dem das LSB = 0 ist, kann ein Überlauf nur durch Prüfung des MSB festgestellt werden.  &lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Fundamentals/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Mixing_ASM_and_BASIC/de</id>
		<title>Mixing ASM and BASIC/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Mixing_ASM_and_BASIC/de"/>
				<updated>2013-03-05T09:05:58Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* LOCALS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== '''BASIC und Assembler mischen''' ==&lt;br /&gt;
&lt;br /&gt;
  Dieses Kapitel darf nicht als Unterrichtung in Assemblerprogammierung verstanden werden. &lt;br /&gt;
  Wenn Sie ein spezielles Thema zur Verwendung  von Assembler in BASCOM vermissen, teilen Sie uns das per Email mit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BASCOM gestattet das mischen von BASIC mit Assembler-Code, was in den Fällen nützlich sein kann, in denen Sie vollen Einfluss auf den generierten Code nehmen wollen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nahezu alle Assembler-Mnemonics werden vom Compiler direkt unterstütz. Die Ausnahmen sind SWAP, CALL und OUT. Das sind reservierte BASIC-Befehle und haben Vorrang gegenüber Assembler-Mnemonics.&lt;br /&gt;
&lt;br /&gt;
Um diese Mnemonics verwenden zu können wird ihnen ein Ausrufezeichen (!) vorangestellt.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[File:Notice.jpg|notice]]Es wird empfohlen immer das&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;&amp;amp;nbsp;!&amp;amp;nbsp;&amp;lt;/span&amp;gt;oder einen $ASM … $End ASM –Block zu verwenden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    Dim a As Byte At &amp;amp;H60 'A is stored at location &amp;amp;H60&lt;br /&gt;
    Ldi R27 , $00 &amp;amp;nbsp; 'Load R27 with MSB of address&lt;br /&gt;
    Ldi R26 , $60 &amp;amp;nbsp; 'Load R26 with LSB of address&lt;br /&gt;
    Ld R1, X &amp;amp;nbsp; 'load memory location $60 into R1&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;!&amp;lt;/span&amp;gt;SWAP R1 &amp;amp;nbsp; 'swap nibbles&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie Sie sehen, wurde dem Mnemonik SWAP ein Ausrufezeichen&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;!&amp;lt;/span&amp;gt;&amp;amp;nbsp; vorangestellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine andere Option ist die Verwendung eines einschließenden $ASM/ $END ASM - Blocks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;$ASM&amp;lt;/span&amp;gt;&lt;br /&gt;
    LDI R27 , $00 &amp;amp;nbsp; 'Load R27 with MSB of address&lt;br /&gt;
    LDI R26 , $60 &amp;amp;nbsp; 'Load R26 with LSB of address&lt;br /&gt;
    LDI R1  , X &amp;amp;nbsp; &amp;amp;nbsp;'load memory location $60 into R1&lt;br /&gt;
    SWAP R1 &amp;amp;nbsp; 'swap nibbles&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;$END ASM&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Assembler-Hilfsfunktion''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine spezielle Assembler-Hilfsfunktion unterstützt das Laden von Adressen in die Register X oder Z.  &lt;br /&gt;
Das Y-Register sollte nicht verwendet werden da dieses bereits als Zeiger auf den Software-Stack verwendet wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Dim A As Byte &amp;amp;nbsp;'reserve space&lt;br /&gt;
  LOADADR a, X &amp;amp;nbsp;'load address of variable named A into register pair X&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachfolgender Code hat den gleichen Effekt &amp;amp;nbsp;:&lt;br /&gt;
  LDI R26 , $60 'for example&amp;amp;nbsp;!&lt;br /&gt;
  LDI R27, $00 'for example&amp;amp;nbsp;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Von Bascom verwendete Register''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
R4 und R5  werden als Zeiger auf den Stack-Frame oder zur temporären Datensicherung verwendet.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
R6 dient zur Speicherung von Bit-Variablen:&lt;br /&gt;
&lt;br /&gt;
-  bit 0 = Flag für Integer/Word Umwandlungen&lt;br /&gt;
&lt;br /&gt;
-  bit 1 = Temporärer Bit-Speicher beim Tauschen von Bits&lt;br /&gt;
&lt;br /&gt;
-  bit 2 = Fehler-Bit (ERR - Variable)&lt;br /&gt;
&lt;br /&gt;
-  bit 3 = Anzeigen/Nicht Anzeigen - Flag bei dem INPUT-Befehl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
R8 und R9 dienen als Datenzeiger für den READ-Befehl.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Register werden Befehlsabhängig verwendet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Laden von Variablen-Adressen''' ==&lt;br /&gt;
&lt;br /&gt;
Um die Adresse einer Variable zu laden, muß dessen Name in geschwungenen Klammern eingeschlossen sein. &lt;br /&gt;
    Dim B As Bit&lt;br /&gt;
    LDS R16, {B} '{B} wird durch die Adresse der Variablen B ersetzt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um auf ein Bit zu verweisen, muss der Variablen der Ausdruck BIT. vorangestellt sein.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    SBRS R16 , BIT.B &amp;amp;nbsp;'Beachten sie den Punkt!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Da B das erste dimensionierte Bit ist, erhält B die Bitnummer 0.&lt;br /&gt;
Bits werden zu Bytes zusammengefasst gespeichert. Das erste dimensionierte Bit geht in das niederwertigste Bit ein, usw.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Laden von Label-Adressen''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um die Adresse eines Labels zu laden, schreiben sie&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LDI ZL, Low(lbl * 1)&lt;br /&gt;
 LDI ZH , High(lbl * 1)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wobei  ZL   auch R30, R24, R26, R28 oder R30, und ZH  gleichermaßen R31, R25, R27, R29 oder R31 sein kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das sind sogenannte Registerpaare mit denen  Zeiger gebildet werden können.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit einer LPM – Instruktion (LOAD-PROGRAMM_MEMORY) Daten aus dem Programmspeicher laden wollen, muss die Adresse mit 2 multipliziert werden, &lt;br /&gt;
da der Programmspeicher wortorganisiert ist (16Bit).&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 LDI ZL, Low(lbl * 2)&lt;br /&gt;
 LDI ZH , High(lbl * 2)&lt;br /&gt;
 LPM&amp;amp;nbsp;; get data into R0&lt;br /&gt;
 ....&lt;br /&gt;
 Lbl:&lt;br /&gt;
 .....&lt;br /&gt;
&lt;br /&gt;
== '''Einige wichtige Punkte''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um in Assembler zu programmieren müssen Atmel Mnemonics verwendet werden.&lt;br /&gt;
In den Datenblättern der jeweiligen Mikrocontroller die Sie unter www.atmel.com herunterladen können, finden sie den entsprechenden Befehlsvorrat.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Alle Befehle die eine Konstanten verwenden, arbeiten ausschließlich mit den oberen 16 Registern R16 bis R31.&lt;br /&gt;
&lt;br /&gt;
!LDI  R15, 12     funktioniert also nicht.      &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Der Befehl    SBR reg , K  &lt;br /&gt;
&lt;br /&gt;
K kann ein Wert von 0 bis 255 sein. So können mehrere Bits gleichzeitig gesetzt werden.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl SBI port , K   hingegen kann immer nur ein Bit setzen, da K nur 0 bis 7 sein kann.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Gleiche gilt für die Befehle CBR und CBI.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sie können für K ebenfalls symbolische Konstante verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  .equ myval = (10+2)/4&lt;br /&gt;
  ldi R24,myval+2 '5&lt;br /&gt;
  ldi R24,asc(&amp;quot;A&amp;quot;)+1&amp;amp;nbsp;; load with 66&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oder in BASIC mit CONST&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  CONST Myval = (10+2) / 4&lt;br /&gt;
  LDI R24, myval&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Bibliotheken (.lib) erstellen''' ==&lt;br /&gt;
&lt;br /&gt;
Wie erstellt man eine eigene Bibliothek und verwendet diese mit BASIC?&lt;br /&gt;
&lt;br /&gt;
Die Dateien zu diesem Beispiel finden sie im BASCOM-Installationsverzeichnis unter \SAMPLES\libdemo.bas und unter \LIB\mylib.lib. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zu Beginn bestimmen Sie die zu verwendenden Parameter und ihre Datentypen.&lt;br /&gt;
&lt;br /&gt;
Überlegen Sie außerdem ob die Parameter Byref oder Byval übergeben werden sollen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;ByRev&amp;quot; : Die Adresse der übergebenen Variable wird an eine Prozedur übergeben. So wird der Inhalt der Variable direkt bearbeitet. &lt;br /&gt;
&lt;br /&gt;
- &amp;quot;ByVal&amp;quot; : Eine Kopie des Parameterinhaltes wird übergeben. Der Inhalt der übergebenen Quellvariable bleibt unangetastet. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
Eine Subroutine namens &amp;quot;test&amp;quot; erwartet zwei Parameter:&lt;br /&gt;
&lt;br /&gt;
  x die byval übergeben wird (eine Kopie. Kopien werden temporär in den Stack-Fame-Bereich geschrieben) &lt;br /&gt;
  y die byref übergeben wird (die Adresse der Variablen)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen wird die Adresse der Variablen auf den SoftStack gebracht, welcher mit dem Y-Zeiger verwaltet wird. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der erste Parameter x (genauer: die Adresse seiner Kopie) wird dem Soft-Stack auferlegt.&lt;br /&gt;
&lt;br /&gt;
An diese Adresse gelangen sie durch:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 LDD R26 , Y + 0&lt;br /&gt;
 LDD R27 , Y + 1&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Die Adresse steht nun im Registerpaar X (R26,R27) oder im X-Zeiger.  &lt;br /&gt;
&lt;br /&gt;
Da ein zweiter Parameter, oder besser dessen Adresse ebenfalls auf dem Soft-Stack gebracht werden soll,&lt;br /&gt;
ändert sich jedoch die Verschiebegröße auf den Y-Zeiger um an die Adresse von x zu gelangen&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
x wird dadurch also so refenziert:&lt;br /&gt;
 LDD R26 , Y + 2&lt;br /&gt;
 LDD R27 , Y + 3&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein zuletzt übergebenen Paramter (hier y) wird stets so refernziert:&lt;br /&gt;
 LDD r26 , Y + 0&lt;br /&gt;
 LDD r27 , Y + 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schreiben Sie eine gewöhnliche Subprozedur, zusätzlich jedoch mit dem Namen der Prozedur in eckigen Klammern, wie im folgendem &lt;br /&gt;
Beispiel gezeigt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  [test]&lt;br /&gt;
    test:&lt;br /&gt;
     LDD R26,X+2&amp;amp;nbsp;; load address of x&lt;br /&gt;
     LDD R27,Y+3&lt;br /&gt;
     LD  R24,x&amp;amp;nbsp;; get value into r24&lt;br /&gt;
     INC R24&amp;amp;nbsp;; value + 1&lt;br /&gt;
     ST X,R24&amp;amp;nbsp;; put back&lt;br /&gt;
     LDD R26,Y+0&amp;amp;nbsp;; address of y&lt;br /&gt;
     LDD R27,Y+1&lt;br /&gt;
     ST X,R24&amp;amp;nbsp;; store&lt;br /&gt;
    RET&amp;amp;nbsp;; ready&lt;br /&gt;
  [end]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um eine Funktion zu erstellen wird genauso verfahren.&lt;br /&gt;
&lt;br /&gt;
Der Unterschied: eine Funktion gibt ein Ergebnis zurück, womit ein weiterer Parameter entsteht.&lt;br /&gt;
Dieser Rückgabeparameter wird automatisch generiert und trägt den Namen der Funktion.&lt;br /&gt;
Auf diese Weise kann das Ergebnis dem Funktionsnamen zugeordnet werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 Declare Function Test(byval x as byte , y as byte) as byte&lt;br /&gt;
Eine virtuelle Variable namens Test wird erzeugt und auf den Soft-Stack mit Hilfe des Y-Zeigers gebracht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis der Funktion (test) würde an dieser Stelle so referenziert:&lt;br /&gt;
 LDD R26 , Y + 0&lt;br /&gt;
 LDD R27 , Y + 1&lt;br /&gt;
&lt;br /&gt;
Durch den bei der Funktion übergebenen Parameter x jedoch, ändert sich die Verschiebegröße auf y und damit der Zugriff auf test zu &lt;br /&gt;
 Y + 2 und Y + 3,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
und nachdem die  Adresse des dritten Parameters y auf den Soft-Stack geschrieben wird, ändert sich der Verweis ebenfalls wieder:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 LDD R26 , Y + 4&lt;br /&gt;
 LDD R27 , Y + 5&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schlussendlich wird auf die Adresse von x im Soft-Stack so verwiesen,&lt;br /&gt;
  LDD r26 , Y + 2&lt;br /&gt;
  LDD r27 , Y + 3&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und auf y so.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  LDD R26 , Y + 0&lt;br /&gt;
  LDD R27 , Y + 1&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für '''Exit Sub''' oder '''Exit Function''' muss außerdem ein zusätliches Label angegeben werden das mit sub_ beginnt und mit dem Namen der Funktion oder der Routine endet.&lt;br /&gt;
Dem oben aufgeführten Beispiel entsprechend also:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  sub_test:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;LOCALS&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit lokalen Variablen arbeitet, wird es etwas komplizierter.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jede Adresse einer lokalen Variable wird auch auf den Soft-Stack geschrieben.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verwenden Sie nur eine lokale Variable, liegt dessen Adresse an&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  LDD R26, Y + 0&lt;br /&gt;
  LDD R27, Y + 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Die Referenzierung auf alle weiteren Parameter erhöht sich dadurch um 2, sodass sich der Zugiff auf die Adresse des Parameter y ändert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LDD R26 , Y + 0   nach   LDD R26 , Y + 2&lt;br /&gt;
 LDD R27 , Y + 1   nach   LDD R27 , Y + 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn mehr als eine lokale Variable verwendet werden, muss für jede Weitere 2 hinzuaddiert werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Ende muss die Datei mit der Endung .lib abgespeichert werden.&lt;br /&gt;
Mit dem Lib-Mangager kann die neue Bibliothek in das lbx-Format kompiliert werden.&lt;br /&gt;
&lt;br /&gt;
Die jeweilige Declare Sub/Function Aweisung muss, um die Funktion oder Subroutine verwenden zu können, im Programmcode eingefügt werden. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das folgende Programmbeispiel ist eine Kopie aus der Datei libdemo.bas&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  $lib &amp;quot;mylib.lib&amp;quot;                              'define the used library&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  $external Test                                'also define the used routines&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Declare Sub Test(byval X As Byte , Y As Byte) 'this is needed so the parameters will be placed correct on the stack&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Dim Z As Byte                                 'reserve some space&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Call Test(1 , Z)                              'call our own sub routine&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  'z will be 2 in the used example&lt;br /&gt;
 End&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie in ihrer Bibliothek Ports verwenden wollen, müssen Sie für deren Adressen symbolische Konstanten anlegen.&lt;br /&gt;
Beispiel:&lt;br /&gt;
  .equ EEDR=$1d&lt;br /&gt;
  In R24, EEDR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
So erkennt der Library-Manager Port-Adressen beim Kompilieren.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Alternativ können Sie dem Mnemonic ein * voranstellen. So wird diese Zeile beim Komilieren der Lib nicht mit übersetzt. Die Umsetzung der Adresse des Registers würde dann erst zur Laufzeit geschehen.   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Umformung&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Ab Version 1.11.7.5 werden einige Mnemonics bei Bedarf anders umgesetzt, also umgeformt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispielsweise funktioniert SBIC nur mit normalen Port-Registern.&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Der Hintergrund ist, daß die Adresse nicht größer als 5 Bit sein darf da bereits 3 Bits schon für die Pin-Nummer 0-7 benötigt werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
SBIC arbeitet nur mit den unteren 32 IO-Registern der Adressen 0-31.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
SBIC funktioniert auf älteren AVR-Modellen problemlos.&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;Bei der Anwendung des Befehls auf neuere Modelle, bei denen die Portadressen höher sein können, z.B. beim ATMega128 - PortG, versagt dieser Befehl.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Es wird wo immer die Bits eines IO-Register manipuliert werden sollen, ein Arbeitsregister R[0-31] benötigt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Beispiel&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
 LDS R23,   PORTG&amp;amp;nbsp;; get value of PORTG register&lt;br /&gt;
 SBR R23,   128&amp;amp;nbsp;; set bit 7&lt;br /&gt;
 STS PORTG, R23&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mneminics die vom Compiler umgeformt werden,sind&amp;amp;nbsp;: IN, OUT, SBIC, SBIS, SBI and CBI.&amp;amp;nbsp; &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Der Compiler verwendet dafür immer das Register R23. Achten Sie darauf, daß dieses Register in solch einem Fall nicht zeitgleich für etwas anderes verwendet wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Spezielle Befehle&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
 ADR Label &amp;amp;nbsp;; Erzeugt eine Wortadresse einer Programmarke (Label)&lt;br /&gt;
&lt;br /&gt;
 ADR2 Label&amp;amp;nbsp;; Erzeugt eine Wortadresse einer Programmarke (Label) die mit 2 multipliziert ist um ein Byte zu adressieren.&amp;amp;nbsp; &lt;br /&gt;
              So lässt sich das Z-Register bequem zum gebrauch von(E)LPM-Befehlen laden.&lt;br /&gt;
&lt;br /&gt;
  .align &amp;amp;nbsp;; Diese Direktive richtet den Programmcode an eine Seitengrenze des Programmspeichers (der in 256 Byte großen Blöcken aufgeteilt ist)so aus,&lt;br /&gt;
            daß das niederwertige Byte (LSB) einer Adresse zu 0 wird.&lt;br /&gt;
            Wenn Daten an eine bestimmte Adresse geschrieben werden bei dem das LSB = 0 ist, kann ein Überlauf nur durch Prüfung des MSB festgestellt werden.  &lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Fundamentals/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Mixing_ASM_and_BASIC/de</id>
		<title>Mixing ASM and BASIC/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Mixing_ASM_and_BASIC/de"/>
				<updated>2013-03-05T09:02:55Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Bibliotheken (.lib) erstellen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== '''BASIC und Assembler mischen''' ==&lt;br /&gt;
&lt;br /&gt;
  Dieses Kapitel darf nicht als Unterrichtung in Assemblerprogammierung verstanden werden. &lt;br /&gt;
  Wenn Sie ein spezielles Thema zur Verwendung  von Assembler in BASCOM vermissen, teilen Sie uns das per Email mit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BASCOM gestattet das mischen von BASIC mit Assembler-Code, was in den Fällen nützlich sein kann, in denen Sie vollen Einfluss auf den generierten Code nehmen wollen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nahezu alle Assembler-Mnemonics werden vom Compiler direkt unterstütz. Die Ausnahmen sind SWAP, CALL und OUT. Das sind reservierte BASIC-Befehle und haben Vorrang gegenüber Assembler-Mnemonics.&lt;br /&gt;
&lt;br /&gt;
Um diese Mnemonics verwenden zu können wird ihnen ein Ausrufezeichen (!) vorangestellt.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[File:Notice.jpg|notice]]Es wird empfohlen immer das&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;&amp;amp;nbsp;!&amp;amp;nbsp;&amp;lt;/span&amp;gt;oder einen $ASM … $End ASM –Block zu verwenden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    Dim a As Byte At &amp;amp;H60 'A is stored at location &amp;amp;H60&lt;br /&gt;
    Ldi R27 , $00 &amp;amp;nbsp; 'Load R27 with MSB of address&lt;br /&gt;
    Ldi R26 , $60 &amp;amp;nbsp; 'Load R26 with LSB of address&lt;br /&gt;
    Ld R1, X &amp;amp;nbsp; 'load memory location $60 into R1&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;!&amp;lt;/span&amp;gt;SWAP R1 &amp;amp;nbsp; 'swap nibbles&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie Sie sehen, wurde dem Mnemonik SWAP ein Ausrufezeichen&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;!&amp;lt;/span&amp;gt;&amp;amp;nbsp; vorangestellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine andere Option ist die Verwendung eines einschließenden $ASM/ $END ASM - Blocks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;$ASM&amp;lt;/span&amp;gt;&lt;br /&gt;
    LDI R27 , $00 &amp;amp;nbsp; 'Load R27 with MSB of address&lt;br /&gt;
    LDI R26 , $60 &amp;amp;nbsp; 'Load R26 with LSB of address&lt;br /&gt;
    LDI R1  , X &amp;amp;nbsp; &amp;amp;nbsp;'load memory location $60 into R1&lt;br /&gt;
    SWAP R1 &amp;amp;nbsp; 'swap nibbles&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;$END ASM&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Assembler-Hilfsfunktion''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine spezielle Assembler-Hilfsfunktion unterstützt das Laden von Adressen in die Register X oder Z.  &lt;br /&gt;
Das Y-Register sollte nicht verwendet werden da dieses bereits als Zeiger auf den Software-Stack verwendet wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Dim A As Byte &amp;amp;nbsp;'reserve space&lt;br /&gt;
  LOADADR a, X &amp;amp;nbsp;'load address of variable named A into register pair X&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachfolgender Code hat den gleichen Effekt &amp;amp;nbsp;:&lt;br /&gt;
  LDI R26 , $60 'for example&amp;amp;nbsp;!&lt;br /&gt;
  LDI R27, $00 'for example&amp;amp;nbsp;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Von Bascom verwendete Register''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
R4 und R5  werden als Zeiger auf den Stack-Frame oder zur temporären Datensicherung verwendet.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
R6 dient zur Speicherung von Bit-Variablen:&lt;br /&gt;
&lt;br /&gt;
-  bit 0 = Flag für Integer/Word Umwandlungen&lt;br /&gt;
&lt;br /&gt;
-  bit 1 = Temporärer Bit-Speicher beim Tauschen von Bits&lt;br /&gt;
&lt;br /&gt;
-  bit 2 = Fehler-Bit (ERR - Variable)&lt;br /&gt;
&lt;br /&gt;
-  bit 3 = Anzeigen/Nicht Anzeigen - Flag bei dem INPUT-Befehl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
R8 und R9 dienen als Datenzeiger für den READ-Befehl.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Register werden Befehlsabhängig verwendet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Laden von Variablen-Adressen''' ==&lt;br /&gt;
&lt;br /&gt;
Um die Adresse einer Variable zu laden, muß dessen Name in geschwungenen Klammern eingeschlossen sein. &lt;br /&gt;
    Dim B As Bit&lt;br /&gt;
    LDS R16, {B} '{B} wird durch die Adresse der Variablen B ersetzt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um auf ein Bit zu verweisen, muss der Variablen der Ausdruck BIT. vorangestellt sein.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    SBRS R16 , BIT.B &amp;amp;nbsp;'Beachten sie den Punkt!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Da B das erste dimensionierte Bit ist, erhält B die Bitnummer 0.&lt;br /&gt;
Bits werden zu Bytes zusammengefasst gespeichert. Das erste dimensionierte Bit geht in das niederwertigste Bit ein, usw.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Laden von Label-Adressen''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um die Adresse eines Labels zu laden, schreiben sie&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LDI ZL, Low(lbl * 1)&lt;br /&gt;
 LDI ZH , High(lbl * 1)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wobei  ZL   auch R30, R24, R26, R28 oder R30, und ZH  gleichermaßen R31, R25, R27, R29 oder R31 sein kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das sind sogenannte Registerpaare mit denen  Zeiger gebildet werden können.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit einer LPM – Instruktion (LOAD-PROGRAMM_MEMORY) Daten aus dem Programmspeicher laden wollen, muss die Adresse mit 2 multipliziert werden, &lt;br /&gt;
da der Programmspeicher wortorganisiert ist (16Bit).&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 LDI ZL, Low(lbl * 2)&lt;br /&gt;
 LDI ZH , High(lbl * 2)&lt;br /&gt;
 LPM&amp;amp;nbsp;; get data into R0&lt;br /&gt;
 ....&lt;br /&gt;
 Lbl:&lt;br /&gt;
 .....&lt;br /&gt;
&lt;br /&gt;
== '''Einige wichtige Punkte''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um in Assembler zu programmieren müssen Atmel Mnemonics verwendet werden.&lt;br /&gt;
In den Datenblättern der jeweiligen Mikrocontroller die Sie unter www.atmel.com herunterladen können, finden sie den entsprechenden Befehlsvorrat.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Alle Befehle die eine Konstanten verwenden, arbeiten ausschließlich mit den oberen 16 Registern R16 bis R31.&lt;br /&gt;
&lt;br /&gt;
!LDI  R15, 12     funktioniert also nicht.      &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Der Befehl    SBR reg , K  &lt;br /&gt;
&lt;br /&gt;
K kann ein Wert von 0 bis 255 sein. So können mehrere Bits gleichzeitig gesetzt werden.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl SBI port , K   hingegen kann immer nur ein Bit setzen, da K nur 0 bis 7 sein kann.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Gleiche gilt für die Befehle CBR und CBI.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sie können für K ebenfalls symbolische Konstante verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  .equ myval = (10+2)/4&lt;br /&gt;
  ldi R24,myval+2 '5&lt;br /&gt;
  ldi R24,asc(&amp;quot;A&amp;quot;)+1&amp;amp;nbsp;; load with 66&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oder in BASIC mit CONST&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  CONST Myval = (10+2) / 4&lt;br /&gt;
  LDI R24, myval&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Bibliotheken (.lib) erstellen''' ==&lt;br /&gt;
&lt;br /&gt;
Wie erstellt man eine eigene Bibliothek und verwendet diese mit BASIC?&lt;br /&gt;
&lt;br /&gt;
Die Dateien zu diesem Beispiel finden sie im BASCOM-Installationsverzeichnis unter \SAMPLES\libdemo.bas und unter \LIB\mylib.lib. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zu Beginn bestimmen Sie die zu verwendenden Parameter und ihre Datentypen.&lt;br /&gt;
&lt;br /&gt;
Überlegen Sie außerdem ob die Parameter Byref oder Byval übergeben werden sollen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;ByRev&amp;quot; : Die Adresse der übergebenen Variable wird an eine Prozedur übergeben. So wird der Inhalt der Variable direkt bearbeitet. &lt;br /&gt;
&lt;br /&gt;
- &amp;quot;ByVal&amp;quot; : Eine Kopie des Parameterinhaltes wird übergeben. Der Inhalt der übergebenen Quellvariable bleibt unangetastet. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
Eine Subroutine namens &amp;quot;test&amp;quot; erwartet zwei Parameter:&lt;br /&gt;
&lt;br /&gt;
  x die byval übergeben wird (eine Kopie. Kopien werden temporär in den Stack-Fame-Bereich geschrieben) &lt;br /&gt;
  y die byref übergeben wird (die Adresse der Variablen)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen wird die Adresse der Variablen auf den SoftStack gebracht, welcher mit dem Y-Zeiger verwaltet wird. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der erste Parameter x (genauer: die Adresse seiner Kopie) wird dem Soft-Stack auferlegt.&lt;br /&gt;
&lt;br /&gt;
An diese Adresse gelangen sie durch:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 LDD R26 , Y + 0&lt;br /&gt;
 LDD R27 , Y + 1&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Die Adresse steht nun im Registerpaar X (R26,R27) oder im X-Zeiger.  &lt;br /&gt;
&lt;br /&gt;
Da ein zweiter Parameter, oder besser dessen Adresse ebenfalls auf dem Soft-Stack gebracht werden soll,&lt;br /&gt;
ändert sich jedoch die Verschiebegröße auf den Y-Zeiger um an die Adresse von x zu gelangen&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
x wird dadurch also so refenziert:&lt;br /&gt;
 LDD R26 , Y + 2&lt;br /&gt;
 LDD R27 , Y + 3&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein zuletzt übergebenen Paramter (hier y) wird stets so refernziert:&lt;br /&gt;
 LDD r26 , Y + 0&lt;br /&gt;
 LDD r27 , Y + 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schreiben Sie eine gewöhnliche Subprozedur, zusätzlich jedoch mit dem Namen der Prozedur in eckigen Klammern, wie im folgendem &lt;br /&gt;
Beispiel gezeigt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  [test]&lt;br /&gt;
    test:&lt;br /&gt;
     LDD R26,X+2&amp;amp;nbsp;; load address of x&lt;br /&gt;
     LDD R27,Y+3&lt;br /&gt;
     LD  R24,x&amp;amp;nbsp;; get value into r24&lt;br /&gt;
     INC R24&amp;amp;nbsp;; value + 1&lt;br /&gt;
     ST X,R24&amp;amp;nbsp;; put back&lt;br /&gt;
     LDD R26,Y+0&amp;amp;nbsp;; address of y&lt;br /&gt;
     LDD R27,Y+1&lt;br /&gt;
     ST X,R24&amp;amp;nbsp;; store&lt;br /&gt;
    RET&amp;amp;nbsp;; ready&lt;br /&gt;
  [end]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um eine Funktion zu erstellen wird genauso verfahren.&lt;br /&gt;
&lt;br /&gt;
Der Unterschied: eine Funktion gibt ein Ergebnis zurück, womit ein weiterer Parameter entsteht.&lt;br /&gt;
Dieser Rückgabeparameter wird automatisch generiert und trägt den Namen der Funktion.&lt;br /&gt;
Auf diese Weise kann das Ergebnis dem Funktionsnamen zugeordnet werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 Declare Function Test(byval x as byte , y as byte) as byte&lt;br /&gt;
Eine virtuelle Variable namens Test wird erzeugt und auf den Soft-Stack mit Hilfe des Y-Zeigers gebracht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis der Funktion (test) würde an dieser Stelle so referenziert:&lt;br /&gt;
 LDD R26 , Y + 0&lt;br /&gt;
 LDD R27 , Y + 1&lt;br /&gt;
&lt;br /&gt;
Durch den bei der Funktion übergebenen Parameter x jedoch, ändert sich die Verschiebegröße auf y und damit der Zugriff auf test zu &lt;br /&gt;
 Y + 2 und Y + 3,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
und nachdem die  Adresse des dritten Parameters y auf den Soft-Stack geschrieben wird, ändert sich der Verweis ebenfalls wieder:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 LDD R26 , Y + 4&lt;br /&gt;
 LDD R27 , Y + 5&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schlussendlich wird auf die Adresse von x im Soft-Stack so verwiesen,&lt;br /&gt;
  LDD r26 , Y + 2&lt;br /&gt;
  LDD r27 , Y + 3&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und auf y so.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  LDD R26 , Y + 0&lt;br /&gt;
  LDD R27 , Y + 1&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für '''Exit Sub''' oder '''Exit Function''' muss außerdem ein zusätliches Label angegeben werden das mit sub_ beginnt und mit dem Namen der Funktion oder der Routine endet.&lt;br /&gt;
Dem oben aufgeführten Beispiel entsprechend also:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  sub_test:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;LOCALS&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit lokalen Variablen arbeitet, wird es etwas komplizierter.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jede Adresse einer lokalen Variable wird auch auf den Soft-Stack geschrieben.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verwenden Sie nur eine lokale Variable,liegt dessen Adresse an&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  LDD R26, y + 0&lt;br /&gt;
  LDD R27, y + 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Die Referenzierung auf alle weiteren Parameter erhöht sich dadurch um 2, sodass sich der Zugiff auf die Adresse des Parameter y ändert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LDD R26 , Y + 0 nach LDD R26 , Y + 2&lt;br /&gt;
 LDD R27 , Y + 1 nach LDD R27 , y + 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn mehr als eine lokale Variable verwendet werden, muss für jede Weitere 2 hinzuaddiert werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Ende muss die Datei mit der Endung .lib abgespeichert werden.&lt;br /&gt;
Mit dem Lib-Mangager kann die neue Bibliothek in das lbx-Format kompiliert werden.&lt;br /&gt;
&lt;br /&gt;
Die jeweilige Declare Sub/Function Aweisung muss um die Funktion oder Subroutine verwenden zu können, im Programmcode eingefügt werden. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das folgende Programmbeispiel ist eine Kopie aus der Datei libdemo.bas&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  $lib &amp;quot;mylib.lib&amp;quot;                              'define the used library&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  $external Test                                'also define the used routines&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Declare Sub Test(byval X As Byte , Y As Byte) 'this is needed so the parameters will be placed correct on the stack&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Dim Z As Byte                                 'reserve some space&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Call Test(1 , Z)                              'call our own sub routine&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  'z will be 2 in the used example&lt;br /&gt;
 End&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie in ihrer Bibliothek Ports verwenden wollen, müssen für deren Adressen symbolische Konstanten anlegen.&lt;br /&gt;
Beispiel:&lt;br /&gt;
  .equ EEDR=$1d&lt;br /&gt;
  In R24, EEDR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
So erkennt der Library-Manager Port-Adressen beim Kompilieren.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Alternativ können Sie dem Mnemonic ein * voranstellen. So wird diese Zeile beim Komilieren der Lib nicht mit Übersetzt. Die Umsetzung der Adresse des Registers würde dann erst zur Laufzeit geschehen.   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Umformung&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Ab Version 1.11.7.5 werden einige Mnemonics bei Bedarf anders umgesetzt, also umgeformt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispielsweise funktioniert SBIC nur mit normalen Port-Registern.&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Der Hintergrund ist, daß die Adresse nicht größer als 5 Bit sein darf da bereits 3 Bits schon für die Pin-Nummer 0-7 benötigt werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
SBIC arbeitet nur mit den unteren 32 IO-Registern der Adressen 0-31.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
SBIC funktioniert auf älteren AVR-Modellen problemlos.&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;Bei der Anwendung des Befehls auf neuere Modelle, bei denen die Portadressen höher sein können, z.B. beim ATMega128 - PortG, versagt dieser Befehl.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Es wird wo immer die Bits eines IO-Register manipuliert werden sollen, ein Arbeitsregister R[0-31] benötigt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Beispiel&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
 LDS R23,   PORTG&amp;amp;nbsp;; get value of PORTG register&lt;br /&gt;
 SBR R23,   128&amp;amp;nbsp;; set bit 7&lt;br /&gt;
 STS PORTG, R23&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mneminics die vom Compiler umgeformt werden,sind&amp;amp;nbsp;: IN, OUT, SBIC, SBIS, SBI and CBI.&amp;amp;nbsp; &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Der Compiler verwendet dafür immer das Register R23. Achten Sie darauf, daß dieses Register in solch einem Fall nicht zeitgleich für etwas anderes verwendet wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Spezielle Befehle&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
 ADR Label &amp;amp;nbsp;; Erzeugt eine Wortadresse einer Programmarke (Label)&lt;br /&gt;
&lt;br /&gt;
 ADR2 Label&amp;amp;nbsp;; Erzeugt eine Wortadresse einer Programmarke (Label) die mit 2 multipliziert ist um ein Byte zu adressieren.&amp;amp;nbsp; &lt;br /&gt;
              So lässt sich das Z-Register bequem zum gebrauch von(E)LPM-Befehlen laden.&lt;br /&gt;
&lt;br /&gt;
  .align &amp;amp;nbsp;; Diese Direktive richtet den Programmcode an eine Seitengrenze des Programmspeichers (der in 256 Byte großen Blöcken aufgeteilt ist)so aus,&lt;br /&gt;
            daß das niederwertige Byte (LSB) einer Adresse zu 0 wird.&lt;br /&gt;
            Wenn Daten an eine bestimmte Adresse geschrieben werden bei dem das LSB = 0 ist, kann ein Überlauf nur durch Prüfung des MSB festgestellt werden.  &lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Fundamentals/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Mixing_ASM_and_BASIC/de</id>
		<title>Mixing ASM and BASIC/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Mixing_ASM_and_BASIC/de"/>
				<updated>2013-03-05T08:59:04Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Einige wichtige Punkte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== '''BASIC und Assembler mischen''' ==&lt;br /&gt;
&lt;br /&gt;
  Dieses Kapitel darf nicht als Unterrichtung in Assemblerprogammierung verstanden werden. &lt;br /&gt;
  Wenn Sie ein spezielles Thema zur Verwendung  von Assembler in BASCOM vermissen, teilen Sie uns das per Email mit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BASCOM gestattet das mischen von BASIC mit Assembler-Code, was in den Fällen nützlich sein kann, in denen Sie vollen Einfluss auf den generierten Code nehmen wollen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nahezu alle Assembler-Mnemonics werden vom Compiler direkt unterstütz. Die Ausnahmen sind SWAP, CALL und OUT. Das sind reservierte BASIC-Befehle und haben Vorrang gegenüber Assembler-Mnemonics.&lt;br /&gt;
&lt;br /&gt;
Um diese Mnemonics verwenden zu können wird ihnen ein Ausrufezeichen (!) vorangestellt.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[File:Notice.jpg|notice]]Es wird empfohlen immer das&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;&amp;amp;nbsp;!&amp;amp;nbsp;&amp;lt;/span&amp;gt;oder einen $ASM … $End ASM –Block zu verwenden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    Dim a As Byte At &amp;amp;H60 'A is stored at location &amp;amp;H60&lt;br /&gt;
    Ldi R27 , $00 &amp;amp;nbsp; 'Load R27 with MSB of address&lt;br /&gt;
    Ldi R26 , $60 &amp;amp;nbsp; 'Load R26 with LSB of address&lt;br /&gt;
    Ld R1, X &amp;amp;nbsp; 'load memory location $60 into R1&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;!&amp;lt;/span&amp;gt;SWAP R1 &amp;amp;nbsp; 'swap nibbles&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie Sie sehen, wurde dem Mnemonik SWAP ein Ausrufezeichen&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;!&amp;lt;/span&amp;gt;&amp;amp;nbsp; vorangestellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine andere Option ist die Verwendung eines einschließenden $ASM/ $END ASM - Blocks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;$ASM&amp;lt;/span&amp;gt;&lt;br /&gt;
    LDI R27 , $00 &amp;amp;nbsp; 'Load R27 with MSB of address&lt;br /&gt;
    LDI R26 , $60 &amp;amp;nbsp; 'Load R26 with LSB of address&lt;br /&gt;
    LDI R1  , X &amp;amp;nbsp; &amp;amp;nbsp;'load memory location $60 into R1&lt;br /&gt;
    SWAP R1 &amp;amp;nbsp; 'swap nibbles&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;$END ASM&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Assembler-Hilfsfunktion''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine spezielle Assembler-Hilfsfunktion unterstützt das Laden von Adressen in die Register X oder Z.  &lt;br /&gt;
Das Y-Register sollte nicht verwendet werden da dieses bereits als Zeiger auf den Software-Stack verwendet wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Dim A As Byte &amp;amp;nbsp;'reserve space&lt;br /&gt;
  LOADADR a, X &amp;amp;nbsp;'load address of variable named A into register pair X&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachfolgender Code hat den gleichen Effekt &amp;amp;nbsp;:&lt;br /&gt;
  LDI R26 , $60 'for example&amp;amp;nbsp;!&lt;br /&gt;
  LDI R27, $00 'for example&amp;amp;nbsp;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Von Bascom verwendete Register''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
R4 und R5  werden als Zeiger auf den Stack-Frame oder zur temporären Datensicherung verwendet.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
R6 dient zur Speicherung von Bit-Variablen:&lt;br /&gt;
&lt;br /&gt;
-  bit 0 = Flag für Integer/Word Umwandlungen&lt;br /&gt;
&lt;br /&gt;
-  bit 1 = Temporärer Bit-Speicher beim Tauschen von Bits&lt;br /&gt;
&lt;br /&gt;
-  bit 2 = Fehler-Bit (ERR - Variable)&lt;br /&gt;
&lt;br /&gt;
-  bit 3 = Anzeigen/Nicht Anzeigen - Flag bei dem INPUT-Befehl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
R8 und R9 dienen als Datenzeiger für den READ-Befehl.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Register werden Befehlsabhängig verwendet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Laden von Variablen-Adressen''' ==&lt;br /&gt;
&lt;br /&gt;
Um die Adresse einer Variable zu laden, muß dessen Name in geschwungenen Klammern eingeschlossen sein. &lt;br /&gt;
    Dim B As Bit&lt;br /&gt;
    LDS R16, {B} '{B} wird durch die Adresse der Variablen B ersetzt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um auf ein Bit zu verweisen, muss der Variablen der Ausdruck BIT. vorangestellt sein.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    SBRS R16 , BIT.B &amp;amp;nbsp;'Beachten sie den Punkt!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Da B das erste dimensionierte Bit ist, erhält B die Bitnummer 0.&lt;br /&gt;
Bits werden zu Bytes zusammengefasst gespeichert. Das erste dimensionierte Bit geht in das niederwertigste Bit ein, usw.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Laden von Label-Adressen''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um die Adresse eines Labels zu laden, schreiben sie&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LDI ZL, Low(lbl * 1)&lt;br /&gt;
 LDI ZH , High(lbl * 1)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wobei  ZL   auch R30, R24, R26, R28 oder R30, und ZH  gleichermaßen R31, R25, R27, R29 oder R31 sein kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das sind sogenannte Registerpaare mit denen  Zeiger gebildet werden können.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit einer LPM – Instruktion (LOAD-PROGRAMM_MEMORY) Daten aus dem Programmspeicher laden wollen, muss die Adresse mit 2 multipliziert werden, &lt;br /&gt;
da der Programmspeicher wortorganisiert ist (16Bit).&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 LDI ZL, Low(lbl * 2)&lt;br /&gt;
 LDI ZH , High(lbl * 2)&lt;br /&gt;
 LPM&amp;amp;nbsp;; get data into R0&lt;br /&gt;
 ....&lt;br /&gt;
 Lbl:&lt;br /&gt;
 .....&lt;br /&gt;
&lt;br /&gt;
== '''Einige wichtige Punkte''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um in Assembler zu programmieren müssen Atmel Mnemonics verwendet werden.&lt;br /&gt;
In den Datenblättern der jeweiligen Mikrocontroller die Sie unter www.atmel.com herunterladen können, finden sie den entsprechenden Befehlsvorrat.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Alle Befehle die eine Konstanten verwenden, arbeiten ausschließlich mit den oberen 16 Registern R16 bis R31.&lt;br /&gt;
&lt;br /&gt;
!LDI  R15, 12     funktioniert also nicht.      &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Der Befehl    SBR reg , K  &lt;br /&gt;
&lt;br /&gt;
K kann ein Wert von 0 bis 255 sein. So können mehrere Bits gleichzeitig gesetzt werden.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl SBI port , K   hingegen kann immer nur ein Bit setzen, da K nur 0 bis 7 sein kann.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Gleiche gilt für die Befehle CBR und CBI.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sie können für K ebenfalls symbolische Konstante verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  .equ myval = (10+2)/4&lt;br /&gt;
  ldi R24,myval+2 '5&lt;br /&gt;
  ldi R24,asc(&amp;quot;A&amp;quot;)+1&amp;amp;nbsp;; load with 66&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oder in BASIC mit CONST&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  CONST Myval = (10+2) / 4&lt;br /&gt;
  LDI R24, myval&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Bibliotheken (.lib) erstellen''' ==&lt;br /&gt;
&lt;br /&gt;
Wie erstellt man eine eigene Bibliothek und verwendet diese mit BASIC?&lt;br /&gt;
&lt;br /&gt;
Die Dateien zu diesem Beispiel finden sie im BASCOM-Installationsverzeichnis unter \SAMPLES\libdemo.bas und unter \LIB\mylib.lib. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zu Beginn bestimmen Sie die zu verwendenden Parameter und ihre Datentypen.&lt;br /&gt;
&lt;br /&gt;
Überlegen Sie außerdem ob die Parameter Byref oder Byval übergeben werden sollen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;ByRev&amp;quot; : Die Adresse der übergebenen Variable wird an eine Prozedur übergeben. So wird der Inhalt der Variable direkt bearbeitet. &lt;br /&gt;
&lt;br /&gt;
- &amp;quot;ByVal&amp;quot; : Eine Kopie des Parameterinhaltes wird übergeben. Der Inhalt der übergebenen Quellvariable bleibt unangetastet. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
Eine Subroutine namens &amp;quot;test&amp;quot; erwartet zwei Parameter:&lt;br /&gt;
&lt;br /&gt;
  x die byval übergeben wird (eine Kopie. Kopien werden temporär in den Stack-Fame-Bereich geschrieben) &lt;br /&gt;
  y die byref übergeben wird (die Adresse der Variablen)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen wird die Adresse der Variablen auf den SoftStack gebracht, welcher mit dem Y-Zeiger verwaltet wird. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der erste Parameter x (genauer: die Adresse seiner Kopie) wird dem Soft-Stack auferlegt.&lt;br /&gt;
&lt;br /&gt;
An diese Adresse gelangen sie durch:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 LDD R26 , y + 0&lt;br /&gt;
 LDD R27 , y + 1&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Die Adresse steht nun im Registerpaar X (R26,R27) oder im X-Zeiger.  &lt;br /&gt;
&lt;br /&gt;
Da ein zweiter Parameter, oder besser dessen Adresse ebenfalls auf dem Soft-Stack gebracht werden soll,&lt;br /&gt;
ändert sich jedoch die Verschiebegröße auf den Y-Zeiger um an die Adresse von x zu gelangen&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
x wird dadurch also so refenziert:&lt;br /&gt;
 LDD R26 , y + 2&lt;br /&gt;
 LDD R27 , y + 3&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein zuletzt übergebenen Paramter (hier y) wird stets so refernziert:&lt;br /&gt;
 LDD r26 , y + 0&lt;br /&gt;
 LDD r27 , y + 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schreiben Sie eine gewöhnliche Subprozedur, zusätzlich jedoch mit dem Namen der Prozedur in eckigen Klammern, wie im folgendem &lt;br /&gt;
Beispiel gezeigt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  [test]&lt;br /&gt;
    test:&lt;br /&gt;
     LDD R26,X+2&amp;amp;nbsp;; load address of x&lt;br /&gt;
     LDD R27,Y+3&lt;br /&gt;
     LD  R24,x&amp;amp;nbsp;; get value into r24&lt;br /&gt;
     INC R24&amp;amp;nbsp;; value + 1&lt;br /&gt;
     ST X,R24&amp;amp;nbsp;; put back&lt;br /&gt;
     LDD R26,Y+0&amp;amp;nbsp;; address of y&lt;br /&gt;
     LDD R27,Y+1&lt;br /&gt;
     ST X,R24&amp;amp;nbsp;; store&lt;br /&gt;
    RET&amp;amp;nbsp;; ready&lt;br /&gt;
  [end]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um eine Funktion zu erstellen wird genauso verfahren&lt;br /&gt;
&lt;br /&gt;
Der Unterschied: eine Funktion gibt ein Ergebnis zurück, womit ein weiterer Parameter entsteht.&lt;br /&gt;
Dieser Rückgabeparameter wird automatisch generiert und trägt den Namen der Funktion.&lt;br /&gt;
Auf diese Weise kann das Ergebnis dem Funktionsnamen zugeordnet werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 Declare Function Test(byval x as byte , y as byte) as byte&lt;br /&gt;
Eine Virtuelle Variable namens Test wird erzeugt und auf den Soft-Stack mit Hilfe des Y-Zeigers gebracht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis der Funktion (test) würde an dieser Stelle so referenziert:&lt;br /&gt;
 LDD R26 , y + 0&lt;br /&gt;
 LDD R27 , y + 1&lt;br /&gt;
&lt;br /&gt;
Durch den bei der Funktion übergebenen Parameter x jedoch, ändert sich die Verschiebegröße auf Y und damit der Zugriff auf test zu &lt;br /&gt;
 y + 2 und y + 3,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
und nachdem die  Adresse des dritten Parameters y auf den Soft-Stack geschrieben wird, ändert sich der Verweis ebenfalls wieder:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 LDD R26 , y + 4&lt;br /&gt;
 LDD R27 , y + 5&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schlussendlich wird auf die Adresse von x im Soft-Stack so verwiesen,&lt;br /&gt;
  LDD r26 , y + 2&lt;br /&gt;
  LDD r27 , y + 3&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und auf y so.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  LDD R26 , y + 0&lt;br /&gt;
  LDD R27 , y + 1&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für '''Exit Sub''' oder '''Exit Function''' muss außerdem ein zusätliches Label angegeben werden das mit sub_ beginnt und mit dem Namen der Funktion oder der Routine endet.&lt;br /&gt;
Dem oben aufgeführten Beispiel entsprechend also:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  sub_test:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;LOCALS&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit lokalen Variablen arbeitet, wird es etwas komplizierter.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jede Adresse einer lokalen Variable wird auch auf den Soft-Stack geschrieben.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verwenden Sie nur eine lokale Variable,liegt dessen Adresse an&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  LDD R26, y + 0&lt;br /&gt;
  LDD R27, y + 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Die Referenzierung auf alle weiteren Parameter erhöht sich dadurch um 2, sodass sich der Zugiff auf die Adresse des Parameter y ändert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LDD R26 , Y + 0 nach LDD R26 , Y + 2&lt;br /&gt;
 LDD R27 , Y + 1 nach LDD R27 , y + 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn mehr als eine lokale Variable verwendet werden, muss für jede Weitere 2 hinzuaddiert werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Ende muss die Datei mit der Endung .lib abgespeichert werden.&lt;br /&gt;
Mit dem Lib-Mangager kann die neue Bibliothek in das lbx-Format kompiliert werden.&lt;br /&gt;
&lt;br /&gt;
Die jeweilige Declare Sub/Function Aweisung muss um die Funktion oder Subroutine verwenden zu können, im Programmcode eingefügt werden. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das folgende Programmbeispiel ist eine Kopie aus der Datei libdemo.bas&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  $lib &amp;quot;mylib.lib&amp;quot;                              'define the used library&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  $external Test                                'also define the used routines&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Declare Sub Test(byval X As Byte , Y As Byte) 'this is needed so the parameters will be placed correct on the stack&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Dim Z As Byte                                 'reserve some space&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Call Test(1 , Z)                              'call our own sub routine&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  'z will be 2 in the used example&lt;br /&gt;
 End&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie in ihrer Bibliothek Ports verwenden wollen, müssen für deren Adressen symbolische Konstanten anlegen.&lt;br /&gt;
Beispiel:&lt;br /&gt;
  .equ EEDR=$1d&lt;br /&gt;
  In R24, EEDR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
So erkennt der Library-Manager Port-Adressen beim Kompilieren.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Alternativ können Sie dem Mnemonic ein * voranstellen. So wird diese Zeile beim Komilieren der Lib nicht mit Übersetzt. Die Umsetzung der Adresse des Registers würde dann erst zur Laufzeit geschehen.   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Umformung&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Ab Version 1.11.7.5 werden einige Mnemonics bei Bedarf anders umgesetzt, also umgeformt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispielsweise funktioniert SBIC nur mit normalen Port-Registern.&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Der Hintergrund ist, daß die Adresse nicht größer als 5 Bit sein darf da bereits 3 Bits schon für die Pin-Nummer 0-7 benötigt werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
SBIC arbeitet nur mit den unteren 32 IO-Registern der Adressen 0-31.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
SBIC funktioniert auf älteren AVR-Modellen problemlos.&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;Bei der Anwendung des Befehls auf neuere Modelle, bei denen die Portadressen höher sein können, z.B. beim ATMega128 - PortG, versagt dieser Befehl.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Es wird wo immer die Bits eines IO-Register manipuliert werden sollen, ein Arbeitsregister R[0-31] benötigt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Beispiel&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
 LDS R23,   PORTG&amp;amp;nbsp;; get value of PORTG register&lt;br /&gt;
 SBR R23,   128&amp;amp;nbsp;; set bit 7&lt;br /&gt;
 STS PORTG, R23&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mneminics die vom Compiler umgeformt werden,sind&amp;amp;nbsp;: IN, OUT, SBIC, SBIS, SBI and CBI.&amp;amp;nbsp; &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Der Compiler verwendet dafür immer das Register R23. Achten Sie darauf, daß dieses Register in solch einem Fall nicht zeitgleich für etwas anderes verwendet wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Spezielle Befehle&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
 ADR Label &amp;amp;nbsp;; Erzeugt eine Wortadresse einer Programmarke (Label)&lt;br /&gt;
&lt;br /&gt;
 ADR2 Label&amp;amp;nbsp;; Erzeugt eine Wortadresse einer Programmarke (Label) die mit 2 multipliziert ist um ein Byte zu adressieren.&amp;amp;nbsp; &lt;br /&gt;
              So lässt sich das Z-Register bequem zum gebrauch von(E)LPM-Befehlen laden.&lt;br /&gt;
&lt;br /&gt;
  .align &amp;amp;nbsp;; Diese Direktive richtet den Programmcode an eine Seitengrenze des Programmspeichers (der in 256 Byte großen Blöcken aufgeteilt ist)so aus,&lt;br /&gt;
            daß das niederwertige Byte (LSB) einer Adresse zu 0 wird.&lt;br /&gt;
            Wenn Daten an eine bestimmte Adresse geschrieben werden bei dem das LSB = 0 ist, kann ein Überlauf nur durch Prüfung des MSB festgestellt werden.  &lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Fundamentals/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Mixing_ASM_and_BASIC/de</id>
		<title>Mixing ASM and BASIC/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Mixing_ASM_and_BASIC/de"/>
				<updated>2013-03-05T08:55:43Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* BASIC und Assembler mischen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== '''BASIC und Assembler mischen''' ==&lt;br /&gt;
&lt;br /&gt;
  Dieses Kapitel darf nicht als Unterrichtung in Assemblerprogammierung verstanden werden. &lt;br /&gt;
  Wenn Sie ein spezielles Thema zur Verwendung  von Assembler in BASCOM vermissen, teilen Sie uns das per Email mit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BASCOM gestattet das mischen von BASIC mit Assembler-Code, was in den Fällen nützlich sein kann, in denen Sie vollen Einfluss auf den generierten Code nehmen wollen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nahezu alle Assembler-Mnemonics werden vom Compiler direkt unterstütz. Die Ausnahmen sind SWAP, CALL und OUT. Das sind reservierte BASIC-Befehle und haben Vorrang gegenüber Assembler-Mnemonics.&lt;br /&gt;
&lt;br /&gt;
Um diese Mnemonics verwenden zu können wird ihnen ein Ausrufezeichen (!) vorangestellt.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[File:Notice.jpg|notice]]Es wird empfohlen immer das&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;&amp;amp;nbsp;!&amp;amp;nbsp;&amp;lt;/span&amp;gt;oder einen $ASM … $End ASM –Block zu verwenden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    Dim a As Byte At &amp;amp;H60 'A is stored at location &amp;amp;H60&lt;br /&gt;
    Ldi R27 , $00 &amp;amp;nbsp; 'Load R27 with MSB of address&lt;br /&gt;
    Ldi R26 , $60 &amp;amp;nbsp; 'Load R26 with LSB of address&lt;br /&gt;
    Ld R1, X &amp;amp;nbsp; 'load memory location $60 into R1&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;!&amp;lt;/span&amp;gt;SWAP R1 &amp;amp;nbsp; 'swap nibbles&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie Sie sehen, wurde dem Mnemonik SWAP ein Ausrufezeichen&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;!&amp;lt;/span&amp;gt;&amp;amp;nbsp; vorangestellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine andere Option ist die Verwendung eines einschließenden $ASM/ $END ASM - Blocks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;$ASM&amp;lt;/span&amp;gt;&lt;br /&gt;
    LDI R27 , $00 &amp;amp;nbsp; 'Load R27 with MSB of address&lt;br /&gt;
    LDI R26 , $60 &amp;amp;nbsp; 'Load R26 with LSB of address&lt;br /&gt;
    LDI R1  , X &amp;amp;nbsp; &amp;amp;nbsp;'load memory location $60 into R1&lt;br /&gt;
    SWAP R1 &amp;amp;nbsp; 'swap nibbles&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;$END ASM&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Assembler-Hilfsfunktion''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine spezielle Assembler-Hilfsfunktion unterstützt das Laden von Adressen in die Register X oder Z.  &lt;br /&gt;
Das Y-Register sollte nicht verwendet werden da dieses bereits als Zeiger auf den Software-Stack verwendet wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Dim A As Byte &amp;amp;nbsp;'reserve space&lt;br /&gt;
  LOADADR a, X &amp;amp;nbsp;'load address of variable named A into register pair X&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachfolgender Code hat den gleichen Effekt &amp;amp;nbsp;:&lt;br /&gt;
  LDI R26 , $60 'for example&amp;amp;nbsp;!&lt;br /&gt;
  LDI R27, $00 'for example&amp;amp;nbsp;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Von Bascom verwendete Register''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
R4 und R5  werden als Zeiger auf den Stack-Frame oder zur temporären Datensicherung verwendet.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
R6 dient zur Speicherung von Bit-Variablen:&lt;br /&gt;
&lt;br /&gt;
-  bit 0 = Flag für Integer/Word Umwandlungen&lt;br /&gt;
&lt;br /&gt;
-  bit 1 = Temporärer Bit-Speicher beim Tauschen von Bits&lt;br /&gt;
&lt;br /&gt;
-  bit 2 = Fehler-Bit (ERR - Variable)&lt;br /&gt;
&lt;br /&gt;
-  bit 3 = Anzeigen/Nicht Anzeigen - Flag bei dem INPUT-Befehl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
R8 und R9 dienen als Datenzeiger für den READ-Befehl.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Register werden Befehlsabhängig verwendet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Laden von Variablen-Adressen''' ==&lt;br /&gt;
&lt;br /&gt;
Um die Adresse einer Variable zu laden, muß dessen Name in geschwungenen Klammern eingeschlossen sein. &lt;br /&gt;
    Dim B As Bit&lt;br /&gt;
    LDS R16, {B} '{B} wird durch die Adresse der Variablen B ersetzt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um auf ein Bit zu verweisen, muss der Variablen der Ausdruck BIT. vorangestellt sein.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    SBRS R16 , BIT.B &amp;amp;nbsp;'Beachten sie den Punkt!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Da B das erste dimensionierte Bit ist, erhält B die Bitnummer 0.&lt;br /&gt;
Bits werden zu Bytes zusammengefasst gespeichert. Das erste dimensionierte Bit geht in das niederwertigste Bit ein, usw.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Laden von Label-Adressen''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um die Adresse eines Labels zu laden, schreiben sie&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LDI ZL, Low(lbl * 1)&lt;br /&gt;
 LDI ZH , High(lbl * 1)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wobei  ZL   auch R30, R24, R26, R28 oder R30, und ZH  gleichermaßen R31, R25, R27, R29 oder R31 sein kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das sind sogenannte Registerpaare mit denen  Zeiger gebildet werden können.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit einer LPM – Instruktion (LOAD-PROGRAMM_MEMORY) Daten aus dem Programmspeicher laden wollen, muss die Adresse mit 2 multipliziert werden, &lt;br /&gt;
da der Programmspeicher wortorganisiert ist (16Bit).&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 LDI ZL, Low(lbl * 2)&lt;br /&gt;
 LDI ZH , High(lbl * 2)&lt;br /&gt;
 LPM&amp;amp;nbsp;; get data into R0&lt;br /&gt;
 ....&lt;br /&gt;
 Lbl:&lt;br /&gt;
 .....&lt;br /&gt;
&lt;br /&gt;
== '''Einige wichtige Punkte''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um in Assembler zu programmieren müssen Atmel Mnemonics verwendet werden.&lt;br /&gt;
In den Datenblättern der jeweiligen Mikrocontroller finden sie den entsprechenden Befehlsvorrat.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Alle Befehle die eine Konstanten verwenden, arbeiten ausschließlich mit den oberen 16 Registern R16 bis R31.&lt;br /&gt;
&lt;br /&gt;
!LDI  R15, 12     funktioniert also nicht.      &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Der Befehl    SBR reg , K  &lt;br /&gt;
&lt;br /&gt;
K kann ein Wert von 0 bis 255 sein. So können mehrere Bits gleichzeitig gesetzt werden.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl SBI port , K   hingegen kann immer nur ein Bit setzen, da K nur 0 bis 7 sein kann.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Gleiche gilt für die Befehle CBR und CBI.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sie können für K ebenfalls symbolische Konstante verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  .equ myval = (10+2)/4&lt;br /&gt;
  ldi R24,myval+2 '5&lt;br /&gt;
  ldi R24,asc(&amp;quot;A&amp;quot;)+1&amp;amp;nbsp;; load with 66&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oder in BASIC mit CONST&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  CONST Myval = (10+2) / 4&lt;br /&gt;
  LDI R24, myval&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Bibliotheken (.lib) erstellen''' ==&lt;br /&gt;
&lt;br /&gt;
Wie erstellt man eine eigene Bibliothek und verwendet diese mit BASIC?&lt;br /&gt;
&lt;br /&gt;
Die Dateien zu diesem Beispiel finden sie im BASCOM-Installationsverzeichnis unter \SAMPLES\libdemo.bas und unter \LIB\mylib.lib. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zu Beginn bestimmen Sie die zu verwendenden Parameter und ihre Datentypen.&lt;br /&gt;
&lt;br /&gt;
Überlegen Sie außerdem ob die Parameter Byref oder Byval übergeben werden sollen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;ByRev&amp;quot; : Die Adresse der übergebenen Variable wird an eine Prozedur übergeben. So wird der Inhalt der Variable direkt bearbeitet. &lt;br /&gt;
&lt;br /&gt;
- &amp;quot;ByVal&amp;quot; : Eine Kopie des Parameterinhaltes wird übergeben. Der Inhalt der übergebenen Quellvariable bleibt unangetastet. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
Eine Subroutine namens &amp;quot;test&amp;quot; erwartet zwei Parameter:&lt;br /&gt;
&lt;br /&gt;
  x die byval übergeben wird (eine Kopie. Kopien werden temporär in den Stack-Fame-Bereich geschrieben) &lt;br /&gt;
  y die byref übergeben wird (die Adresse der Variablen)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen wird die Adresse der Variablen auf den SoftStack gebracht, welcher mit dem Y-Zeiger verwaltet wird. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der erste Parameter x (genauer: die Adresse seiner Kopie) wird dem Soft-Stack auferlegt.&lt;br /&gt;
&lt;br /&gt;
An diese Adresse gelangen sie durch:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 LDD R26 , y + 0&lt;br /&gt;
 LDD R27 , y + 1&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Die Adresse steht nun im Registerpaar X (R26,R27) oder im X-Zeiger.  &lt;br /&gt;
&lt;br /&gt;
Da ein zweiter Parameter, oder besser dessen Adresse ebenfalls auf dem Soft-Stack gebracht werden soll,&lt;br /&gt;
ändert sich jedoch die Verschiebegröße auf den Y-Zeiger um an die Adresse von x zu gelangen&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
x wird dadurch also so refenziert:&lt;br /&gt;
 LDD R26 , y + 2&lt;br /&gt;
 LDD R27 , y + 3&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein zuletzt übergebenen Paramter (hier y) wird stets so refernziert:&lt;br /&gt;
 LDD r26 , y + 0&lt;br /&gt;
 LDD r27 , y + 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schreiben Sie eine gewöhnliche Subprozedur, zusätzlich jedoch mit dem Namen der Prozedur in eckigen Klammern, wie im folgendem &lt;br /&gt;
Beispiel gezeigt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  [test]&lt;br /&gt;
    test:&lt;br /&gt;
     LDD R26,X+2&amp;amp;nbsp;; load address of x&lt;br /&gt;
     LDD R27,Y+3&lt;br /&gt;
     LD  R24,x&amp;amp;nbsp;; get value into r24&lt;br /&gt;
     INC R24&amp;amp;nbsp;; value + 1&lt;br /&gt;
     ST X,R24&amp;amp;nbsp;; put back&lt;br /&gt;
     LDD R26,Y+0&amp;amp;nbsp;; address of y&lt;br /&gt;
     LDD R27,Y+1&lt;br /&gt;
     ST X,R24&amp;amp;nbsp;; store&lt;br /&gt;
    RET&amp;amp;nbsp;; ready&lt;br /&gt;
  [end]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um eine Funktion zu erstellen wird genauso verfahren&lt;br /&gt;
&lt;br /&gt;
Der Unterschied: eine Funktion gibt ein Ergebnis zurück, womit ein weiterer Parameter entsteht.&lt;br /&gt;
Dieser Rückgabeparameter wird automatisch generiert und trägt den Namen der Funktion.&lt;br /&gt;
Auf diese Weise kann das Ergebnis dem Funktionsnamen zugeordnet werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 Declare Function Test(byval x as byte , y as byte) as byte&lt;br /&gt;
Eine Virtuelle Variable namens Test wird erzeugt und auf den Soft-Stack mit Hilfe des Y-Zeigers gebracht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis der Funktion (test) würde an dieser Stelle so referenziert:&lt;br /&gt;
 LDD R26 , y + 0&lt;br /&gt;
 LDD R27 , y + 1&lt;br /&gt;
&lt;br /&gt;
Durch den bei der Funktion übergebenen Parameter x jedoch, ändert sich die Verschiebegröße auf Y und damit der Zugriff auf test zu &lt;br /&gt;
 y + 2 und y + 3,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
und nachdem die  Adresse des dritten Parameters y auf den Soft-Stack geschrieben wird, ändert sich der Verweis ebenfalls wieder:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 LDD R26 , y + 4&lt;br /&gt;
 LDD R27 , y + 5&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schlussendlich wird auf die Adresse von x im Soft-Stack so verwiesen,&lt;br /&gt;
  LDD r26 , y + 2&lt;br /&gt;
  LDD r27 , y + 3&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und auf y so.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  LDD R26 , y + 0&lt;br /&gt;
  LDD R27 , y + 1&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für '''Exit Sub''' oder '''Exit Function''' muss außerdem ein zusätliches Label angegeben werden das mit sub_ beginnt und mit dem Namen der Funktion oder der Routine endet.&lt;br /&gt;
Dem oben aufgeführten Beispiel entsprechend also:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  sub_test:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;LOCALS&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit lokalen Variablen arbeitet, wird es etwas komplizierter.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jede Adresse einer lokalen Variable wird auch auf den Soft-Stack geschrieben.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verwenden Sie nur eine lokale Variable,liegt dessen Adresse an&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  LDD R26, y + 0&lt;br /&gt;
  LDD R27, y + 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Die Referenzierung auf alle weiteren Parameter erhöht sich dadurch um 2, sodass sich der Zugiff auf die Adresse des Parameter y ändert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LDD R26 , Y + 0 nach LDD R26 , Y + 2&lt;br /&gt;
 LDD R27 , Y + 1 nach LDD R27 , y + 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn mehr als eine lokale Variable verwendet werden, muss für jede Weitere 2 hinzuaddiert werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Ende muss die Datei mit der Endung .lib abgespeichert werden.&lt;br /&gt;
Mit dem Lib-Mangager kann die neue Bibliothek in das lbx-Format kompiliert werden.&lt;br /&gt;
&lt;br /&gt;
Die jeweilige Declare Sub/Function Aweisung muss um die Funktion oder Subroutine verwenden zu können, im Programmcode eingefügt werden. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das folgende Programmbeispiel ist eine Kopie aus der Datei libdemo.bas&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  $lib &amp;quot;mylib.lib&amp;quot;                              'define the used library&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  $external Test                                'also define the used routines&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Declare Sub Test(byval X As Byte , Y As Byte) 'this is needed so the parameters will be placed correct on the stack&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Dim Z As Byte                                 'reserve some space&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Call Test(1 , Z)                              'call our own sub routine&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  'z will be 2 in the used example&lt;br /&gt;
 End&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie in ihrer Bibliothek Ports verwenden wollen, müssen für deren Adressen symbolische Konstanten anlegen.&lt;br /&gt;
Beispiel:&lt;br /&gt;
  .equ EEDR=$1d&lt;br /&gt;
  In R24, EEDR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
So erkennt der Library-Manager Port-Adressen beim Kompilieren.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Alternativ können Sie dem Mnemonic ein * voranstellen. So wird diese Zeile beim Komilieren der Lib nicht mit Übersetzt. Die Umsetzung der Adresse des Registers würde dann erst zur Laufzeit geschehen.   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Umformung&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Ab Version 1.11.7.5 werden einige Mnemonics bei Bedarf anders umgesetzt, also umgeformt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispielsweise funktioniert SBIC nur mit normalen Port-Registern.&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Der Hintergrund ist, daß die Adresse nicht größer als 5 Bit sein darf da bereits 3 Bits schon für die Pin-Nummer 0-7 benötigt werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
SBIC arbeitet nur mit den unteren 32 IO-Registern der Adressen 0-31.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
SBIC funktioniert auf älteren AVR-Modellen problemlos.&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;Bei der Anwendung des Befehls auf neuere Modelle, bei denen die Portadressen höher sein können, z.B. beim ATMega128 - PortG, versagt dieser Befehl.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Es wird wo immer die Bits eines IO-Register manipuliert werden sollen, ein Arbeitsregister R[0-31] benötigt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Beispiel&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
 LDS R23,   PORTG&amp;amp;nbsp;; get value of PORTG register&lt;br /&gt;
 SBR R23,   128&amp;amp;nbsp;; set bit 7&lt;br /&gt;
 STS PORTG, R23&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mneminics die vom Compiler umgeformt werden,sind&amp;amp;nbsp;: IN, OUT, SBIC, SBIS, SBI and CBI.&amp;amp;nbsp; &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Der Compiler verwendet dafür immer das Register R23. Achten Sie darauf, daß dieses Register in solch einem Fall nicht zeitgleich für etwas anderes verwendet wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Spezielle Befehle&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
 ADR Label &amp;amp;nbsp;; Erzeugt eine Wortadresse einer Programmarke (Label)&lt;br /&gt;
&lt;br /&gt;
 ADR2 Label&amp;amp;nbsp;; Erzeugt eine Wortadresse einer Programmarke (Label) die mit 2 multipliziert ist um ein Byte zu adressieren.&amp;amp;nbsp; &lt;br /&gt;
              So lässt sich das Z-Register bequem zum gebrauch von(E)LPM-Befehlen laden.&lt;br /&gt;
&lt;br /&gt;
  .align &amp;amp;nbsp;; Diese Direktive richtet den Programmcode an eine Seitengrenze des Programmspeichers (der in 256 Byte großen Blöcken aufgeteilt ist)so aus,&lt;br /&gt;
            daß das niederwertige Byte (LSB) einer Adresse zu 0 wird.&lt;br /&gt;
            Wenn Daten an eine bestimmte Adresse geschrieben werden bei dem das LSB = 0 ist, kann ein Überlauf nur durch Prüfung des MSB festgestellt werden.  &lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Fundamentals/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Mixing_ASM_and_BASIC/de</id>
		<title>Mixing ASM and BASIC/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Mixing_ASM_and_BASIC/de"/>
				<updated>2013-03-04T22:09:27Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* LOCALS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== '''BASIC und Assembler mischen''' ==&lt;br /&gt;
&lt;br /&gt;
  Dieses Kapitel darf nicht als Unterrichtung in Assemblerprogammierung verstanden werden. &lt;br /&gt;
  Wenn Sie ein spezielles Thema zur Verwendung  von Assembler in BASCOM vermissen, teilen Sie uns das per Email mit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BASCOM gestattet das mischen von BASIC mit Assembler-Code, was in den Fällen nützlich sein kann, in denen Sie vollen Einfluss auf den generierten Code nehmen wollen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nahezu alle Assembler-Mnemonics werden vom Compiler direkt unterstütz. Die Ausnahmen sind SWAP, CALL und OUT. Das sind reservierte BASIC-Befehle und haben Vorrang gegenüber Assembler-Mnemonics.&lt;br /&gt;
&lt;br /&gt;
Um diese Mnemonics verwenden zu können wird ihnen ein Ausrufezeichen (!) vorangestellt.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[File:Notice.jpg|notice]]Es wird empfohlen immer das&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;&amp;amp;nbsp;!&amp;amp;nbsp;&amp;lt;/span&amp;gt;oder einen $ASM … $End ASM –Block zu verwenden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    Dim a As Byte At &amp;amp;H60 'A is stored at location &amp;amp;H60&lt;br /&gt;
    Ldi R27 , $00 &amp;amp;nbsp; 'Load R27 with MSB of address&lt;br /&gt;
    Ldi R26 , $60 &amp;amp;nbsp; 'Load R26 with LSB of address&lt;br /&gt;
    Ld R1, X &amp;amp;nbsp; 'load memory location $60 into R1&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;!&amp;lt;/span&amp;gt;SWAP R1 &amp;amp;nbsp; 'swap nibbles&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie Sie sehen, wurde dem Menemonik SWAP ein Ausrufezeichen&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;!&amp;lt;/span&amp;gt;&amp;amp;nbsp; vorangestellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die andere Option ist die Verwendung eines einschließenden $ASM/ $END ASM - Blocks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;$ASM&amp;lt;/span&amp;gt;&lt;br /&gt;
    LDI R27 , $00 &amp;amp;nbsp; 'Load R27 with MSB of address&lt;br /&gt;
    LDI R26 , $60 &amp;amp;nbsp; 'Load R26 with LSB of address&lt;br /&gt;
    LDI R1  , X &amp;amp;nbsp; &amp;amp;nbsp;'load memory location $60 into R1&lt;br /&gt;
    SWAP R1 &amp;amp;nbsp; 'swap nibbles&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;$END ASM&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Assembler-Hilfsfunktion''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine spezielle Assembler-Hilfsfunktion unterstützt das Laden von Adressen in die Register X oder Z.  &lt;br /&gt;
Das Y-Register sollte nicht verwendet werden da dieses bereits als Zeiger auf den Software-Stack verwendet wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Dim A As Byte &amp;amp;nbsp;'reserve space&lt;br /&gt;
  LOADADR a, X &amp;amp;nbsp;'load address of variable named A into register pair X&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachfolgender Code hat den gleichen Effekt &amp;amp;nbsp;:&lt;br /&gt;
  LDI R26 , $60 'for example&amp;amp;nbsp;!&lt;br /&gt;
  LDI R27, $00 'for example&amp;amp;nbsp;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Von Bascom verwendete Register''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
R4 und R5  werden als Zeiger auf den Stack-Frame oder zur temporären Datensicherung verwendet.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
R6 dient zur Speicherung von Bit-Variablen:&lt;br /&gt;
&lt;br /&gt;
-  bit 0 = Flag für Integer/Word Umwandlungen&lt;br /&gt;
&lt;br /&gt;
-  bit 1 = Temporärer Bit-Speicher beim Tauschen von Bits&lt;br /&gt;
&lt;br /&gt;
-  bit 2 = Fehler-Bit (ERR - Variable)&lt;br /&gt;
&lt;br /&gt;
-  bit 3 = Anzeigen/Nicht Anzeigen - Flag bei dem INPUT-Befehl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
R8 und R9 dienen als Datenzeiger für den READ-Befehl.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Register werden Befehlsabhängig verwendet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Laden von Variablen-Adressen''' ==&lt;br /&gt;
&lt;br /&gt;
Um die Adresse einer Variable zu laden, muß dessen Name in geschwungenen Klammern eingeschlossen sein. &lt;br /&gt;
    Dim B As Bit&lt;br /&gt;
    LDS R16, {B} '{B} wird durch die Adresse der Variablen B ersetzt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um auf ein Bit zu verweisen, muss der Variablen der Ausdruck BIT. vorangestellt sein.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    SBRS R16 , BIT.B &amp;amp;nbsp;'Beachten sie den Punkt!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Da B das erste dimensionierte Bit ist, erhält B die Bitnummer 0.&lt;br /&gt;
Bits werden zu Bytes zusammengefasst gespeichert. Das erste dimensionierte Bit geht in das niederwertigste Bit ein, usw.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Laden von Label-Adressen''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um die Adresse eines Labels zu laden, schreiben sie&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LDI ZL, Low(lbl * 1)&lt;br /&gt;
 LDI ZH , High(lbl * 1)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wobei  ZL   auch R30, R24, R26, R28 oder R30, und ZH  gleichermaßen R31, R25, R27, R29 oder R31 sein kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das sind sogenannte Registerpaare mit denen  Zeiger gebildet werden können.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit einer LPM – Instruktion (LOAD-PROGRAMM_MEMORY) Daten aus dem Programmspeicher laden wollen, muss die Adresse mit 2 multipliziert werden, &lt;br /&gt;
da der Programmspeicher wortorganisiert ist (16Bit).&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 LDI ZL, Low(lbl * 2)&lt;br /&gt;
 LDI ZH , High(lbl * 2)&lt;br /&gt;
 LPM&amp;amp;nbsp;; get data into R0&lt;br /&gt;
 ....&lt;br /&gt;
 Lbl:&lt;br /&gt;
 .....&lt;br /&gt;
&lt;br /&gt;
== '''Einige wichtige Punkte''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um in Assembler zu programmieren müssen Atmel Mnemonics verwendet werden.&lt;br /&gt;
In den Datenblättern der jeweiligen Mikrocontroller finden sie den entsprechenden Befehlsvorrat.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Alle Befehle die eine Konstanten verwenden, arbeiten ausschließlich mit den oberen 16 Registern R16 bis R31.&lt;br /&gt;
&lt;br /&gt;
!LDI  R15, 12     funktioniert also nicht.      &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Der Befehl    SBR reg , K  &lt;br /&gt;
&lt;br /&gt;
K kann ein Wert von 0 bis 255 sein. So können mehrere Bits gleichzeitig gesetzt werden.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl SBI port , K   hingegen kann immer nur ein Bit setzen, da K nur 0 bis 7 sein kann.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Gleiche gilt für die Befehle CBR und CBI.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sie können für K ebenfalls symbolische Konstante verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  .equ myval = (10+2)/4&lt;br /&gt;
  ldi R24,myval+2 '5&lt;br /&gt;
  ldi R24,asc(&amp;quot;A&amp;quot;)+1&amp;amp;nbsp;; load with 66&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oder in BASIC mit CONST&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  CONST Myval = (10+2) / 4&lt;br /&gt;
  LDI R24, myval&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Bibliotheken (.lib) erstellen''' ==&lt;br /&gt;
&lt;br /&gt;
Wie erstellt man eine eigene Bibliothek und verwendet diese mit BASIC?&lt;br /&gt;
&lt;br /&gt;
Die Dateien zu diesem Beispiel finden sie im BASCOM-Installationsverzeichnis unter \SAMPLES\libdemo.bas und unter \LIB\mylib.lib. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zu Beginn bestimmen Sie die zu verwendenden Parameter und ihre Datentypen.&lt;br /&gt;
&lt;br /&gt;
Überlegen Sie außerdem ob die Parameter Byref oder Byval übergeben werden sollen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;ByRev&amp;quot; : Die Adresse der übergebenen Variable wird an eine Prozedur übergeben. So wird der Inhalt der Variable direkt bearbeitet. &lt;br /&gt;
&lt;br /&gt;
- &amp;quot;ByVal&amp;quot; : Eine Kopie des Parameterinhaltes wird übergeben. Der Inhalt der übergebenen Quellvariable bleibt unangetastet. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
Eine Subroutine namens &amp;quot;test&amp;quot; erwartet zwei Parameter:&lt;br /&gt;
&lt;br /&gt;
  x die byval übergeben wird (eine Kopie. Kopien werden temporär in den Stack-Fame-Bereich geschrieben) &lt;br /&gt;
  y die byref übergeben wird (die Adresse der Variablen)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen wird die Adresse der Variablen auf den SoftStack gebracht, welcher mit dem Y-Zeiger verwaltet wird. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der erste Parameter x (genauer: die Adresse seiner Kopie) wird dem Soft-Stack auferlegt.&lt;br /&gt;
&lt;br /&gt;
An diese Adresse gelangen sie durch:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 LDD R26 , y + 0&lt;br /&gt;
 LDD R27 , y + 1&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Die Adresse steht nun im Registerpaar X (R26,R27) oder im X-Zeiger.  &lt;br /&gt;
&lt;br /&gt;
Da ein zweiter Parameter, oder besser dessen Adresse ebenfalls auf dem Soft-Stack gebracht werden soll,&lt;br /&gt;
ändert sich jedoch die Verschiebegröße auf den Y-Zeiger um an die Adresse von x zu gelangen&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
x wird dadurch also so refenziert:&lt;br /&gt;
 LDD R26 , y + 2&lt;br /&gt;
 LDD R27 , y + 3&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein zuletzt übergebenen Paramter (hier y) wird stets so refernziert:&lt;br /&gt;
 LDD r26 , y + 0&lt;br /&gt;
 LDD r27 , y + 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schreiben Sie eine gewöhnliche Subprozedur, zusätzlich jedoch mit dem Namen der Prozedur in eckigen Klammern, wie im folgendem &lt;br /&gt;
Beispiel gezeigt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  [test]&lt;br /&gt;
    test:&lt;br /&gt;
     LDD R26,X+2&amp;amp;nbsp;; load address of x&lt;br /&gt;
     LDD R27,Y+3&lt;br /&gt;
     LD  R24,x&amp;amp;nbsp;; get value into r24&lt;br /&gt;
     INC R24&amp;amp;nbsp;; value + 1&lt;br /&gt;
     ST X,R24&amp;amp;nbsp;; put back&lt;br /&gt;
     LDD R26,Y+0&amp;amp;nbsp;; address of y&lt;br /&gt;
     LDD R27,Y+1&lt;br /&gt;
     ST X,R24&amp;amp;nbsp;; store&lt;br /&gt;
    RET&amp;amp;nbsp;; ready&lt;br /&gt;
  [end]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um eine Funktion zu erstellen wird genauso verfahren&lt;br /&gt;
&lt;br /&gt;
Der Unterschied: eine Funktion gibt ein Ergebnis zurück, womit ein weiterer Parameter entsteht.&lt;br /&gt;
Dieser Rückgabeparameter wird automatisch generiert und trägt den Namen der Funktion.&lt;br /&gt;
Auf diese Weise kann das Ergebnis dem Funktionsnamen zugeordnet werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 Declare Function Test(byval x as byte , y as byte) as byte&lt;br /&gt;
Eine Virtuelle Variable namens Test wird erzeugt und auf den Soft-Stack mit Hilfe des Y-Zeigers gebracht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis der Funktion (test) würde an dieser Stelle so referenziert:&lt;br /&gt;
 LDD R26 , y + 0&lt;br /&gt;
 LDD R27 , y + 1&lt;br /&gt;
&lt;br /&gt;
Durch den bei der Funktion übergebenen Parameter x jedoch, ändert sich die Verschiebegröße auf Y und damit der Zugriff auf test zu &lt;br /&gt;
 y + 2 und y + 3,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
und nachdem die  Adresse des dritten Parameters y auf den Soft-Stack geschrieben wird, ändert sich der Verweis ebenfalls wieder:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 LDD R26 , y + 4&lt;br /&gt;
 LDD R27 , y + 5&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schlussendlich wird auf die Adresse von x im Soft-Stack so verwiesen,&lt;br /&gt;
  LDD r26 , y + 2&lt;br /&gt;
  LDD r27 , y + 3&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und auf y so.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  LDD R26 , y + 0&lt;br /&gt;
  LDD R27 , y + 1&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für '''Exit Sub''' oder '''Exit Function''' muss außerdem ein zusätliches Label angegeben werden das mit sub_ beginnt und mit dem Namen der Funktion oder der Routine endet.&lt;br /&gt;
Dem oben aufgeführten Beispiel entsprechend also:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  sub_test:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;LOCALS&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit lokalen Variablen arbeitet, wird es etwas komplizierter.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jede Adresse einer lokalen Variable wird auch auf den Soft-Stack geschrieben.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verwenden Sie nur eine lokale Variable,liegt dessen Adresse an&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  LDD R26, y + 0&lt;br /&gt;
  LDD R27, y + 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Die Referenzierung auf alle weiteren Parameter erhöht sich dadurch um 2, sodass sich der Zugiff auf die Adresse des Parameter y ändert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LDD R26 , Y + 0 nach LDD R26 , Y + 2&lt;br /&gt;
 LDD R27 , Y + 1 nach LDD R27 , y + 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn mehr als eine lokale Variable verwendet werden, muss für jede Weitere 2 hinzuaddiert werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Ende muss die Datei mit der Endung .lib abgespeichert werden.&lt;br /&gt;
Mit dem Lib-Mangager kann die neue Bibliothek in das lbx-Format kompiliert werden.&lt;br /&gt;
&lt;br /&gt;
Die jeweilige Declare Sub/Function Aweisung muss um die Funktion oder Subroutine verwenden zu können, im Programmcode eingefügt werden. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das folgende Programmbeispiel ist eine Kopie aus der Datei libdemo.bas&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  $lib &amp;quot;mylib.lib&amp;quot;                              'define the used library&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  $external Test                                'also define the used routines&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Declare Sub Test(byval X As Byte , Y As Byte) 'this is needed so the parameters will be placed correct on the stack&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Dim Z As Byte                                 'reserve some space&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Call Test(1 , Z)                              'call our own sub routine&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  'z will be 2 in the used example&lt;br /&gt;
 End&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie in ihrer Bibliothek Ports verwenden wollen, müssen für deren Adressen symbolische Konstanten anlegen.&lt;br /&gt;
Beispiel:&lt;br /&gt;
  .equ EEDR=$1d&lt;br /&gt;
  In R24, EEDR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
So erkennt der Library-Manager Port-Adressen beim Kompilieren.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Alternativ können Sie dem Mnemonic ein * voranstellen. So wird diese Zeile beim Komilieren der Lib nicht mit Übersetzt. Die Umsetzung der Adresse des Registers würde dann erst zur Laufzeit geschehen.   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Umformung&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Ab Version 1.11.7.5 werden einige Mnemonics bei Bedarf anders umgesetzt, also umgeformt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispielsweise funktioniert SBIC nur mit normalen Port-Registern.&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Der Hintergrund ist, daß die Adresse nicht größer als 5 Bit sein darf da bereits 3 Bits schon für die Pin-Nummer 0-7 benötigt werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
SBIC arbeitet nur mit den unteren 32 IO-Registern der Adressen 0-31.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
SBIC funktioniert auf älteren AVR-Modellen problemlos.&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;Bei der Anwendung des Befehls auf neuere Modelle, bei denen die Portadressen höher sein können, z.B. beim ATMega128 - PortG, versagt dieser Befehl.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Es wird wo immer die Bits eines IO-Register manipuliert werden sollen, ein Arbeitsregister R[0-31] benötigt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Beispiel&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
 LDS R23,   PORTG&amp;amp;nbsp;; get value of PORTG register&lt;br /&gt;
 SBR R23,   128&amp;amp;nbsp;; set bit 7&lt;br /&gt;
 STS PORTG, R23&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mneminics die vom Compiler umgeformt werden,sind&amp;amp;nbsp;: IN, OUT, SBIC, SBIS, SBI and CBI.&amp;amp;nbsp; &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Der Compiler verwendet dafür immer das Register R23. Achten Sie darauf, daß dieses Register in solch einem Fall nicht zeitgleich für etwas anderes verwendet wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Spezielle Befehle&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
 ADR Label &amp;amp;nbsp;; Erzeugt eine Wortadresse einer Programmarke (Label)&lt;br /&gt;
&lt;br /&gt;
 ADR2 Label&amp;amp;nbsp;; Erzeugt eine Wortadresse einer Programmarke (Label) die mit 2 multipliziert ist um ein Byte zu adressieren.&amp;amp;nbsp; &lt;br /&gt;
              So lässt sich das Z-Register bequem zum gebrauch von(E)LPM-Befehlen laden.&lt;br /&gt;
&lt;br /&gt;
  .align &amp;amp;nbsp;; Diese Direktive richtet den Programmcode an eine Seitengrenze des Programmspeichers (der in 256 Byte großen Blöcken aufgeteilt ist)so aus,&lt;br /&gt;
            daß das niederwertige Byte (LSB) einer Adresse zu 0 wird.&lt;br /&gt;
            Wenn Daten an eine bestimmte Adresse geschrieben werden bei dem das LSB = 0 ist, kann ein Überlauf nur durch Prüfung des MSB festgestellt werden.  &lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Fundamentals/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Mixing_ASM_and_BASIC/de</id>
		<title>Mixing ASM and BASIC/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Mixing_ASM_and_BASIC/de"/>
				<updated>2013-03-04T22:05:27Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Einige wichtige Punkte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== '''BASIC und Assembler mischen''' ==&lt;br /&gt;
&lt;br /&gt;
  Dieses Kapitel darf nicht als Unterrichtung in Assemblerprogammierung verstanden werden. &lt;br /&gt;
  Wenn Sie ein spezielles Thema zur Verwendung  von Assembler in BASCOM vermissen, teilen Sie uns das per Email mit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BASCOM gestattet das mischen von BASIC mit Assembler-Code, was in den Fällen nützlich sein kann, in denen Sie vollen Einfluss auf den generierten Code nehmen wollen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nahezu alle Assembler-Mnemonics werden vom Compiler direkt unterstütz. Die Ausnahmen sind SWAP, CALL und OUT. Das sind reservierte BASIC-Befehle und haben Vorrang gegenüber Assembler-Mnemonics.&lt;br /&gt;
&lt;br /&gt;
Um diese Mnemonics verwenden zu können wird ihnen ein Ausrufezeichen (!) vorangestellt.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[File:Notice.jpg|notice]]Es wird empfohlen immer das&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;&amp;amp;nbsp;!&amp;amp;nbsp;&amp;lt;/span&amp;gt;oder einen $ASM … $End ASM –Block zu verwenden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    Dim a As Byte At &amp;amp;H60 'A is stored at location &amp;amp;H60&lt;br /&gt;
    Ldi R27 , $00 &amp;amp;nbsp; 'Load R27 with MSB of address&lt;br /&gt;
    Ldi R26 , $60 &amp;amp;nbsp; 'Load R26 with LSB of address&lt;br /&gt;
    Ld R1, X &amp;amp;nbsp; 'load memory location $60 into R1&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;!&amp;lt;/span&amp;gt;SWAP R1 &amp;amp;nbsp; 'swap nibbles&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie Sie sehen, wurde dem Menemonik SWAP ein Ausrufezeichen&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;!&amp;lt;/span&amp;gt;&amp;amp;nbsp; vorangestellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die andere Option ist die Verwendung eines einschließenden $ASM/ $END ASM - Blocks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;$ASM&amp;lt;/span&amp;gt;&lt;br /&gt;
    LDI R27 , $00 &amp;amp;nbsp; 'Load R27 with MSB of address&lt;br /&gt;
    LDI R26 , $60 &amp;amp;nbsp; 'Load R26 with LSB of address&lt;br /&gt;
    LDI R1  , X &amp;amp;nbsp; &amp;amp;nbsp;'load memory location $60 into R1&lt;br /&gt;
    SWAP R1 &amp;amp;nbsp; 'swap nibbles&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;$END ASM&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Assembler-Hilfsfunktion''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine spezielle Assembler-Hilfsfunktion unterstützt das Laden von Adressen in die Register X oder Z.  &lt;br /&gt;
Das Y-Register sollte nicht verwendet werden da dieses bereits als Zeiger auf den Software-Stack verwendet wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Dim A As Byte &amp;amp;nbsp;'reserve space&lt;br /&gt;
  LOADADR a, X &amp;amp;nbsp;'load address of variable named A into register pair X&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachfolgender Code hat den gleichen Effekt &amp;amp;nbsp;:&lt;br /&gt;
  LDI R26 , $60 'for example&amp;amp;nbsp;!&lt;br /&gt;
  LDI R27, $00 'for example&amp;amp;nbsp;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Von Bascom verwendete Register''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
R4 und R5  werden als Zeiger auf den Stack-Frame oder zur temporären Datensicherung verwendet.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
R6 dient zur Speicherung von Bit-Variablen:&lt;br /&gt;
&lt;br /&gt;
-  bit 0 = Flag für Integer/Word Umwandlungen&lt;br /&gt;
&lt;br /&gt;
-  bit 1 = Temporärer Bit-Speicher beim Tauschen von Bits&lt;br /&gt;
&lt;br /&gt;
-  bit 2 = Fehler-Bit (ERR - Variable)&lt;br /&gt;
&lt;br /&gt;
-  bit 3 = Anzeigen/Nicht Anzeigen - Flag bei dem INPUT-Befehl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
R8 und R9 dienen als Datenzeiger für den READ-Befehl.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Register werden Befehlsabhängig verwendet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Laden von Variablen-Adressen''' ==&lt;br /&gt;
&lt;br /&gt;
Um die Adresse einer Variable zu laden, muß dessen Name in geschwungenen Klammern eingeschlossen sein. &lt;br /&gt;
    Dim B As Bit&lt;br /&gt;
    LDS R16, {B} '{B} wird durch die Adresse der Variablen B ersetzt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um auf ein Bit zu verweisen, muss der Variablen der Ausdruck BIT. vorangestellt sein.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    SBRS R16 , BIT.B &amp;amp;nbsp;'Beachten sie den Punkt!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Da B das erste dimensionierte Bit ist, erhält B die Bitnummer 0.&lt;br /&gt;
Bits werden zu Bytes zusammengefasst gespeichert. Das erste dimensionierte Bit geht in das niederwertigste Bit ein, usw.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Laden von Label-Adressen''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um die Adresse eines Labels zu laden, schreiben sie&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LDI ZL, Low(lbl * 1)&lt;br /&gt;
 LDI ZH , High(lbl * 1)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wobei  ZL   auch R30, R24, R26, R28 oder R30, und ZH  gleichermaßen R31, R25, R27, R29 oder R31 sein kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das sind sogenannte Registerpaare mit denen  Zeiger gebildet werden können.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit einer LPM – Instruktion (LOAD-PROGRAMM_MEMORY) Daten aus dem Programmspeicher laden wollen, muss die Adresse mit 2 multipliziert werden, &lt;br /&gt;
da der Programmspeicher wortorganisiert ist (16Bit).&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 LDI ZL, Low(lbl * 2)&lt;br /&gt;
 LDI ZH , High(lbl * 2)&lt;br /&gt;
 LPM&amp;amp;nbsp;; get data into R0&lt;br /&gt;
 ....&lt;br /&gt;
 Lbl:&lt;br /&gt;
 .....&lt;br /&gt;
&lt;br /&gt;
== '''Einige wichtige Punkte''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um in Assembler zu programmieren müssen Atmel Mnemonics verwendet werden.&lt;br /&gt;
In den Datenblättern der jeweiligen Mikrocontroller finden sie den entsprechenden Befehlsvorrat.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Alle Befehle die eine Konstanten verwenden, arbeiten ausschließlich mit den oberen 16 Registern R16 bis R31.&lt;br /&gt;
&lt;br /&gt;
!LDI  R15, 12     funktioniert also nicht.      &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Der Befehl    SBR reg , K  &lt;br /&gt;
&lt;br /&gt;
K kann ein Wert von 0 bis 255 sein. So können mehrere Bits gleichzeitig gesetzt werden.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl SBI port , K   hingegen kann immer nur ein Bit setzen, da K nur 0 bis 7 sein kann.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Gleiche gilt für die Befehle CBR und CBI.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sie können für K ebenfalls symbolische Konstante verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  .equ myval = (10+2)/4&lt;br /&gt;
  ldi R24,myval+2 '5&lt;br /&gt;
  ldi R24,asc(&amp;quot;A&amp;quot;)+1&amp;amp;nbsp;; load with 66&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oder in BASIC mit CONST&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  CONST Myval = (10+2) / 4&lt;br /&gt;
  LDI R24, myval&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Bibliotheken (.lib) erstellen''' ==&lt;br /&gt;
&lt;br /&gt;
Wie erstellt man eine eigene Bibliothek und verwendet diese mit BASIC?&lt;br /&gt;
&lt;br /&gt;
Die Dateien zu diesem Beispiel finden sie im BASCOM-Installationsverzeichnis unter \SAMPLES\libdemo.bas und unter \LIB\mylib.lib. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zu Beginn bestimmen Sie die zu verwendenden Parameter und ihre Datentypen.&lt;br /&gt;
&lt;br /&gt;
Überlegen Sie außerdem ob die Parameter Byref oder Byval übergeben werden sollen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;ByRev&amp;quot; : Die Adresse der übergebenen Variable wird an eine Prozedur übergeben. So wird der Inhalt der Variable direkt bearbeitet. &lt;br /&gt;
&lt;br /&gt;
- &amp;quot;ByVal&amp;quot; : Eine Kopie des Parameterinhaltes wird übergeben. Der Inhalt der übergebenen Quellvariable bleibt unangetastet. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
Eine Subroutine namens &amp;quot;test&amp;quot; erwartet zwei Parameter:&lt;br /&gt;
&lt;br /&gt;
  x die byval übergeben wird (eine Kopie. Kopien werden temporär in den Stack-Fame-Bereich geschrieben) &lt;br /&gt;
  y die byref übergeben wird (die Adresse der Variablen)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen wird die Adresse der Variablen auf den SoftStack gebracht, welcher mit dem Y-Zeiger verwaltet wird. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der erste Parameter x (genauer: die Adresse seiner Kopie) wird dem Soft-Stack auferlegt.&lt;br /&gt;
&lt;br /&gt;
An diese Adresse gelangen sie durch:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 LDD R26 , y + 0&lt;br /&gt;
 LDD R27 , y + 1&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Die Adresse steht nun im Registerpaar X (R26,R27) oder im X-Zeiger.  &lt;br /&gt;
&lt;br /&gt;
Da ein zweiter Parameter, oder besser dessen Adresse ebenfalls auf dem Soft-Stack gebracht werden soll,&lt;br /&gt;
ändert sich jedoch die Verschiebegröße auf den Y-Zeiger um an die Adresse von x zu gelangen&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
x wird dadurch also so refenziert:&lt;br /&gt;
 LDD R26 , y + 2&lt;br /&gt;
 LDD R27 , y + 3&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein zuletzt übergebenen Paramter (hier y) wird stets so refernziert:&lt;br /&gt;
 LDD r26 , y + 0&lt;br /&gt;
 LDD r27 , y + 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schreiben Sie eine gewöhnliche Subprozedur, zusätzlich jedoch mit dem Namen der Prozedur in eckigen Klammern, wie im folgendem &lt;br /&gt;
Beispiel gezeigt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  [test]&lt;br /&gt;
    test:&lt;br /&gt;
     LDD R26,X+2&amp;amp;nbsp;; load address of x&lt;br /&gt;
     LDD R27,Y+3&lt;br /&gt;
     LD  R24,x&amp;amp;nbsp;; get value into r24&lt;br /&gt;
     INC R24&amp;amp;nbsp;; value + 1&lt;br /&gt;
     ST X,R24&amp;amp;nbsp;; put back&lt;br /&gt;
     LDD R26,Y+0&amp;amp;nbsp;; address of y&lt;br /&gt;
     LDD R27,Y+1&lt;br /&gt;
     ST X,R24&amp;amp;nbsp;; store&lt;br /&gt;
    RET&amp;amp;nbsp;; ready&lt;br /&gt;
  [end]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um eine Funktion zu erstellen wird genauso verfahren&lt;br /&gt;
&lt;br /&gt;
Der Unterschied: eine Funktion gibt ein Ergebnis zurück, womit ein weiterer Parameter entsteht.&lt;br /&gt;
Dieser Rückgabeparameter wird automatisch generiert und trägt den Namen der Funktion.&lt;br /&gt;
Auf diese Weise kann das Ergebnis dem Funktionsnamen zugeordnet werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 Declare Function Test(byval x as byte , y as byte) as byte&lt;br /&gt;
Eine Virtuelle Variable namens Test wird erzeugt und auf den Soft-Stack mit Hilfe des Y-Zeigers gebracht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis der Funktion (test) würde an dieser Stelle so referenziert:&lt;br /&gt;
 LDD R26 , y + 0&lt;br /&gt;
 LDD R27 , y + 1&lt;br /&gt;
&lt;br /&gt;
Durch den bei der Funktion übergebenen Parameter x jedoch, ändert sich die Verschiebegröße auf Y und damit der Zugriff auf test zu &lt;br /&gt;
 y + 2 und y + 3,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
und nachdem die  Adresse des dritten Parameters y auf den Soft-Stack geschrieben wird, ändert sich der Verweis ebenfalls wieder:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 LDD R26 , y + 4&lt;br /&gt;
 LDD R27 , y + 5&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schlussendlich wird auf die Adresse von x im Soft-Stack so verwiesen,&lt;br /&gt;
  LDD r26 , y + 2&lt;br /&gt;
  LDD r27 , y + 3&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und auf y so.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  LDD R26 , y + 0&lt;br /&gt;
  LDD R27 , y + 1&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für '''Exit Sub''' oder '''Exit Function''' muss außerdem ein zusätliches Label angegeben werden das mit sub_ beginnt und mit dem Namen der Funktion oder der Routine endet.&lt;br /&gt;
Dem oben aufgeführten Beispiel entsprechend also:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  sub_test:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;LOCALS&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit lokalen Variablen arbeitet, wird es etwas komplizierter.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jede Adresse einer lokalen Variable wird auch auf den Soft-Stack geschrieben.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verwenden Sie nur eine lokale Variable,liegt dessen Adresse an&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  LDD R26, y + 0&lt;br /&gt;
  LDD R27, y + 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Die Referenzierung auf alle weiteren Parameter erhöht sich dadurch um 2, sodass sich der Zugiff auf die Adresse des Parameter y ändert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LDD R26 , Y + 0 nach LDD R26 , Y + 2&lt;br /&gt;
 LDD R27 , Y + 1 nach LDD R27 , y + 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn mehr als eine lokale Variable verwendet werden, muss für jede Weitere 2 hinzuaddiert werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Ende muss die Datei mit der Endung .lib abgespeichert werden.&lt;br /&gt;
Mit dem Lib-Mangager kann die neue Bibliothek in das lbx-Format kompiliert werden.&lt;br /&gt;
&lt;br /&gt;
Die jeweilige Declare Sub/Function Aweisung muss um die Funktion oder Subroutine verwenden zu können, im Programmcode eingefügt werden. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das folgende Programmbeispiel ist eine Kopie aus der Datei libdemo.bas&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  $lib &amp;quot;mylib.lib&amp;quot;                              'define the used library&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  $external Test                                'also define the used routines&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Declare Sub Test(byval X As Byte , Y As Byte) 'this is needed so the parameters will be placed correct on the stack&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Dim Z As Byte                                 'reserve some space&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Call Test(1 , Z)                              'call our own sub routine&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  'z will be 2 in the used example&lt;br /&gt;
 End&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie in ihrer Bibliothek Ports verwenden wollen, müssen für deren Adressen symbolische Konstanten anlegen.&lt;br /&gt;
Beispiel:&lt;br /&gt;
  .equ EEDR=$1d&lt;br /&gt;
  In R24, EEDR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
So erkennt der Library-Manager Port-Adressen beim Kompilieren.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Alternativ können Sie dem Mneminic ein * voranstellen. So wird diese Zeile beim Komilieren der Lib nicht mit Übersetzt. Die Umsetzung der Adresse des Registers würde dann erst zur Laufzeit geschehen.   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Umformung&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Ab Version 1.11.7.5 werden einige Mnemonics bei Bedarf anders umgesetzt, also umgeformt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispielsweise funktioniert SBIC nur mit normalen Port-Registern.&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Der Hintergrund ist, daß die Adresse nicht größer als 5 Bit sein darf da bereits 3 Bits schon für die Pin-Nummer 0-7 benötigt werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
SBIC arbeitet nur mit den unteren 32 IO-Registern der Adressen 0-31.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
SBIC funktioniert auf älteren AVR-Modellen problemlos.&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;Bei der Anwendung des Befehls auf neuere Modelle, bei denen die Portadressen höher sein können, z.B. beim ATMega128 - PortG, versagt dieser Befehl.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Es wird wo immer die Bits eines IO-Register manipuliert werden sollen, ein Arbeitsregister R[0-31] benötigt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Beispiel&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
 LDS R23,   PORTG&amp;amp;nbsp;; get value of PORTG register&lt;br /&gt;
 SBR R23,   128&amp;amp;nbsp;; set bit 7&lt;br /&gt;
 STS PORTG, R23&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mneminics die vom Compiler umgeformt werden,sind&amp;amp;nbsp;: IN, OUT, SBIC, SBIS, SBI and CBI.&amp;amp;nbsp; &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Der Compiler verwendet dafür immer das Register R23. Achten Sie darauf, daß dieses Register in solch einem Fall nicht zeitgleich für etwas anderes verwendet wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Spezielle Befehle&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
 ADR Label &amp;amp;nbsp;; Erzeugt eine Wortadresse einer Programmarke (Label)&lt;br /&gt;
&lt;br /&gt;
 ADR2 Label&amp;amp;nbsp;; Erzeugt eine Wortadresse einer Programmarke (Label) die mit 2 multipliziert ist um ein Byte zu adressieren.&amp;amp;nbsp; &lt;br /&gt;
              So lässt sich das Z-Register bequem zum gebrauch von(E)LPM-Befehlen laden.&lt;br /&gt;
&lt;br /&gt;
  .align &amp;amp;nbsp;; Diese Direktive richtet den Programmcode an eine Seitengrenze des Programmspeichers (der in 256 Byte großen Blöcken aufgeteilt ist)so aus,&lt;br /&gt;
            daß das niederwertige Byte (LSB) einer Adresse zu 0 wird.&lt;br /&gt;
            Wenn Daten an eine bestimmte Adresse geschrieben werden bei dem das LSB = 0 ist, kann ein Überlauf nur durch Prüfung des MSB festgestellt werden.  &lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Fundamentals/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Mixing_ASM_and_BASIC/de</id>
		<title>Mixing ASM and BASIC/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Mixing_ASM_and_BASIC/de"/>
				<updated>2013-03-04T22:04:24Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Laden von Label-Adressen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== '''BASIC und Assembler mischen''' ==&lt;br /&gt;
&lt;br /&gt;
  Dieses Kapitel darf nicht als Unterrichtung in Assemblerprogammierung verstanden werden. &lt;br /&gt;
  Wenn Sie ein spezielles Thema zur Verwendung  von Assembler in BASCOM vermissen, teilen Sie uns das per Email mit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BASCOM gestattet das mischen von BASIC mit Assembler-Code, was in den Fällen nützlich sein kann, in denen Sie vollen Einfluss auf den generierten Code nehmen wollen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nahezu alle Assembler-Mnemonics werden vom Compiler direkt unterstütz. Die Ausnahmen sind SWAP, CALL und OUT. Das sind reservierte BASIC-Befehle und haben Vorrang gegenüber Assembler-Mnemonics.&lt;br /&gt;
&lt;br /&gt;
Um diese Mnemonics verwenden zu können wird ihnen ein Ausrufezeichen (!) vorangestellt.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[File:Notice.jpg|notice]]Es wird empfohlen immer das&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;&amp;amp;nbsp;!&amp;amp;nbsp;&amp;lt;/span&amp;gt;oder einen $ASM … $End ASM –Block zu verwenden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    Dim a As Byte At &amp;amp;H60 'A is stored at location &amp;amp;H60&lt;br /&gt;
    Ldi R27 , $00 &amp;amp;nbsp; 'Load R27 with MSB of address&lt;br /&gt;
    Ldi R26 , $60 &amp;amp;nbsp; 'Load R26 with LSB of address&lt;br /&gt;
    Ld R1, X &amp;amp;nbsp; 'load memory location $60 into R1&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;!&amp;lt;/span&amp;gt;SWAP R1 &amp;amp;nbsp; 'swap nibbles&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie Sie sehen, wurde dem Menemonik SWAP ein Ausrufezeichen&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;!&amp;lt;/span&amp;gt;&amp;amp;nbsp; vorangestellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die andere Option ist die Verwendung eines einschließenden $ASM/ $END ASM - Blocks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;$ASM&amp;lt;/span&amp;gt;&lt;br /&gt;
    LDI R27 , $00 &amp;amp;nbsp; 'Load R27 with MSB of address&lt;br /&gt;
    LDI R26 , $60 &amp;amp;nbsp; 'Load R26 with LSB of address&lt;br /&gt;
    LDI R1  , X &amp;amp;nbsp; &amp;amp;nbsp;'load memory location $60 into R1&lt;br /&gt;
    SWAP R1 &amp;amp;nbsp; 'swap nibbles&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;$END ASM&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Assembler-Hilfsfunktion''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine spezielle Assembler-Hilfsfunktion unterstützt das Laden von Adressen in die Register X oder Z.  &lt;br /&gt;
Das Y-Register sollte nicht verwendet werden da dieses bereits als Zeiger auf den Software-Stack verwendet wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Dim A As Byte &amp;amp;nbsp;'reserve space&lt;br /&gt;
  LOADADR a, X &amp;amp;nbsp;'load address of variable named A into register pair X&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachfolgender Code hat den gleichen Effekt &amp;amp;nbsp;:&lt;br /&gt;
  LDI R26 , $60 'for example&amp;amp;nbsp;!&lt;br /&gt;
  LDI R27, $00 'for example&amp;amp;nbsp;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Von Bascom verwendete Register''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
R4 und R5  werden als Zeiger auf den Stack-Frame oder zur temporären Datensicherung verwendet.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
R6 dient zur Speicherung von Bit-Variablen:&lt;br /&gt;
&lt;br /&gt;
-  bit 0 = Flag für Integer/Word Umwandlungen&lt;br /&gt;
&lt;br /&gt;
-  bit 1 = Temporärer Bit-Speicher beim Tauschen von Bits&lt;br /&gt;
&lt;br /&gt;
-  bit 2 = Fehler-Bit (ERR - Variable)&lt;br /&gt;
&lt;br /&gt;
-  bit 3 = Anzeigen/Nicht Anzeigen - Flag bei dem INPUT-Befehl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
R8 und R9 dienen als Datenzeiger für den READ-Befehl.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Register werden Befehlsabhängig verwendet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Laden von Variablen-Adressen''' ==&lt;br /&gt;
&lt;br /&gt;
Um die Adresse einer Variable zu laden, muß dessen Name in geschwungenen Klammern eingeschlossen sein. &lt;br /&gt;
    Dim B As Bit&lt;br /&gt;
    LDS R16, {B} '{B} wird durch die Adresse der Variablen B ersetzt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um auf ein Bit zu verweisen, muss der Variablen der Ausdruck BIT. vorangestellt sein.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    SBRS R16 , BIT.B &amp;amp;nbsp;'Beachten sie den Punkt!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Da B das erste dimensionierte Bit ist, erhält B die Bitnummer 0.&lt;br /&gt;
Bits werden zu Bytes zusammengefasst gespeichert. Das erste dimensionierte Bit geht in das niederwertigste Bit ein, usw.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Laden von Label-Adressen''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um die Adresse eines Labels zu laden, schreiben sie&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LDI ZL, Low(lbl * 1)&lt;br /&gt;
 LDI ZH , High(lbl * 1)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wobei  ZL   auch R30, R24, R26, R28 oder R30, und ZH  gleichermaßen R31, R25, R27, R29 oder R31 sein kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das sind sogenannte Registerpaare mit denen  Zeiger gebildet werden können.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit einer LPM – Instruktion (LOAD-PROGRAMM_MEMORY) Daten aus dem Programmspeicher laden wollen, muss die Adresse mit 2 multipliziert werden, &lt;br /&gt;
da der Programmspeicher wortorganisiert ist (16Bit).&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 LDI ZL, Low(lbl * 2)&lt;br /&gt;
 LDI ZH , High(lbl * 2)&lt;br /&gt;
 LPM&amp;amp;nbsp;; get data into R0&lt;br /&gt;
 ....&lt;br /&gt;
 Lbl:&lt;br /&gt;
 .....&lt;br /&gt;
&lt;br /&gt;
== '''Einige wichtige Punkte''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um in Assembler zu programmieren müssen Atmel Mnemonics verwendet werden.&lt;br /&gt;
In den Datenblättern der jeweiligen Mikrocontroller finden sie den entsprechenden Befehlsvorrat.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Alle Befehle die eine Konstanten verwenden, arbeiten ausschließlich mit den oberen 16 Registern R16 bis R31.&lt;br /&gt;
&lt;br /&gt;
!LDI  R15, 12     funktioniert also nicht.      &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Der Befehl    SBR reg , K  &lt;br /&gt;
&lt;br /&gt;
K kann ein Wert von 0 bis 255 sein. So können mehrere Bits gleichzeitig gesetzt werden.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit Befehl SBI port , K   hingegen kann immer nur ein Bit setzen, da K nur 0 bis 7 sein kann.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Gleiche gilt für die Befehle CBR und CBI.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sie können für K ebenfalls symbolische Konstante verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  .equ myval = (10+2)/4&lt;br /&gt;
  ldi R24,myval+2 '5&lt;br /&gt;
  ldi R24,asc(&amp;quot;A&amp;quot;)+1&amp;amp;nbsp;; load with 66&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oder in BASIC mit CONST&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  CONST Myval = (10+2) / 4&lt;br /&gt;
  LDI R24, myval&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Bibliotheken (.lib) erstellen''' ==&lt;br /&gt;
&lt;br /&gt;
Wie erstellt man eine eigene Bibliothek und verwendet diese mit BASIC?&lt;br /&gt;
&lt;br /&gt;
Die Dateien zu diesem Beispiel finden sie im BASCOM-Installationsverzeichnis unter \SAMPLES\libdemo.bas und unter \LIB\mylib.lib. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zu Beginn bestimmen Sie die zu verwendenden Parameter und ihre Datentypen.&lt;br /&gt;
&lt;br /&gt;
Überlegen Sie außerdem ob die Parameter Byref oder Byval übergeben werden sollen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;ByRev&amp;quot; : Die Adresse der übergebenen Variable wird an eine Prozedur übergeben. So wird der Inhalt der Variable direkt bearbeitet. &lt;br /&gt;
&lt;br /&gt;
- &amp;quot;ByVal&amp;quot; : Eine Kopie des Parameterinhaltes wird übergeben. Der Inhalt der übergebenen Quellvariable bleibt unangetastet. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
Eine Subroutine namens &amp;quot;test&amp;quot; erwartet zwei Parameter:&lt;br /&gt;
&lt;br /&gt;
  x die byval übergeben wird (eine Kopie. Kopien werden temporär in den Stack-Fame-Bereich geschrieben) &lt;br /&gt;
  y die byref übergeben wird (die Adresse der Variablen)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen wird die Adresse der Variablen auf den SoftStack gebracht, welcher mit dem Y-Zeiger verwaltet wird. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der erste Parameter x (genauer: die Adresse seiner Kopie) wird dem Soft-Stack auferlegt.&lt;br /&gt;
&lt;br /&gt;
An diese Adresse gelangen sie durch:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 LDD R26 , y + 0&lt;br /&gt;
 LDD R27 , y + 1&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Die Adresse steht nun im Registerpaar X (R26,R27) oder im X-Zeiger.  &lt;br /&gt;
&lt;br /&gt;
Da ein zweiter Parameter, oder besser dessen Adresse ebenfalls auf dem Soft-Stack gebracht werden soll,&lt;br /&gt;
ändert sich jedoch die Verschiebegröße auf den Y-Zeiger um an die Adresse von x zu gelangen&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
x wird dadurch also so refenziert:&lt;br /&gt;
 LDD R26 , y + 2&lt;br /&gt;
 LDD R27 , y + 3&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein zuletzt übergebenen Paramter (hier y) wird stets so refernziert:&lt;br /&gt;
 LDD r26 , y + 0&lt;br /&gt;
 LDD r27 , y + 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schreiben Sie eine gewöhnliche Subprozedur, zusätzlich jedoch mit dem Namen der Prozedur in eckigen Klammern, wie im folgendem &lt;br /&gt;
Beispiel gezeigt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  [test]&lt;br /&gt;
    test:&lt;br /&gt;
     LDD R26,X+2&amp;amp;nbsp;; load address of x&lt;br /&gt;
     LDD R27,Y+3&lt;br /&gt;
     LD  R24,x&amp;amp;nbsp;; get value into r24&lt;br /&gt;
     INC R24&amp;amp;nbsp;; value + 1&lt;br /&gt;
     ST X,R24&amp;amp;nbsp;; put back&lt;br /&gt;
     LDD R26,Y+0&amp;amp;nbsp;; address of y&lt;br /&gt;
     LDD R27,Y+1&lt;br /&gt;
     ST X,R24&amp;amp;nbsp;; store&lt;br /&gt;
    RET&amp;amp;nbsp;; ready&lt;br /&gt;
  [end]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um eine Funktion zu erstellen wird genauso verfahren&lt;br /&gt;
&lt;br /&gt;
Der Unterschied: eine Funktion gibt ein Ergebnis zurück, womit ein weiterer Parameter entsteht.&lt;br /&gt;
Dieser Rückgabeparameter wird automatisch generiert und trägt den Namen der Funktion.&lt;br /&gt;
Auf diese Weise kann das Ergebnis dem Funktionsnamen zugeordnet werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 Declare Function Test(byval x as byte , y as byte) as byte&lt;br /&gt;
Eine Virtuelle Variable namens Test wird erzeugt und auf den Soft-Stack mit Hilfe des Y-Zeigers gebracht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis der Funktion (test) würde an dieser Stelle so referenziert:&lt;br /&gt;
 LDD R26 , y + 0&lt;br /&gt;
 LDD R27 , y + 1&lt;br /&gt;
&lt;br /&gt;
Durch den bei der Funktion übergebenen Parameter x jedoch, ändert sich die Verschiebegröße auf Y und damit der Zugriff auf test zu &lt;br /&gt;
 y + 2 und y + 3,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
und nachdem die  Adresse des dritten Parameters y auf den Soft-Stack geschrieben wird, ändert sich der Verweis ebenfalls wieder:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 LDD R26 , y + 4&lt;br /&gt;
 LDD R27 , y + 5&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schlussendlich wird auf die Adresse von x im Soft-Stack so verwiesen,&lt;br /&gt;
  LDD r26 , y + 2&lt;br /&gt;
  LDD r27 , y + 3&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und auf y so.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  LDD R26 , y + 0&lt;br /&gt;
  LDD R27 , y + 1&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für '''Exit Sub''' oder '''Exit Function''' muss außerdem ein zusätliches Label angegeben werden das mit sub_ beginnt und mit dem Namen der Funktion oder der Routine endet.&lt;br /&gt;
Dem oben aufgeführten Beispiel entsprechend also:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  sub_test:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;LOCALS&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit lokalen Variablen arbeitet, wird es etwas komplizierter.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jede Adresse einer lokalen Variable wird auch auf den Soft-Stack geschrieben.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verwenden Sie nur eine lokale Variable,liegt dessen Adresse an&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  LDD R26, y + 0&lt;br /&gt;
  LDD R27, y + 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Die Referenzierung auf alle weiteren Parameter erhöht sich dadurch um 2, sodass sich der Zugiff auf die Adresse des Parameter y ändert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LDD R26 , Y + 0 nach LDD R26 , Y + 2&lt;br /&gt;
 LDD R27 , Y + 1 nach LDD R27 , y + 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn mehr als eine lokale Variable verwendet werden, muss für jede Weitere 2 hinzuaddiert werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Ende muss die Datei mit der Endung .lib abgespeichert werden.&lt;br /&gt;
Mit dem Lib-Mangager kann die neue Bibliothek in das lbx-Format kompiliert werden.&lt;br /&gt;
&lt;br /&gt;
Die jeweilige Declare Sub/Function Aweisung muss um die Funktion oder Subroutine verwenden zu können, im Programmcode eingefügt werden. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das folgende Programmbeispiel ist eine Kopie aus der Datei libdemo.bas&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  $lib &amp;quot;mylib.lib&amp;quot;                              'define the used library&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  $external Test                                'also define the used routines&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Declare Sub Test(byval X As Byte , Y As Byte) 'this is needed so the parameters will be placed correct on the stack&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Dim Z As Byte                                 'reserve some space&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Call Test(1 , Z)                              'call our own sub routine&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  'z will be 2 in the used example&lt;br /&gt;
 End&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie in ihrer Bibliothek Ports verwenden wollen, müssen für deren Adressen symbolische Konstanten anlegen.&lt;br /&gt;
Beispiel:&lt;br /&gt;
  .equ EEDR=$1d&lt;br /&gt;
  In R24, EEDR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
So erkennt der Library-Manager Port-Adressen beim Kompilieren.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Alternativ können Sie dem Mneminic ein * voranstellen. So wird diese Zeile beim Komilieren der Lib nicht mit Übersetzt. Die Umsetzung der Adresse des Registers würde dann erst zur Laufzeit geschehen.   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Umformung&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Ab Version 1.11.7.5 werden einige Mnemonics bei Bedarf anders umgesetzt, also umgeformt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispielsweise funktioniert SBIC nur mit normalen Port-Registern.&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Der Hintergrund ist, daß die Adresse nicht größer als 5 Bit sein darf da bereits 3 Bits schon für die Pin-Nummer 0-7 benötigt werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
SBIC arbeitet nur mit den unteren 32 IO-Registern der Adressen 0-31.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
SBIC funktioniert auf älteren AVR-Modellen problemlos.&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;Bei der Anwendung des Befehls auf neuere Modelle, bei denen die Portadressen höher sein können, z.B. beim ATMega128 - PortG, versagt dieser Befehl.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Es wird wo immer die Bits eines IO-Register manipuliert werden sollen, ein Arbeitsregister R[0-31] benötigt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Beispiel&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
 LDS R23,   PORTG&amp;amp;nbsp;; get value of PORTG register&lt;br /&gt;
 SBR R23,   128&amp;amp;nbsp;; set bit 7&lt;br /&gt;
 STS PORTG, R23&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mneminics die vom Compiler umgeformt werden,sind&amp;amp;nbsp;: IN, OUT, SBIC, SBIS, SBI and CBI.&amp;amp;nbsp; &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Der Compiler verwendet dafür immer das Register R23. Achten Sie darauf, daß dieses Register in solch einem Fall nicht zeitgleich für etwas anderes verwendet wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Spezielle Befehle&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
 ADR Label &amp;amp;nbsp;; Erzeugt eine Wortadresse einer Programmarke (Label)&lt;br /&gt;
&lt;br /&gt;
 ADR2 Label&amp;amp;nbsp;; Erzeugt eine Wortadresse einer Programmarke (Label) die mit 2 multipliziert ist um ein Byte zu adressieren.&amp;amp;nbsp; &lt;br /&gt;
              So lässt sich das Z-Register bequem zum gebrauch von(E)LPM-Befehlen laden.&lt;br /&gt;
&lt;br /&gt;
  .align &amp;amp;nbsp;; Diese Direktive richtet den Programmcode an eine Seitengrenze des Programmspeichers (der in 256 Byte großen Blöcken aufgeteilt ist)so aus,&lt;br /&gt;
            daß das niederwertige Byte (LSB) einer Adresse zu 0 wird.&lt;br /&gt;
            Wenn Daten an eine bestimmte Adresse geschrieben werden bei dem das LSB = 0 ist, kann ein Überlauf nur durch Prüfung des MSB festgestellt werden.  &lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Fundamentals/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Mixing_ASM_and_BASIC/de</id>
		<title>Mixing ASM and BASIC/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Mixing_ASM_and_BASIC/de"/>
				<updated>2013-03-04T22:02:04Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* BASIC und Assembler mischen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== '''BASIC und Assembler mischen''' ==&lt;br /&gt;
&lt;br /&gt;
  Dieses Kapitel darf nicht als Unterrichtung in Assemblerprogammierung verstanden werden. &lt;br /&gt;
  Wenn Sie ein spezielles Thema zur Verwendung  von Assembler in BASCOM vermissen, teilen Sie uns das per Email mit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BASCOM gestattet das mischen von BASIC mit Assembler-Code, was in den Fällen nützlich sein kann, in denen Sie vollen Einfluss auf den generierten Code nehmen wollen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nahezu alle Assembler-Mnemonics werden vom Compiler direkt unterstütz. Die Ausnahmen sind SWAP, CALL und OUT. Das sind reservierte BASIC-Befehle und haben Vorrang gegenüber Assembler-Mnemonics.&lt;br /&gt;
&lt;br /&gt;
Um diese Mnemonics verwenden zu können wird ihnen ein Ausrufezeichen (!) vorangestellt.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[File:Notice.jpg|notice]]Es wird empfohlen immer das&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;&amp;amp;nbsp;!&amp;amp;nbsp;&amp;lt;/span&amp;gt;oder einen $ASM … $End ASM –Block zu verwenden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    Dim a As Byte At &amp;amp;H60 'A is stored at location &amp;amp;H60&lt;br /&gt;
    Ldi R27 , $00 &amp;amp;nbsp; 'Load R27 with MSB of address&lt;br /&gt;
    Ldi R26 , $60 &amp;amp;nbsp; 'Load R26 with LSB of address&lt;br /&gt;
    Ld R1, X &amp;amp;nbsp; 'load memory location $60 into R1&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;!&amp;lt;/span&amp;gt;SWAP R1 &amp;amp;nbsp; 'swap nibbles&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie Sie sehen, wurde dem Menemonik SWAP ein Ausrufezeichen&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;!&amp;lt;/span&amp;gt;&amp;amp;nbsp; vorangestellt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die andere Option ist die Verwendung eines einschließenden $ASM/ $END ASM - Blocks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;$ASM&amp;lt;/span&amp;gt;&lt;br /&gt;
    LDI R27 , $00 &amp;amp;nbsp; 'Load R27 with MSB of address&lt;br /&gt;
    LDI R26 , $60 &amp;amp;nbsp; 'Load R26 with LSB of address&lt;br /&gt;
    LDI R1  , X &amp;amp;nbsp; &amp;amp;nbsp;'load memory location $60 into R1&lt;br /&gt;
    SWAP R1 &amp;amp;nbsp; 'swap nibbles&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;$END ASM&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Assembler-Hilfsfunktion''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine spezielle Assembler-Hilfsfunktion unterstützt das Laden von Adressen in die Register X oder Z.  &lt;br /&gt;
Das Y-Register sollte nicht verwendet werden da dieses bereits als Zeiger auf den Software-Stack verwendet wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Dim A As Byte &amp;amp;nbsp;'reserve space&lt;br /&gt;
  LOADADR a, X &amp;amp;nbsp;'load address of variable named A into register pair X&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachfolgender Code hat den gleichen Effekt &amp;amp;nbsp;:&lt;br /&gt;
  LDI R26 , $60 'for example&amp;amp;nbsp;!&lt;br /&gt;
  LDI R27, $00 'for example&amp;amp;nbsp;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Von Bascom verwendete Register''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
R4 und R5  werden als Zeiger auf den Stack-Frame oder zur temporären Datensicherung verwendet.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
R6 dient zur Speicherung von Bit-Variablen:&lt;br /&gt;
&lt;br /&gt;
-  bit 0 = Flag für Integer/Word Umwandlungen&lt;br /&gt;
&lt;br /&gt;
-  bit 1 = Temporärer Bit-Speicher beim Tauschen von Bits&lt;br /&gt;
&lt;br /&gt;
-  bit 2 = Fehler-Bit (ERR - Variable)&lt;br /&gt;
&lt;br /&gt;
-  bit 3 = Anzeigen/Nicht Anzeigen - Flag bei dem INPUT-Befehl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
R8 und R9 dienen als Datenzeiger für den READ-Befehl.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Register werden Befehlsabhängig verwendet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Laden von Variablen-Adressen''' ==&lt;br /&gt;
&lt;br /&gt;
Um die Adresse einer Variable zu laden, muß dessen Name in geschwungenen Klammern eingeschlossen sein. &lt;br /&gt;
    Dim B As Bit&lt;br /&gt;
    LDS R16, {B} '{B} wird durch die Adresse der Variablen B ersetzt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um auf ein Bit zu verweisen, muss der Variablen der Ausdruck BIT. vorangestellt sein.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    SBRS R16 , BIT.B &amp;amp;nbsp;'Beachten sie den Punkt!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Da B das erste dimensionierte Bit ist, erhält B die Bitnummer 0.&lt;br /&gt;
Bits werden zu Bytes zusammengefasst gespeichert. Das erste dimensionierte Bit geht in das niederwertigste Bit ein, usw.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Laden von Label-Adressen''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um die Adresse eines Labels zu laden, schreiben sie&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LDI ZL, Low(lbl * 1)&lt;br /&gt;
 LDI ZH , High(lbl * 1)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wobei  ZL   auch R30, R24, R26, R28 oder R30, und ZH  gleichermaßen R31, R25, R27, R29 oder R31 sein kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das sind sogenannte Registerpaare mit denen  Zeiger gebildet werden können.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit einer LPM – Instruktion (LOAD-PROGRAMM_MEMORY) Daten aus dem Programmspeicher laden wollen, muss die Adresse mit 2 multipliziert werden, &lt;br /&gt;
da der Programmcode Wortorganisiert ist (16Bit).&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 LDI ZL, Low(lbl * 2)&lt;br /&gt;
 LDI ZH , High(lbl * 2)&lt;br /&gt;
 LPM&amp;amp;nbsp;; get data into R0&lt;br /&gt;
 ....&lt;br /&gt;
 Lbl:&lt;br /&gt;
 .....&lt;br /&gt;
&lt;br /&gt;
== '''Einige wichtige Punkte''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um in Assembler zu programmieren müssen Atmel Mnemonics verwendet werden.&lt;br /&gt;
In den Datenblättern der jeweiligen Mikrocontroller finden sie den entsprechenden Befehlsvorrat.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Alle Befehle die eine Konstanten verwenden, arbeiten ausschließlich mit den oberen 16 Registern R16 bis R31.&lt;br /&gt;
&lt;br /&gt;
!LDI  R15, 12     funktioniert also nicht.      &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Der Befehl    SBR reg , K  &lt;br /&gt;
&lt;br /&gt;
K kann ein Wert von 0 bis 255 sein. So können mehrere Bits gleichzeitig gesetzt werden.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit Befehl SBI port , K   hingegen kann immer nur ein Bit setzen, da K nur 0 bis 7 sein kann.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Gleiche gilt für die Befehle CBR und CBI.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sie können für K ebenfalls symbolische Konstante verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  .equ myval = (10+2)/4&lt;br /&gt;
  ldi R24,myval+2 '5&lt;br /&gt;
  ldi R24,asc(&amp;quot;A&amp;quot;)+1&amp;amp;nbsp;; load with 66&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oder in BASIC mit CONST&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  CONST Myval = (10+2) / 4&lt;br /&gt;
  LDI R24, myval&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Bibliotheken (.lib) erstellen''' ==&lt;br /&gt;
&lt;br /&gt;
Wie erstellt man eine eigene Bibliothek und verwendet diese mit BASIC?&lt;br /&gt;
&lt;br /&gt;
Die Dateien zu diesem Beispiel finden sie im BASCOM-Installationsverzeichnis unter \SAMPLES\libdemo.bas und unter \LIB\mylib.lib. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zu Beginn bestimmen Sie die zu verwendenden Parameter und ihre Datentypen.&lt;br /&gt;
&lt;br /&gt;
Überlegen Sie außerdem ob die Parameter Byref oder Byval übergeben werden sollen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;ByRev&amp;quot; : Die Adresse der übergebenen Variable wird an eine Prozedur übergeben. So wird der Inhalt der Variable direkt bearbeitet. &lt;br /&gt;
&lt;br /&gt;
- &amp;quot;ByVal&amp;quot; : Eine Kopie des Parameterinhaltes wird übergeben. Der Inhalt der übergebenen Quellvariable bleibt unangetastet. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
Eine Subroutine namens &amp;quot;test&amp;quot; erwartet zwei Parameter:&lt;br /&gt;
&lt;br /&gt;
  x die byval übergeben wird (eine Kopie. Kopien werden temporär in den Stack-Fame-Bereich geschrieben) &lt;br /&gt;
  y die byref übergeben wird (die Adresse der Variablen)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen wird die Adresse der Variablen auf den SoftStack gebracht, welcher mit dem Y-Zeiger verwaltet wird. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der erste Parameter x (genauer: die Adresse seiner Kopie) wird dem Soft-Stack auferlegt.&lt;br /&gt;
&lt;br /&gt;
An diese Adresse gelangen sie durch:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 LDD R26 , y + 0&lt;br /&gt;
 LDD R27 , y + 1&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Die Adresse steht nun im Registerpaar X (R26,R27) oder im X-Zeiger.  &lt;br /&gt;
&lt;br /&gt;
Da ein zweiter Parameter, oder besser dessen Adresse ebenfalls auf dem Soft-Stack gebracht werden soll,&lt;br /&gt;
ändert sich jedoch die Verschiebegröße auf den Y-Zeiger um an die Adresse von x zu gelangen&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
x wird dadurch also so refenziert:&lt;br /&gt;
 LDD R26 , y + 2&lt;br /&gt;
 LDD R27 , y + 3&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein zuletzt übergebenen Paramter (hier y) wird stets so refernziert:&lt;br /&gt;
 LDD r26 , y + 0&lt;br /&gt;
 LDD r27 , y + 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schreiben Sie eine gewöhnliche Subprozedur, zusätzlich jedoch mit dem Namen der Prozedur in eckigen Klammern, wie im folgendem &lt;br /&gt;
Beispiel gezeigt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  [test]&lt;br /&gt;
    test:&lt;br /&gt;
     LDD R26,X+2&amp;amp;nbsp;; load address of x&lt;br /&gt;
     LDD R27,Y+3&lt;br /&gt;
     LD  R24,x&amp;amp;nbsp;; get value into r24&lt;br /&gt;
     INC R24&amp;amp;nbsp;; value + 1&lt;br /&gt;
     ST X,R24&amp;amp;nbsp;; put back&lt;br /&gt;
     LDD R26,Y+0&amp;amp;nbsp;; address of y&lt;br /&gt;
     LDD R27,Y+1&lt;br /&gt;
     ST X,R24&amp;amp;nbsp;; store&lt;br /&gt;
    RET&amp;amp;nbsp;; ready&lt;br /&gt;
  [end]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um eine Funktion zu erstellen wird genauso verfahren&lt;br /&gt;
&lt;br /&gt;
Der Unterschied: eine Funktion gibt ein Ergebnis zurück, womit ein weiterer Parameter entsteht.&lt;br /&gt;
Dieser Rückgabeparameter wird automatisch generiert und trägt den Namen der Funktion.&lt;br /&gt;
Auf diese Weise kann das Ergebnis dem Funktionsnamen zugeordnet werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 Declare Function Test(byval x as byte , y as byte) as byte&lt;br /&gt;
Eine Virtuelle Variable namens Test wird erzeugt und auf den Soft-Stack mit Hilfe des Y-Zeigers gebracht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis der Funktion (test) würde an dieser Stelle so referenziert:&lt;br /&gt;
 LDD R26 , y + 0&lt;br /&gt;
 LDD R27 , y + 1&lt;br /&gt;
&lt;br /&gt;
Durch den bei der Funktion übergebenen Parameter x jedoch, ändert sich die Verschiebegröße auf Y und damit der Zugriff auf test zu &lt;br /&gt;
 y + 2 und y + 3,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
und nachdem die  Adresse des dritten Parameters y auf den Soft-Stack geschrieben wird, ändert sich der Verweis ebenfalls wieder:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
 LDD R26 , y + 4&lt;br /&gt;
 LDD R27 , y + 5&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schlussendlich wird auf die Adresse von x im Soft-Stack so verwiesen,&lt;br /&gt;
  LDD r26 , y + 2&lt;br /&gt;
  LDD r27 , y + 3&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und auf y so.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  LDD R26 , y + 0&lt;br /&gt;
  LDD R27 , y + 1&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für '''Exit Sub''' oder '''Exit Function''' muss außerdem ein zusätliches Label angegeben werden das mit sub_ beginnt und mit dem Namen der Funktion oder der Routine endet.&lt;br /&gt;
Dem oben aufgeführten Beispiel entsprechend also:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  sub_test:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;LOCALS&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit lokalen Variablen arbeitet, wird es etwas komplizierter.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jede Adresse einer lokalen Variable wird auch auf den Soft-Stack geschrieben.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verwenden Sie nur eine lokale Variable,liegt dessen Adresse an&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  LDD R26, y + 0&lt;br /&gt;
  LDD R27, y + 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Die Referenzierung auf alle weiteren Parameter erhöht sich dadurch um 2, sodass sich der Zugiff auf die Adresse des Parameter y ändert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 LDD R26 , Y + 0 nach LDD R26 , Y + 2&lt;br /&gt;
 LDD R27 , Y + 1 nach LDD R27 , y + 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn mehr als eine lokale Variable verwendet werden, muss für jede Weitere 2 hinzuaddiert werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Ende muss die Datei mit der Endung .lib abgespeichert werden.&lt;br /&gt;
Mit dem Lib-Mangager kann die neue Bibliothek in das lbx-Format kompiliert werden.&lt;br /&gt;
&lt;br /&gt;
Die jeweilige Declare Sub/Function Aweisung muss um die Funktion oder Subroutine verwenden zu können, im Programmcode eingefügt werden. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das folgende Programmbeispiel ist eine Kopie aus der Datei libdemo.bas&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  $lib &amp;quot;mylib.lib&amp;quot;                              'define the used library&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  $external Test                                'also define the used routines&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Declare Sub Test(byval X As Byte , Y As Byte) 'this is needed so the parameters will be placed correct on the stack&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Dim Z As Byte                                 'reserve some space&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  Call Test(1 , Z)                              'call our own sub routine&lt;br /&gt;
  &amp;amp;nbsp;&lt;br /&gt;
  'z will be 2 in the used example&lt;br /&gt;
 End&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie in ihrer Bibliothek Ports verwenden wollen, müssen für deren Adressen symbolische Konstanten anlegen.&lt;br /&gt;
Beispiel:&lt;br /&gt;
  .equ EEDR=$1d&lt;br /&gt;
  In R24, EEDR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
So erkennt der Library-Manager Port-Adressen beim Kompilieren.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Alternativ können Sie dem Mneminic ein * voranstellen. So wird diese Zeile beim Komilieren der Lib nicht mit Übersetzt. Die Umsetzung der Adresse des Registers würde dann erst zur Laufzeit geschehen.   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Umformung&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Ab Version 1.11.7.5 werden einige Mnemonics bei Bedarf anders umgesetzt, also umgeformt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispielsweise funktioniert SBIC nur mit normalen Port-Registern.&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Der Hintergrund ist, daß die Adresse nicht größer als 5 Bit sein darf da bereits 3 Bits schon für die Pin-Nummer 0-7 benötigt werden.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
SBIC arbeitet nur mit den unteren 32 IO-Registern der Adressen 0-31.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
SBIC funktioniert auf älteren AVR-Modellen problemlos.&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;Bei der Anwendung des Befehls auf neuere Modelle, bei denen die Portadressen höher sein können, z.B. beim ATMega128 - PortG, versagt dieser Befehl.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Es wird wo immer die Bits eines IO-Register manipuliert werden sollen, ein Arbeitsregister R[0-31] benötigt.&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Beispiel&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
 LDS R23,   PORTG&amp;amp;nbsp;; get value of PORTG register&lt;br /&gt;
 SBR R23,   128&amp;amp;nbsp;; set bit 7&lt;br /&gt;
 STS PORTG, R23&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mneminics die vom Compiler umgeformt werden,sind&amp;amp;nbsp;: IN, OUT, SBIC, SBIS, SBI and CBI.&amp;amp;nbsp; &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Der Compiler verwendet dafür immer das Register R23. Achten Sie darauf, daß dieses Register in solch einem Fall nicht zeitgleich für etwas anderes verwendet wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Spezielle Befehle&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
 ADR Label &amp;amp;nbsp;; Erzeugt eine Wortadresse einer Programmarke (Label)&lt;br /&gt;
&lt;br /&gt;
 ADR2 Label&amp;amp;nbsp;; Erzeugt eine Wortadresse einer Programmarke (Label) die mit 2 multipliziert ist um ein Byte zu adressieren.&amp;amp;nbsp; &lt;br /&gt;
              So lässt sich das Z-Register bequem zum gebrauch von(E)LPM-Befehlen laden.&lt;br /&gt;
&lt;br /&gt;
  .align &amp;amp;nbsp;; Diese Direktive richtet den Programmcode an eine Seitengrenze des Programmspeichers (der in 256 Byte großen Blöcken aufgeteilt ist)so aus,&lt;br /&gt;
            daß das niederwertige Byte (LSB) einer Adresse zu 0 wird.&lt;br /&gt;
            Wenn Daten an eine bestimmte Adresse geschrieben werden bei dem das LSB = 0 ist, kann ein Überlauf nur durch Prüfung des MSB festgestellt werden.  &lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Fundamentals/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/ADR2/de</id>
		<title>ADR2/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/ADR2/de"/>
				<updated>2013-03-04T21:57:51Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;REDIRECT [[ADR]]&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/STAND_%3FBERSETZUNG_(tempor%3Fr)</id>
		<title>STAND ?BERSETZUNG (tempor?r)</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/STAND_%3FBERSETZUNG_(tempor%3Fr)"/>
				<updated>2013-03-04T21:53:40Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MAIN MENUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  *Installation/de&lt;br /&gt;
 Übersetzt Installation of BASCOM/de&lt;br /&gt;
 Übersetzt Installation on multiple computers/de&lt;br /&gt;
 Übersetzt Move to new PC/de&lt;br /&gt;
 Übersetzt Updates/de&lt;br /&gt;
&lt;br /&gt;
  *BASCOM Language Fundamentals/de&lt;br /&gt;
 Übersetzt ASCII chart/de&lt;br /&gt;
 Übersetzt Assembler mnemonics/de&lt;br /&gt;
 Übersetzt Changes compared to BASCOM-8051/de&lt;br /&gt;
 Übersetzt Error Codes/de&lt;br /&gt;
 Übersetzt Keyword reference/de&lt;br /&gt;
 Übersetzt  Language Fundamentals/de&lt;br /&gt;
 Übersetzt Mixing ASM and BASIC/de&lt;br /&gt;
 Übersetzt Newbie problems/de&lt;br /&gt;
 No content?? Reserved Words/de&lt;br /&gt;
 Übersetzt Tips and tricks/de&lt;br /&gt;
&lt;br /&gt;
  *ASM Libraries and Add-Ons/de&lt;br /&gt;
 *AVR-DOS/de&lt;br /&gt;
 *BCCARD/de&lt;br /&gt;
 *CF Card/de&lt;br /&gt;
 *DATE TIME/de&lt;br /&gt;
 *Floating Point/de&lt;br /&gt;
 *I2C SLAVE/de&lt;br /&gt;
 *LCD/de&lt;br /&gt;
 *PS2-AT Mouse and Keyboard Emulation/de&lt;br /&gt;
 *SPI/de&lt;br /&gt;
 *USB/de&lt;br /&gt;
 EXTENDED I2C/de&lt;br /&gt;
 FM24C16/de&lt;br /&gt;
 FM24C64-256/de&lt;br /&gt;
 FM25C256/de&lt;br /&gt;
 HEXVAL lib/de&lt;br /&gt;
 I2C-TWI/de&lt;br /&gt;
 MCSBYTE/de&lt;br /&gt;
 MCSBYTEINT/de&lt;br /&gt;
 MODBUS Slave-Server/de&lt;br /&gt;
 TCPIP/de&lt;br /&gt;
&lt;br /&gt;
  *BASCOM HARDWARE/de&lt;br /&gt;
 *Chips/de&lt;br /&gt;
 *Reference Designs/de&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color: rgb(249, 249, 249); font-family: monospace, 'Courier New'; font-size: 11px; line-height: 1.3em;&amp;quot;&amp;gt;Übersetzt &amp;lt;/span&amp;gt;Adding XRAM to XMEGA using EBI/de&lt;br /&gt;
 Adding XRAM with External Memory Interface/de&lt;br /&gt;
 Additional Hardware/de&lt;br /&gt;
 Attaching an LCD Display/de&lt;br /&gt;
 AVR Internal Hardware Port B/de&lt;br /&gt;
 AVR Internal Hardware Port D/de&lt;br /&gt;
 AVR Internal Hardware TIMER0/de&lt;br /&gt;
 AVR Internal Hardware TIMER1/de&lt;br /&gt;
 AVR Internal Hardware Watchdog timer/de&lt;br /&gt;
 AVR Internal Hardware/de&lt;br /&gt;
 AVR Internal Registers/de&lt;br /&gt;
 Memory usage/de&lt;br /&gt;
 Power Up/de&lt;br /&gt;
 Using RS485/de&lt;br /&gt;
 Using the 1 WIRE protocol/de&lt;br /&gt;
 Using the I2C protocol/de&lt;br /&gt;
 Using the SPI protocol/de&lt;br /&gt;
 Übersetzt Using the UART/de&lt;br /&gt;
 Using USI (Universal Serial Interface)/de&lt;br /&gt;
&lt;br /&gt;
 *Tools/de&lt;br /&gt;
 LCD RGB-8 Converter/de&lt;br /&gt;
&lt;br /&gt;
 *BASCOM IDE/de&lt;br /&gt;
 *Options Compiler/de&lt;br /&gt;
 *Options Programmer/de&lt;br /&gt;
 *Plugins/de&lt;br /&gt;
 Übersetzt BASCOM Editor Keys/de&lt;br /&gt;
 Edit Copy/de&lt;br /&gt;
 Edit Cut/de&lt;br /&gt;
 Edit Encrypt Selected Code/de&lt;br /&gt;
 Edit Find Next/de&lt;br /&gt;
 Edit Find/de&lt;br /&gt;
 Edit Goto Bookmark/de&lt;br /&gt;
 Edit Goto/de&lt;br /&gt;
 Edit Indent Block/de&lt;br /&gt;
 Edit Paste/de&lt;br /&gt;
 Edit Redo/de&lt;br /&gt;
 Edit Remark Block/de&lt;br /&gt;
 Edit Replace/de&lt;br /&gt;
 Edit Toggle Bookmark/de&lt;br /&gt;
 Edit Undo/de&lt;br /&gt;
 Edit Unindent Block/de&lt;br /&gt;
 File Close/de&lt;br /&gt;
 File Exit/de&lt;br /&gt;
 File New/de&lt;br /&gt;
 File Open/de&lt;br /&gt;
 File Print Preview/de&lt;br /&gt;
 File Print/de&lt;br /&gt;
 File Project/de&lt;br /&gt;
 File Save As/de&lt;br /&gt;
 File Save/de&lt;br /&gt;
 Help About/de&lt;br /&gt;
 Help Credits/de&lt;br /&gt;
 Help Index/de&lt;br /&gt;
 Help Knowledge Base/de&lt;br /&gt;
 Help MCS Forum/de&lt;br /&gt;
 Help MCS Shop/de&lt;br /&gt;
 Help Support/de&lt;br /&gt;
 Help Update/de&lt;br /&gt;
 Options Communication/de&lt;br /&gt;
 Options Environment/de&lt;br /&gt;
 Options Monitor/de&lt;br /&gt;
 Options Printer/de&lt;br /&gt;
 Options Simulator/de&lt;br /&gt;
 Program Compile/de&lt;br /&gt;
 Program Development Order/de&lt;br /&gt;
 Program Send to Chip/de&lt;br /&gt;
 Program Show Result/de&lt;br /&gt;
 Program Simulate/de&lt;br /&gt;
 Program Syntax Check/de&lt;br /&gt;
 Running BASCOM-AVR/de&lt;br /&gt;
 Tools Batch Compile/de&lt;br /&gt;
 Tools Graphic Converter/de&lt;br /&gt;
 Tools LCD Designer/de&lt;br /&gt;
 Tools LIB Manager/de&lt;br /&gt;
 Tools PDF Update/de&lt;br /&gt;
 Tools Plugin Manager/de&lt;br /&gt;
 Tools Resource Editor/de&lt;br /&gt;
 Tools Stack Analyzer/de&lt;br /&gt;
 Tools Terminal Emulator/de&lt;br /&gt;
 View Code Explorer/de&lt;br /&gt;
 View Error Panel/de&lt;br /&gt;
 View PDF viewer/de&lt;br /&gt;
 View PinOut/de&lt;br /&gt;
 View Project Files/de&lt;br /&gt;
 View Tip/de&lt;br /&gt;
 Window Arrange Icons/de&lt;br /&gt;
 Window Cascade/de&lt;br /&gt;
 Window Minimize All/de&lt;br /&gt;
 Window Tile/de&lt;br /&gt;
 Windows Maximize All/de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 BASCOM-AVR Stichworte - DE Übersetzung&lt;br /&gt;
&lt;br /&gt;
 $AESKEY/de&lt;br /&gt;
 $ASM/de&lt;br /&gt;
 $BAUD/de&lt;br /&gt;
 $BAUD1/de&lt;br /&gt;
 $BGF/de&lt;br /&gt;
 $BIGSTRINGS/de&lt;br /&gt;
 $BOOT/de&lt;br /&gt;
 $CRYPT/de&lt;br /&gt;
 Übersetzt $CRYSTAL/de&lt;br /&gt;
 $DATA/de&lt;br /&gt;
 $DBG/de&lt;br /&gt;
 $DEFAULT/de&lt;br /&gt;
 $EEPLEAVE/de&lt;br /&gt;
 $EEPROM/de&lt;br /&gt;
 $EEPROMHEX/de&lt;br /&gt;
 $EEPROMSIZE/de&lt;br /&gt;
 $EXTERNAL/de&lt;br /&gt;
 $FILE/de&lt;br /&gt;
 $FRAMECHECK/de&lt;br /&gt;
 $FRAMEPROTECT/de&lt;br /&gt;
 $FRAMESIZE/de&lt;br /&gt;
 $HWCHECK/de&lt;br /&gt;
 $HWSTACK/de&lt;br /&gt;
 $INC/de&lt;br /&gt;
 $INCLUDE/de&lt;br /&gt;
 $INITMICRO/de&lt;br /&gt;
 Übersetzt $LCD/de&lt;br /&gt;
 $LCDPUTCTRL/de&lt;br /&gt;
 $LCDPUTDATA/de&lt;br /&gt;
 Übersetzt $LCDRS/de&lt;br /&gt;
 $LCDVFO/de&lt;br /&gt;
 $LIB/de&lt;br /&gt;
 $LOADER/de&lt;br /&gt;
 $LOADERSIZE/de&lt;br /&gt;
 $MAP/de&lt;br /&gt;
 $NOCOMPILE/de&lt;br /&gt;
 $NOFRAMEPROTECT/de&lt;br /&gt;
 $NOINIT/de&lt;br /&gt;
 $NORAMCLEAR/de&lt;br /&gt;
 $NORAMPZ/de&lt;br /&gt;
 $NOTRANSFORM/de&lt;br /&gt;
 $PROG/de&lt;br /&gt;
 $PROGRAMMER/de&lt;br /&gt;
 $PROJECTTIME/de&lt;br /&gt;
 $REGFILE/de&lt;br /&gt;
 $RESOURCE/de&lt;br /&gt;
 $ROMSTART/de&lt;br /&gt;
 $SERIALINPUT/de&lt;br /&gt;
 $SERIALINPUT1/de&lt;br /&gt;
 $SERIALINPUT2LCD/de&lt;br /&gt;
 $SERIALOUTPUT/de&lt;br /&gt;
 $SERIALOUTPUT1/de&lt;br /&gt;
 Übersetzt $SIM/de&lt;br /&gt;
 $SOFTCHECK/de&lt;br /&gt;
 $STACKDUMP/de&lt;br /&gt;
 $SWSTACK/de&lt;br /&gt;
 $TIMEOUT/de&lt;br /&gt;
 $TINY/de&lt;br /&gt;
 $VERSION/de&lt;br /&gt;
 $WAITSTATE/de&lt;br /&gt;
 $XA/de&lt;br /&gt;
 $XRAMSIZE/de&lt;br /&gt;
 $XRAMSTART/de&lt;br /&gt;
 $XTEAKEY/de&lt;br /&gt;
&lt;br /&gt;
 *AUTOCODE/de&lt;br /&gt;
 *IF ELSE ELSEIF ENDIF/de&lt;br /&gt;
&lt;br /&gt;
 1WIRECOUNT/de&lt;br /&gt;
 In Arbeit 1WREAD/de&lt;br /&gt;
 1WRESET/de&lt;br /&gt;
 1WSEARCHFIRST/de&lt;br /&gt;
 1WSEARCHNEXT/de&lt;br /&gt;
 1WVERIFY/de&lt;br /&gt;
 Übersetzt 1WWRITE/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt ABS/de&lt;br /&gt;
 ACOS/de&lt;br /&gt;
 ADR/de&lt;br /&gt;
 ADR2/de&lt;br /&gt;
 AESDECRYPT/de&lt;br /&gt;
 AESENCRYPT/de&lt;br /&gt;
 Übersetzt ALIAS/de&lt;br /&gt;
 Übersetzt ASC/de&lt;br /&gt;
 ASIN/de&lt;br /&gt;
 ATN/de&lt;br /&gt;
 ATN2/de&lt;br /&gt;
&lt;br /&gt;
 BASE64DEC/de&lt;br /&gt;
 BASE64ENC/de&lt;br /&gt;
 BAUD/de&lt;br /&gt;
 BAUD1/de&lt;br /&gt;
 BCD/de&lt;br /&gt;
 Übersetzt BIN/de&lt;br /&gt;
 BIN2GRAY/de&lt;br /&gt;
 Übersetzt BINVAL/de&lt;br /&gt;
 Übersetzt BITS/de&lt;br /&gt;
 BITWAIT/de&lt;br /&gt;
 BLOAD/de&lt;br /&gt;
 BOX/de&lt;br /&gt;
 BOXFILL/de&lt;br /&gt;
 BSAVE/de&lt;br /&gt;
 BUFSPACE/de&lt;br /&gt;
 BYVAL/de&lt;br /&gt;
&lt;br /&gt;
 CALL/de&lt;br /&gt;
 CANBAUD/de&lt;br /&gt;
 CANCLEARALLMOBS/de&lt;br /&gt;
 CANCLEARMOB/de&lt;br /&gt;
 CANGETINTS/de&lt;br /&gt;
 CANID/de&lt;br /&gt;
 CANRECEIVE/de&lt;br /&gt;
 CANRESET/de&lt;br /&gt;
 CANSELPAGE/de&lt;br /&gt;
 CANSEND/de&lt;br /&gt;
 Übersetzt CHARPOS/de&lt;br /&gt;
 CHDIR/de&lt;br /&gt;
 CHECKFLOAT/de&lt;br /&gt;
 CHECKSUM/de&lt;br /&gt;
 CHECKSUMXOR/de&lt;br /&gt;
 Übersetzt CHR/de&lt;br /&gt;
 CIRCLE/de&lt;br /&gt;
 CLEAR/de&lt;br /&gt;
 CLOCKDIVISION/de&lt;br /&gt;
 CLOSE/de&lt;br /&gt;
 CLOSESOCKET/de&lt;br /&gt;
 Übersetzt CLS/de&lt;br /&gt;
 CONFIG/de&lt;br /&gt;
 CONFIG 1WIRE/de&lt;br /&gt;
 CONFIG ACI/de&lt;br /&gt;
 CONFIG ACXX/de&lt;br /&gt;
 CONFIG ADC/de&lt;br /&gt;
 CONFIG ADCX/de&lt;br /&gt;
 CONFIG ATEMU/de&lt;br /&gt;
 CONFIG BASE/de&lt;br /&gt;
 CONFIG BCCARD/de&lt;br /&gt;
 CONFIG CANBUS/de&lt;br /&gt;
 CONFIG CANMOB/de&lt;br /&gt;
 CONFIG CLOCK/de&lt;br /&gt;
 CONFIG CLOCKDIV/de&lt;br /&gt;
 CONFIG COM1/de&lt;br /&gt;
 CONFIG COM2/de&lt;br /&gt;
 CONFIG COMX/de&lt;br /&gt;
 CONFIG DACX/de&lt;br /&gt;
 CONFIG DATE/de&lt;br /&gt;
 CONFIG DCF77/de&lt;br /&gt;
 CONFIG DEBOUNCE/de&lt;br /&gt;
 CONFIG DMA/de&lt;br /&gt;
 CONFIG DMACHX/de&lt;br /&gt;
 CONFIG DMXSLAVE/de&lt;br /&gt;
 CONFIG DP/de&lt;br /&gt;
 CONFIG EEPROM/de&lt;br /&gt;
 CONFIG ERROR/de&lt;br /&gt;
 CONFIG EVENT SYSTEM/de&lt;br /&gt;
 CONFIG EXTENDED PORT/de&lt;br /&gt;
 CONFIG GRAPHLCD/de&lt;br /&gt;
 CONFIG HITAG/de&lt;br /&gt;
 CONFIG I2CDELAY/de&lt;br /&gt;
 CONFIG I2CSLAVE/de&lt;br /&gt;
 CONFIG INPUT/de&lt;br /&gt;
 CONFIG INTX/de&lt;br /&gt;
 CONFIG KBD/de&lt;br /&gt;
 CONFIG KEYBOARD/de&lt;br /&gt;
 Übersetzt CONFIG LCD/de&lt;br /&gt;
 CONFIG LCDBUS/de&lt;br /&gt;
 Übersetzt CONFIG LCDMODE/de&lt;br /&gt;
 Übersetzt CONFIG LCDPIN/de&lt;br /&gt;
 CONFIG OSC/de&lt;br /&gt;
 CONFIG PORT/de&lt;br /&gt;
 Übersetzt CONFIG POWERMODE/de&lt;br /&gt;
 CONFIG POWER REDUCTION/de&lt;br /&gt;
 CONFIG PRINT/de&lt;br /&gt;
 CONFIG PRINTBIN/de&lt;br /&gt;
 CONFIG PRIORITY/de&lt;br /&gt;
 CONFIG PS2EMU/de&lt;br /&gt;
 CONFIG RC5/de&lt;br /&gt;
 CONFIG SCL/de&lt;br /&gt;
 CONFIG SDA/de&lt;br /&gt;
 CONFIG SERIALIN/de&lt;br /&gt;
 CONFIG SERIALOUT/de&lt;br /&gt;
 CONFIG SERVOS/de&lt;br /&gt;
 CONFIG SHIFTIN/de&lt;br /&gt;
 CONFIG SINGLE/de&lt;br /&gt;
 CONFIG SPI/de&lt;br /&gt;
 CONFIG SPIX/de&lt;br /&gt;
 CONFIG SUBMODE/de&lt;br /&gt;
 CONFIG SYSCLOCK/de&lt;br /&gt;
 CONFIG TCPIP/de&lt;br /&gt;
 CONFIG TCXX/de&lt;br /&gt;
 CONFIG TIMER0/de&lt;br /&gt;
 CONFIG TIMER1/de&lt;br /&gt;
 CONFIG TIMER2/de&lt;br /&gt;
 CONFIG TWI/de&lt;br /&gt;
 CONFIG TWISLAVE/de&lt;br /&gt;
 CONFIG USB/de&lt;br /&gt;
 CONFIG VPORT/de&lt;br /&gt;
 CONFIG WAITSUART/de&lt;br /&gt;
 CONFIG WATCHDOG/de&lt;br /&gt;
 CONFIG X10/de&lt;br /&gt;
 CONFIG XPIN/de&lt;br /&gt;
 CONFIG XRAM/de&lt;br /&gt;
 Übersetzt CONST/de&lt;br /&gt;
 Übersetzt COS/de&lt;br /&gt;
 COSH/de&lt;br /&gt;
 COUNTER0/de&lt;br /&gt;
 COUNTER1/de&lt;br /&gt;
 CPEEK/de&lt;br /&gt;
 CPEEKH/de&lt;br /&gt;
 CRC16/de&lt;br /&gt;
 CRC16UNI/de&lt;br /&gt;
 CRC32/de&lt;br /&gt;
 CRC8/de&lt;br /&gt;
 CRYSTAL/de&lt;br /&gt;
 Übersetzt CURSOR/de&lt;br /&gt;
 &lt;br /&gt;
 DATA/de&lt;br /&gt;
 DATE$/de&lt;br /&gt;
 DATE/de&lt;br /&gt;
 DAYOFWEEK/de&lt;br /&gt;
 DAYOFYEAR/de&lt;br /&gt;
 DBG/de&lt;br /&gt;
 DCF77TIMEZONE/de&lt;br /&gt;
 DEBOUNCE/de&lt;br /&gt;
 DEBUG/de&lt;br /&gt;
 DECLARE FUNCTION/de&lt;br /&gt;
 DECLARE SUB/de&lt;br /&gt;
 Übersetzt DECR/de&lt;br /&gt;
 DEFLCDCHAR/de&lt;br /&gt;
 DEFXXX/de&lt;br /&gt;
 DEG2RAD/de&lt;br /&gt;
 Übersetzt DELAY/de&lt;br /&gt;
 Übersetzt DELCHAR/de&lt;br /&gt;
 Übersetzt DELCHARS/de&lt;br /&gt;
 DIM/de&lt;br /&gt;
 DIR/de&lt;br /&gt;
 DISABLE/de&lt;br /&gt;
 DISKFREE/de&lt;br /&gt;
 DISKSIZE/de&lt;br /&gt;
 DISPLAY/de&lt;br /&gt;
 Übersetzt DO-LOOP/de&lt;br /&gt;
 DTMFOUT/de&lt;br /&gt;
 DriveCheck/de&lt;br /&gt;
 DriveGetIdentity/de&lt;br /&gt;
 DriveInit/de&lt;br /&gt;
 DriveReadSector/de&lt;br /&gt;
 DriveReset/de&lt;br /&gt;
 DriveWriteSector/de&lt;br /&gt;
&lt;br /&gt;
 ECHO/de&lt;br /&gt;
 ELSE/de&lt;br /&gt;
 ENABLE/de&lt;br /&gt;
 ENCODER/de&lt;br /&gt;
 Übersetzt END/de&lt;br /&gt;
 EOF/de&lt;br /&gt;
 EXIT/de&lt;br /&gt;
 EXP/de&lt;br /&gt;
 &lt;br /&gt;
 FILEATTR/de&lt;br /&gt;
 FILEDATE/de&lt;br /&gt;
 FILEDATETIME/de&lt;br /&gt;
 FILELEN/de&lt;br /&gt;
 FILETIME/de&lt;br /&gt;
 Übersetzt FIX/de&lt;br /&gt;
 FLUSH/de&lt;br /&gt;
 Übersetzt FOR-NEXT/de&lt;br /&gt;
 FORMAT/de&lt;br /&gt;
 Übersetzt FOURTHLINE/de&lt;br /&gt;
 Übersetzt FRAC/de&lt;br /&gt;
 FREEFILE/de&lt;br /&gt;
 FUSING/de&lt;br /&gt;
&lt;br /&gt;
 GET/de&lt;br /&gt;
 GETADC/de&lt;br /&gt;
 GETATKBD/de&lt;br /&gt;
 GETATKBDRAW/de&lt;br /&gt;
 GETDSTIP/de&lt;br /&gt;
 GETDSTPORT/de&lt;br /&gt;
 GETKBD/de&lt;br /&gt;
 GETRC/de&lt;br /&gt;
 GETRC5/de&lt;br /&gt;
 GETREG/de&lt;br /&gt;
 GETSOCKET/de&lt;br /&gt;
 GETTCPREGS/de&lt;br /&gt;
 GLCDCMD/de&lt;br /&gt;
 GLCDDATA/de&lt;br /&gt;
 Übersetzt GOSUB/de&lt;br /&gt;
 Übersetzt GOTO/de&lt;br /&gt;
 GRAY2BIN/de&lt;br /&gt;
 &lt;br /&gt;
 Übersetzt HEX/de&lt;br /&gt;
 Übersetzt HEXVAL/de&lt;br /&gt;
 Übersetzt HIGH/de&lt;br /&gt;
 Übersetzt HIGHW/de&lt;br /&gt;
 Übersetzt HOME/de&lt;br /&gt;
 &lt;br /&gt;
 I2CINIT/de&lt;br /&gt;
 I2CRBYTE/de&lt;br /&gt;
 I2CRECEIVE/de&lt;br /&gt;
 I2CREPSTART/de&lt;br /&gt;
 I2CSEND/de&lt;br /&gt;
 I2CSTART/de&lt;br /&gt;
 I2CSTOP/de&lt;br /&gt;
 I2CWBYTE/de&lt;br /&gt;
 Übersetzt IDLE/de&lt;br /&gt;
 Übersetzt IF-THEN-ELSE-END IF/de&lt;br /&gt;
 Übersetzt INCR/de&lt;br /&gt;
 INITFILESYSTEM/de&lt;br /&gt;
 Übersetzt INITLCD/de&lt;br /&gt;
 Übersetzt INKEY/de&lt;br /&gt;
 INP/de&lt;br /&gt;
 INPUT/de&lt;br /&gt;
 INPUTBIN/de&lt;br /&gt;
 INPUTHEX/de&lt;br /&gt;
 INSERTCHAR/de&lt;br /&gt;
 INSTR/de&lt;br /&gt;
 Übersetzt INT/de&lt;br /&gt;
 IP2STR/de&lt;br /&gt;
 Übersetzt ISCHARWAITING/de&lt;br /&gt;
&lt;br /&gt;
 KILL/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt LCASE/de&lt;br /&gt;
 Übersetzt LCD/de&lt;br /&gt;
 Übersetzt LCDAT/de&lt;br /&gt;
 Übersetzt LCDAUTODIM/de&lt;br /&gt;
 Übersetzt LCDCMD/de&lt;br /&gt;
 Übersetzt LCDCONTRAST/de&lt;br /&gt;
 Übersetzt LCDDATA/de&lt;br /&gt;
 Übersetzt LEFT/de&lt;br /&gt;
 Übersetzt LEN/de&lt;br /&gt;
 Übersetzt LINE/de&lt;br /&gt;
 Übersetzt LINEINPUT/de&lt;br /&gt;
 ?? LINE INPUT/de&lt;br /&gt;
 Übersetzt LOAD/de&lt;br /&gt;
 Übersetzt LOADADR/de&lt;br /&gt;
 Übersetzt LOADLABEL/de&lt;br /&gt;
 Übersetzt LOADWORDADR/de&lt;br /&gt;
 Übersetzt LOC/de&lt;br /&gt;
 Übersetzt LOCAL/de&lt;br /&gt;
 Übersetzt LOCATE/de&lt;br /&gt;
 Übersetzt LOF/de&lt;br /&gt;
 Übersetzt LOG/de&lt;br /&gt;
 Übersetzt LOG10/de&lt;br /&gt;
 Übersetzt LOOKDOWN/de&lt;br /&gt;
 Übersetzt LOOKUP/de&lt;br /&gt;
 Übersetzt LOOKUPSTR/de&lt;br /&gt;
 Übersetzt LOW/de&lt;br /&gt;
 Übersetzt LOWERLINE/de&lt;br /&gt;
 Übersetzt LTRIM/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt MACRO/de&lt;br /&gt;
 Übersetzt MAKEBCD/de&lt;br /&gt;
 Übersetzt MAKEDEC/de&lt;br /&gt;
 Übersetzt MAKEINT/de&lt;br /&gt;
 MAKEMODBUS/de&lt;br /&gt;
 MAKETCP/de&lt;br /&gt;
 MAX/de&lt;br /&gt;
 MEMCOPY/de&lt;br /&gt;
 Übersetzt MID/de&lt;br /&gt;
 MIN/de&lt;br /&gt;
 MKDIR/de&lt;br /&gt;
 MOD/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt NBITS/de&lt;br /&gt;
 &lt;br /&gt;
 ON INTERRUPT/de&lt;br /&gt;
 ON VALUE/de&lt;br /&gt;
 OPEN/de&lt;br /&gt;
 OUT/de&lt;br /&gt;
&lt;br /&gt;
 PEEK/de&lt;br /&gt;
 POKE/de&lt;br /&gt;
 POPALL/de&lt;br /&gt;
 POWER/de&lt;br /&gt;
 Übersetzt POWERDOWN/de&lt;br /&gt;
 Übersetzt POWERSAVE/de&lt;br /&gt;
 Übersetzt POWER MODE/de&lt;br /&gt;
 PRINT/de&lt;br /&gt;
 PRINTBIN/de&lt;br /&gt;
 PS2MOUSEXY/de&lt;br /&gt;
 PSET/de&lt;br /&gt;
 PULSEIN/de&lt;br /&gt;
 PULSEOUT/de&lt;br /&gt;
 PUSHALL/de&lt;br /&gt;
 PUT/de&lt;br /&gt;
&lt;br /&gt;
 QUOTE/de&lt;br /&gt;
 &lt;br /&gt;
 RAD2DEG/de&lt;br /&gt;
 RC5SEND/de&lt;br /&gt;
 RC5SENDEXT/de&lt;br /&gt;
 RC6SEND/de&lt;br /&gt;
 READ/de&lt;br /&gt;
 READEEPROM/de&lt;br /&gt;
 READHITAG/de&lt;br /&gt;
 READMAGCARD/de&lt;br /&gt;
 READSIG/de&lt;br /&gt;
 Übersetzt REM/de&lt;br /&gt;
 REPLACECHARS/de&lt;br /&gt;
 Übersetzt RESET/de&lt;br /&gt;
 RESTORE/de&lt;br /&gt;
 RETURN/de&lt;br /&gt;
 Übersetzt RIGHT/de&lt;br /&gt;
 RMDIR/de&lt;br /&gt;
 RND/de&lt;br /&gt;
 ROTATE/de&lt;br /&gt;
 Übersetzt ROUND/de&lt;br /&gt;
 RTRIM/de&lt;br /&gt;
 &lt;br /&gt;
 SECELAPSED/de&lt;br /&gt;
 SECOFDAY/de&lt;br /&gt;
 SEEK/de&lt;br /&gt;
 SELECT-CASE-END SELECT/de&lt;br /&gt;
 SENDSCAN/de&lt;br /&gt;
 SENDSCANKBD/de&lt;br /&gt;
 SERIN/de&lt;br /&gt;
 SEROUT/de&lt;br /&gt;
 Übersetzt SET/de&lt;br /&gt;
 SETFONT/de&lt;br /&gt;
 SETIPPROTOCOL/de&lt;br /&gt;
 SETREG/de&lt;br /&gt;
 SETTCP/de&lt;br /&gt;
 SETTCPREGS/de&lt;br /&gt;
 Übersetzt SGN/de&lt;br /&gt;
 SHIFT/de&lt;br /&gt;
 SHIFTCURSOR/de&lt;br /&gt;
 SHIFTIN/de&lt;br /&gt;
 SHIFTLCD/de&lt;br /&gt;
 SHIFTOUT/de&lt;br /&gt;
 SHOWPIC/de&lt;br /&gt;
 SHOWPICE/de&lt;br /&gt;
 Übersetzt SIN/de&lt;br /&gt;
 SINH/de&lt;br /&gt;
 SNTP/de&lt;br /&gt;
 SOCKETCLOSE/de&lt;br /&gt;
 SOCKETCONNECT/de&lt;br /&gt;
 SOCKETDISCONNECT/de&lt;br /&gt;
 SOCKETLISTEN/de&lt;br /&gt;
 SOCKETSTAT/de&lt;br /&gt;
 SONYSEND/de&lt;br /&gt;
 SORT/de&lt;br /&gt;
 Übersetzt SOUND/de&lt;br /&gt;
 Übersetzt SPACE/de&lt;br /&gt;
 Übersetzt SPC/de&lt;br /&gt;
 SPIIN/de&lt;br /&gt;
 SPIINIT/de&lt;br /&gt;
 SPIMOVE/de&lt;br /&gt;
 SPIOUT/de&lt;br /&gt;
 Übersetzt SPLIT/de&lt;br /&gt;
 SQR/de&lt;br /&gt;
 Übersetzt START/de&lt;br /&gt;
 STCHECK/de&lt;br /&gt;
 Übersetzt STOP/de&lt;br /&gt;
 Übersetzt STR/de&lt;br /&gt;
 STR2DIGITS/de&lt;br /&gt;
 STRING/de&lt;br /&gt;
 Übersetzt SUB/de&lt;br /&gt;
 SWAP/de&lt;br /&gt;
 SYSDAY/de&lt;br /&gt;
 SYSSEC/de&lt;br /&gt;
 SYSSECELAPSED/de&lt;br /&gt;
 &lt;br /&gt;
 Übersetzt TAN/de&lt;br /&gt;
 TANH/de&lt;br /&gt;
 TCPCHECKSUM/de&lt;br /&gt;
 TCPREAD/de&lt;br /&gt;
 TCPREADHEADER/de&lt;br /&gt;
 TCPWRITE/de&lt;br /&gt;
 TCPWRITESTR/de&lt;br /&gt;
 Übersetzt THIRDLINE/de&lt;br /&gt;
 TIME$/de&lt;br /&gt;
 TIME/de&lt;br /&gt;
 Übersetzt TOGGLE/de&lt;br /&gt;
 TRIM/de&lt;br /&gt;
 &lt;br /&gt;
 UCASE/de&lt;br /&gt;
 UDPREAD/de&lt;br /&gt;
 UDPREADHEADER/de&lt;br /&gt;
 UDPWRITE/de&lt;br /&gt;
 UDPWRITESTR/de&lt;br /&gt;
 Übersetzt UPPERLINE/de&lt;br /&gt;
 Übersetzt VAL/de&lt;br /&gt;
 VARPTR/de&lt;br /&gt;
 VER/de&lt;br /&gt;
 VERSION/de&lt;br /&gt;
 &lt;br /&gt;
 Übersetzt WAIT/de&lt;br /&gt;
 Übersetzt WAITKEY/de&lt;br /&gt;
 Übersetzt WAITMS/de&lt;br /&gt;
 Übersetzt WAITUS/de&lt;br /&gt;
 Übersetzt WHILE-WEND/de&lt;br /&gt;
 WRITE/de&lt;br /&gt;
 WRITEEEPROM/de&lt;br /&gt;
&lt;br /&gt;
 X10DETECT/de&lt;br /&gt;
 X10SEND/de&lt;br /&gt;
 XTEADECODE/de&lt;br /&gt;
 XTEAENCODE/de&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/LTRIM/de</id>
		<title>LTRIM/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/LTRIM/de"/>
				<updated>2013-03-04T21:53:00Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Partial Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Gibt eine Kopie eines Strings ohne führende Leerzeichen zurück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;LTRIM&amp;lt;/span&amp;gt;( org )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;488&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; style=&amp;quot;width: 65px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 414px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
String der den Rückgabewert empfängt.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; style=&amp;quot;width: 65px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Org&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 414px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Ein String dessen führende Leezeichen entfernt werden.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[RTRIM]]&amp;amp;nbsp;,&amp;amp;nbsp;[[TRIM]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;ASM&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
NONE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Teilbeispiel&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
Dim S As String * 6&lt;br /&gt;
S =&amp;quot; AB &amp;quot;&lt;br /&gt;
Print Ltrim(s)&lt;br /&gt;
Print Rtrim(s)&lt;br /&gt;
Print Trim(s)&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/LTRIM/de</id>
		<title>LTRIM/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/LTRIM/de"/>
				<updated>2013-03-04T21:52:40Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Gibt eine Kopie eines Strings ohne führende Leerzeichen zurück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;LTRIM&amp;lt;/span&amp;gt;( org )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;488&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; style=&amp;quot;width: 65px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 414px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
String der den Rückgabewert empfängt.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; style=&amp;quot;width: 65px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Org&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 414px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Ein String dessen führende Leezeichen entfernt werden.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[RTRIM]]&amp;amp;nbsp;,&amp;amp;nbsp;[[TRIM]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;ASM&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
NONE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Partial Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
Dim S As String * 6&lt;br /&gt;
S =&amp;quot; AB &amp;quot;&lt;br /&gt;
Print Ltrim(s)&lt;br /&gt;
Print Rtrim(s)&lt;br /&gt;
Print Trim(s)&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/LTRIM/de</id>
		<title>LTRIM/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/LTRIM/de"/>
				<updated>2013-03-04T21:52:13Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Remarks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Gibt eine Kopie eines Strings ohne führende Leerzeichen zurück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;LTRIM&amp;lt;/span&amp;gt;( org )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;488&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; style=&amp;quot;width: 65px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 414px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
String der den Rückgabewert empfängt.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; style=&amp;quot;width: 65px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Org&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 414px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Ein String dessen führende Leezeichen entfernt werden.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[RTRIM]]&amp;amp;nbsp;,&amp;amp;nbsp;[[TRIM]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;ASM&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
NONE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Partial Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
Dim S As String * 6&lt;br /&gt;
S =&amp;quot; AB &amp;quot;&lt;br /&gt;
Print Ltrim(s)&lt;br /&gt;
Print Rtrim(s)&lt;br /&gt;
Print Trim(s)&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/LTRIM/de</id>
		<title>LTRIM/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/LTRIM/de"/>
				<updated>2013-03-04T21:50:38Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Remarks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Gibt eine Kopie eines Strings ohne führende Leerzeichen zurück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;LTRIM&amp;lt;/span&amp;gt;( org )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Remarks&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;488&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; style=&amp;quot;width: 65px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 414px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
String die den Rückgabewert empfängt.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; style=&amp;quot;width: 65px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Org&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 414px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Ein String dessen führende Leezeichen entfernt werden.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[RTRIM]]&amp;amp;nbsp;,&amp;amp;nbsp;[[TRIM]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;ASM&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
NONE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Partial Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
Dim S As String * 6&lt;br /&gt;
S =&amp;quot; AB &amp;quot;&lt;br /&gt;
Print Ltrim(s)&lt;br /&gt;
Print Rtrim(s)&lt;br /&gt;
Print Trim(s)&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/LTRIM/de</id>
		<title>LTRIM/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/LTRIM/de"/>
				<updated>2013-03-04T21:49:04Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* (**COPIED FROM ENGLISH PAGE**) = */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Gibt eine Kopie eines Strings ohne führende Leerzeichen zurück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;LTRIM&amp;lt;/span&amp;gt;( org )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Remarks&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;488&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; style=&amp;quot;width: 65px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 414px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
String that receives the result.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; style=&amp;quot;width: 65px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Org&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 414px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
The string to remove the leading spaces from&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[RTRIM]]&amp;amp;nbsp;,&amp;amp;nbsp;[[TRIM]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;ASM&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
NONE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Partial Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
Dim S As String * 6&lt;br /&gt;
S =&amp;quot; AB &amp;quot;&lt;br /&gt;
Print Ltrim(s)&lt;br /&gt;
Print Rtrim(s)&lt;br /&gt;
Print Trim(s)&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/STAND_%3FBERSETZUNG_(tempor%3Fr)</id>
		<title>STAND ?BERSETZUNG (tempor?r)</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/STAND_%3FBERSETZUNG_(tempor%3Fr)"/>
				<updated>2013-03-04T21:47:37Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MAIN MENUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  *Installation/de&lt;br /&gt;
 Übersetzt Installation of BASCOM/de&lt;br /&gt;
 Übersetzt Installation on multiple computers/de&lt;br /&gt;
 Übersetzt Move to new PC/de&lt;br /&gt;
 Übersetzt Updates/de&lt;br /&gt;
&lt;br /&gt;
  *BASCOM Language Fundamentals/de&lt;br /&gt;
 Übersetzt ASCII chart/de&lt;br /&gt;
 Übersetzt Assembler mnemonics/de&lt;br /&gt;
 Übersetzt Changes compared to BASCOM-8051/de&lt;br /&gt;
 Übersetzt Error Codes/de&lt;br /&gt;
 Übersetzt Keyword reference/de&lt;br /&gt;
 Übersetzt  Language Fundamentals/de&lt;br /&gt;
 Übersetzt Mixing ASM and BASIC/de&lt;br /&gt;
 Übersetzt Newbie problems/de&lt;br /&gt;
 No content?? Reserved Words/de&lt;br /&gt;
 Übersetzt Tips and tricks/de&lt;br /&gt;
&lt;br /&gt;
  *ASM Libraries and Add-Ons/de&lt;br /&gt;
 *AVR-DOS/de&lt;br /&gt;
 *BCCARD/de&lt;br /&gt;
 *CF Card/de&lt;br /&gt;
 *DATE TIME/de&lt;br /&gt;
 *Floating Point/de&lt;br /&gt;
 *I2C SLAVE/de&lt;br /&gt;
 *LCD/de&lt;br /&gt;
 *PS2-AT Mouse and Keyboard Emulation/de&lt;br /&gt;
 *SPI/de&lt;br /&gt;
 *USB/de&lt;br /&gt;
 EXTENDED I2C/de&lt;br /&gt;
 FM24C16/de&lt;br /&gt;
 FM24C64-256/de&lt;br /&gt;
 FM25C256/de&lt;br /&gt;
 HEXVAL lib/de&lt;br /&gt;
 I2C-TWI/de&lt;br /&gt;
 MCSBYTE/de&lt;br /&gt;
 MCSBYTEINT/de&lt;br /&gt;
 MODBUS Slave-Server/de&lt;br /&gt;
 TCPIP/de&lt;br /&gt;
&lt;br /&gt;
  *BASCOM HARDWARE/de&lt;br /&gt;
 *Chips/de&lt;br /&gt;
 *Reference Designs/de&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color: rgb(249, 249, 249); font-family: monospace, 'Courier New'; font-size: 11px; line-height: 1.3em;&amp;quot;&amp;gt;Übersetzt &amp;lt;/span&amp;gt;Adding XRAM to XMEGA using EBI/de&lt;br /&gt;
 Adding XRAM with External Memory Interface/de&lt;br /&gt;
 Additional Hardware/de&lt;br /&gt;
 Attaching an LCD Display/de&lt;br /&gt;
 AVR Internal Hardware Port B/de&lt;br /&gt;
 AVR Internal Hardware Port D/de&lt;br /&gt;
 AVR Internal Hardware TIMER0/de&lt;br /&gt;
 AVR Internal Hardware TIMER1/de&lt;br /&gt;
 AVR Internal Hardware Watchdog timer/de&lt;br /&gt;
 AVR Internal Hardware/de&lt;br /&gt;
 AVR Internal Registers/de&lt;br /&gt;
 Memory usage/de&lt;br /&gt;
 Power Up/de&lt;br /&gt;
 Using RS485/de&lt;br /&gt;
 Using the 1 WIRE protocol/de&lt;br /&gt;
 Using the I2C protocol/de&lt;br /&gt;
 Using the SPI protocol/de&lt;br /&gt;
 Übersetzt Using the UART/de&lt;br /&gt;
 Using USI (Universal Serial Interface)/de&lt;br /&gt;
&lt;br /&gt;
 *Tools/de&lt;br /&gt;
 LCD RGB-8 Converter/de&lt;br /&gt;
&lt;br /&gt;
 *BASCOM IDE/de&lt;br /&gt;
 *Options Compiler/de&lt;br /&gt;
 *Options Programmer/de&lt;br /&gt;
 *Plugins/de&lt;br /&gt;
 Übersetzt BASCOM Editor Keys/de&lt;br /&gt;
 Edit Copy/de&lt;br /&gt;
 Edit Cut/de&lt;br /&gt;
 Edit Encrypt Selected Code/de&lt;br /&gt;
 Edit Find Next/de&lt;br /&gt;
 Edit Find/de&lt;br /&gt;
 Edit Goto Bookmark/de&lt;br /&gt;
 Edit Goto/de&lt;br /&gt;
 Edit Indent Block/de&lt;br /&gt;
 Edit Paste/de&lt;br /&gt;
 Edit Redo/de&lt;br /&gt;
 Edit Remark Block/de&lt;br /&gt;
 Edit Replace/de&lt;br /&gt;
 Edit Toggle Bookmark/de&lt;br /&gt;
 Edit Undo/de&lt;br /&gt;
 Edit Unindent Block/de&lt;br /&gt;
 File Close/de&lt;br /&gt;
 File Exit/de&lt;br /&gt;
 File New/de&lt;br /&gt;
 File Open/de&lt;br /&gt;
 File Print Preview/de&lt;br /&gt;
 File Print/de&lt;br /&gt;
 File Project/de&lt;br /&gt;
 File Save As/de&lt;br /&gt;
 File Save/de&lt;br /&gt;
 Help About/de&lt;br /&gt;
 Help Credits/de&lt;br /&gt;
 Help Index/de&lt;br /&gt;
 Help Knowledge Base/de&lt;br /&gt;
 Help MCS Forum/de&lt;br /&gt;
 Help MCS Shop/de&lt;br /&gt;
 Help Support/de&lt;br /&gt;
 Help Update/de&lt;br /&gt;
 Options Communication/de&lt;br /&gt;
 Options Environment/de&lt;br /&gt;
 Options Monitor/de&lt;br /&gt;
 Options Printer/de&lt;br /&gt;
 Options Simulator/de&lt;br /&gt;
 Program Compile/de&lt;br /&gt;
 Program Development Order/de&lt;br /&gt;
 Program Send to Chip/de&lt;br /&gt;
 Program Show Result/de&lt;br /&gt;
 Program Simulate/de&lt;br /&gt;
 Program Syntax Check/de&lt;br /&gt;
 Running BASCOM-AVR/de&lt;br /&gt;
 Tools Batch Compile/de&lt;br /&gt;
 Tools Graphic Converter/de&lt;br /&gt;
 Tools LCD Designer/de&lt;br /&gt;
 Tools LIB Manager/de&lt;br /&gt;
 Tools PDF Update/de&lt;br /&gt;
 Tools Plugin Manager/de&lt;br /&gt;
 Tools Resource Editor/de&lt;br /&gt;
 Tools Stack Analyzer/de&lt;br /&gt;
 Tools Terminal Emulator/de&lt;br /&gt;
 View Code Explorer/de&lt;br /&gt;
 View Error Panel/de&lt;br /&gt;
 View PDF viewer/de&lt;br /&gt;
 View PinOut/de&lt;br /&gt;
 View Project Files/de&lt;br /&gt;
 View Tip/de&lt;br /&gt;
 Window Arrange Icons/de&lt;br /&gt;
 Window Cascade/de&lt;br /&gt;
 Window Minimize All/de&lt;br /&gt;
 Window Tile/de&lt;br /&gt;
 Windows Maximize All/de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 BASCOM-AVR Stichworte - DE Übersetzung&lt;br /&gt;
&lt;br /&gt;
 $AESKEY/de&lt;br /&gt;
 $ASM/de&lt;br /&gt;
 $BAUD/de&lt;br /&gt;
 $BAUD1/de&lt;br /&gt;
 $BGF/de&lt;br /&gt;
 $BIGSTRINGS/de&lt;br /&gt;
 $BOOT/de&lt;br /&gt;
 $CRYPT/de&lt;br /&gt;
 Übersetzt $CRYSTAL/de&lt;br /&gt;
 $DATA/de&lt;br /&gt;
 $DBG/de&lt;br /&gt;
 $DEFAULT/de&lt;br /&gt;
 $EEPLEAVE/de&lt;br /&gt;
 $EEPROM/de&lt;br /&gt;
 $EEPROMHEX/de&lt;br /&gt;
 $EEPROMSIZE/de&lt;br /&gt;
 $EXTERNAL/de&lt;br /&gt;
 $FILE/de&lt;br /&gt;
 $FRAMECHECK/de&lt;br /&gt;
 $FRAMEPROTECT/de&lt;br /&gt;
 $FRAMESIZE/de&lt;br /&gt;
 $HWCHECK/de&lt;br /&gt;
 $HWSTACK/de&lt;br /&gt;
 $INC/de&lt;br /&gt;
 $INCLUDE/de&lt;br /&gt;
 $INITMICRO/de&lt;br /&gt;
 Übersetzt $LCD/de&lt;br /&gt;
 $LCDPUTCTRL/de&lt;br /&gt;
 $LCDPUTDATA/de&lt;br /&gt;
 Übersetzt $LCDRS/de&lt;br /&gt;
 $LCDVFO/de&lt;br /&gt;
 $LIB/de&lt;br /&gt;
 $LOADER/de&lt;br /&gt;
 $LOADERSIZE/de&lt;br /&gt;
 $MAP/de&lt;br /&gt;
 $NOCOMPILE/de&lt;br /&gt;
 $NOFRAMEPROTECT/de&lt;br /&gt;
 $NOINIT/de&lt;br /&gt;
 $NORAMCLEAR/de&lt;br /&gt;
 $NORAMPZ/de&lt;br /&gt;
 $NOTRANSFORM/de&lt;br /&gt;
 $PROG/de&lt;br /&gt;
 $PROGRAMMER/de&lt;br /&gt;
 $PROJECTTIME/de&lt;br /&gt;
 $REGFILE/de&lt;br /&gt;
 $RESOURCE/de&lt;br /&gt;
 $ROMSTART/de&lt;br /&gt;
 $SERIALINPUT/de&lt;br /&gt;
 $SERIALINPUT1/de&lt;br /&gt;
 $SERIALINPUT2LCD/de&lt;br /&gt;
 $SERIALOUTPUT/de&lt;br /&gt;
 $SERIALOUTPUT1/de&lt;br /&gt;
 Übersetzt $SIM/de&lt;br /&gt;
 $SOFTCHECK/de&lt;br /&gt;
 $STACKDUMP/de&lt;br /&gt;
 $SWSTACK/de&lt;br /&gt;
 $TIMEOUT/de&lt;br /&gt;
 $TINY/de&lt;br /&gt;
 $VERSION/de&lt;br /&gt;
 $WAITSTATE/de&lt;br /&gt;
 $XA/de&lt;br /&gt;
 $XRAMSIZE/de&lt;br /&gt;
 $XRAMSTART/de&lt;br /&gt;
 $XTEAKEY/de&lt;br /&gt;
&lt;br /&gt;
 *AUTOCODE/de&lt;br /&gt;
 *IF ELSE ELSEIF ENDIF/de&lt;br /&gt;
&lt;br /&gt;
 1WIRECOUNT/de&lt;br /&gt;
 In Arbeit 1WREAD/de&lt;br /&gt;
 1WRESET/de&lt;br /&gt;
 1WSEARCHFIRST/de&lt;br /&gt;
 1WSEARCHNEXT/de&lt;br /&gt;
 1WVERIFY/de&lt;br /&gt;
 Übersetzt 1WWRITE/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt ABS/de&lt;br /&gt;
 ACOS/de&lt;br /&gt;
 ADR/de&lt;br /&gt;
 ADR2/de&lt;br /&gt;
 AESDECRYPT/de&lt;br /&gt;
 AESENCRYPT/de&lt;br /&gt;
 Übersetzt ALIAS/de&lt;br /&gt;
 Übersetzt ASC/de&lt;br /&gt;
 ASIN/de&lt;br /&gt;
 ATN/de&lt;br /&gt;
 ATN2/de&lt;br /&gt;
&lt;br /&gt;
 BASE64DEC/de&lt;br /&gt;
 BASE64ENC/de&lt;br /&gt;
 BAUD/de&lt;br /&gt;
 BAUD1/de&lt;br /&gt;
 BCD/de&lt;br /&gt;
 Übersetzt BIN/de&lt;br /&gt;
 BIN2GRAY/de&lt;br /&gt;
 Übersetzt BINVAL/de&lt;br /&gt;
 Übersetzt BITS/de&lt;br /&gt;
 BITWAIT/de&lt;br /&gt;
 BLOAD/de&lt;br /&gt;
 BOX/de&lt;br /&gt;
 BOXFILL/de&lt;br /&gt;
 BSAVE/de&lt;br /&gt;
 BUFSPACE/de&lt;br /&gt;
 BYVAL/de&lt;br /&gt;
&lt;br /&gt;
 CALL/de&lt;br /&gt;
 CANBAUD/de&lt;br /&gt;
 CANCLEARALLMOBS/de&lt;br /&gt;
 CANCLEARMOB/de&lt;br /&gt;
 CANGETINTS/de&lt;br /&gt;
 CANID/de&lt;br /&gt;
 CANRECEIVE/de&lt;br /&gt;
 CANRESET/de&lt;br /&gt;
 CANSELPAGE/de&lt;br /&gt;
 CANSEND/de&lt;br /&gt;
 Übersetzt CHARPOS/de&lt;br /&gt;
 CHDIR/de&lt;br /&gt;
 CHECKFLOAT/de&lt;br /&gt;
 CHECKSUM/de&lt;br /&gt;
 CHECKSUMXOR/de&lt;br /&gt;
 Übersetzt CHR/de&lt;br /&gt;
 CIRCLE/de&lt;br /&gt;
 CLEAR/de&lt;br /&gt;
 CLOCKDIVISION/de&lt;br /&gt;
 CLOSE/de&lt;br /&gt;
 CLOSESOCKET/de&lt;br /&gt;
 Übersetzt CLS/de&lt;br /&gt;
 CONFIG/de&lt;br /&gt;
 CONFIG 1WIRE/de&lt;br /&gt;
 CONFIG ACI/de&lt;br /&gt;
 CONFIG ACXX/de&lt;br /&gt;
 CONFIG ADC/de&lt;br /&gt;
 CONFIG ADCX/de&lt;br /&gt;
 CONFIG ATEMU/de&lt;br /&gt;
 CONFIG BASE/de&lt;br /&gt;
 CONFIG BCCARD/de&lt;br /&gt;
 CONFIG CANBUS/de&lt;br /&gt;
 CONFIG CANMOB/de&lt;br /&gt;
 CONFIG CLOCK/de&lt;br /&gt;
 CONFIG CLOCKDIV/de&lt;br /&gt;
 CONFIG COM1/de&lt;br /&gt;
 CONFIG COM2/de&lt;br /&gt;
 CONFIG COMX/de&lt;br /&gt;
 CONFIG DACX/de&lt;br /&gt;
 CONFIG DATE/de&lt;br /&gt;
 CONFIG DCF77/de&lt;br /&gt;
 CONFIG DEBOUNCE/de&lt;br /&gt;
 CONFIG DMA/de&lt;br /&gt;
 CONFIG DMACHX/de&lt;br /&gt;
 CONFIG DMXSLAVE/de&lt;br /&gt;
 CONFIG DP/de&lt;br /&gt;
 CONFIG EEPROM/de&lt;br /&gt;
 CONFIG ERROR/de&lt;br /&gt;
 CONFIG EVENT SYSTEM/de&lt;br /&gt;
 CONFIG EXTENDED PORT/de&lt;br /&gt;
 CONFIG GRAPHLCD/de&lt;br /&gt;
 CONFIG HITAG/de&lt;br /&gt;
 CONFIG I2CDELAY/de&lt;br /&gt;
 CONFIG I2CSLAVE/de&lt;br /&gt;
 CONFIG INPUT/de&lt;br /&gt;
 CONFIG INTX/de&lt;br /&gt;
 CONFIG KBD/de&lt;br /&gt;
 CONFIG KEYBOARD/de&lt;br /&gt;
 Übersetzt CONFIG LCD/de&lt;br /&gt;
 CONFIG LCDBUS/de&lt;br /&gt;
 Übersetzt CONFIG LCDMODE/de&lt;br /&gt;
 Übersetzt CONFIG LCDPIN/de&lt;br /&gt;
 CONFIG OSC/de&lt;br /&gt;
 CONFIG PORT/de&lt;br /&gt;
 Übersetzt CONFIG POWERMODE/de&lt;br /&gt;
 CONFIG POWER REDUCTION/de&lt;br /&gt;
 CONFIG PRINT/de&lt;br /&gt;
 CONFIG PRINTBIN/de&lt;br /&gt;
 CONFIG PRIORITY/de&lt;br /&gt;
 CONFIG PS2EMU/de&lt;br /&gt;
 CONFIG RC5/de&lt;br /&gt;
 CONFIG SCL/de&lt;br /&gt;
 CONFIG SDA/de&lt;br /&gt;
 CONFIG SERIALIN/de&lt;br /&gt;
 CONFIG SERIALOUT/de&lt;br /&gt;
 CONFIG SERVOS/de&lt;br /&gt;
 CONFIG SHIFTIN/de&lt;br /&gt;
 CONFIG SINGLE/de&lt;br /&gt;
 CONFIG SPI/de&lt;br /&gt;
 CONFIG SPIX/de&lt;br /&gt;
 CONFIG SUBMODE/de&lt;br /&gt;
 CONFIG SYSCLOCK/de&lt;br /&gt;
 CONFIG TCPIP/de&lt;br /&gt;
 CONFIG TCXX/de&lt;br /&gt;
 CONFIG TIMER0/de&lt;br /&gt;
 CONFIG TIMER1/de&lt;br /&gt;
 CONFIG TIMER2/de&lt;br /&gt;
 CONFIG TWI/de&lt;br /&gt;
 CONFIG TWISLAVE/de&lt;br /&gt;
 CONFIG USB/de&lt;br /&gt;
 CONFIG VPORT/de&lt;br /&gt;
 CONFIG WAITSUART/de&lt;br /&gt;
 CONFIG WATCHDOG/de&lt;br /&gt;
 CONFIG X10/de&lt;br /&gt;
 CONFIG XPIN/de&lt;br /&gt;
 CONFIG XRAM/de&lt;br /&gt;
 Übersetzt CONST/de&lt;br /&gt;
 Übersetzt COS/de&lt;br /&gt;
 COSH/de&lt;br /&gt;
 COUNTER0/de&lt;br /&gt;
 COUNTER1/de&lt;br /&gt;
 CPEEK/de&lt;br /&gt;
 CPEEKH/de&lt;br /&gt;
 CRC16/de&lt;br /&gt;
 CRC16UNI/de&lt;br /&gt;
 CRC32/de&lt;br /&gt;
 CRC8/de&lt;br /&gt;
 CRYSTAL/de&lt;br /&gt;
 Übersetzt CURSOR/de&lt;br /&gt;
 &lt;br /&gt;
 DATA/de&lt;br /&gt;
 DATE$/de&lt;br /&gt;
 DATE/de&lt;br /&gt;
 DAYOFWEEK/de&lt;br /&gt;
 DAYOFYEAR/de&lt;br /&gt;
 DBG/de&lt;br /&gt;
 DCF77TIMEZONE/de&lt;br /&gt;
 DEBOUNCE/de&lt;br /&gt;
 DEBUG/de&lt;br /&gt;
 DECLARE FUNCTION/de&lt;br /&gt;
 DECLARE SUB/de&lt;br /&gt;
 Übersetzt DECR/de&lt;br /&gt;
 DEFLCDCHAR/de&lt;br /&gt;
 DEFXXX/de&lt;br /&gt;
 DEG2RAD/de&lt;br /&gt;
 Übersetzt DELAY/de&lt;br /&gt;
 Übersetzt DELCHAR/de&lt;br /&gt;
 Übersetzt DELCHARS/de&lt;br /&gt;
 DIM/de&lt;br /&gt;
 DIR/de&lt;br /&gt;
 DISABLE/de&lt;br /&gt;
 DISKFREE/de&lt;br /&gt;
 DISKSIZE/de&lt;br /&gt;
 DISPLAY/de&lt;br /&gt;
 Übersetzt DO-LOOP/de&lt;br /&gt;
 DTMFOUT/de&lt;br /&gt;
 DriveCheck/de&lt;br /&gt;
 DriveGetIdentity/de&lt;br /&gt;
 DriveInit/de&lt;br /&gt;
 DriveReadSector/de&lt;br /&gt;
 DriveReset/de&lt;br /&gt;
 DriveWriteSector/de&lt;br /&gt;
&lt;br /&gt;
 ECHO/de&lt;br /&gt;
 ELSE/de&lt;br /&gt;
 ENABLE/de&lt;br /&gt;
 ENCODER/de&lt;br /&gt;
 Übersetzt END/de&lt;br /&gt;
 EOF/de&lt;br /&gt;
 EXIT/de&lt;br /&gt;
 EXP/de&lt;br /&gt;
 &lt;br /&gt;
 FILEATTR/de&lt;br /&gt;
 FILEDATE/de&lt;br /&gt;
 FILEDATETIME/de&lt;br /&gt;
 FILELEN/de&lt;br /&gt;
 FILETIME/de&lt;br /&gt;
 Übersetzt FIX/de&lt;br /&gt;
 FLUSH/de&lt;br /&gt;
 Übersetzt FOR-NEXT/de&lt;br /&gt;
 FORMAT/de&lt;br /&gt;
 Übersetzt FOURTHLINE/de&lt;br /&gt;
 Übersetzt FRAC/de&lt;br /&gt;
 FREEFILE/de&lt;br /&gt;
 FUSING/de&lt;br /&gt;
&lt;br /&gt;
 GET/de&lt;br /&gt;
 GETADC/de&lt;br /&gt;
 GETATKBD/de&lt;br /&gt;
 GETATKBDRAW/de&lt;br /&gt;
 GETDSTIP/de&lt;br /&gt;
 GETDSTPORT/de&lt;br /&gt;
 GETKBD/de&lt;br /&gt;
 GETRC/de&lt;br /&gt;
 GETRC5/de&lt;br /&gt;
 GETREG/de&lt;br /&gt;
 GETSOCKET/de&lt;br /&gt;
 GETTCPREGS/de&lt;br /&gt;
 GLCDCMD/de&lt;br /&gt;
 GLCDDATA/de&lt;br /&gt;
 Übersetzt GOSUB/de&lt;br /&gt;
 Übersetzt GOTO/de&lt;br /&gt;
 GRAY2BIN/de&lt;br /&gt;
 &lt;br /&gt;
 Übersetzt HEX/de&lt;br /&gt;
 Übersetzt HEXVAL/de&lt;br /&gt;
 Übersetzt HIGH/de&lt;br /&gt;
 Übersetzt HIGHW/de&lt;br /&gt;
 Übersetzt HOME/de&lt;br /&gt;
 &lt;br /&gt;
 I2CINIT/de&lt;br /&gt;
 I2CRBYTE/de&lt;br /&gt;
 I2CRECEIVE/de&lt;br /&gt;
 I2CREPSTART/de&lt;br /&gt;
 I2CSEND/de&lt;br /&gt;
 I2CSTART/de&lt;br /&gt;
 I2CSTOP/de&lt;br /&gt;
 I2CWBYTE/de&lt;br /&gt;
 Übersetzt IDLE/de&lt;br /&gt;
 Übersetzt IF-THEN-ELSE-END IF/de&lt;br /&gt;
 Übersetzt INCR/de&lt;br /&gt;
 INITFILESYSTEM/de&lt;br /&gt;
 Übersetzt INITLCD/de&lt;br /&gt;
 Übersetzt INKEY/de&lt;br /&gt;
 INP/de&lt;br /&gt;
 INPUT/de&lt;br /&gt;
 INPUTBIN/de&lt;br /&gt;
 INPUTHEX/de&lt;br /&gt;
 INSERTCHAR/de&lt;br /&gt;
 INSTR/de&lt;br /&gt;
 Übersetzt INT/de&lt;br /&gt;
 IP2STR/de&lt;br /&gt;
 Übersetzt ISCHARWAITING/de&lt;br /&gt;
&lt;br /&gt;
 KILL/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt LCASE/de&lt;br /&gt;
 Übersetzt LCD/de&lt;br /&gt;
 Übersetzt LCDAT/de&lt;br /&gt;
 Übersetzt LCDAUTODIM/de&lt;br /&gt;
 Übersetzt LCDCMD/de&lt;br /&gt;
 Übersetzt LCDCONTRAST/de&lt;br /&gt;
 Übersetzt LCDDATA/de&lt;br /&gt;
 Übersetzt LEFT/de&lt;br /&gt;
 Übersetzt LEN/de&lt;br /&gt;
 Übersetzt LINE/de&lt;br /&gt;
 Übersetzt LINEINPUT/de&lt;br /&gt;
 ?? LINE INPUT/de&lt;br /&gt;
 Übersetzt LOAD/de&lt;br /&gt;
 Übersetzt LOADADR/de&lt;br /&gt;
 Übersetzt LOADLABEL/de&lt;br /&gt;
 Übersetzt LOADWORDADR/de&lt;br /&gt;
 Übersetzt LOC/de&lt;br /&gt;
 Übersetzt LOCAL/de&lt;br /&gt;
 Übersetzt LOCATE/de&lt;br /&gt;
 Übersetzt LOF/de&lt;br /&gt;
 Übersetzt LOG/de&lt;br /&gt;
 Übersetzt LOG10/de&lt;br /&gt;
 Übersetzt LOOKDOWN/de&lt;br /&gt;
 Übersetzt LOOKUP/de&lt;br /&gt;
 Übersetzt LOOKUPSTR/de&lt;br /&gt;
 Übersetzt LOW/de&lt;br /&gt;
 Übersetzt LOWERLINE/de&lt;br /&gt;
 LTRIM/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt MACRO/de&lt;br /&gt;
 Übersetzt MAKEBCD/de&lt;br /&gt;
 Übersetzt MAKEDEC/de&lt;br /&gt;
 Übersetzt MAKEINT/de&lt;br /&gt;
 MAKEMODBUS/de&lt;br /&gt;
 MAKETCP/de&lt;br /&gt;
 MAX/de&lt;br /&gt;
 MEMCOPY/de&lt;br /&gt;
 Übersetzt MID/de&lt;br /&gt;
 MIN/de&lt;br /&gt;
 MKDIR/de&lt;br /&gt;
 MOD/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt NBITS/de&lt;br /&gt;
 &lt;br /&gt;
 ON INTERRUPT/de&lt;br /&gt;
 ON VALUE/de&lt;br /&gt;
 OPEN/de&lt;br /&gt;
 OUT/de&lt;br /&gt;
&lt;br /&gt;
 PEEK/de&lt;br /&gt;
 POKE/de&lt;br /&gt;
 POPALL/de&lt;br /&gt;
 POWER/de&lt;br /&gt;
 Übersetzt POWERDOWN/de&lt;br /&gt;
 Übersetzt POWERSAVE/de&lt;br /&gt;
 Übersetzt POWER MODE/de&lt;br /&gt;
 PRINT/de&lt;br /&gt;
 PRINTBIN/de&lt;br /&gt;
 PS2MOUSEXY/de&lt;br /&gt;
 PSET/de&lt;br /&gt;
 PULSEIN/de&lt;br /&gt;
 PULSEOUT/de&lt;br /&gt;
 PUSHALL/de&lt;br /&gt;
 PUT/de&lt;br /&gt;
&lt;br /&gt;
 QUOTE/de&lt;br /&gt;
 &lt;br /&gt;
 RAD2DEG/de&lt;br /&gt;
 RC5SEND/de&lt;br /&gt;
 RC5SENDEXT/de&lt;br /&gt;
 RC6SEND/de&lt;br /&gt;
 READ/de&lt;br /&gt;
 READEEPROM/de&lt;br /&gt;
 READHITAG/de&lt;br /&gt;
 READMAGCARD/de&lt;br /&gt;
 READSIG/de&lt;br /&gt;
 Übersetzt REM/de&lt;br /&gt;
 REPLACECHARS/de&lt;br /&gt;
 Übersetzt RESET/de&lt;br /&gt;
 RESTORE/de&lt;br /&gt;
 RETURN/de&lt;br /&gt;
 Übersetzt RIGHT/de&lt;br /&gt;
 RMDIR/de&lt;br /&gt;
 RND/de&lt;br /&gt;
 ROTATE/de&lt;br /&gt;
 Übersetzt ROUND/de&lt;br /&gt;
 RTRIM/de&lt;br /&gt;
 &lt;br /&gt;
 SECELAPSED/de&lt;br /&gt;
 SECOFDAY/de&lt;br /&gt;
 SEEK/de&lt;br /&gt;
 SELECT-CASE-END SELECT/de&lt;br /&gt;
 SENDSCAN/de&lt;br /&gt;
 SENDSCANKBD/de&lt;br /&gt;
 SERIN/de&lt;br /&gt;
 SEROUT/de&lt;br /&gt;
 Übersetzt SET/de&lt;br /&gt;
 SETFONT/de&lt;br /&gt;
 SETIPPROTOCOL/de&lt;br /&gt;
 SETREG/de&lt;br /&gt;
 SETTCP/de&lt;br /&gt;
 SETTCPREGS/de&lt;br /&gt;
 Übersetzt SGN/de&lt;br /&gt;
 SHIFT/de&lt;br /&gt;
 SHIFTCURSOR/de&lt;br /&gt;
 SHIFTIN/de&lt;br /&gt;
 SHIFTLCD/de&lt;br /&gt;
 SHIFTOUT/de&lt;br /&gt;
 SHOWPIC/de&lt;br /&gt;
 SHOWPICE/de&lt;br /&gt;
 Übersetzt SIN/de&lt;br /&gt;
 SINH/de&lt;br /&gt;
 SNTP/de&lt;br /&gt;
 SOCKETCLOSE/de&lt;br /&gt;
 SOCKETCONNECT/de&lt;br /&gt;
 SOCKETDISCONNECT/de&lt;br /&gt;
 SOCKETLISTEN/de&lt;br /&gt;
 SOCKETSTAT/de&lt;br /&gt;
 SONYSEND/de&lt;br /&gt;
 SORT/de&lt;br /&gt;
 Übersetzt SOUND/de&lt;br /&gt;
 Übersetzt SPACE/de&lt;br /&gt;
 Übersetzt SPC/de&lt;br /&gt;
 SPIIN/de&lt;br /&gt;
 SPIINIT/de&lt;br /&gt;
 SPIMOVE/de&lt;br /&gt;
 SPIOUT/de&lt;br /&gt;
 Übersetzt SPLIT/de&lt;br /&gt;
 SQR/de&lt;br /&gt;
 Übersetzt START/de&lt;br /&gt;
 STCHECK/de&lt;br /&gt;
 Übersetzt STOP/de&lt;br /&gt;
 Übersetzt STR/de&lt;br /&gt;
 STR2DIGITS/de&lt;br /&gt;
 STRING/de&lt;br /&gt;
 Übersetzt SUB/de&lt;br /&gt;
 SWAP/de&lt;br /&gt;
 SYSDAY/de&lt;br /&gt;
 SYSSEC/de&lt;br /&gt;
 SYSSECELAPSED/de&lt;br /&gt;
 &lt;br /&gt;
 Übersetzt TAN/de&lt;br /&gt;
 TANH/de&lt;br /&gt;
 TCPCHECKSUM/de&lt;br /&gt;
 TCPREAD/de&lt;br /&gt;
 TCPREADHEADER/de&lt;br /&gt;
 TCPWRITE/de&lt;br /&gt;
 TCPWRITESTR/de&lt;br /&gt;
 Übersetzt THIRDLINE/de&lt;br /&gt;
 TIME$/de&lt;br /&gt;
 TIME/de&lt;br /&gt;
 Übersetzt TOGGLE/de&lt;br /&gt;
 TRIM/de&lt;br /&gt;
 &lt;br /&gt;
 UCASE/de&lt;br /&gt;
 UDPREAD/de&lt;br /&gt;
 UDPREADHEADER/de&lt;br /&gt;
 UDPWRITE/de&lt;br /&gt;
 UDPWRITESTR/de&lt;br /&gt;
 Übersetzt UPPERLINE/de&lt;br /&gt;
 Übersetzt VAL/de&lt;br /&gt;
 VARPTR/de&lt;br /&gt;
 VER/de&lt;br /&gt;
 VERSION/de&lt;br /&gt;
 &lt;br /&gt;
 Übersetzt WAIT/de&lt;br /&gt;
 Übersetzt WAITKEY/de&lt;br /&gt;
 Übersetzt WAITMS/de&lt;br /&gt;
 Übersetzt WAITUS/de&lt;br /&gt;
 Übersetzt WHILE-WEND/de&lt;br /&gt;
 WRITE/de&lt;br /&gt;
 WRITEEEPROM/de&lt;br /&gt;
&lt;br /&gt;
 X10DETECT/de&lt;br /&gt;
 X10SEND/de&lt;br /&gt;
 XTEADECODE/de&lt;br /&gt;
 XTEAENCODE/de&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/LOOKUPSTR/de</id>
		<title>LOOKUPSTR/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/LOOKUPSTR/de"/>
				<updated>2013-03-04T21:46:58Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Gibt einen String aus einer Tabelle zurück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;LOOKUPSTR&amp;lt;/span&amp;gt;( value, label )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;579&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;12%&amp;quot; style=&amp;quot;width: 66px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 504px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Der zurückgegebene String.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;12%&amp;quot; style=&amp;quot;width: 66px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Value&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 504px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Ein Tabellenindex. Der Index ist null-basierend. 0 gibt das erste Element der Tabelle zurück.&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;12%&amp;quot; style=&amp;quot;width: 66px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Label&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 504px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Die Programmmarke an der die Daten beginnen.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maximalster Index ist 255.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[LOOKUP]]&amp;amp;nbsp;,&amp;amp;nbsp;[[LOOKDOWN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[DATA]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beispiel&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 4000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
Dim S As String * 8 , Idx As Byte&lt;br /&gt;
Idx = 0 : S = Lookupstr(idx , Sdata)&lt;br /&gt;
Print S 'will print 'This'&lt;br /&gt;
End&lt;br /&gt;
 &lt;br /&gt;
Sdata:&lt;br /&gt;
Data &amp;quot;This&amp;quot; , &amp;quot;is&amp;quot; , &amp;quot;a test&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/LOOKUPSTR/de</id>
		<title>LOOKUPSTR/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/LOOKUPSTR/de"/>
				<updated>2013-03-04T21:46:41Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Gibt einen String aus einer Tabelle zurück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;LOOKUPSTR&amp;lt;/span&amp;gt;( value, label )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;579&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;12%&amp;quot; style=&amp;quot;width: 66px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 504px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Der zurückgegebene String.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;12%&amp;quot; style=&amp;quot;width: 66px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Value&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 504px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Ein Tabellenindex. Der Index ist null-basierend. 0 gibt das erste Element der Tabelle zurück.&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;12%&amp;quot; style=&amp;quot;width: 66px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Label&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 504px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Die Programmmarke an der die Daten beginnen.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maximalster Index ist 255.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[LOOKUP]]&amp;amp;nbsp;,&amp;amp;nbsp;[[LOOKDOWN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[DATA]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 4000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
Dim S As String * 8 , Idx As Byte&lt;br /&gt;
Idx = 0 : S = Lookupstr(idx , Sdata)&lt;br /&gt;
Print S 'will print 'This'&lt;br /&gt;
End&lt;br /&gt;
 &lt;br /&gt;
Sdata:&lt;br /&gt;
Data &amp;quot;This&amp;quot; , &amp;quot;is&amp;quot; , &amp;quot;a test&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/LOOKUPSTR/de</id>
		<title>LOOKUPSTR/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/LOOKUPSTR/de"/>
				<updated>2013-03-04T21:46:09Z</updated>
		
		<summary type="html">&lt;p&gt;Galahat: /* Remarks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Gibt einen String aus einer Tabelle zurück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var =&amp;amp;nbsp;&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;LOOKUPSTR&amp;lt;/span&amp;gt;( value, label )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Anmerkungen&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;579&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;12%&amp;quot; style=&amp;quot;width: 66px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 504px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Der zurückgegebene String.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;12%&amp;quot; style=&amp;quot;width: 66px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Value&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 504px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Ein Tabellenindex. Der Index ist null-basierend. 0 gibt das erste Element der Tabelle zurück.&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;12%&amp;quot; style=&amp;quot;width: 66px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Label&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 504px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Die Programmmarke an der die Daten beginnen.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maximalster Index ist 255.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[LOOKUP]]&amp;amp;nbsp;,&amp;amp;nbsp;[[LOOKDOWN]]&amp;amp;nbsp;,&amp;amp;nbsp;[[DATA]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 4000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
Dim S As String * 8 , Idx As Byte&lt;br /&gt;
Idx = 0 : S = Lookupstr(idx , Sdata)&lt;br /&gt;
Print S 'will print 'This'&lt;br /&gt;
End&lt;br /&gt;
 &lt;br /&gt;
Sdata:&lt;br /&gt;
Data &amp;quot;This&amp;quot; , &amp;quot;is&amp;quot; , &amp;quot;a test&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Galahat</name></author>	</entry>

	</feed>