Confused as fuck about adress bus/memory map

i have an idea of what the data bus, adress bus,.... etc are about, i understand the logic and the purpose of those

however im confused about the software side.

lets take the Z80 cpu for example.


some build use the address 8000h – FFFFh for ram and 0000h – 7FFFh for rom.

how does those addresses translate on the address pins ?!

Other urls found in this thread:

buthowdoitknow.com/
gen.lib.rus.ec/book/index.php?md5=6789996AF423E6863ED0B86CCBFAC6C5
gen.lib.rus.ec/book/index.php?md5=8BA6B1AF686927B583B41684A5EBF98A
twitter.com/SFWRedditGifs

Read the datasheet.

Most likely, your address bits appear on the address bus pins. A0 is the low bit, A15 is the high bit. If you want to cut memory in half like that, you just peel A15 off and use that to select which storage (RAM/ROM) you want.

thanks for the tip.
found nothing tho.

read this OP:
buthowdoitknow.com/

I've read it and I wouldn't recommend that book.

any free source ?

still wondering how those addresses (8000h, FFFFh, .... ) translate into electrical signal on the actual address bus

for all addresses under 8000h A15 is set to 0 (low) and over 8000h A15 is set to 1 (high). if you want to know the state of each individual address pin then translate 8000h binary and consider that A0 is the least significant bit. is all.

for example 8083h = 1000 0000 1000 0011b

so: besides A15 being high A7, A1 and A0 are set high

i'm making the assumption that the z80 works with 'active high' signals on the address line

You have 16 pins available for "addressing", which means you can form 16 bit numbers or in other words 2^16 different locations in your address space.

interesting. thanks for the info.
could you provide some link for more details ?
thanks.

why is it A15 and not A2 or A7 ?
sorry, noob here

8000h -> 1000 0000 0000 0000b

beginning with 8000h every consecutive memory address will have the most significant, the 15th bit set as one..

if you were implementing the hardware you would have freedom to use what ever pin you want, it's not a matter of physical location of pin or even the labeling of (though for clarity on the users side it kind of is). the only thing that matters is that you are somehow putting out a binary representation of a number that translates to a memory location on your system

look up some introductory computer architecture book and read read read

It's basic computer engineering knowledge. Get yourself a hardware textbook that a reputable college uses.

You have 16 bits in your address.
You have 16 address pins numbered from 0 to 15.

This isn't hard.

how do you read 16 bits from 7FFFh ?
whats that called ? hexadecimal ?

it's a simple conversion from hexadecimal to binary. every hexadecimal number is represented by 4 bits
7h = 0111b and Fh = 1111b so:
7FFFh = 0111 1111 1111 1111b

but there are 5 numbers in 7FFFh, wouldn't that make 20bit ?

EPUB:
gen.lib.rus.ec/book/index.php?md5=6789996AF423E6863ED0B86CCBFAC6C5

PDF:
gen.lib.rus.ec/book/index.php?md5=8BA6B1AF686927B583B41684A5EBF98A

Read that and then come back when you have questions. It's a really good book.

nvm, h isn't part of the number

thanks,will do

Indeed since hexadecimal is only numbers to "0" to "9" and letters from "a" to f""

NP. Take your time, there's no point in rushing through the material until you get the basics correct.

No, it sounds like it's just about OP's speed tbh.