Logo Hardware.com.br
jqueiroz
jqueiroz Cyber Highlander Registrado
104K Mensagens 5.7K Curtidas
#6 Por jqueiroz
14/07/2003 - 12:04
Cara, saudade não tem idade... bons tempos aqueles, era "LD HL,BC" pra cá e "JRNZ Offset" pra lá...

Pena que já me desfiz dos meus livros... mas ainda lembro da estrutura desse processador... um clássico, diga-se de passagem...

Registradores de 16 bits: PC, SP, AF, BC, DE, HL
Registradores de 8 bits: A, F, B, C, D, E, H e L;

Os registradores de 8 bits eram as metades alta e baixa dos registradores de 16 bits com o mesmo nome, assim: BC == B*256+C.

PC era o program counter; ele apontava pra próxima instrução a ser executada.

SP era o Stack pointer. O Stack era a posição de memória onde se salvava, por exemplo, o PC antes de se fazer um "Call" (chamada de subrotina). O SP apontava, se não me engano, pra primeira posição livre do stack. Você podia empilhar (PUSH) e desempilhar (POP) os registradores de 16 bits pra salvá-los e recuperar o valor depois. Quando se fazia um PUSH, o SP era subtraído de 2; qdo fazia um POP, era incrementado de 2.

Os registradores B, C, D e E eram de uso mais ou menos geral, mas o A era o acumulador, e algumas operações aritméticas só podiam ser feitas nele. O F era o registrador dos flags, e seu conteúdo mudava conforme o estado do processador e os resultados das operações. Eu só lembro dos 3 flags mais importantes: Carry (estouro de operação aritmética, comparação), Zero (resultado igual a zero) e sub-carry (overflow do primeiro nibble [4 bits] pro segundo, que era usado em operações com números BCD).

O controle de execução era feito por instruções de JUMP (absoluto), JR (jump relativo), CALL (absoluto) e CR (call relativo). Todos esses tinham uma opção com teste (ex. JZ, JRNZ, CC, etc). Pra chamar o sistema operacional podia se usar as instruções de interrupção de software (INT). Pra retornar ao chamador de sub-rotina (CALL), usava-se o RET. Pra retornar de interrupção, usava-se o RETI. A instrução INT era quase igual a um CALL, mas além de ter endereço fixo, ela entregava o controle à subrotina com as interrupções desabilitadas (DI), e o programador tinha que rehabilitá-las (EI) se fosse o caso. Pensando bem, acho que esse era um dos bits do flag, tb (mas só de leitura). A principal diferença do RET pro RETI é que ele restaurava o valor anterior do estado das interrupções.

O conjunto de instruções do Z80 era um conjunto aumentado de um outro processador mais antigo, o intel (olha ela aí...) 8080. Haviam no Z80 algumas instruções novas, principalmente pra manipular memória. Uma delas era o LHLD, que (se eu não me engano... talvez fosse LDHL) carregava o registrador indicado com o conteúdo da palavra de 16 bits apontada pelo registrador HL. Mas daqui em diante, a memória fica muito nebulosa.
"chmod 777 nunca ajudou ninguém" (c) 2002-2021 JQueiroz/FGdH
Conheça o Blog do Zekke
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal