Istruzioni 8086 XCHG e XLAT Spiegate: Scambio e Ricerca in Tabella
XCHG – Exchange
Sintassi: XCHG dest, src (registro/registro, registro/memoria, memoria/registro)
Azione: Scambia atomicamente i due operandi. Nessun'altra istruzione può interrompere lo scambio—utile per semafori o algoritmi lock-free.
Esempio: XCHG AX, BX scambia i valori a 16 bit in AX e BX.
Caso speciale: XCHG AX, reg è di 1 byte (opcode 0x90+reg), rendendolo il classico NOP quando AX,AX.
XLAT – Traduci Byte tramite Tabella di Ricerca
Sintassi: XLAT (operandi impliciti)
Requisiti:
AL= indice a 8 bit (0–255)DS:BX= indirizzo base di una tabella di traduzione da 256 byte
Azione: AL ← [DS:BX + AL]. Sostituisce AL con il byte della tabella a quell'offset.
Esempio pratico: Minuscolo a Maiuscolo
.data uptable db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`'
.code MOV BX, OFFSET uptable
MOV AL, 'a' ; 61h
XLAT ; AL = 'A' (41h)
XLAT è una ricerca in tabella a singola istruzione, 11 cicli—utile per conversione set di caratteri, nibble-to-hex, o piccole macchine a stati.