El error esta en que usas BX para guardar el valor que obtienes del vector pero tambien usas BX como indice dentro del vector.
Suponiendo que BX al inicio sea 0 (cero):
En la primer corrida del ciclo:
Código Ensamblador:
Ver originalMOV BL, color[BX] ; aqui efectivamente BL seria igual al primer valor del vector: 21h
INC BX ; aqui estarias incrementando el valor de BX
; como BX es igual a 21h, al incrementarlo ahora el valor seria 22h