O mecanismo de programação de endereços bases de regiões de memória e I/O, regiões estas de comprimento mínimo de 16 ou 4 endereços (memória ou I/O, respectivamente), consiste em, primeiramente, escrever 1 em todos os bits do registrador de programação de endereços base. Em seguida, executa-se uma leitura do mesmo registrador. A lógica da placa implementada deve fazer com que seja retornado um número cuja porção menos significativa é, a menos dos primeiros 4 ou 2 bits (memória ou I/O), uma seqüência de zeros, de tamanho igual ao número de bits utilizado pelo decodificador em questão. A porção mais significativa restante deverá ser composta por dígitos 1. Este conjunto de dígitos 1 é que será imediatamente reprogramado, pelo software plug and play, de acordo com a disponibilidade de recursos, de forma a compor o endereço base da região de endereços.
Como exemplo, caso a placa esteja utilizando uma RAM de 4 KB, será retornado, após a escrita de dígitos 1, o valor FFFFF000h (12 bits menos significativos iguais a 0). A lógica da placa deve permitir a programação dos demais 20 bits, que vão habilitar a decodificação. Um exemplo de circuito que implementa os procedimentos detalhados é apresentado na Figura 2.
A BIOS procura por decodificadores implementados nos registradores de programação de endereço base até que encontre um não implementado, quando interrompe a busca.
O registrador de endereço base da ROM de Expansão é utilizado por placas que contêm ROMs que participarão da seqüência de inicialização do computador (POST - Power On Self Test) ou que oferecem serviços de interrupção por software.
A programação deste endereço é feita de forma semelhante à programação do exemplo da RAM de 4KB. Contudo, exige-se também que a ROM tenha a assinatura de uma ROM de expansão tradicional, ou seja, comece por 55h, AAh, tamanho, instrução JMP, etc..

clique para ampliar
Figura 2: Circuito que permite a programação do endereço base de um bloco de memória em barramento PCI.