[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: What Is The Difference Between 68000 Chip And 80x86 Chip?
Michael J. Mahon <mjmahon@aol.com> wrote:
> The 65xx/xxx processors are another breed. The original 6502
> was a blatent ripoff of the 6800, but faster and better.
I'd dispute that the 6502 was a "blatant ripoff" of the 6800. The 6502
bus interface is compatible with the 6800, but the architectures are
quite different.
In general, the 6502 aims for simpler instructions with a variety of
addressing modes, while the 6800 aims for a more complete and reasonably
orthogonal instruction set. The end result is that the 6502 had
significantly fewer gates than the 6800, which means that it was able to
be produced at a much lower price.
Here are the main differences which occur to me:
- The 6800 has two 8 bit accumulators (A and B) which can be used almost
interchangably, while the 6502 only has one (A).
- The 6800 has a single 16 bit index register (X), and the only indexing
method supported is "constant 8 bit unsigned offset from X", which is
implemented pretty uniformly on the core instructions; the 6502 has two
8 bit index registers (X and Y), with a mixture of addressing modes
(zero page or absolute indexed, indirect with pre-indexing or
post-indexing depending on the register) with the full set only being
available on a limited group of instructions.
- The 6800 has a 16 bit stack pointer, while the 6502's one is 8 bits.
- The 6800 has a complete set of branch instructions (testing all useful
combinations of the N, V and Z flags) while the 6502 only has the
minimal set which deal with a single flag, making some types of branch
operation require multiple instructions.
- The 6800 has both "with carry" and "without carry" versions of the add
and subtract instructions. The 6502 only has the "with carry" versions
(requiring carry be cleared manually before doing an add, for example),
and for some reason has an inverted sense of the carry flag when doing
subtraction (probably to save gates in the ALU).
- They have different methods of supporting BCD arithmetic (6800 has a
decimal adjust instruction, 6502 has a decimal mode of operation which
affects the behaviour of the add and subtract instructions).
One final comment: the 6502 and 6800 are similar enough that if you
already know how to program one it doesn't take much effort to learn the
other.