XTHL (Exchange Top of Stack with H and L) é uma instrução de um byte do 8085 (opcode E3, 5 ciclos de máquina, 16 T-states) que troca o conteúdo de 16 bits do par de registradores HL com o valor de 16 bits no topo da pilha (apontado por SP).
Operação
temp ← (H, L) (H, L) ← (M[SP+1], M[SP]) ; byte alto em SP+1, byte baixo em SP (M[SP+1], M[SP]) ← temp ; SP inalterado
Casos de Uso
- Preservar HL através de sub-rotina: Push HL, faça trabalho, XTHL restaura HL e guarda topo-de-pilha anterior para depois.
- Passar parâmetro de 16 bits na pilha: Chamador faz push do argumento; chamado usa XTHL para obter argumento em HL, deixando endereço de retorno acessível.
- Implementar ficheiro de registradores de 16 bits baseado em pilha: XTHL roda valores entre HL e slots da pilha.
- Mudança de contexto (cooperativa): Troca HL com bloco de contexto guardado na pilha.
Flags Afetadas
Nenhuma. XTHL não modifica S, Z, AC, P, CY.
Instruções Relacionadas
- PUSH HL / POP HL – 3 bytes, 11/10 T-states cada; modificam SP.
- SPHL – Move HL → SP (F9).
- XCHG – Troca HL ↔ DE (EB).
XTHL é uma forma compacta e rápida de trocar HL com memória da pilha sem ajustar SP.