From: sater Date: Thu, 12 Jul 1984 15:16:23 +0000 (+0000) Subject: Initial revision X-Git-Tag: release-5-5~6201 X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=a81a1917f5545024f78485ea6dd84932205a6f65;p=ack.git Initial revision --- diff --git a/man/6809_as.1 b/man/6809_as.1 new file mode 100644 index 000000000..7ac2ede81 --- /dev/null +++ b/man/6809_as.1 @@ -0,0 +1,147 @@ +.\" $Header$ +.TH 6809_AS 1 +.ad +.SH NAME +6809_as \- assembler for 6809 +.SH SYNOPSIS +/usr/em/lib/6809_as [options] argument ... +.SH DESCRIPTION +This assembler is made with the general framework +described in \fIuni_ass\fP(6). +.SH SYNTAX +.IP registers +The 6809 contains four 8-bit registers registers: +two accumulators (a and b), +a direct page register (dp), +and a condition code register (cc), +and five 16-bit registers: +two index registers (x and y), +a user an a hardware stack pointer (u resp. s), +and a program counter (pc). +The index registers and the stack pointers are indexable. +Accumulators a and b can be concatenated to form +the double accumulator d, +of which a is the high and b is the low byte. +An instruction that refers to accumulator a +has an "a" as last character. +In the same way a "b" means that the instruction +uses b as accumulator. +.IP "pseudo instructions" +The 6809 assembler recognizes one additional instruction +that is not translated into a machine instruction: setdp. +It expects an expression as argument. +This is used for efficient address encoding of some addressing +mode (see below). +.IP "addressing modes" +.nf +.ta 8 16 24 32 40 48 +syntax meaning (name) + +reg The operand of the instruction is in `reg'. + +reglist `reglist' is a either list of registers, seperated + by ','s, or the word "all". It encodes in a register + save mask, where "all" means all registers, that can + be used by the push-pull instructions pshs, pshu, + puls, and pulu. + +expr The two-byte value of `expr' is the exact memory + address. Not that this mode always requires one + byte more than "expr". + (relative for branch-instructions) + +#expr The value of `expr' is one- or two-byte immediate + data. (immediate) + +(expr) The value of `expr' is a pointer to the address + of the operand. (indirect) + +expr, reg The value of `expr' added to the contents of `reg' + (which must be a 16-bit register) yields the + effective address of the operand. + (constant-offset indexed) + +, ireg The contents of `ireg' (which must be indexable) + yields the effective address of the operand. + (constant-offset indexed) + +(expr, reg) The value of `expr' added to the contents of `reg' + (which must be a 16-bit register) yields a pointer + to the effective address of the operand. + (constant-offset indexed indirect) + +(, ireg) The contents of `ireg' (which must be indexable) + yields a pointer to the effective address of the + operand. (constant-offset indexed indirect) + +ac, ireg The contents of `ac' (which must be an accumulator) + added to the contents of `ireg' (which must be + indexable) yields the effective address of the + operand. (accumulator indexed) + +(ac, ireg) The contents of `ac' (which must be an accumulator) + added to the contents of `ireg' (which must be + indexable) yields a pointer to the effective address + of the operand. (accumulator indexed indirect) + +,ireg+ +,ireg++ The contents of `ireg' (which must be indexable) is + used as effective address of the operand. After that + it is incremented by 1 (+) or 2 (++). + (auto-increment) + +(,ireg++) The contents of `ireg' (which must be indexable) is + used as a pointer to the effective address of the + operand. After that it is incremented by 2. + (auto-increment indirect) + +,-ireg +,--ireg `ireg' (which must be indexable) is decremented + by 1 (-) or 2 (--). After that, its contents is used + as effective address of the operand. + (auto-decrement) + +(,--ireg) `ireg (which must be indexable) is decremented by 2. + After that, its contents is used as a pointer to the + effective address of the operand. + (auto-decrement indirect) + +.fi +.SH "SEE ALSO" +uni_ass(6), +ack(1), +.br +MC6809 preliminary programming manual, Motorola Inc., First Edition, 1979 +.SH EXAMPLE +An example of 6809 assembly code. +.nf +.ta 8 16 24 32 40 48 + contby = 80 + + compgo: lda #contby + ldx #table - 2 !start of table + + clrb + co1: addb #2 + lsra + bcc co1 + jmp (b, x) !accumulator offset indirect +.fi