Registers
All processors have small memory banks located on the processor itself. These are for high speed data transfer. The processor loads a value from the RAM onto the high speed data location, manipulates it, and then puts it back in it's place in the RAM.
These small, high speed data locations are
called registers. They have letter names to distinguish them.
Right now we will learn a few of the most commonly used
registers: a
, b
, c
,
d
, e
, h
, and l
.
a | b | c | d | e | h | l |
On the z80 they are 1 byte long
(8 bits, 8 1's and 0's); however, they can be put into pairs (bc
,
de
, and hl
) so that then they can hold two bytes, or a
word. These registers are called Register Pairs
because it is two registers put together. The can only be grouped
into bc
, de
, or hl
. Bh
and
da
don't exist.
a f | b c | d e | h l |
The a
register is called the Accumulator because it
is used the most, just as hl
is called the Address
Register Pair because it is used for referencing memory addresses
mostly.
Putting parenthesis around a registered pair signifies that you are talking about the byte at the address held by the register pair.
ld hl,$fc00 ;store $fc00 in hl ;(this is the address of ; the first byte in ; the video memory) ld (hl),$11 ;store $11 in ; the byte at hl ;the value that hl holds ; is considered the ; address of the byte ; we are talking about
Before you can every manipulate data, it must pass through a register. You cannot add the contents of one memory address to the contents of another memory address. You have to store the bytes at both memory addresses into registers and then you can add those registers.
ld a,($fc00) ;get byte at address $fc00 ld b,a ;put that in b ld a,($fc01) ;get byte at address $fc01 add a,b ;add the two ;these 4 lines are valid ;CANNOT do the following line add ($fc01),($fc00) ;invalid instruction ;you'll get all kinds of errorsYou can't add straight values either.
ld a,2 ld b,3 add a,b ;you can do this ;2+3=5 stored in a add 2,3 ;CANNOT do this!! ;won't work
More from z80 » Beginner
Aliases // Convert from decimal to hexadecimal or binary // Flags and Conditions // Format and Compiling // Instructions // Math // Number Bases // Oh, No! It Crashed! // Registers // TI-BASIC to Asm Comparisons // TI86 Specifications // Two's Compliment // z80 Processor