ASEMBLE2.DOC

(11 KB) Pobierz
Û¥-	€÷"È*w!*$*$$*$*$*$*$*2*2*2*2*2*
<*
F*2y*y*y*y*y*y*y*y*y*4­*È*È*

	      The IBM PC 6800/01/04/05/09/11 cross assemblers


GENERAL
	The assemblers are named as*.exe where '*' is  any of 0,1,h1,4,5,9 or 11 depending on which one you're using.  Command line arguments specify the filenames to assemble.

	The assemblers accept options from the command line to be included in the assembly.  These options are the following:

	    l	   enable output listing.
	    nol    disable output listing (default).
	    cre    generate cross reference table.
	    s	   generate a symbol table.
	    c	   enable cycle count.
	    noc    disable cycle count.

	The command line looks like this :

	       as* file1 file2 ... [ - option1 option2 ...]

	If this method of passing commands to the assembler is used rather than the OPT pseudo op code, a space should separate the minus sign from the last file name and the first option.  Example:

	   as5 program -l cre	(en fait taper :    as5.exe program.src -l cre)

	This command assembles file 'program' with an output listing and a cross reference table.

	The `S1' formatted object file is placed in file `filename.S19', the listing and error messages are
written to  the standard output.  If multiple files are assembled, the 'S1' file will be placed under the first file's name.S19.

	The listing file contains the address and bytes assembled for each line of input followed by the original input line (unchanged, but moved over to the right some). If an input line causes more than 6 bytes to be output (e.g. a long FCC directive), additional bytes (up to 64) are listed on succeding lines with no address preceding them.

	Equates cause the value of the expression to replace the address field in the listing.

	Equates that have forward references cause Phasing Errors in Pass 2.

	Expressions may consist of symbols, constants or the character	'*' (denoting the current value of the program counter) joined together by one of the operators: +-*/%&|^.  The operators are the same as in C:

		+	add
		-	subtract
		*	multiply
		/	divide
		%	remainder after division
		&	bitwise and
		|	bitwise or
		^	bitwise exclusive-or

	Expressions are evaluated left to right and there is no provision for parenthesized expressions. Arithmetic is carried out in signed twos-complement integer precision (16 bits on the IBM PC)

	Constants are constructed with the same syntax as the Motorola MDOS assembler:

		'       followed by ASCII character
		$	followed by hexadecimal constant
		@	followed by octal constant
		%	followed by binary constant
		digit	decimal constant

ERRORS

	Error diagnostics are placed in the listing file just before the line containing the error.  Format of the error line is:

		Line_number: Description of error
			or
		Line_number: Warning --- Description of error

	Errors of the first type in pass one  cause  cancellation  of  pass two.  Warnings	do  not  cause cancellation of pass two but should cause you to wonder where they came from.

	Error messages are meant to be self-explanatory.

	If more than one file is being assembled, the  file  name  precedes the error:

		File_name,Line_number: Description of error

	Finally, some errors are classed as fatal and  cause  an  immediate termination  of  the assembly. Generally these errors occur when a temporary file cannot be created or is lost  during  the  assembly.
	Consult your local guru if this happens.


DIFFERENCES

	For indexed addressing, the comma is required before the  register; `inc x' and `inc ,x' are not the same.

		Macros are not supported.  (try M4 or M6)

	The force size operators ('>' and  '<')  are  implemented  for  all assemblers.

		The only pseudo-ops supported are:

			ORG, FCC, FDB, FCB, EQU, RMB, BSZ, ZMB, FILL PAGE and OPT.
The OPT pseudo-op allows the following operands:

			nol	Turn off output listing
			l	Turn on output listing (default)
			noc	Disable cycle counts in listing (default)
			c	Enable cycle counts in listing (clear total cycles)
			contc	Re-enable cycle counts (don't clear total cycles)
			cre	Enable printing of a cross reference table
			s	generate a symbol table

		Some of the more common pseudo-ops are not present:

			SPC	Use blank lines instead
			END	The assembly ends when there is no more input
			TTL	use `pr' to get headings and page numbers
			NAM[E]	Did you ever use this one anyway?

		The above 4 pseudo-ops are recognized, but ignored.

	    ZMB (Zero Memory Bytes) is equivalent to BSZ (Block Store  Zeroes).
		FILL can be used to initialize memory to something other than zero:
				FILL val,nbytes.
	
TARGET MACHINE SPECIFICS

 (as0)	6800:	Use for 6802 and 6808 too.

 (as1)	6801:	You could use this one for  the  6800  and  avoid
		LSRD, ASLD, PULX, ABX, PSHX, MUL, SUBD, ADDD, LDD
		and STD.

 (as4)	6804:	The symbols 'a', 'x' and 'y'  are  predefined  as $FF, $80 and $81 respectively.	
		Also  defined  as 'A',   'X'   and   'Y'.    Because  of  the  6804 architecture, this means that 'clr x'  will  work since  the  x register is just a memory location. To  use  short-direct  addressing,   the   symbol involved  must not  be a forward reference (i.e.undefined) and must be in the range $80-$83. Remember  that bytes  assembled  in  the   range $10-$7F  will go into the data space; There is no
program space ROM for these locations.

		The syntax for Register indirect addressing is as follows:
			  menmonic [<x>or<y>]
		an example is:
			    lda [x]
		the comma ',' is not allowed.

		The MVI instruction (move immediate) has its own format :

			 mvi address,#data   where address is an 8-bit address in page zero, and data is the value to be written to specified location.

 (as5)	6805:	There is no 'opt cmos' pseudo, so be careful  not to use STOP or WAIT in a program that is destined for  an  NMOS  version	of  the  6805. The  MUL instruction   should   also  be  avoided  on  all versions of the 6805 except the C4.  Cycle  times are for the NMOS versions.

 (as9)	6809:	The SETDP pseudo-op is not implemented.
		Use the '>' and '<` operators to force the size of operands.
		For compatibility, CPX is equal to CMPX.

 (as11) 68HC11: Bit manipulation operands are separated by  blanks  instead of commas since the 'HC11 has bit manipulation instructions that operate on indexed addresses.

DETAILS
	Symbol:  A string of  characters  with a  non-initial digit. The string of characters may be from the set:

			   [a-z][A-Z]_.[0-9]$

		( . and _ count as non-digits ).  The `$' counts as a digit to avoid confusion with  hexadecimal  constants.	All characters of a symbol are  significant,  with upper and lower  case  characters being distinct.  The maximum number of characters in a symbol is currently set at 15.
		The symbol table has room for  at  least  2000 symbols  of length 8 characters or less.

	Label:	A symbol starting in the first column is a  label  and may optionally  be ended  with a ':'.  A label may appear on a line by itself and is then interpreted as:

			Label	EQU	*

	Mnemonic:  A symbol preceded by at least one whitespace  character. Upper  case characters in this field are converted to lower case before being checked as a legal mnemonic. Thus `nop',
`NOP' and even `NoP' are recognized as the same mnemonic.

		Note that register names that sometimes appear at  the end of  a  mnemonic (e.g. nega or stu) must not be separated by any  whitespace characters. Thus `clra'  means clear accumulator A, but that `clr a' means clear memory location`a'.

	Operand:  Follows mnemonic, separated by at  least  one  whitespace character. The contents   of  the operand field  is interpreted by each instruction.

	Whitespace: A blank or a tab

	Comment:  Any text after all operands for a given mnemonic have been  processed or, a line beginning with '*' up to the end of line or, an empty line.

	Continuations:	If a line ends with a backslash (\) then  the  nextline is fetched and added to the end of the first line. This continues until a line is seen which doesn't end in  \ or  until  MAXBUF characters have been collected (MAXBUF >=256 ).

FILES
	filename.S19	S-record output file
	STDOUT	listing and errors (use redirection for listing file)
	Fwd_refs	Temporary file for forward references.

IMPLEMENTATION NOTES
	This is a classic 2-pass assembler.  Pass 1 establishes the  symbol table and pass 2 generates the code.

							12/11/84 E.J.Rupp

	This version of the cross assemblers ported to the IBM PC 4/13/87

xŃńň‹‚.ŒÆA‰Ž‰‰‰€÷"€‚„¼¾ÀÉtvîðAn’±ÓÕúü...
Zgłoś jeśli naruszono regulamin